Algoritmuselmélet 11. előadás

Hasonló dokumentumok
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.

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:

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

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

Algoritmuselmélet 2. előadás

Diszkrét matematika 2.C szakirány

A számítástudomány alapjai

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

Algoritmuselmélet 18. előadás

Gráfalgoritmusok ismétlés ősz

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

Diszkrét matematika 2.C szakirány

Algoritmusok bonyolultsága

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

Algoritmuselmélet 7. előadás

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

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.

Diszkrét matematika 2.

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

Diszkrét matematika 2.C szakirány

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

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.

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.

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

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

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

angolul: greedy algorithms, románul: algoritmi greedy

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

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

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

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

Gráfelméleti alapfogalmak

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

HÁLÓZAT Maximális folyam, minimális vágás

Gráfelméleti feladatok. c f

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:

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

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

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

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

Diszkrét matematika 2.C szakirány

Ramsey-féle problémák

Az optimális megoldást adó algoritmusok

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Algoritmuselmélet 1. előadás

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

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.

Speciális algoritmusok és adatstruktúrák ősz

Hálózati Folyamok Alkalmazásai. Mályusz Levente BME Építéskivitelezési és Szervezési Tanszék

DISZKRÉT MATEMATIKA 2 KIDOLGOZOTT TÉTELSOR 1. RÉSZ

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Hálózati folyamok. Tétel: A maximális folyam értéke megegyezik a minimális vágás értékével.

Algoritmuselmélet 12. előadás

Diszkrét matematika II. gyakorlat

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

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

2. Visszalépéses keresés

Algoritmuselmélet 1. előadás

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

KOMBINATORIKA ELŐADÁS osztatlan matematikatanár hallgatók számára

Diszkrét matematika 2.C szakirány

Számítógép hálózatok, osztott rendszerek 2009

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

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Algoritmuselmélet 6. előadás

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

ELTE IK Esti képzés tavaszi félév. Tartalom

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Algoritmusok és adatszerkezetek gyakorlat 07

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

Diszkrét matematika I.

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

2: Minimális feszítőfák, legrövidebb utak. HálózatokII, 2007

22. GRÁFOK ÁBRÁZOLÁSA

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

Adatszerkezetek 2. Dr. Iványi Péter

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

10. előadás. Konvex halmazok

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

KOVÁCS BÉLA, MATEMATIKA I.

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

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

Diszkrét matematika 2. 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.

Általános algoritmustervezési módszerek

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

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

SzA II. gyakorlat, szeptember 18.

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

Diszkrét matematika 2.

Algoritmuselmélet zárthelyi (BSc képzés) április 24.

Dijkstra algoritmusa

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

Egyesíthető prioritási sor

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Átírás:

Algoritmuselmélet 11. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 26.

ALGORITMUSELMÉLET 11. ELŐADÁS 1 Kruskal módszere Mindig a legkisebb súlyú olyan élet színezzük kékre, ami még nem alkot kört az eddigi kék élekkel. = A kék élek végig egy erdőt határoznak meg, akkor van kész, ha feszítőfa lesz. = Az új kék él az eddigi erdő két komponensét fogja összekötni. Kezdetben n komponens, egy él színezésével eggyel csökken a komponensek száma. procedure Kruskal (G: gráf; var F, H: élek halmaza); begin F := ; H := E; while H do begin Töröljük a H minimális súlyú (v, w) élét. Ha F {(v, w)}-ben nincs kör (azaz a v, w pontok különböző kék fákban vannak), akkor F := F {(v, w)} end end = Ha a (v, w) él kört eredményez, akkor piros él, ha pedig nem, akkor kék éle.

ALGORITMUSELMÉLET 11. ELŐADÁS 2 Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségű feszítőfájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal Implementáció: élekből kupacot építünk O(e log e) lépés éleket előre rendezzük O(e log e) lépés Hogyan döntjük el, hogy a kiválasztott él kört alkot-e az eddigi kiválasztottakkal? = Tartsuk nyilván az aktuálisan egy kék fába tartozó csúcsokat mint halmazokat. Kell: UNIÓ, HOLVAN

ALGORITMUSELMÉLET 11. ELŐADÁS 3 Az UNIÓ-HOLVAN adatszerkezet Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U 1,..., U k S Adott egy n elemű S halmaz, és ennek bizonyos U 1,..., U m részhalmazai, melyekre U i U j = (i j) és U 1... U m = S (vagyis az U j részhalmazok S egy partícióját adják). Műveletek: UNIÓ(U i, U j ) = ({U 1,..., U m } {U i U j }) \ {U i, U j } (az U i, U j halmazokat U i U j helyettesíti). HOLVAN(v) eredménye (itt v S) annak az U i halmaznak a neve, amelynek v eleme. Kruskalban: annak megvizsgálása, hogy milyen színű legyen az új (u, v) él = Ha HOLVAN(u) HOLVAN(v), akkor kék, különben piros. Új él színezése = UNIÓ(HOLVAN(u), HOLVAN(v))

ALGORITMUSELMÉLET 11. ELŐADÁS 4 Implementáció fákkal U j gyökeres, felfelé irányított fa U j elemeit a fa csúcsaiban tároljuk, egy szülőmutatóval. Egy részhalmaz neve legyen az őt ábrázoló fa gyökere. A gyökérben nyilvántartjuk még a fa méretét is. UNIÓ: U i U j fáját a következőképpen készítjük el: Tegyük fel, hogy U i U j. Ekkor az U j fa x gyökeréhez gyermekként hozzákapcsoljuk U i gyökerét. x U i x U j x U j U i U i U j v v HOLVAN: A v S elemet tartalmazó részhalmaz nevét, azaz a megfelelő fa gyökerét a szülőkhöz menő mutatók végigkövetésével találhatjuk meg.

ALGORITMUSELMÉLET 11. ELŐADÁS 5 Az UNIÓ hívásakor az U i és U j halmazok a gyökerükkel adottak = költség: O(1) HA egy v csúcs új gyökér alá kerül, akkor egy szinttel lesz távolabb a gyökértől, míg az új fájának a mérete legalább az eredeti duplájára változik. = Egy csúcs legfeljebb log 2 n-szer kerülhet új gyökér alá = szintszám log 2 n = HOLVAN költsége O(log n) Tétel. A Kruskal-algoritmus költsége O(e log e). Bizonyítás: 2e HOLVAN, és n 1 UNIÓ műveletet jelent. Ezek időigénye O(e log n + n) = O(e log n), vagy ami ugyanaz: O(e log e).

ALGORITMUSELMÉLET 11. ELŐADÁS 6 A HOLVAN gyorsítása: útösszenyomás Egy pontról többször is megnézzük HOLVAN, mindig log n lépés = Az első alkalommal, minden ősét kössük közvetlenül a gyökérbe x 4 x 3 x 2 v gyökér x 1 v x 1 gyökér x 2 x 3 x 4 Tétel. Legyen S = n, és tegyük fel, hogy kezdetben mindegyik U j egyelemű. Ha egy olyan utasítássorozatot hajtunk végre (útösszenyomással), melyben n 1 UNIÓ és m n 1 HOLVAN szerepel, akkor ennek az időigénye O(mα(m)).

ALGORITMUSELMÉLET 11. ELŐADÁS 7 A korlátban szereplő α : Z + Z + függvény az inverz Ackermann-függvény. α(m) a végtelenhez tart, ha m, de nagyon lassan, lassabban mint a logaritmus k-szori önmagába helyettesítésével adódó log log log m függvény (k Z + tetszőleges). Pl. α(m) 4, ha m < 2 65536 A normális méretű feladatoknál tehát α(m) állandónak ( 4) tekinthető. Tétel. Ha az élek rendezésével kapcsolatos teendők O(e) időben megoldhatók, akkor a Kruskal-algoritmus O(eα(e)) időben megvalósítható. Manipuláció a súlyokkal = Yao (1975): O(e log log n) Véletlen módszerek = D. R. Karger, P. N. Klein, R. E. Tarjan, (1994): várhatóan O(e) On-line változatban is működik a piros-kék algoritmus: színezzük az új élet élet kékre; ha emiatt kialakul egy kék kör, akkor abból töröljünk egy maximális súlyú élet. JAVA animáció: Kruskal

ALGORITMUSELMÉLET 11. ELŐADÁS 8 Maximális párosítás páros gráfokban Definíció. A G = (V, E) gráfot párosnak nevezzük, ha V csúcshalmaza felosztható két diszjunkt részre V 1 -re és V 2 -re úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V 1 és y V 2 vagy fordítva. Definíció. Legyen G = (V, E) egy tetszőleges gráf. Az E élhalmaz E E részhalmaza G egy párosítása, ha a G = (V, E ) gráfban minden pont foka legfeljebb egy. Definíció. A G gráf egy E párosítása maximális, ha G minden E párosítására E E. A probléma: Adott egy G = (V 1, V 2 ; E) páros gráf. Határozzuk meg G egy maximális párosítását. Definíció. Legyen G egy tetszőleges gráf, és E a G egy párosítása. Egy G-beli utat E -alternáló útnak hívunk, ha felváltva tartalmaz párosított és nem párosított éleket. Definíció. Legyen E a G = (V, E) gráf egy párosítása. Ekkor egy olyan E -alternáló út, melynek mindkét végpontja párosítatlan, E -re nézve javító út, vagy röviden E -javító út.

ALGORITMUSELMÉLET 11. ELŐADÁS 9 Tétel. Legyen G = (V, E) egy tetszőleges gráf és E egy párosítása. Ha E -re nézve nincs javító út G-ben, akkor E a G egy maximális párosítása. B M v X u B w v X t A v X u A w v X u Hogyan keressünk javító utat?

ALGORITMUSELMÉLET 11. ELŐADÁS 10 Javító út keresése alternáló erdő építésével 0. szint: V 1 azon pontjai, melyeket E nem fed le, vagyis a párosítatlan pontok.. 2k 1. szint: V 2 azon még fel nem vett pontjai, melyek egy párosítatlan, azaz egy E \ E -beli éllel elérhetők egy 2k 2. szintbeli pontból; ezen éllel együtt. 2k. szint: V 1 azon még fel nem vett pontjai, melyek egy párosított, azaz egy E -beli éllel elérhetők egy 2k 1. szintbeli pontból; ezen éllel együtt..

ALGORITMUSELMÉLET 11. ELŐADÁS 11 Tétel. A G = (V 1, V 2 ; E) páros gráfban akkor és csak akkor van az E párosításra nézve javító út, ha az E -hez tartozó alternáló erdőben valamelyik páratlan szinten megjelenik egy párosítatlan pont. Bizonyítás: Ha találtunk páratlan szinten párosítatlan utat, akkor a gyökér felé vezető út javító út Fordítva: Megmutatjuk, hogy a V 1 párosítatlan csúcsaiból (ezek vannak az erdőben a nulladik szinten) alternáló úton elérhető pontok mindegyikét beválasztjuk valamikor az alternáló erdőbe. Tegyük fel, hogy v 0, v 1,..., v k egy alternáló út, és v 0 V 1 egy párosítatlan csúcs; i szerinti indukcióval megmutatjuk, hogy v i bekerül az erdőbe. Ha i = 0 Az út v 2j csúcsa V 1 -ben van és a (v 2j, v 2j+1 ) él párosítatlan. = ha v 2j -t beválasztottuk, akkor v 2j+1 is bekerül Az út v 2j 1 csúcsa V 2 -ben van és (v 2j 1, v 2j ) E. Így v 2j 1 után v 2j is sorra kerül, ha korábban ez még nem történt meg.

ALGORITMUSELMÉLET 11. ELŐADÁS 12 Tegyük fel, hogy G-ben a v és w csúcsok egy javító út végpontjai. v V 1 párosítatlan = w V 2 w elérhető alternáló úton v-ből = valamikor beválasztjuk De V 2 -beli csúcsokat csak páratlan szintekre veszünk fel = w is itt lesz Lépésszám: Alternáló erdő építése: O(e), össze lépésszám: O(ne) Karp (1973): O(e n)

ALGORITMUSELMÉLET 11. ELŐADÁS 13 Maximális folyamok hálózatokban s JAVA animáció: Ford-Fulkerson algoritmus Ha minden kapacitás egész és a maximális folyam értéke f, akkor legfeljebb f javítással megkapjuk a maximális folyamot. a (10 10 ) (10 10 ) (1) (10 10 ) (10 10 ) b t 1(10 10 ) s 0(10 10 ) a b 1(1) 0(10 10 ) t 1(10 10 ) Ha az élkapacitások racionális számok = véges lépés 1(10 10 ) s 1(10 10 ) a b 0(1) Ha irracionális kapacitásokat is megengedünk = lehet, hogy nem ér véget véges sok lépésben, sőt lehet, hogy nem is jó értékhez konvergál 1(10 10 ) t 1(10 10 )

ALGORITMUSELMÉLET 11. ELŐADÁS 14 Edmonds Karp algoritmus A folyam növelésére mindig a legrövidebb vagyis a legkevesebb élből álló növelő utak egyikét válasszuk. Tekintsük a G f javító gráfot; legyen benne π egy legrövidebb növelő út. Ennek hosszát (élszámát) jelölje l. Szélességi kereséssel osszuk szintekre = D[v] (1) Egy él legfeljebb egy réteggel mehet előre. A G f egy x y élét nevezzük vastagnak, ha D[y] = D[x] + 1. (2) Az l hosszúságú s t utak csupa vastag élből állnak, és nincs l-nél rövidebb s t út. = Legrövidebb útnak muszáj mindig feljebb menni Mi történik, ha javítunk π mentén? Legalább egy él telítődik és eltűnik a javító gráfból. Legfeljebb l darab új él jelenik meg a G f -ben (π élei ellenkező irányítással, ha eddig még 0 folyt át rajtuk). = a következő növelő út sem lehet rövidebb l-nél.

ALGORITMUSELMÉLET 11. ELŐADÁS 15 Hányszor adódhat egymás után l hosszú növelő út? Minden javítás után eggyel kevesebb vastag él lesz (legalább egy kritikus él törlődik). Addig lesz l élből álló növelő út, amíg marad vastag élekből álló s t út. Tétel. Az Edmonds Karp-heurisztika szerinti növelésnél a növelő utak hosszai nem csökkenő sorozatot alkotnak. Ebben a sorozatban egy adott úthosszúság legfeljebb e-szer fordulhat elő. Következésképpen legfeljebb e(n 1) növelés lehetséges. A heurisztika alkalmazásával O(e 2 n) elemi lépésben kapunk maximális folyamot. Bonyolultabb algoritmusok Dinic: O(en 2 ) Goldberg, Tarjan: O(en log(n 2 /e))

ALGORITMUSELMÉLET 11. ELŐADÁS 16 Hálózatok alsó korlátokkal Tegyük fel, hogy a c(u, v) kapacitások mellett (felső korlát) alsó korlátok is vannak az f(u, v) mennyiségekre. = k(u, v) f(u, v) is teljesüljön a G minden u v élére. = (G, s, t, c, k) Van-e egyátalán ilyen folyam? s 0, 1 2, 3 t Belátjuk, hogy ez a hagyományos folyamproblémára visszavezethető.

ALGORITMUSELMÉLET 11. ELŐADÁS 17 H = (G, s, t, c, k) H Új forrás: S, új nyelő: T Régi éleken új kapacitás: c (u, v) := c(u, v) k(u, v) 2 új él minden pontra: S v és v T c (S, v) := (u,v) E k(u, v) és c (v, T ) := (v,w) E k(v, w) Új T S él kapacitással s S 2 1 1, 3 2, 3 0 2 1 t t s 2 1 0 T

ALGORITMUSELMÉLET 11. ELŐADÁS 18 Tétel. A H = (G, s, t, c, k) hálózatban akkor és csak akkor létezik folyam, ha a H hálózat (S-ből T -be menő) maximális folyamának az értéke k(u, v). (u,v) E Ha a T S él kapacitást d-nek választjuk = ugyanígy megkaphatjuk, hogy van-e legfeljebb d értékű folyam = algoritmus alsó korlátos folyamokra

ALGORITMUSELMÉLET 11. ELŐADÁS 19 Egy ütemezési feladat Tegyük fel, hogy egy légitársaság a J 1, J 2,..., J m járatokat szeretné üzemeltetni, és d darab azonos típusú repülőgépe van erre a célra. Minden J i, J j járatpárra ismert, hogy van-e elég idő arra, hogy a J i teljesítése után egy gép felkészüljön a J j repülésére. Ha J i, J j -re a válasz igenlő, akkor azt mondjuk, hogy J j követheti J i -t. Gráf: Egy J i légijáratnak = két csúcs, i és i és egy i i él Ha J j követheti J i -t, akkor vezessünk irányított élet i -ből j-be. Vegyünk még fel egy s forrást és egy t nyelőt, és adjuk a hálózathoz az s i és i t éleket (1 i m). Az összes él kapacitása legyen 1. Az i i alakú élek alsó korlátja legyen 1, a többi élé pedig 0. Tétel. A J 1, J 2,..., J m járatok akkor és csak akkor teljesíthetők legfeljebb d géppel, ha a hálózathoz van olyan g folyam, amelyre g d.

ALGORITMUSELMÉLET 11. ELŐADÁS 20 S 0, 1 1, 1 0, 1 J 3 0, 1 0, 1 1, 1 1, 1 0, 1 0, 1 0, 1 0, 1 0, 1 0, 1 J 2 1, 1 J 4 J 1 J 5 1, 1 0, 1 0, 1 0, 1 T 0, 1

ALGORITMUSELMÉLET 11. ELŐADÁS 21 Hirdetmények Április 1. = Húsvét hétfő = elmarad az előadás Április 8. = Előadás helyett konzultáció ZH Április 8. 16:15 A He CH. max. Hi Ka I.B. 27 Ke M I.B. 28 N-Se E.I.B. Si-Z St. nagy