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

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:

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.

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.

1. ábra. Számláló rendezés

Számláló rendezés. Példa

Számjegyes vagy radix rendezés

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 11. előadás

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:

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

Algoritmusok bonyolultsága

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

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.

Diszkrét matematika 2.C szakirány

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

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

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

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

A félév során előkerülő témakörök

Gráfelméleti feladatok. c f

Diszkrét matematika 2.C szakirány

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

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

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Gráfalgoritmusok ismétlés ősz

Egyesíthető prioritási sor

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

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

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

Diszkrét matematika 2.C szakirány

Algoritmuselmélet 1. előadás

Diszkrét matematika 2.

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

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

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

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

14. Mediánok és rendezett minták

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

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

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

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

Diszkrét matematika 2.C szakirány

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

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

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

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

Algoritmuselmélet 1. előadás

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

A számítástudomány alapjai

Algoritmuselmélet 18. előadás

Az optimális megoldást adó algoritmusok

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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

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

Kupac adatszerkezet. 1. ábra.

Diszkrét matematika I.

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

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

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

Diszkrét matematika II. gyakorlat

Programozási módszertan. Mohó algoritmusok

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

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

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

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Geometriai algoritmusok

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

Diszkrét matematika 2.C szakirány

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

Egyesíthető prioritási sor

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

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

Online migrációs ütemezési modellek

KOVÁCS BÉLA, MATEMATIKA I.

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.

Nagy Gábor compalg.inf.elte.hu/ nagy

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

KOVÁCS BÉLA, MATEMATIKA I.

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

Optimalizálási eljárások/operációkutatás MSc hallgatók számára

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

Algoritmuselmélet 7. előadás

Algoritmusok helyességének bizonyítása. A Floyd-módszer

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

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

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. 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

Gyakori elemhalmazok kinyerése

Gyakorló feladatok ZH-ra

Gráfelméleti alapfogalmak

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

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

Átírás:

Elmaradó óra A jövő heti, november 0-dikei óra elmarad. 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: C(T ) = (u,v) T c(u,v) 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 Legyen A F valamely (V,F) minimális feszítőfára, és (u,v) E. Definíció (u,v) biztonságos él A-ra nézve, ha A {(u,v)} is része valamely minimális feszítőfának. Elvi algoritmus A := /0 While A nem feszítőfa (u,v) biztonságos él keresése; A := A {(u,v)} Definíció: A G = (V,E) gráf vágása: (S,V \ S), ahol S V ; Definíció: (u,v) E keresztél az (S,V \ S) vágásra, ha u S és v V \ S, vagy u V \ S és v S. Az (S,V \ S) vágás elkerüli az A E élhalmazt, ha A-ban nincs keresztél. Definíció: (u,v) könnyű él az (S,V \ S) vágásra, ha a legkisebb c-értékű (súlyú) keresztél. Tétel: Ha A része a G = (V,E,c) valamely minimális feszítőfájának és elkerüli az (S,V \ S) vágást, továbbá (u, v) könnyű él az (S,V \ S) vágásra, akkor (u,v) biztonságos él A-ra nézve. Bizonyítás: Legyen T = (V,F) egy olyan minimális feszítőfa, amelyre A F. Ha (u,v) F, akkor az állítás nyilvánvaló. Ha (u,v) / F, akkor (u,v)-t hozzá véve az F éleihez kört kapunk. Mivel u és v az S vágás különböző oldalán vannak, ezért van a körben egy másik (x,y) keresztél. Ekkor az F := F \ {(x,y)} {(u,v)} élhalmaz is feszítőfája lesz G-nek. Továbbá c(u,v) c(x,y) miatt C(F ) C(F), így szintén minimális. Kruskal algoritmusa Kruskal(G,w) Letesit(A: halmaz) for (v V ) Halmazt Keszit(v) rendezzük E éleit w szerint növekvő sorrendbe for (u,v) E esetén a súly szerinti sorrendben If Halmazt Keres(u) Halmazt Keres(v) A := A {(u,v)} Egyesít(u,v) Megvalósítás: Unio Holvan adattípussal. Helyesség: Az általános tétel alapján, vágásnak olyan vágást használva, ahol az egyik halmaz az u-tartalmazó részfa az aktuális feszítő erdőből. Futási idő: O( E log V )

b a c e d f. ábra. A Kruskal algoritmus a következő sorrendben választja be az éleket: (a,b),(c,e),(d, f ),(a,c),(d,e), Prím algoritmusa Prim(G,c,r) for(v in V) {d(v):=inf Apa(v):=0 Bent(v):=0} d(r):=0 Letesit(Q: ModPrisor) for(v in V) SorBa(Q,v) while(elemszam(q)>0) {SorBol(Q,u) Bent(u):= for(v in KiEl(G,u)) {If (Bent(v)=0) and (c(u,v)<d(v)) then {Apa(v):=u d(v):=c(u,v) Modosit(v) }}} Helyesség: Az általános tétel alapján, vágásnak olyan vágást használva, ahol az egyik halmaz azon v pontokat

tartalmazza, akikre Bent(v)=. Futási idő: O( E + V log V ) b a c e d f. ábra. A Kruskal algoritmus a következő sorrendben választja be az éleket: (a,b),(c,e),(d, f ),(a,c),(d,e), A Prim algoritmus sorrendje (a,b),(a,c), (c,e), (d,e),(d, f ). Maximális párosítás páros gráfokra A G = (V,E) gráfot párosnak nevezzük, ha V csúcshalmaza felosztható két diszjunkt részre V -re és V -re úgy, hogy minden él ezen két halmaz között fut. Az E élhalmaz M E részhalmaza G egy párosítása, ha a G = (V,M) gráfban minden pont foka legfeljebb egy. Egy párosítás maximális ha a lehető legtöbb élet tartalmazza. A megoldandó probléma: Adott egy G = (V,V,E) páros gráf. Határozzuk meg egy maximális párosítását. Legyen G egy gráf, és M a G egy párosítása. Egy G-beli utat M-alternáló útnak hívunk, ha felváltva tartalmaz M-beli és nem M-beli éleket. Legyen M a G egy párosítása. Ekkor azokat az M-alternáló utakat, melynek egyik végpontja sincs benne a párosításban, M-re nézve javító útnak nevezzük. Tétel Legyen G = (V,E) egy tetszőleges gráf és M egy párosítása. Ha M-re nézve nincs javító út G-ben, akkor M a G gráfnak egy maximális párosítása.

Javító út keresése páros gráfokban alternáló erdővel gyökérelemek: V azon pontjai, melyeket M nem fed le, vagyis a párosítatlan pontok. az erdők páratlan szintjei: V azon még nem vizsgált pontjai, melyek egy M-en kívüli éllel elérhetőek az előző szintről az erdők páros szintjei: V azon még nem vizsgált pontjai, melyek egy M-beli éllel elérhetőek az előző szintről Tétel A G = (V,V,E) páros gráfban akkor es csak akkor van az M párosításra nézve javító út, ha az M-hez tartozó alternáló erdőben páratlan szinten van párosításon kívüli pont. Bizonyítás: Ha van ilyen, akkor az erdőben van út. Tegyük fel, hogy v 0,v,...,v k egy alternáló út, és v 0 V egy párosításon kívüli pont. i szerinti indukcióval megmutatható, hogy minden v i bekerül az erdőbe. Tehát az út utolsó pontja is bekerül, de az V -beli, így csak páratlan szintre kerülhet. Stabil párosítások Adott n fiú és n lány és minden fiú és lány rangsort állít fel az általa elfogadhatónak talált partnerek között. Egy házasítás stabil, ha nincs olyan blokkoló pár, akik jobban kedvelik egymást, mint jelenlegi házastársaikat. A leánykérő algoritmus - Minden fiú, aki aktuálisan pár nélkül van minden lépésben ajánlatot tesz a számára legjobban tetsző lánynak - Ha egy lány több ajánlatot kap, a legjobbat tartsa meg feltételesen, a többit utasítsa vissza véglegesen Tétel Az algoritmus stabil párosítást ad. Maximális folyam probléma Legyen G = (V,E) gráf, s,t különböző csúcsok a forrás és a nyelő, c az éleken értelmezett nemnegatív kapacításfüggvény. Legyen (V,E,s,t,c) egy hálózat, az f : E Z folyam, ha rendelkezik a következő tulajdonságokkal: 0 f (u,v) c(u,v) teljesül minden élre (u,v) E f (u,v) = (v,w) E f (v,w) teljesül bármely v V {s,t}-re A cél a (s,v) E f (s,v) összeg maximalizálása. Maradékhálózat: Adott gráf és folyam mellett definiálhatjuk a maradékhálózatot (V,E,s,t,m), ahol Minden uv E élre, ha f (uv) < c(uv), betesszük uv-t az E -be, m(uv) = c(uv) f (uv), és az uv élet előre élnek jelöljük. Minden uv E élre, ha pozitív (azaz f (uv) > 0), betesszük a vu fordított élet az E -be, m(vu) = f (uv), és a vu élet vissza élnek jelöljük. Ford Fulkerson algoritmusa Megkonstruáljuk a maradékhálózatot. Keresünk benne egy s,t utat. 4

: <= > : : <= > <= >,, : <= >,,,,,, : <= >,,,,. ábra. Ha nincs ilyen út véget ér az algoritmus, az aktuális folyam maximális. Ha van s,t út, akkor az út előre élein növeljük a vissza éleken csökkentjük a folyam értékét, egy értékkel, amely a maximális érték, amivel ez megtehető. Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a legrosszabb esetben szükséges összahasonlítások számát a neki megfelelő döntési fa magassága adja meg. Tétel Egy n darab elemet rendező döntési fa magassága Ω(nlogn). Bizonyítás A fa leveleinek száma a lehetséges sorrendek száma, azaz n!. Ha a fa magassága h, akkor h n! kell teljesüljön, következésképpen h lg(n!) lg((n/e) n ) = nlgn nlge = Ω(nlgn). Következmény Minden olyan rendezési algoritmusra, amely csak az elempárok összehasonlítása alapján működik T lr (n) = Ω(nlgn). Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben eltárolva, a kimenet ezen számok egy B tömbben rendezetten. Továbbá feltesszük, hogy a rendezendő elemek mindegyike az {,...,k} halmazba esik. C[i] tartalmazza azt az információt, hogy a legfeljebb i nagyságú elemből hány darab van. 5

Szamlalorend(A,B,k) for i= to k C[i]:=0 for j= to n C[A[j]]:=C[A[j]]+ for i= to k C[i]:=C[i]+C[i-] for j=n downto {B[C[A[j]]]:=A[j] C[A[j]]:=C[A[j]]-} Megjegyzés: Az algoritmus ötlete nem csak akkor használható, ha az elemek az {,...,k} halmazba esnek. Általánosabb esetben meg kell keresni a minimális elemet min-t, és C[i] a legfeljebb i min + nagyságú elemeket tartalmazza. Definíció Egy rendezést stabilnak nevezünk, ha az azonos értékű elemek ugyanabban a sorrendben jelennek meg a kimeneti tömbben, mint ahogy a bemeneti tömbben szerepeltek. A leszámláló rendezés stabil. Futási idő: Θ(n + k) A=[,,,,,,,,] C=[4,,] C=[4,6,9] B=[0,0,0,0,0,0,0,0,] C=[4,6,8] B=[0,0,0,0,0,,0,0,] C=[4,5,8] B=[0,0,0,,0,,0,0,] C=[,5,8] Számjegyes vagy radix rendezés 9 70 70 9 457 46 9 46 657 457 46 457 89 657 89 657 46 9 457 70 70 89 657 89 Bemenet: H k dimenziós vektorok halmaza, ahol az i-edik komponens minden i-re egy olyan elemtípusból kerül ki, amelyen adott egy rendezési reláció. Kimenet: H elemei a lexikografikus rendezés alapján rendezve. Definíció Egy X = (x,...,x k ) vektor megelőzi az Y = (y i,...,y k ) vektort a lexikografikus rendezésben, ha i, amelyre teljesül, hogy j < i x j = y j és x i < y i. Elvi algoritmus 6

for i:=d downto H Stabil rendezése a kulcs i-edik jegye szerint Helyesség: A ciklusmag végrehajtása után a H halmaz rendezett lesz arra a kulcsra nézve, amely az eredeti kulcs [i..d] jegyeit (karaktereit) tartalmazza. Bizonyítás i-szinti indukcióval. Futási idő Ha a jegyek szerinti rendezés lineáris idejű (pl számláló), akkor a futási idő O(dn). Kiskérdések Kruskal algoritmus Prím algoritmus Ford Fulkerson algoritmus Stabil párosítási probléma és lánykérő algoritmus 7