A study of different matching heuristics”

”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!?