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

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

A Floyd-Warshall algoritmus
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.
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 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.
Dijkstra-algoritmus ismertetése
Algoritmusok II. Gyakorlat 2. Feladat Pup Márton.
Algoritmusok II. Gyakorlat 3. Feladat Pup Márton.
Hierarchikus lista Kétféle értelemezése van:
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.
Szélességi bejárás. Kezdőcsúcsból felvétele Innen haladunk egy szinttel mélyebbre, felvesszük az összes olyan csúcsot, amit így elérhetünk Ha elfogytak,
Szélességi bejárás. Kezdőcsúcs felvétele Innen haladunk egy szinttel lejebb, itt felvesszük az összes olyan csúcsot, amit elérünk Ha elfogytak, akkor.
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.
Gráfok ábrázolása teljesen láncoltan
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.
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.
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
Gráfalgoritmusok G=(V,E) gráf ábrázolása
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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 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 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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 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.02.22. 8:51:23 ADAT-09