Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Hovedfagspresentasjon

Liknende presentasjoner


Presentasjon om: "Hovedfagspresentasjon"— Utskrift av presentasjonen:

1 Hovedfagspresentasjon
Recognizing weakly chordal graphs Lars S. Skeide 17. desember 2002 Institutt for informatikk Universitetet i Bergen

2 Motivasjon En ny algoritme for gjenkjenning av svakt kordale grafer ble i 2000 presentert i artikkelen “Recognizing weakly triangulated graphs by edge separability” av Berry, Bordat og Heggernes Kjøretiden er bevist O(m2), men ikke implementert tidligere Utgangspunktet for oppgaven har vært å implementere algoritmen og finne ut hvordan den fungerer i praksis Algoritmen er parallell av natur, og målet var dermed å implementere den både sekvensielt og parallelt Sekvensielt: bruke en prosessor Parallelt: bruke flere prosessorer 17. desember 2002

3 Oversikt Introduksjon Sekvensiell implementasjon av algoritmen
Grafer Svakt kordale grafer Gjenkjenning av svakt kordale grafer Sekvensiell implementasjon av algoritmen Parallell implementasjon av algoritmen Oppsummering 17. desember 2002

4 Graf G: En graf G = (V,E) er en mengde noder V og en mengde kanter E.
Eks.: V = {1,2,3,4,5}, E = {(1,2),(1,5),(2,3),(3,5),(4,5)} G: 3 5 4 1 2 n = |V|, m = |E| Nodene representert ved sirkler, og kantene med streker mellom par av noder Vi betegner antall noder med n og antall kanter med m En sti i en graf er en sekvens av noder med kanter mellom, eks. 1-3 En sykel er en sti som starter og ender i den sammen noden, eks. 1-1 Dersom det går en sti mellom alle par av noder, så er grafen sammenhengende 17. desember 2002

5 Komplementgraf En komplementgraf G inneholder de samme nodene som G, men akkurat de kanter som ikke er i G. G: G: 3 5 4 1 2 1 2 3 4 5 17. desember 2002

6 Minimal separator G: G(s):
En separator s er en mengde noder som deler en graf i to eller flere sammenhengende komponenter. En minimal separator skiller to noder med et minste antall noder i separatoren. s = {2,5} gir komponentene {1}, {3} og {4} s er også en minimal separator siden nodene 1 og 3 ikke kan skilles dersom 2 eller 5 blir fjernet fra separatoren. G: 3 5 4 1 2 En betegnelse som vil gå igjen G(s) er grafen bestående av nodene i s og alle kantenene mellom dem. G(s): 5 2 17. desember 2002

7 Svakt kordale grafer G: G: en i G korde har og 4 lengde av sykler Alle
c > graf kordal svakt er simplicial - LB er i kant Hver G c G: En korde i en sykel er en kant mellom to ikke-etterfølgende noder 17. desember 2002

8 LB - simplicial kant G({a,b,1,2,3}):
En kant e er LB - simplicial dersom for hver minimale separator s i nabomengden til e, så, for hver sammenhengende komponent av G(s), ser minst én node i e alle nodene i komponenten. e 1 2 3 Lar s = {1, 2, 3} være eneste minimale separator i nabomengden til e = (a,b). a b G({a,b,1,2,3}): De sammenhengende komponentene av G(s) er {1} og {2, 3}. Siden a ser 1 og b ser 2 og 3 er e LB – simplicial. 17. desember 2002

9 Gjenkjenningsalgoritmen på enkleste form
Gitt graf G = (V,E). Er G svakt kordal? for alle kanter eE hvis e ikke er LB-simplicial returner G er ikke svakt kordal returner G er svakt kordal 17. desember 2002

10 Oversikt Kort introduksjon Sekvensiell implementasjon av algoritmen
Gjenkjenningsalgoritmen mer detaljert Finne minimale separatorer Finne sammenhengende komponenter i komplementgraf Eksperimentelle resultat Parallell implementasjon av algoritmen Oppsummering 17. desember 2002

11 Algoritmen litt mer detaljert
N(e): Gitt graf G = (V,E). Er G svakt kordal? for alle kanter eE finn N(e) finn alle minimale separatorer s i N(e) for hver s finn alle sammenhengende komponenter ccc i G(s) for hver ccc hvis ikke minst en node i e ser alle nodene i ccc returner G er ikke svakt kordal returner G er svakt kordal e 1 2 3 a b G 5 6 7 4 8 4 1 2 3

12 Utfordinger med algoritmen
Hver separator kan forekomme flere, men maksimalt m+n ganger i en svakt kordal graf. Ønsker ikke å beregne de ko-sammenhengende komponentene mer enn én gang for hver originale separator. Merking 1 2 e 1 2 3 a b G({a,b,1,2,3}): Løsning: Merk hver node i nabomengden til hver kant (a,b) med 1, 2 el. 3, avhengig av om den er sett av a, b eller begge nodene. Samle alle min. separatorer i en liste og sorter denne. Finn de ko-sammenhengende kun for hver originale separator 1 3 2 1 2 17. desember 2002

13 Algoritmen i O(m2) tid Gitt graf G = (V,E). Er G svakt kordal?
for alle kanter e=(a,b)E finn N(e) og merk hver node med 1, 2 el. 3 om den er sett av a, b eller begge nodene i e finn alle minimale separatorer s i N(e) og lagre dem i en liste S Sorter separatorlisten S med en lineær sorteringsalgoritme original_s = Ø, #originale = 0 for hver minimale separator sS hvis s  original_s original_s = s, #originale++ hvis #originale > n + m returner G er ikke svakt kordal ellers finn alle sammenhengende komponenter ccc i G(s) for hver ccc hvis  to noder i ccc med merking 1 og 2 returner G er svakt kordal

14 Finne minimale separatorer
De minimale separatorene i nabomengden til en kant e kan finnes ved å finne nabomengdene til de sammenhengende komponentene som fremkommer ved å fjerne e og N(e). 1 2 10 9 7 8 6 5 3 4 e Til dette brukes dybde-først-søk: Nodene i N(e) farges røde, og hver gang en rød node er funnet, er dette en node i nabomengden til en sammenhengende komponent. For hver gang søket starter på en ny node, starter vi på en ny komponent og en ny separator. S1 = {3,4} S2 = {4} S3 = {7,8} 17. desember 2002

15 Finne sammenhengende komponenter i en komplementgraf
For å overholde tidskompleksiteten må komponentene finnes i O(m) tid. Metoden er bygget på følgende observasjon: Ved å merke alle naboer til en node v i en graf G, så vet vi at i hvert fall alle umerkede noder må være i den sammen komponenten som v i komplementgrafen til G. Dermed kan noden v fjernes fra grafen og legges i en komponent sammen med en umerket node, som også merker alle sine naboer. Nå må alle noder som ikke er merket av en av de to nodene i komponenten, også tilhøre komponenten. En separator har O(n) noder. Å finne de ko-sammenhengende komponentene til en separator er derfor samme problement som å finne sammenhengende komponenter av en graf G. En ny observasjon viser når vi ikke kan legge til flere noder: Ved gjentagende å legge noder til en ko-sammenhengende komponent i en graf, og for hver node lagt til merke alle noder i dens nabomengde, så kan ingen flere noder legges til når alle gjenværende noder er merket av alle nodene i komponenten. 17. desember 2002

16 Eksempel G: ccc1: ccc2: 1 2 2 3 1 3 5 5 4 4 17. desember 2002

17 Eksperimentelle resultat
Verifisering av svakt kordale grafer med noder og – kanter Ønsker å få frem hvordan den teoretiske tidskompleksiteten samsvarer med testene 17. desember 2002

18 Oversikt Kort introduksjon Sekvensiell implementasjon av algoritmen
Parallell implementasjon av algoritmen Generelt om parallellisering og hvordan måle parallelle resultat Lastbalansering Termineringsdeteksjon Eksperimentelle resultat Oppsummering Har brukt Message Passing Programming model og standarden MPI. Programmet blir en samling av prosessorer med lokale variabler og mulighet for eksplisitt å sende og motta data mellom prosessorer ved hjelp av meldinger 17. desember 2002

19 Generelt om parallelliseringen
Den enkleste formen av algoritmen er parallell av natur Med m prosessorer kan hver prosessor sjekke én kant om den er LB-simplicial Urealistisk for store grafer Mål: Med p < m prosessorer snarest mulig avgjøre om grafen er svakt kordal Lastbalansering: Fordele beregningene likt mellom prosessorene Statisk: Del arbeidet i p like deler/jobber Mulige ulemper: Vanskelig å estimere størrelsen på jobbene, ekstra beregninger Dynamisk: Prosessorer med ledig kapasitet hjelper der det trengs Ulemper: Kommunikasjon og dataoverføringer Termineringsdeteksjon: Så snart én kant er funnet ikke LB - simplicial, stoppes alle beregninger 17. desember 2002

20 Måling av parallelle resultat
Speedup S=Ts/Tp: Hvor mange ganger raskere et problem blir løst med p prosessorer i stedet for en Teoretisk maksimal speedup: p (lineær speedup) Superlineær speedup > p kan forekomme bl.a. i forbindelse med søkealgoritme Effektivitet E=S/p: Hvor stor del av tiden hver prosessor er benyttet 0<E1 (E=1: lineær speedup) 17. desember 2002

21 Statisk lastbalansering
Lik fordeling av kantene mellom prosessorene gir en statisk lastbalansering uten kommunikasjon, men med O(p) ekstra beregninger av de ko-sammenhengende komponentene Enkel men effektiv under 2 antagelser Tiden for ekstra beregninger er mindre enn dataoverføringen for å plassere alle like separatorer på en prosessor Lastubalansen forårsaket av statisk balansering er mindre enn tiden for kommunikasjon og dataoverføring for å dynamisk korrigere ubalansen Har brukt statisk lastbalansering i den parallelle implementasjonen. 17. desember 2002

22 Parallell algoritme Gitt graf G = (V,E) og p prosessorer Pi, i = 0, ..., p – 1. Er G svakt kordal? for hver prosessor Pi Del E i like deler og finn mine_kanter Sjekk om alle mine_kanter er LB – simplicial og send svar til P0 hvis P0 Motta lokalt svar hvis lokalt svar er ”Minst én kant er ikke LB - simplicial” Stopp alle prosessorer som fortsatt arbeider returner G er ikke svakt kordal returner G er svakt kordal 17. desember 2002

23 Eksperimentelle resultat
Testkjøring med vilkårlig graf med noder og kanter og økende antall prosessorer. p Tp(min) S E 1 5258 1.0 1.00 2 2505 2.1 1.05 4 1563 3.4 0.85 6 1223 4.3 0.72 8 892 5.9 0.74 10 801 6.6 0.66 12 602 8.7 0.73 14 549 9.6 0.69 16 436 12.1 0.76 17. desember 2002

24 Oversikt Kort introduksjon Sekvensiell implementasjon av algoritmen
Parallell implementasjon av algoritmen Oppsummering 17. desember 2002

25 Oppsummering Gjennom den sekvensielle implementeringen har algoritmen vist seg godt anvendbar ved at teoretisk kjøretid samsvarte med praktisk kjøretid. Algoritmen viste seg som antatt å være godt parallelliserbar. Selv med statisk lastbalansering ga implementasjonen svært bra speedup og overgikk forventningene. 17. desember 2002

26 Ekstra: Kordale vs. svakt kordale grafer
en er G korde har i 3 lengde av sykler Alle c > Þ en i G korde har og 4 lengde av sykler Alle c > graf kordal svakt er er simplicial - LB i node Hver G c simplicial - LB er i kant Hver G c Kordale og svakt kordale grafer er to klasser av grafer som har en gitt struktur. <klikk> G er en kordal graf dersom alle sykler av lengde >3 i G har en korde Eks: 4-sykel -> legg til korde og få kordal graf En korde i en sykel er en kant mellom to ikke-etterfølgende noder <klikk> G e svakt kordal dersom alle sykler av lengde >4 i G eller komplementgrafen til G har en korde. <klikk> Vi legger og merke til at en graf som e kordal og e svakt kordal Min oppgave har altså gått ut på å gjenkjenne svakt kordale grafer på en ny måte beskrevet av bl.a. Pinar, på en lignende måte en før har gjenkjent kordale grafer på. For til tross for at de to klassene har svært like definisjoner, så har det til fram til no ikkje vært like måte å gjenkjenne de på <klikk> Dersom hver node i G er LB-simplicial, er grafen kordal Denne måten å beskrive kordale grafer på er gitt av Lekkerkerker og Boland (derfor LB). (En node er LB-simplicial dersom alle minimale separatorer inkludert nabomengden til noden er klikker) <klikk> Dersom hver kant i G er LB-simplicial, er grafen svakt kordal. Det e då lett å se den samme strukturen for å gjennkjenne kordale og svakt kordale grafer, der en node i en kordal graf tilsvarer en kant i en svakt kordal graf. 17. desember 2002


Laste ned ppt "Hovedfagspresentasjon"

Liknende presentasjoner


Annonser fra Google