”A study of different matching heuristics” Hovedfagspresentasjon Jan Kasper Martinsen ([email protected]) Terminologi: Graf teori En graf består av et sett med noder… Nodene er tilknyttet hverandre ved hjelp av kanter Hver kant har en node i hver ende, og når vi referer til disse kaller vi dem endepunkter. Noder og kanter utgjør sammen en struktur som kalles for en graf 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 Vi utvider ved å legge til såkalte vekter på noder og kanter, og introduserer dermed en vektet graf. For resten av presentasjonen skal vi anta at alle grafene er vektet, men at både noder og kanter i utgangspunktet har vekten 1. 1 Nabolagvekt = 4 3 Nabolag = 4 Vi introduserer også konseptet med nabolag og nabolagvekt. Graf strukturen har en del applikasjoner i ”det virkelige liv”, og det er flere problemer som har blitt definert rundt denne. Et av problemene er graph partisjonerings problemet som vi vil behandle under denne presentasjonen. Del 1 Del 3 Del 2 Problemet er følgende: Del opp grafen i en gitt antall deler, slik at følgende betingelser er oppfylt: 1. Hver del inneholder (omtrentlig samme nodevekt) 2. Det er så få mulige kanter mellom de ulike delene som mulig Del 1 Del 3 Del 2 Vi sier at forholdet mellom den delen med flest noder og den optimale størrelsen på en del (dvs. antall noder / deler) er last-balanse. Vi sier videre at summen av kantvekten mellom de forskjellige delene er kant-kuttet. Selv om problemet er enkelt å forstå er det uvisst hvorvidt det finnes en effektiv metode som finner den optimale partisjonen i løpet av en fornuftig tid. Vi kan løse det med å lete igjennom alle kombinasjonene av partisjoner, men siden antall kombinasjoner øker eksponentsielt med antall noder i grafen kan vi risikere at dette tar lang tid. •Noder •Kanter •Endepunkter •Naboer •Graf partisjonerings problemet •Kant-kutt og last-balanse Løsning av graf partisjonerings problemet Suboptimale metoder for å finne partisjoner •Grådige graf partisjonerings metoder •Rekursive graf biseksjonsmetoder •Multilevel partisjonerings metoder Dette er fellesbetegnelse på metoder som er raske, men som kan finne partisjoner som (kan være) langt fra de optimale med hensyn på kantkutt og last-balanse. Multilevel metoder Ideen er, ”krympe” grafen. Når den er tilstrekkelig liten så kan vi bruke en sofistikert metode for finne en partisjon, og så kan vi projisere denne partisjonen tilbake til det opprinnelige størrelsen. Multilevel metoder Motivasjonen bak denne teknikken var (selvfølgelig) å gjøre prosessen raskere. Men det ble også oppdaget en egenskap til, som vi skal snakke om senere… Multilevel metoder forgrovning partisjonering forfining Metoden er delt opp i tre faser, forgrovning, initial partisjoneringer og forfining. Forgrovning For å lage en mindre graf bruker vi en teknikk fra graf teori som kalles ”matching”. Forgrovning, ”matching” ”Matching” er et sett med kanter, slik at alle endepunktene er distinkte (dvs. at et ende punkt ikke forekommer mer enn en gang). Dette kalles en maksimal ”matching” Forgrovning, ”matching” Tilsvarende, hvis vi finner en maksimal ”matching”, hvor alle nodene er med som endepunkt kaller vi det en perfekt ”matching”. ikke alle grafer har perfekte matchinger… Forgrovning, ”matching” Hvordan relaterer matching seg til forgrovningfasen? Matching brukes som en metode for å rekonstruere en mindre graf. Forgrovning, ”matching” 2 De to endepunktene kombineres til en såkalt multinode. Merk at nodevekten til multinoden er lik summen av de to nodene som utgjør multinoden. Forgrovning, ”matching” 2 2 Videre ser vi at de to endepunktene som utgjør multinoden er nabo til samme node. Dermed slåes de to kantene sammen til en kant, hvor vekten er lik summen av de to kantene. Forgrovning, ”matching” ”Matching” < terskel? rekonstruksjon Denne prosessen repeteres inntil den nye grafen er vesentlig mindre enn den opprinnelige. Initiell partisjonering Initial partisjonering, siden grafen blir mindre kan vi tillate oss å bruke en sofistikert metode for å partisjonere grafen (selv om vi normalt ikke gjør det) Forgrovning, ”matching” 2 2 Takket være at vi har lagt sammen node-vekt og kant-vekt, vet vi at kant-kutte til den initial partisjoneringen er den samme som når vi projiserer grafen tilbake. Forfining Vi ”pakker opp multinodene, og plasserer de to nodene i samme partisjon som multinoden. Dette gjøres stegvis inntil det ikke er flere multinoder igjen. Forfining Kant-kutt = 5 Kant-kutt = 4 I tillegg, kan vi gå igjennom nodene og forsøke å flytte dem for å forbedre kant-kuttet uten å forverre last balansen. Dette kan gjøres ved å gå igjennom nodene i grafen og flytte noden til en annen partisjon hvis dette forbedrer kant-kuttet uten å forverre last balansen (*) •Multilevel partisjonering •Forgrovning •Initial partisjonering •Forfining •Maksimal matching •Perfekt matching Matching heuristikk (eller hvordan velge kanter?) Matching heuristikker Hvilken rekkefølge vi legger kanter, og hvilke kanter vi velger bestemmer hvor mange noder den ”rekonstruerte” grafen vil ha. Matching heuristikker er essensielt regler for hvilke kanter som velges til en matching. Matching heuristikker •Random matching (RM) •Heavy edge matching (HEM) •Local greedy heavy edge matching (LGHEM) •Global greedy heavy edge matching (GGHEM) Matching heuristikker, Random matching 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 Vi velger noder tilfeldig. Hvis noden ikke er et endepunkt i en kant som allerede er med i en matching, så velger vi en nabonode (tilfeldig), og legger denne kanten til en matching. Matching heuristikker, heavy edge matching 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 Utvidelse av RM. Vi velger en node tilfeldig, vi velger den naboen slik at kanten-vekten mellom noden og naboen er den største blant alle naboene. Motivasjon, ”gjemme” tunge kanter, slik at kant-kutter blir minst mulig for den initial partisjonen. Matching heuristikker, local greedy heavy edge matching 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 HEM velger den nabo-noden som knyttes til den valgte naboen med høyest mulig kantvekt. Men det er jo ikke gitt at denne kanten er den tyngste kanten nabo-noden er tilknyttet til… Matching heuristikker, local greedy heavy edge matching 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 Dette er motivasjonen for local greedy heavy edge matching, vi leter inntil vi finner to noder som er sammenknyttet med den samme maksimale kant-vekten… (Det finnes alltid to slike noder) Matching heuristikker, global greedy heavy edge matching 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 Local greedy heavy edge matching er nesten det det samme som følgende: Sortere alle kantene basert på deres kant-vekt, og velge kanter i stigende rekkefølge. Da er ikke man ikke så avhengig av topologien til grafen, som når man bruker de andre metodene. Matching heuristikker, global greedy heavy edge matching 2 1 2 1 2 2 3 4 3 2 4 1 1 3 2 4 Det uheldige er at programmet vårt ikke er tilpasset for kanter, dette gjorde at vi måtte lage en bygge opp en ny datastruktur, sortere kantene og begynne å velge kantene… •Random matching •Heavy edge matching •Local greedy heavy edge matching •Global greedy heavy edge matching Resultater, kant-kutt og kjøre tid Resultater Local greedy heavy edge matching og global greedy heavy edge matching er plassert inn i METIS partisjonerings programvare. Resultater, kant-kutt Motivasjonen bak heavy edge matching var å fjerne tunge kanter slik at summen av kant-vekt ble minst mulig for den groveste grafen. Igjen for å få minst mulig kant-kutt… I følge dette kriteriet så local greedy heavy edge matching bedre enn heavy edge matching. Siden den nesten alltid (>90%) har lavere kant-vekt og kant-kutt på det groveste nivået. Resultater, kant-kutt Men etter forfining, så ser vi at partisjonene hvor local greedy heavy edge matching kun gir lavere kant-kutt for 60% av tilfellene.. Vi fant ut at dette skyldes at grafen på det groveste nivået hadde færre naboer hvis local greedy heavy edge matching ble brukt som matching heuristikk i tillegg til at man bruker færre forgrovningsnivåer enn heavy edge matching. Forfining tilsynelatende mer effektivt for HEM enn for LGHEM. Resultater, kant-kutt Men samtidig, kant-kutter er generelt lavere ved bruk av local greedy heavy edge matching enn heavy edge matching. Når det gir det laveste kant-kuttet, så er det generelt 7% lavere enn ved heavy edge matching. (generelt 2% lavere når heavy edge matching bruker det laveste kant-kuttet) Resultater, kant-kutt Hvorfor lager local greedy heavy edge matching grovere grafer med et lavere antall naboer enn heavy edge matching? Siden LGHEM ofte matcher tyngre kanter enn HEM, og tyngre kanter indikerer noder som har vært matched flere ganger Matching av noder med et stort antall naboer gir ofte færre kanter ut, siden flere av kantene blir slått sammen. Resultater, kant-kutt Hvis vi sammenlikner GGHEM og LGHEM ser vi at LGHEM har lavere kant-vekt på laveste nivå, men GGHEM lager oftere den initial partisjonen med lavest kant-kutt. Vi fant ut at GGHEM hadde et høyt antall kanter, noe som virket positivt på den fineste partisjonen. Men for den endelige partisjonen, så ga de to metodene kant-kutt resultater som var like. Resultater, kant-kutt Kant-kutt Viktig med et lavt kant-vekt, men dette må sees i sammenheng med antall forgrovnings nivåer. Hvis man har et høyt antall forfinings nivåer, ser det ut til å være fordelaktig med et høyt antall naboer, siden dette styrker evnen til forfining. Resultater, Kjøre tid Både LGHEM og GGHEM gjør at vi må lete igjennom undersøke mye flere kanter enn HEM. Men vårt mål er ikke å produsere matchinger raskt, men å forgrove grafen. Resultater, Kjøre tid Matching ratio = Noder før matching / noder etter matching * 2 Måle hvor langt en matching er fra en perfekt matching. RM har høyere matching ratio enn HEM. Dette kan forklares med det samme argumentet med at å legge til en tung kant til en matching blokkerer andre noder fra å bli matched. Resultater, Kjøre tid Imidlertidig ser det ut at LGHEM har en høyere matching ratio enn HEM Sannsynligvis betyr det at LGHEM finner to noder som den inkluderer i en matching med få kanter (det er mange kanter med lik vekt) Resultater, Kjøre tid GGHEM har en høyere matching ratio enn LGHEM, antagligvis på grunn av at den er uavhengig av topologien til grafen. Resultater, Kjøre tid Hva betyr dette for den faktiske kjøre-tiden? LGHEM er tregere enn HEM, men ikke mye! Forskjellen minker ettersom partisjonene øker Antall kanter vi må gå igjennom konvergerer hvis man sammenlikner LGHEM og HEM. Resultater, Kjøre tid GGHEM er en mye tregere enn LGHEM. Dette skyldes blant annet at vi må bygge opp en ny datastruktur, sortere denne og deretter danne matchinger. Konklusjon(er) •De to heuristikkene ga to plasser i ”the Graph Partitioning Archive” •Generelt gir de bedre resultater (mhp kant-kutt) enn de heuristikkene som allerede finnes i METIS, men kostnaden var kjøretid. •Virker som heuristikkene passer bra med store grafer, og hvis man ønsker å dele dem opp i mange deler. •Kan tillate å bruke en avansert heuristikk, hvis den har høyere matching ratio. Videre •Heuristikkene er prototyper, og det er mulig å implementere dem mye raskere, for eksempel; •Bytte ut sortingsmetoden med en bucket/radix sort ide i GGHEM •Jeg har en (uimplementert) ide til GGHEM der hvor alle delene (sortering etc, etc) er bygd inn i en og samme metode •Bruke LGHEM på tidlige forgrovnings faser, og GGHEM på de senere? •Metoder for å finne perfekte matchinger finnes!! De er normalt for trege til å bruke i multilevel setting, men det kunne være gøy å se resultatet •Gratulerer, 100 år siden Norge ble partisjonert fra Sverige! •Spørsmål!?
© Copyright 2024