Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest 2015. június 30."— Előadás másolata:

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

2 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ó?

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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)

13 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)

14 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

15 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

16 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

17 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]

18 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

19 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

20 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

21 É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

22 É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

23 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.

24 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

25 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é)

26 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}

27 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)

28 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 https://www.cs.usfca.edu/~galles/visualization


Letölteni ppt "Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest 2015. június 30."

Hasonló előadás


Google Hirdetések