Gráfalgoritmusok G=(V,E) gráf ábrázolása

Slides:



Advertisements
Hasonló előadás
A Floyd-Warshall algoritmus
Advertisements

Készítette: Kosztyán Zsolt Tibor
Készítette: Major Máté
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
Illeszkedési mátrix Villamosságtani szempontból legfontosabb mátrixreprezentáció. Legyen G egy irányított gráf, n ponton e éllel. Az n x e –es B(G) mátrixot.
Illés Tibor – Hálózati folyamok
Erősen összefüggő komponensek meghatározása
DAG topologikus rendezése
Dijkstra algoritmus Irányított gráfban.
Dijkstra algoritmus Baranyás Bence. Feladat Adott egy G=(V,E) élsúlyozott, irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó, véges.
Gráfok szélességi bejárása
Gráfok szélességi bejárása Algoritmus bemutatása egy gráfon példa.
Készítette: Pető László
DAG topologikus rendezés
Dijkstra algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Készítette: Kosztyán Zsolt Tibor
Gráf szélességi bejárása
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Készítette: Lakos Péter.  Adott egy irányított vagy irányítatlan, véges gráf.  Írjuk ki a csúcsokat egy kezdőcsúcstól való távolságuk növekvő sorrendjében.
Algoritmusok II. Gyakorlat 2. Feladat Pup Márton.
Algoritmusok II. Gyakorlat 3. Feladat Pup Márton.
GRÁFELMÉLET Alapfogalmak 1..
Hierarchikus lista Kétféle értelemezése van:
Gráf Szélességi bejárás/keresés algoritmusa
Fák.
A Dijkstra algoritmus.
Gráf szélességi bejárása SzB(G,p). Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak: A gráfnak megfelelő fa:
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Dijkstra Algoritmusa Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S a b c d e
Az ábrán az inicializáló blokk lefutása utáni állapotot láthatjuk. A KÉSZ halmazhoz való tartozást színezéssel valósítjuk meg. A nem KÉSZ csúcsok fehérek,
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Háló- (gráf-) algoritmusok
Business Mathematics A legrövidebb út.
Bellmann-Ford Algoritmus
INFOÉRA Gráfok, gráfalgoritmusok I. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Útkeresések.
Dag Toplogikus rendezés
SZÉLESSÉGI BEJÁRÁS Pap Imre DVX468. A bejárás Meglátogatjuk az első csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes.
Projektmenedzsment gráf általában súlyozott irányított
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Algoritmusok és adatszerkezetek
Szélességi bejárás Gráf-algoritmusok Algoritmusok és adatszerkezetek II. Gergály Gábor WZBNCH1.
Készítette : Giligor Dávid Neptun : HSYGGS
Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
Gráf Szélességi bejárás Készítette: Giligor Dávid Neptun : HSYGGS.
3. Feladat Szélességi Bejárás FZGAF0 – Pintér László.
Algoritmus DAG = irányított körmentes gráf. Először ezt a tulajdonságot ellenőrizzük (mélységi bejárással), aztán rendezzük: Q: Sor adatszerkezet, kezdetben.
Szélességi bejárás Pátyerkó Dorina (VTYX9O). Szélességi bejárás algoritmusa Kijelölünk egy kezdőcsúcsot. A csúcs szomszédjait megkeressük, majd betesszük.
Kvantitatív módszerek
Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest június 30.
A Dijkstra algoritmus.
BFák Kiegyensúlyozott keresőfák
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) IDE KELL: prioritási sor kupaccal. Juhász.
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
INFOÉRA Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Algoritmusok és Adatszerkezetek I.
Minimális feszítőfák Definíció: Egy irányítatlan gráf feszítőfája a gráfnak az a részgráfja, amely fagráf és tartalmazza a gráf összes cúcspontját. Definíció:
Algoritmusok és Adatszerkezetek I.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Dijkstra algoritmusa: legrövidebb utak
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

Gráfalgoritmusok G=(V,E) gráf ábrázolása a. Szomszédsági lista (E << V): minden u V csúcshoz az Adj[u] tartalmazza az összes olyan v csúcsot, melyre létezik az (u,v) E él. Listák hosszának összege: digráfban: E  irányítatlan gráfban 2 E  b. Csúcsmátrix (szomszédsági, adjacencia mátrix): A=(aij) mérete V  V, aij értéke 1, ha (i,j) E és 0 egyébként. Szimmetrikus esetben elég a főátló és a fölötte lévő elemeket tárolni. c. Incidencia mátrix: B=(bij) mérete V  E , és (bij) értéke –1, ha a j él i-ből kivezet, 1 ha a j él i-be bevezet és 0 egyébként. 2019.04.29. 2:04:12 ADAT-09

Gráfalgoritmusok Definíció: Hálózat (súlyozott gráf) az a gráf, amelynek minden éléhez egy számot (súlyt) rendelünk hozzá. Súlyfüggvény: w: E  R, egy (u,v) él súlya w(u,v) Tárolása: a. az éllel együtt b. NIL, 0, vagy , ha az él nem létezik, egyébként a súly. 2019.04.29. 2:04:12 ADAT-09

A szélességi keresés Adott a G=(V,E) gráf és benne egy kitüntetett s kezdőcsúcs A szélességi keresés G éleit vizsgálja és rátalál minden s-ből elérhető csúcsra Kiszámítja az elérhető csúcsok legrövidebb (legkevesebb élből álló) távolságát s-től Létrehoz egy s gyökerű „szélességi fát”, amelyben az s-ből elérhető csúcsok vannak. A csúcsoknak szint tulajdonít (fehér, szürke, fekete) Kezdetben minden csúcs fehér, kivéve s-et, amely szürke. Szürke lesz egy csúcs, ha elértük és fekete, ha megvizsgáltuk az összes belőle kiinduló élt. A szélességi fa kezdetben az s csúcsból áll. Ez a gyökér. Ha egy fehér v csúcshoz értünk az u csúcsból, akkor azt felvesszük a fába (u,v) éllel, és u lesz a v szülője. Attributumok Szin[u] - az u csúcs színe [u] - az u csúcs elődje d[u] - az u távolsága s-től Q - a szürke csúcsok sora 2019.04.29. 2:04:12 ADAT-09

A szélességi keresés O(V+E) SZÉLESSÉGI_KERESŐ(G,s) FOR  V[G]\[s] csúcsra DO szin[u] FEHÉR d[u]   [u] NIL Szin[s] SZÜRKE d[s]  0 [s] NIL Q  {s} WHILE Q   DO u  fej[Q] FOR v Adj[u]-ra DO IF szin[v]=FEHÉR THEN szin[v] SZÜRKE d[v] d[u]+1 [v] u SORBA(Q,v) SORBÓL(Q) szin[u] FEKETE O(V+E) 2019.04.29. 2:04:12 ADAT-09

A szélességi keresés Definíció: (s,v) jelölje a legrövidebb úthosszat s-ből v-be, ha létezik út s-ből v-be Egyébként (s,v) legyen . Lemma: Legyen G=(V,E) digráf vagy gráf és s  V tetszőleges csúcs. Ekkor bármely (u,v) E él esetén (s,v)  (s,u)+1. Lemma: Legyen G=(V,E) gráf és tegyük fel, hogy a szélességi keresés algoritmust alkalmaztuk egy s  V kezdőcsúccsal. Ekkor a szélességi keresés által kiszámított d értékek minden v  V csúcsra kielégítik a d[v]  (s,v) egyenlőtlenséget. Lemma: Tegyük fel, hogy a szélességi keresést alkalmaztuk a G=(V,E) gráfra és a futás során a Q sor a v1,…,vr csúcsokat tartalmazza. (v1 az első, vr az utolsó) Ekkor d[vr] d[v1]+1 és d[vi] d[vi+1] bármely i=1,…,r-1 értékre. Tétel: Legyen G=(V,E) gráf és tegyük fel, hogy a szélességi keresés algoritmust alkalmaztuk egy s  V kezdőcsúccsal. Ekkor a szélességi keresés minden s-ből elérhető csúcsot elér és befejezéskor d[v]= (s,v), s  V. Továbbá bármely s-ből elérhető v  s csúcsra az s-ből v-be vezető legrövidebb utak egyikét megkapjuk, ha az s-ből [v]-be vezető legrövidebb utat kiegészítjük a ([v],v) éllel. 2019.04.29. 2:04:12 ADAT-09

A szélességi keresés Definíció: G=(V,E) előd részfa, ha V={v V: [v]  NIL} {s} és E={([v],v) E: v  V \{s}} Definíció: A G előd részfa szélességi fa, ha V elemei az s-ből elérhető csúcsok és bármely v V csúcsra egyetlen egyszerű út vezet s-ből v-be G-ben Lemma: A szélességi keresés olyan  értékeket határoz meg, amelyekre a G=(V,E) előd részfa egy szélességi fa. Eljárás az s-ből v-be vezető legrövidebb út csúcsai kiírására: UTAT_NYOMTAT(G,s,v) IF v = s THEN print (s) ELSE IF [v] = NIL THEN print(„nincs út s és v között”) ELSE UTAT_NYOMTAT(G,s, [v]) print(v) 2019.04.29. 2:04:12 ADAT-09

A mélységi keresés A mélységi keresés G éleit vizsgálja, mindig az utoljára elért,új kivezető élekkel rendelkező v csúcsból kivezető, még nem vizsgált éleket deríti föl. Az összes ilyen él megvizsgálása után visszalép és azon csúcs éleit vizsgálja, amelyből v-t elértük. Az összes csúcsot megvizsgálja Kiszámítja az elérhető csúcsok legrövidebb (legkevesebb élből álló) távolságát s-től Létrehoz egy „mélységi erdőt”, amely az előd részgráf fáiból áll. A csúcsoknak szint tulajdonít (fehér, szürke, fekete) Kezdetben minden csúcs fehér, szürke lesz, mikor elértük, és fekete, mikor elhagytuk. Minden csúcshoz két időpontot rendel, az elérési d[v] és az elhagyási időpontot f[v]. Definíció: G=(V,E) előd részgráf, ha E={([v],v) E: v  V és [v] NIL} 2019.04.29. 2:04:12 ADAT-09

A mélységi keresés (V+E) MK_BEJÁR(u) Szin[u] SZÜRKE MÉLYSÉGI_KERESŐ(G) FOR u V[G] csúcsra DO szin[u] FEHÉR [u] NIL idő 0 IF szin[u]=FEHÉR THEN MK_BEJÁR(u) (V+E) MK_BEJÁR(u) Szin[u] SZÜRKE d[u] idő idő+1 FOR  vAdj[u] csúcsra DO IF szin[v]=FEHÉR THEN [v] u MK_BEJÁR(v) Szin[u] FEKETE f[u] idő idő+1 2019.04.29. 2:04:12 ADAT-09

A mélységi keresés tulajdonságai Tétel: (Zárójelezés tétele) Mélységi keresést alkalmazva egy G=(V,E) (irányított, vagy iráyítatlan) gráfra a következő 3 feltétel közül pontosan 1 teljesül bármely u és v csúcsra - a [ d[u], f[u] ] és a [ d[v], f[v] ] intervallumok diszjunktak - a [ d[v], f[v] ] intervallum tartalmazza a [ d[u], f[u] ] intervallumot , és az u csúcs a v csúcs leszármazottja a mélységi fában - a [ d[u], f[u] ] intervallum tartalmazza a [ d[v], f[v] ] intervallumot , és a v csúcs az u csúcs leszármazottja a mélységi fában Következmény: (Leszármazottak intervallumainak beágyazása) A v csúcs akkor és csak akkor leszármazottja az u csúcsnak az irányított, vagy irányítatlan G gráf mélységi erdejében, ha d[u]<d[v]<f[v]<f[u]. Tétel: (Fehér út tétele) Egy G=(V,E) gráfhoz tartozó mélységi erdőben a v csúcs akkor és csak akkor leszármazottja az u csúcsnak, ha u elérésekor a d[u] időpontban a v csúcs elérhető u-ból olyan úton, amely csak fehér csúcsokat tartalmaz. 2019.04.29. 2:04:12 ADAT-09

Az élek osztályozása A mélységi keresés révén a mélységi kereséstől függően a bemeneti gráf éleit osztályozhatjuk. Éltípusok: egy (u,v) él Fa él, ha a G mélységi erdő éle. Visszamutató él, ha v megelőzője u-nak egy mélységi fában. Előre mutató él, ha v leszármazottja u-nak egy mélységi fában Kereszt él, ha a fenti három osztályba nem sorolható be Irányított gráf akkor és csak akkor körmentes, ha a mélységi keresés során nem találtunk visszamutató éleket. Tétel: Egy irányítatlan G gráf mélységi keresésekor bármely él vagy fa él, vagy visszamutató él. 2019.04.29. 2:04:12 ADAT-09

Topologikus rendezés Egy irányított G=(V,E) gráf topologikus rendezése a csúcsainak sorba rendezése úgy, hogy ha G-ben szerepel az (u,v) él, akkor u előzze meg v-t a sorban TOPOLOGIKUS_RENDEZÉS(G) MÉLYSÉGI_KERESŐ(G) hívása, minden csúcsra meghatározzuk az f[u] elhagyási időt Az egyes csúcsok elhagyásakor szúrjuk be azokat egy láncolt lista elejére RETURN( a csúcsok listája) (V+E) Tétel: A TOPOLOGIKUS_RENDEZÉS(G) egy írányított, körmentes gráf topologikus rendezését állítja elő. 2019.04.29. 2:04:12 ADAT-09

Erősen összefüggő komponensek Definíció: A G=(V,E) gráf transzponáltja a GT=(V,ET) gráf, ha ET={(u,v):(v,u) E} ERŐSEN_ÖSSZEFÜGGŐ_KOMPONENSEK(G) MÉLYSÉGI_KERESŐ(G) hívása, minden csúcsra meghatározzuk az f[u] elhagyási időt GT meghatározása MÉLYSÉGI_KERESŐ(GT) hívása, de fő ciklusában a csúcsokat f[u] szerint csökkenő sorrendben vizsgáljuk A 3. lépésben kapott mélységi erdő egyes fáinak csúcsait íratjuk ki, mint erősen összefüggő komponenseket (V+E) Lemma: Ha két csúcs ugyanabba az erősen összefüggő komponensbe tartozik, akkor a közöttük vezető utak egyike sem hagyhatja el az erősen összefüggő komponenst 2019.04.29. 2:04:12 ADAT-09

Erősen összefüggő komponensek Tétel: Bármely mélységi keresés esetén egy erősen összefüggő komponensbe tartozó összes csúcs ugyanabba a mélységi fába kerül. Definíció: Egy u csúcs ősapja a w=(u) csúcs, ha w elérhető u-ból és a mélységi keresésben f[w] maximális Tétel: A G=(V,E) irányított gráfban bármely u V csúcs (u) ősapja megelőzője lesz u-nak G bármely mélységi keresésekor. Következmény: A G=(V,E) irányított gráf bármely mélységi keresése során minden u V csúcsra az u és (u) csúcsok ugyanahhoz az erősen összefüggő komponenshez tartoznak. Tétel: A G=(V,E) irányított gráfban az u,v V csúcsok akkor és csak akkor tartoznak ugyanahhoz az erősen összefüggő komponenshez, ha G mélységi keresésekor ugyanaz a csúcs az ősapjuk. 2019.04.29. 2:04:12 ADAT-09