Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest 2015. június 30.

Slides:



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

Készítette: Kosztyán Zsolt Tibor
KÉSZÍTETTE: Takács Sándor
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.
Matematika II. 4. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
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
Minimális költségű feszítőfák
DAG topologikus rendezése
Dijkstra algoritmus Irányított gráfban.
Gráfok szélességi bejárása
Gráf Szélességi bejárás
Dominók és kombinatorika
Papp Róbert, Blaskovics Viktor, Hantos Norbert
Van-e Euler vonal az alábbi gráfban?
DAG topologikus rendezés
Prím algoritmus.
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
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
Kvantitatív módszerek
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 3. Feladat Pup Márton.
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:
SZÉLESSÉGI BEJÁRÁS Gréczy Ákos – JKR7ZR. MESE Van egy középkori kisváros, ahol az utcai lámpákat egy korosodó lámpagyújtogató ember gyújtja fel. Egyik.
Nevezetes algoritmusok: Fa megvalósítása Készítette: Várkonyi Tibor Zoltán.
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
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
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.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Kruskal-algoritmus.
Bellmann-Ford Algoritmus
GRÁFOK Definíció: Gráfnak nevezzük véges vagy megszámlálhatóan végtelen sok pont és azokat összekötő szintén véges vagy megszámlálhatóan végtelen sok.
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.
Morvai Mária-Júlia F3D3D4.  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áf. Továbbá adott.
Gráf szélességi bejárása. Cél Az algoritmus célja az, hogy bejárjuk egy véges gráf összes csúcsát és kiírjuk őket a kezdőcsúcstól való távolságuk szerint.
DIJKSTRA- ALGORITMUS. A Dijkstra-algoritmus egy mohó algoritmus, amivel irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó, véges gráfokban.
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
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ó.
Eötvös Konferencia, 2008 április 26. Kovács Máté 1 Útkeresések optimalizálása számítógépes játékokban.
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ÁFOK Marczis Ádám és Tábori Ármin. Kőnig Dénes ( ) Magyar matematikus Az első tudományos színvonalú gráfelmélet könyv írója.
PRÜFER KÓD. Fák kódolása számsorozatokkal Prüfer-kód: n csúcsú fa ↔ n-2 db szám Minden szám 1 és n közötti lehet Kölcsönösen egyértelmű: n csúcsú fák.
A Dijkstra algoritmus.
Gráf csúcsainak színezése
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.
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.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Előadás másolata:

Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest június 30.

Euler-(kör)séta keresése Minimális költségű feszítőfa keresése Szélességi bejárás Mélységi bejárás A bejárások alkalmazásai Feladatok Miről lesz szó?

Euler-körséta keresése A G irányítatlan összefüggő gráfban van zárt Euler-(kör)séta ↔ minden fokszám páros van nyílt Euler-séta ↔ pontosan 2 páratlan fokszám Kérdések: hogyan dönthető el az összefüggőség? (bejárások) irányított eset (minden kifok=befok, ill. 1-1 kivétel) ha létezik Euler-körséta, hogyan találhatjuk meg?  mohó algoritmus: menjünk előre új éleken, amíg csak lehet  ha kész: vagy jó, vagy a maradékban is minden fokszám páros  így rekurzívan felépíthető a séta

Euler-körséta keresése  mohó algoritmus: menjünk előre új éleken, amíg csak lehet  ha kész: vagy jó, vagy a maradékban is minden fokszám páros  így rekurzívan felépíthető a séta

Fák tulajdonságai Fák mini-max tulajdonsága:  minimális összefüggő (élt elhagyva szétesik)  maximális körmentes (élt behúzva kör áll elő) Egy n csúcsú összefüggő gráfnak legalább n-1 éle van (bizonyítás állapotfüggvénnyel)  minden élt elhagyunk, néhányat E-be visszateszünk  számláló: hány komponensű E (kezdetben n)  új él: ha körmentes, E-be (számláló 1-gyel csökken), különben eldobjuk  ha a végén k a számláló (= k komponensű E), akkor n-k él van E-ben (E feszítő erdő), k=1-re az állítás

Minimális költségű feszítőfák Feszítőfa: egy összefüggő gráf éleinek olyan részhalmaza, amelyek fát alkotnak, és a gráf minden pontját érintik Élsúlyozott gráfban: keresünk egy olyan feszítőfát, amelyben az élsúlyok („költségek”) összege a legkisebb Alkalmazás: hálózatépítés (telefon, internet, autópálya stb.) Mohó algoritmus: csak az aktuális lépésre figyel; a lokális optimumok globális optimumot adnak

Minimális költségű feszítőfák Kruskal-algoritmus („optimista” módszer):  növekvő sorrendben nézzük az éleket  behúzunk egy élt, ha nem keletkezik kör  az így kapott feszítőfa minimális költségű lesz

Minimális költségű feszítőfák A „pesszimista” módszer:  csökkenő sorrendben nézzük az éleket  törlünk egy élt, ha szerepel körben (azaz a megmaradó gráf összefüggő)  az így kapott feszítőfa minimális költségű lesz

Ahol nem jó a mohó algoritmus Bármely két csúcs között 2 út legyen n csúcs esetén min. n él kell (kör) Minimális költségű Hamilton-kör keresése  mohó algoritmus: élek növekvő sorrendben  egy csúcsból 2-nél több él nem indulhat ki  csak akkor záródhat a kör, ha minden csúcs rajta van a legrövidebb kör a mohó algoritmus köre

Gráfok bejárása Bejárás = a gráf csúcsainak [éleinek] felsorolása valamilyen sorrendben Segédeszköz későbbi algoritmusokhoz  feszítőfa előállítása  összefüggőség ellenőrzése, útkeresés Két nevezetes bejárás:  szélességi (breadth-first-search, BFS)  mélységi (depth-first-search, DFS) Irányítatlan és irányított gráfra is működik

Gráfok bejárása Kell egy kiválasztott kezdőcsúcs (u), ahonnan indulunk A bejárás követése: csúcsok színezésével  fehér: még nem jártunk itt  szürke: már jártunk, de még nem végeztünk  fekete: már jártunk, és végeztünk a csúccsal Kezdetben u szürke, a többi csúcs fehér A bejárás végén minden csúcs fekete

Gráfok bejárása Szélességi bejárás: Mélységi bejárás: uu Feltehetjük, hogy a gráf összefüggő (ha nem az, akkor komponensenként egy-egy kezdőpontból külön-külön végezzük el a bejárást)

Gráfok bejárása Szélességi feszítőfa: Mélységi feszítőfa: uu Mindkét bejárással feszítőfát kapunk (ha minden csúcsot összekötünk azzal a csúccsal, ahonnan először elértük)

Gráfok bejárása Szélességi feszítőfa: Mélységi feszítőfa: uu „osztódó” lámpagyújtogató „feledékeny” lámpagyújtogató „védekező” útvonal „támadó” útvonal

Szélességi bejárás Kezdés: u az aktuális pont (szürke); majd ciklus: az aktuális pont összes még fehér szomszédját szürkére színezzük az aktuális pontot feketére színezzük a legkorábbi szürkére színezett pont lesz az aktuális (ha nincs több szürke pont: vége) u

Mélységi bejárás Kezdés: u az aktuális pont (szürke); majd ciklus: ha van az aktuális pontnak fehér szomszédja, akkor az első ilyenre lépünk, és az lesz az aktuális (szürke) ha az aktuális pontnak egyik szomszédja se fehér, akkor feketére színezzük, és visszalépünk az őséhez ha u fekete lett: vége u

A szélességi bejárás alkalmazásai Van-e út u-ból v-be (bejárjuk u-ból, elértük-e közben v-t) Összefüggő-e a gráf (bejárjuk egy tetszőleges pontból; a kapott „feszítőfa” tartalmaz-e minden pontot) Van-e kör a gráfban (keletkezik-e a bejárás során olyan él, amely nincs a feszítőfában) Legrövidebb utak – súlyozatlan eset Legrövidebb (minimális élszámú) kör keresése [adott u csúcson át]

Szélességi bejárás – legrövidebb út (súlyozatlan eset) Minimális élszámú út u-ból v-be (u-ból az összes elérhető csúcsba) u 0 Emeletekre bontás

A mélységi bejárás alkalmazásai Van-e út u-ból v-be (bejárjuk u-ból, elértük-e közben v-t) Összefüggő-e a gráf (bejárjuk egy tetszőleges pontból; a kapott „feszítőfa” tartalmaz-e minden pontot) Van-e kör a gráfban (keletkezik-e a bejárás során olyan él, amely nincs a feszítőfában) A bejárás mélységi és befejezési számai Élek osztályozása Topologikus sorrend, leghosszabb út

A mélységi bejárás számai Mélységi (elérési) szám: milyen sorrendben értük el a csúcsokat (a szürkére színezés sorrendje) Befejezési (elhagyási) szám: milyen sorrendben fejeztük be a csúcsokat (a feketére színezés sorrendje) u

Élek osztályozása a mélységi bejárás során (irányítatlan eset) u faél: a bejárás során még el nem ért csúcsba mutat (szürkéből fehérbe / kisebből nagyobb mélységi számúba) visszaél: a bejárás során már elért csúcsba mutat (szürkéből szürkébe / nagyobból kisebb mélységi számúba) mélységi számok befejezési számok

Élek osztályozása a mélységi bejárás során (irányított eset) A mélységi feszítőfára vonatkozóan egy a→b irányított él faél, ha eleme a feszítőfának visszaél, ha a leszármazottja b-nek (illetve a hurokél) előreél, ha b leszármazottja a-nak, és nem faél keresztél, ha a és b nem leszármazottjai egymásnak mélységi számok befejezési számok u

Irányított körmentes gráfok Directed Acyclic Graph (DAG): olyan irányított gráf, amelyben nincs irányított kör DAG egyik mélységi bejárásában sem lehet visszaél Ha van olyan mélységi bejárás, amelyben nincs visszaél, akkor a gráf DAG Tehát a DAG tulajdonság eldöntéséhez elegendő egy mélységi bejárásban megvizsgálni, hogy van-e visszaél Topologikus sorrend: egy irányított gráf csúcsainak olyan felsorolása, amelyben minden él előre mutat Ha G nem DAG, akkor nincs topologikus sorrendje (van benne irányított kör) Igaz-e a megfordítás? Igen.

Irányított körmentes gráfok Ha G egy DAG, akkor van topologikus sorrendje.  vegyük G egy tetszőleges mélységi bejárását  a csúcsok befejezési szám szerinti csökkenő sorrendje jó lesz (ha lenne fordított a→b él, az csak visszaél lehetne)  ha nem jutottunk el mindenhová, akkor folytatjuk A B CD E F (egy lehetséges) topologikus sorrend: B, A, C, F, D, E

Leghosszabb út keresése Általában nehéz, de DAG-ban könnyű PERT-módszer: részfeladatok ütemezése (Program Evaluation and Review Technique)  az a→b irányított él súlya azt mondja meg, hogy (legalább) mennyi időnek kell eltelnie a elkezdése után b elkezdéséig  nem lehet irányított kör (körbevárás), így feltehető, hogy DAG  mennyi az összes tevékenység elvégzéséhez szükséges minimális idő? („leghosszabb út hossza”)  mik a kritikus tevékenységek, amik nem csúszhatnak? (mert csúszásuk a teljes befejezési idő csúszását is jelentené)

Leghosszabb út keresése c(uv) = az uv él súlya; t(u) = u kezdési ideje Topologikus sorrendben: kezdési idők mohó kiszámítása t(v) = max { t(u) + c(uv) | uv él } A B CD E F BACF D E max {0+5; 2+3} max {2+6; 5+2} max {5+1; 8+3} max {8+6; 11+4}

Leghosszabb út keresése uv kritikus él, ha t(v) = t(u) + c(uv) kritikus út: kritikus élekből áll - ementén nem csúszhatnak a részfeladatok („kritikus tevékenységek”) A B CD E F BACF D E kritikus (leghosszabb) út: B-A-F-D-E kritikus tevékenységek: B, A, F, D, E (C csúszhat max. 1 egységet)

Források Lovász-Pelikán-Vesztergombi: Diszkrét matematika Rónyai-Ivanyos-Szabó: Algoritmusok Friedl-Recski-Simonyi: Gráfelméleti feladatok Lovász: Kombinatorikai problémák és feladatok Elekes: Kombinatorika