Algoritmusok és Adatszerkezetek I. Elemi gráfalgoritmusok 2017. november 7.
Gráf Dolgok (csúcsok) és köztük fennálló kapcsolatok (élek) reprezentációja
Valós életbeli gráfok (hálózatok)
Valós életbeli gráfok (hálózatok)
Valós életbeli gráfok (hálózatok)
Gráfok absztrakt reprezentációra
Gráfok G=(V,E) G a gráf V: csúcsok halmaza (általában azonosítóval ellátva, gyakorlatban egyéb tulajdonságokkal is) E: élek halmaza. Egy él két csúcs közti kapcsolatot ír le. A kapcsolat lehet irányított vagy irányítatlan ill. lehet súlyozott (gyakorlatban egyéb tulajdonságok is)
Irányítatlan és irányított gráfok
Egyszerű gráfok Egy gráf egyszerű ha nincsenek benne sem hurokélek sem többszörös élek.
Gráfok számítógépes reprezentációja
Gráfok számítógépes reprezentációja Csúcsok halmaza és élek halmaza matematikai definíció ez, de nagyon előnytelen a gyakorlatban, nem használjuk Szomszédsági listás ábrázolás Szomszédsági mátrix ábrázolás
Gráfok számítógépes reprezentációja
Gráfok számítógépes reprezentációja
Gráfok sűrűsége Teljes gráf ha |E|=|V|(|V|-1)/2 Ritka gráf ha |E|~|V| Sűrű gráf ha |E|~|V|2
Adatszerkezetet a feladathoz! Létezik (u,v) él? összes él listázása egy csúcs szomszédainak listája csúcsok+élek halmaza Θ(|E|) szomszédsági mátrix Θ(1) Θ(|V|2) Θ(|V|) szomszédsági lista Θ(fokszám) Θ((fokszám) Ritka, hogy nem szomszédsági listát használunk.
Gráfalgoritmusok hatékonysága Futásidő és tárigény szempontjából mind |V| és |E| számít(hat) Különböző karakterisztikájú gráfokon (pl. ritka vs sűrű) más és más algoritmusok lehetnek előnyösek
Szélességi keresés
Szélességi keresés (SzK) Breadth First Search (BFS) Feladat: Járjuk be az összes csúcsot ami egy s kezdő csúcsból elérhető. Mindeközben kiszámoljuk az elérhető csúcsok távolságát s-től távolság: legkevesebb élt tartalmazó út élszáma
Szélességi keresés (SzK) Breadth First Search (BFS) Bemenet: Irányítatlan vagy irányított G gráf és annak egy s csúcsa Kimenet: Egy szótár, ami tartalmazza az sből elérhető csúcsokat és azok távolságát
SzK alkalmazások social network: k távolságban lévő ismerőseim Navigáció: közelben lévő helyek listázása Broadcasting: üzenet elküldése (pl. peer-to-peer hálózatokban)
felfedezetlen futásidő: Θ (V+E) elért bejárt
SzK helyessége δ(s,v) v legrövidebb út távolsága s-től
Breadth First Search - A G C I B F G A STOP FIFO Queue front A B C D E
Breadth First Search - A G C I B F G A STOP FIFO Queue front A B C D E
Szélességi fa - A B I F G E H C D
Szélességi fa Egy G gráf szélességi fája függ a kimenő élek bejárási sorrendjétől, de távolságok egyértelműek s-ből v-be vezető egy legrövidebb út:
Mélységi keresés
Mélységi keresés (MK) Depth First Search (DFS) futásidő: Θ (V+E) elérési idő elhagyási idő
MK alkalmazásai Amikor egy megoldást megtalálni elégséges, nincs szükség mindre/ optimálisra, pl. (ki)útkeresés Topológikus rendezés Erősen összefüggő komponensek
Mélységi erdő A B F E I H D G C 30
Elérési és elhagyási idők
MK élek osztályozása
Topológikus rendezés
Topológikus rendezés Egy G = (V, E) irányított 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. (Ha a gráf tartalmaz irányított kört, akkor nincs ilyen sorba rendezés.)
Gráf körmentessége
Erősen összefüggő komponensek G = (V, E) irányított gráf egy erősen összefüggő komponense a csúcsok egy maximális C ⊆ V halmaza, amelynek bármely u, v ∈ C csúcsára u és v kölcsönösen elérhetők egymásból. komponens gráf
Erősen összefüggő komponensek élek irányításának megfordítása futásidő: Θ (V+E)
Erősen-összefüggő- komponensek helyessége Első MK célja csak az elhagyási idők kiszámítása A transzponált gráfban az elhagyási idők szerint haladunk akkor MK főciklusa éppen az erősen összefüggő komponenseken iterál végig komponens gráf körmentes erősen összefüggő komponensek topológikusan rendezetten kerülnek kiíratásra
Szélességi vs mélységi keresés Mindkettő bejárja a teljes gráfot (gráfbejárások) Bejárási erdők mást fejeznek ki Futásidő Tárigény átlagos esetben Teljes Optimális Szélességi Θ (V+E) Θ (V) Mélységi Θ(átmérő)
Összegzés Gráfok (hálózatok) Gráf reprezentációk Szélességi keresés optimális megoldás Mélységi keresés kevés memória zárójelezési tulajdonság