Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaErzsébet Halász Megváltozta több, mint 8 éve
1
Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest 2015. 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 1 2 3 213 2 4 13 215
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 1 2 3 213 2 4 13 215
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: 1 2 3 4812 11 95610 7 Mélységi bejárás: 1 11 2 3412 6 10978 5 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) 1 2 3 4812 11 95610 7 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 1 11 2 3412 6 10978 5 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) 1 1 123 3 3223 2 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) 1 11 2 3412 6 10978 5 u 121096 3 11 8 7 2451
21
Élek osztályozása a mélységi bejárás során (irányítatlan eset) 1 11 2 3412 6 10978 5 u 121096 3 11 8 7 2451 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) 10978 2451 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 1 11 2 3412 6 5 u 1096 3 11 8 7
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 2 5 3 6 1 2 3 6 4 BACF D E 23 5 6 2 1 34 6 02581115 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 2 5 3 6 1 2 3 6 4 BACF D E 23 5 6 2 1 34 6 02581115 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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.