Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Hasonló dokumentumok
Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Gráfok, definíciók. Minden irányítatlan G = (V,E) gráf olyan irányított gráfnak tekinthető, amelyre teljesül, hogy

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Algoritmusok és adatszerkezetek 2.

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

A számítástudomány alapjai

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.

Diszkrét matematika 2. estis képzés

Adatszerkezetek II. 2. előadás

Gráfalgoritmusok ismétlés ősz

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Diszkrét matematika 2.

Diszkrét matematika 2. estis képzés

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Diszkrét matematika 2.C szakirány

Az optimális megoldást adó algoritmusok

Diszkrét matematika 2. estis képzés

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Algoritmuselmélet 11. előadás

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Gráfalgoritmusok: összefüggőség, párosítás páros gráfban

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

Gráfelmélet jegyzet 2. előadás

A DFS algoritmus. Összeállította: Szeszlér Dávid, c BME Számítástudományi és Információelméleti Tanszék, 2015, 2016.

Diszkrét matematika 2.C szakirány

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Diszkrét matematika 1. estis képzés

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

Diszkrét matematika 2.C szakirány

Diszkrét matematika 1. estis képzés

SzA II. gyakorlat, szeptember 18.

Általános algoritmustervezési módszerek

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

Diszkrét matematika 2. estis képzés

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Diszkrét matematika 2.C szakirány

Ramsey-féle problémák

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Diszkrét matematika I.

Formális nyelvek - 9.

Algoritmusok bonyolultsága

Adatszerkezetek II. 3. előadás

2. Visszalépéses keresés

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

10. Gráf absztrakt adattípus, gráfok ábrázolása

Dijkstra algoritmusa

Algoritmusok bonyolultsága

Diszkrét matematika 2. estis képzés

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Diszkrét Matematika MSc hallgatók számára 7. Előadás Párosítási tételek Előadó: Hajnal Péter Jegyzetelő: Kovácsházi Anna

Diszkrét matematika 2.

Diszkrét matematika 2.

22. GRÁFOK ÁBRÁZOLÁSA

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Megoldások 7. gyakorlat Síkgráfok, dualitás, gyenge izomorfia, Whitney-tételei

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Algoritmuselmélet 7. előadás

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás

KOVÁCS BÉLA, MATEMATIKA I.

Adatszerkezetek 2. Dr. Iványi Péter

OKTV 2007/2008 Informatika II. kategória döntő forduló Feladatlap. Oktatási Hivatal

Diszkrét matematika 2.C szakirány

Gráfelméleti feladatok. c f

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Közösségek keresése nagy gráfokban

Javító és majdnem javító utak

2. Visszalépéses stratégia

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Adatszerkezetek II. 1. előadás

SzA X/XI. gyakorlat, november 14/19.

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

Diszkrét matematika 2.

Gráf-algoritmusok Legrövidebb utak

Amortizációs költségelemzés

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

Diszkrét matematika I.

Diszkrét matematika II. gyakorlat

Algoritmuselmélet 1. előadás

28. MÉLYSÉGI BEJÁRÁS

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)

Gráfelméleti alapfogalmak

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Logika és számításelmélet. 11. előadás

Átírás:

Példa Adott egy sziget ahol 42 kaméleon lakik. A kaméleonok három színt vehetnek fel piros, kék és zöld. Ha két különböző színű kaméleon találkozik, akkor megijednek és mindkettő átváltoztatja a színét a harmadik színre. A szigeten a kiindulási időpontban 13,14,15 darab piros zöld és kék kaméleon van. Előfordulhat -e, hogy a szigeten minden kaméleonnak ugyanaz legyen a színe? Megoldás: Definiáljunk egy gráfot, a gráf pontjai az (x,y,z) számhármasok, ahol minden komponens nemnegatív egész és x + y + z = 42. Az élek a lehetséges átváltozásoknak felelnek meg. Tehát (x,y,z)-nek három szomszédja lesz (x 1,y 1,z + 2), (x 1,y + 2,z 1), (x + 2,y 1,z 1). A feladat, hogy meghatározzuk van -e a gráfban a (13, 14, 15) pontból a (42, 0, 0), (0, 42, 0), (0, 0, 42) pontok valamelyikébe út. Ezt megoldhatjuk szélességi kereséssel. Példa Adott egy n n-es sakktábla. Az (1,1) mezőn áll egy huszár. Határozzuk meg eljuthat -e az (u,v) mezőre, ha igen adjunk meg egy legkevesebb lépésből álló utat! Adjunk algoritmust, ami megoldja a feladatot. Megoldás Konstruáljunk a feladathoz egy gráfot. A gráf csúcsai (a lehetséges konfigurációk) a sakktábla mezői, két n-nél nem nagyobb pozitív koordinátából álló vektorok. Két csúcs össze van kötve, ha a huszár átléphet egyikből a másikba. Tehát az (x,y) szomszédjai az (x 1,y + 2), (x 1,y 2), (x + 1,y + 2), (x + 1,y 2), (x + 2,y 1), (x+2, y+1), (x 2, y 1), (x 2, y+1) párosok közül azok, amelyekben mindkét koordináta pozitív és nem nagyobb, mint n. A feladat megtalálni a legrövidebb utat az (1,1) pontból az (u,v) pontba. Ezt egy szélességi kereséssel, amit az (1,1) pontból indítunk a fenti gráfban megtaláljuk. Megjegyzés Ha adott mezők egy T halmaza, ahova nem léphet, akkor is hasonlóan oldható meg a feladat. Ez esetben csak a megengedett mezők a gráf pontjai. Példa Erdős szám kiszámítása. Erdős Pál matematikus tiszteletére definálták az Erdős szám fogalmát. Erdős Pál Erdős száma 0, azoknak a matematikusoknak, akiknek van közös cikkük Erdőssel az Erdős számúk 1. Azoknak, akiknek nincs közös cikkük Erdős Pállal, de van közös cikkük olyan matematikussal, akinek az Erdős száma 1, az Erdős száma 2. Általában egy matematikus Erdős száma a társszerzői Erdős számának minimuma +1. Adjunk algoritmust, amely a cikkek adatbázisa alapján (feltételezhetjük, hogy adott egy TÁRS algoritmus, ami minden matematikusra visszaadja a társszerzői halmazát) meghatározza egy adott személy Erdős számát. A futási idő lineáris kell legyen R + n-ben, ahol n az adatbázisban a matematikusok száma R pedig a t(i) értékek összege, ahol t(i) az i személy társsszerzőinek száma. Definiálunk egy gráfot, amelyben midnenkinek a társszerzői a szomszédjai. Ebben keressük a legrövidebb Erdős szerző utat. Mélységi keresés Ez az algoritmus a gráf pontjait járja be, eredményképpen egy mélységi feszítőerdőt ad vissza az Apa függvény által. A pontok bejártságát színekkel kezeljük, fehér= érintetlen, szürke=meg- kezdett, fekete=befejezett. Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} MBejar(u) szin(u):=szurke for(v in Kiel(G,u)) {if szin(v)=feher Then {Apa(v):=u 1

MBejar(v)}} szin(u):=fekete 8 9 1 2 3 4 5 6 7 1. ábra. MBejar(1) szín(1):=szürke Apa(2):=1 MBejar(2) szín(2):=szürke Apa(3):=2 MBejar(3) szín(3):=szürke Apa(5):=3 MBejar(5) szín(5):=szürke Apa(6):=5 2

MBejar(6) szín(6):=szürke Apa(7):=6 MBejar(7) szín(7):=szürke MBejar(7) vége, mert 5 már nem fehér szín(7):=fekete MBejar(6) vége szín(6):=fekete MBejar(5) vége szín(5):=fekete MBejar(3) vége szín(3):=fekete Apa(4):=2 MBejar(4) szín(4):=szürke MBejar(4) vége szín(4):=fekete MBejar(2) vége szín(2):=fekete MBejar(1) vége szín(1):=fekete MBejar(8) szín(8):=szürke Apa(9):=8 MBejar(9) szín(9):=szürke MBejar(9) vége szín(9):=fekete 3

MBejar(8) vége szín(8):=fekete Mélységi keresés kibővítve Az algoritmus elemzéséhez és egyes alkalmazásainak helyességének bizonyításához hasznos, ha minden pontra definiáljuk a d elérési és f elhagyási idejét. MelykeresBovit(G) for(u in G) {szin(u):=feher Apa(u):=0} ido:=0 for(u in G) {if szin(u)=feher then MBejarBovit(u)} MBejarBovit(u) szin(u):=szurke ido:=ido+1 d(u):=ido for(v in Kiel(G,u)) {if szin(v)=feher Then {Apa(v):=u MBejarBovit(v)}} szin(u):=fekete ido:=ido+1 f(u):=ido MBejarBovit(1) szín(1):=szürke d(1)=1 Apa(2):=1 MBejarBovit(2) szín(2):=szürke d(2)=2 Apa(3):=2 MBejarBovit(3) szín(3):=szürke d(3)=3 Apa(5):=3 4

8 9 1 2 3 4 5 6 7 2. ábra. MBejarBovit(5) szín(5):=szürke d(5)=4 Apa(6):=5 MBejarBovit(6) szín(6):=szürke d(6)=5 Apa(7):=6 MBejarBovit(7) szín(7):=szürke d(7)=6 MBejarBovit(7) vége, mert 5 már nem fehér szín(7):=fekete f(7)=7 5

MBejarBovit(6) vége szín(6):=fekete f(6)=8 MBejarBovit(5) vége szín(5):=fekete f(5)=9 MBejarBovit(3) vége szín(3):=fekete f(3)=10 Apa(4):=2 MBejarBovit(4) szín(4):=szürke d(4)=11 MBejarBovit(4) vége szín(4):=fekete f(4)=12 MBejarBovit(2) vége szín(2):=fekete f(2)=13 MBejarBovit(1) vége szín(1):=fekete f(1)=14 MBejarBovit(8) szín(8):=szürke d(8)=15 Apa(9):=8 MBejarBovit(9) szín(9):=szürke d(9)=16 6

MBejarBovit(9) vége szín(9):=fekete f(9)=17 MBejarBovit(8) vége szín(8):=fekete f(8)=18 1. táblázat. A keresés során kapott értékek pont 1 2 3 4 5 6 7 8 9 apa 0 1 2 2 3 5 6 0 8 d 1 2 3 11 4 5 6 15 16 f 14 13 10 12 9 8 7 18 17 Az algoritmus egy mélységi feszítő erdőt (MFE) ad eredményül, a csúcshalmaz V az élek pedig F = {(p,q) : Apa(q) = p}. Tétel (Zárójelezési tétel) Mélységi keresést alkalmazva a G = (V,E) gráfra, a következő három feltétel közül pontosan az egyik teljesül minden u és v pontra: A [d(u), f (u)] és [d(v), f (v)] intervallumok diszjunktak és az u és v pontok egyike sem leszármazottja a másiknak a MFE-ben. [d(v), f (v)] [d(u), f (u)] és v leszármazottja u-nak a MFE-ben. [d(u), f (u)] [d(v), f (v)] és u leszármazottja v-nek a MFE-ben. Bizonyítás. Legyen d(u) < d(v). Ha d(v) < f (u), akkor v elérésekor u színe szürke volt, tehát v leszármazottja MFE-ben u-nak. Továbbá, v-t előbb elhagyjuk, mielőtt visszatérnénk u-hoz, tehát f (v) < f (u). Ha d(v) > f (u), akkor d(u) < f (u) < d(v) < f (v), tehát a két intervallum diszjunkt. Ebből következik, hogy mind u, mind v elérésekor a másik nem lehetett szürke, tehát nem leszármazottjai egymásnak MFE-ben. Következmény. A v pont akkor és csak akkor leszármazottja az u pontnak MFE-ben, ha d(u) < d(v) < f (v) < f (u) Tétel (Fehér út tétel) Minden v pont akkor és csak akkor leszármazottja az u pontnak MFE-ben, ha a d(u) időben (u elérésekor) van csupa fehér pontokon át haladó u v út G-ben. Bizonyítás Tegyük fel, hogy van u v az MFE-ben. Ekkor ennek tetszőleges w pontjára d(u) < d(w), tehát w fehér a d(u) időben. Tegyük fel, hogy van olyan u = v 1...v k = v út, hogy minden v i fehér a d(u) időben, de v nem lesz leszármazottja u-nak MFE-ben. Feltehetjük, hogy i < k-ra v i leszármazottja lesz u-nak az MFE-ben. Mivel v k 1 leszármazottja u-nak, ezért f (v k 1 ) < f (u). De d(u) < d(v) < f (v k 1 ), így d(u) < d(v) < f (v k 1 ) < f (u), tehát v leszármazottja u-nak MFE-ben. 7

Élek osztályozása Faél: (u,v) E faél, ha bekerül a MFE élei közé, azaz Apa(v) = u. Visszaél: (u,v) E visszaél, ha u leszármazottja v-nek a MFE-ben. Előreél: (u,v) E előreél, ha v leszármazottja u-nek a MFE-ben és nem faél. Keresztél: Minden más esetben (u, v) E keresztél. Példa az élek osztályozására Faélek: (1, 2), (2, 3), (3, 5), (5, 6), (6, 7), (2, 4), (8, 9) Visszaélek: (5, 2), (7, 5), (9, 8) Előreélek: (1, 3) Keresztélek: (8, 1). Tulajdonságok (u,v) E akkor és csak akkor faél, ha az (u,v) él vizsgálatakor v színe fehér. (u,v) E akkor és csak akkor visszaél ha az (u,v) él vizsgálatakor v színe szürke. (u,v) E akkor és csak akkor előre-él ha az (u,v) él vizsgálatakor v színe fekete és d(u) < d(v). (u,v) E akkor és csak akkor keresztél ha az (u,v) él vizsgálatakor v színe fekete és d(u) > d(v). Tétel Ha G irányítatlan gráf, akkor bármely mélységi keresésre minden éle vagy fa-él, vagy vissza-él. Bizonyítás Tegyük fel, hogy (u,v) E és d(u) < d(v). Mivel v Ki(G,u), ezért valamikor végrehajtódik az (u,v) él vizsgálata, és ekkor Szin(u)=Szurke. Milyen lehet v színe? Szin(v) = Feher : Ekkor (u,v) faél lesz. Szin(v) = Szurke : Ekkor (u,v) visszaél lesz. Szin(v) = Fekete : Nem lehet, mert ez azt jelentené, hogy f (v) < d(u). Topologikus rendezés Definíció Egy G =(V,E) irányított gráf topologikus rendezésén a V pontjainak egy olyan v 1,v 2,...,v n (n = V ) felsorolását értjük, amelyre teljesül, hogy minden (u,v) E élre, u előbb van a felsorolásban, mint v. Lemma A G = (V,E) irányított gráfnak akkor és csak akkor van topologikus rendezése, ha G körmentes. Lemma A G = (V,E) irányított gráfban akkor és csak akkor van kör, ha van vissza-éle. Bizonyítás. Tegyük fel, hogy van egy (u,v) visszaél. Ekkor hozzávéve az (u,v) visszaélt az MFE-ben levő v u úthoz, egy kört kapunk G-ben. 8

Tegyük fel, hogy v 1,v 2,...,v k 1,v k = v 1 egy kör, továbbá a kör pontjai közül v 1 -et érjük el először a mélységi bejárás során. Ekkor a d(v 1 ) időben van csupa fehér pontokon át haladó v 1 v k út. A fehér út tétel miatt v k leszármazottja lesz a v 1 -nek a MFE-ben, tehát (v k,v 1 ) visszaél lesz. Tétel Ha a G irányított gráf körmentes, akkor pontjainak minden olyan v 1,...,v n felsorolása, amelyre f (v i ) > f (v i+1 ), i = 1,...,n 1 G egy topologikus rendezése lesz bármely mélységi bejárással kiszámított f elhagyási függvényre. Bizonyítás Legyen (u, v) E tetszőleges él. Ha d(u) < d(v), azaz u-t előbb érjük el, mint v-t, akkor a fehér út tétel miatt v leszármazottja lesz u-nak a MFE-ben, tehát d(u) < d(v) < f (v) < f (u). Tegyük fel, hogy d(u) > d(v), azaz v-t előbb érjük el, mint u-t. Mivel nincs v u út G-ben, ezért v-t befejezzük, mielőtt u-t elérnénk, tehát f (v) < d(u) < f (u). Elvi algoritmus A mélységi keresés algoritmusát hajtsuk végre a gráfra. Az egyes csúcsok elhagyásakor beszúrjuk őket egy láncolt lista elejére. A csúcsok láncolt listája adja meg a rendezési sorrendet. Az algoritmus futási ideje megegyezik a mélységi keresésével, azaz θ(v + E). (Feltéve, hogy a ki iteráció lineáris időben megvalósítható.) Erősen összefüggő komponensek Definíció u v ha van u v út és v u út is a gráfban. Lemma A reláció egy ekvivalencia reláció, így egy osztályozást definiál. Definíció A reláció által definiált osztályozás osztályai a gráf erősen összefüggő komponensei. Azaz egy u pontot tartalmazó erősen összefüggő komponens: C(u) = {v V : u v}. Definíció A G = (V,E) gráf transzponáltja: G T = (V,E T ), ahol E T = {(p,q) : (q, p) E}. Definíció Egy G = (V,E) gráf komponensgráfjának hívjuk azt a gráfot, amelynek csúcsai az erősen összefüggő komponensek, és C komponensből akkor vezet él egy D komponensbe, ha C valamely pontjábol G-ben vezet él D valamely pontjába. Lemma A komponensgráf körmentes. Példa EOK komponensek használatára Feladat: Egy faluban minden emberre ismert azoknak a halmaza, akiknek továbbmondja az általa megismert pletykát. Határozzuk meg a falu legtitoktartóbb emberét, azaz olyan embert, akinek elmondva egy hírt a legkevesebb emberhez jut el a pletyka! Megoldás: Definiáljunk egy irányított gráfot (a falu pletyka gráfját): a pontok az emberek A-ból megy él B-be, ha A elmondja B-nek a pletykát. A gráfban a feladat olyan pont keresése, amelybol a legkevesebb pontba vezet út. A megoldást a következő (elvi) algoritmus szolgáltatja - határozzuk meg az erősen összefüggő komponensek komponensgráfját - vegyük azokat a komponenseket, amelyekből a komponensgráfban nem vezet ki él - a legkisebb elemszámú ilyen komponensből válasszunk ki egy pontot. Másik példa Feladat: Az előző faluban szeretnénk megnyerni a választásokat. Ehhez a politikai ellenfelekről rágalmakat akarunk elterjeszteni. Viszont a lehető legkevesebb emebernek akarjuk személyesen mi elmondnai ezeket. Így a cél egy minimális elemszámú halmazát találni az embereknek, akiktől mindenkihez eljut a pletyka. 9

Megoldás: Definiáljunk egy irányított gráfot (a falu pletyka gráfját): a pontok az emberek A-ból megy él B-be, ha A elmondja B-nek a pletykát. A gráfban a feladat olyan pont keresése, amelybol a legkevesebb pontba vezet út. A megoldást a következő (elvi) algoritmus szolgáltatja - határozzuk meg az erősen összefüggő komponensek komponensgráfját - vegyük azokat a komponenseket, amelyekbe a komponensgráfban nem vezet él - minden ilyen komponensből válasszunk ki egy pontot. Elvi algoritmus 1. Számítsuk ki a MELYKERES algoritmussal az f(u) elhagyási értékeket. 2. A G T transzponált gráfra alkalmazzuk a MELYKERES eljárást úgy, hogy a pontokra a MBEJÁR eljárást f szerint csökkenő sorrendben hívjuk. 3. A 2. pontban az egy mélységi feszítőfába kerülő pontok alkotnak egy erősen összefüggő komponenst. Megvalósítás: A 2-es pontban nem rendezést hajtunk végre az f értékek szerint, hanem a pontokat a befejezésük időpontjában berakjuk egy verembe, és abból vesszük a pontokat a második bejárásnál. 8 9 1 2 3 4 5 7 6 3. ábra. Példa: A transzponált gráfon a Mélykeres ejjárásban a pontok sorrendje: 8, 9, 1, 2, 4, 3, 5, 6, 7 Komponensek: (8,9), (1), (2,5,3,7,6), (4) Helyesség Terjesszük ki a d és f függvényeket V részhalmazaira, U V : d(u) = min u U {d(u)} f (U) = max u U { f (u)} 10

2. táblázat. Az első bejárás során kapott értékek pont 1 2 3 4 5 6 7 8 9 apa 0 1 2 2 3 5 6 0 8 d 1 2 3 11 4 5 6 15 16 f 14 13 10 12 9 8 7 18 17 3. táblázat. Az második bejárás során kapott értékek pont 1 2 3 4 5 6 7 8 9 apa 0 0 5 0 2 7 5 0 8 d 5 7 9 17 8 12 11 1 2 f 6 16 10 18 15 13 14 4 3 Lemma Legyen C és C a G = (V,E) irányított gráf két különböző erősen összefüggő komponense. Továbbá, u,v C és u,v C. Ha létezik u u út, akkor nem létezhet v v út. Lemma Legyen C és C a G = (V,E) irányított gráf két különböző erősen összefüggő komponense. Ha létezik olyan (u,v) él, hogy u C és v C, akkor f (C) > f (C ). Bizonyítás. Ha d(c) < d(c ), akkor legyen x C, amelyre d(x) minimális, azaz az elsőnek elért pont C-ben. Ekkor bármely w C pontra a d(x) időben létezik csupa fehér pontokon át haladó x w út. Tehát a fehér út tétel miatt C és C minden pontja leszármazottja lesz x-nek a MFE-ben, amiből adódik az állítás. Ha d(c) > d(c ), akkor legyen y C, amelyre d(y) minimális, azaz az elsőnek elért pont C -ben. Ekkor belőle mindenki elérhető fehér pontokon C -ben, így f (y) = f (C ). Mivel van (u,v) él, ezért nem lehet C egyetlen pontjából sem eljutni C-beli pontba, így y-ból sem. Tehát f (y) időben C minden pontja fehér, tehát f (w) > f (y) minden w C. Következmény Legyen C és C a G=(V,E) irányított gráf két különböző erősen összefüggő komponense. Ha létezik olyan (u,v) G T él, hogy u C és v C, akkor f (C) < f (C ). Helyesség Tétel Az algoritmus az erősen összefüggő komponenseket adja meg. Bizonyítás Legyenek G erősen összefüggő komponensei C(r 1 ),...,C(r k ), ahol f (r 1 ) > f (r 2 ) > > f (r k ) és f (r i ) = f (C(r i )), i = 1,...,k. Legyen továbbá F(r i ), (i = 1,...,k) a második bejárás során kapott r i -gyökerű mélységi feszítőfa pontjainak halmaza. Ekkor C(r i ) = F(r i ). A bizonyítást i-szerinti indukcióval adható meg. Tegyük fel, hogy az első i-1 komponensre az állítás igaz. Ekkor C(r i 1) bejárása után egy MBe jar(r i ) hívás következik a transzponált gráfban. Mivel f (r i ) = f (C(r i )), ezért a fehér út tétel miatt (G T -ben alkalmazva a második bejárásra) C(r i ) minden pontja bekerül F(r i )-be. Másrészt a fenti következmény miatt minden él, amely C(r i )-ből kivezet, csak olyan C komponensbeli pontba vezethet, amelyre f (C) > f (C(r i )), és ezeket már korábban bejárta az algoritmus. szélességi keresés algoritmusa szélességi keresés algoritmusának végrehajtása mélységi keresés algoritmusa Kiskérdések a topologikus rendezés és az erősen összefüggő komponenskeresés elvi algoritmusai 11