Kezdőlap

|

Mi a kreditvadasz.hu Egy felsőoktatási közösségi oldal amely segít kapcsolatot tartani a hallgatók között, így segítséget nyújt a sikeres tanulmányokhoz...

adatbázisok előadásfóliák

Országok listájaHungaryBudapesti Műszaki és Gazdaságtudományi EgyetemVillamosmérnöki és Informatikai KarMérnök informatikusAdatbázisokJegyzetekadatbázisok előadásfóliák

2007.12.03 17:31:05
(10)
Szerző: kreditvadasz.hu
Cimkék: adatbázisok, normál formák, sql, relációk, ek modell


Az alábbi szöveg egy formázás és képek nélküli előnézete a dokumentumnak. A tökéletes megjelenítéshez jelentkezz be, majd töltsd le a dokumentumot.

Algoritmuselmélet 1. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 11.

A LGORITMUSELMÉLET 1.

EL OADÁS

1

Források

· Rónyai Lajos­Ivanyos Gábor­Szabó Réka: Algoritmusok, TYPOTEX, 1999 · Feladatgyujtemény letöltheto: http://www.cs.bme.hu/~kiskat/algel · Egyéb információk, hirdetmények ugyanitt.

A LGORITMUSELMÉLET 1.

EL OADÁS

2

Követelmények
Zárthelyi dolgozat: 2002. április 8. -- 6 db 10 pontos feladat 100 percre, mindet lehet használni. Pontozás: 20-29 pont 2-es, 30-39 pont 3-es, 40-49 pont 4-es, 50-60 pont 5-ös. Aláírás: Feltétele a ZH megírása 2-esre. Szükség esetén pótZH. Vizsga: Írásbeli -- 2 elméleti kérdés, 4 példa, nem lehet semmit használni. Pontozás: mint a ZH-n. Vizsga jegy: Ha érdemes, akkor lehet a vizsga ZH eredményét átlagolni az évközi eredménnyel. Ha aláírás csak pótZH-val született, ez a lehetoség nem áll fenn. Javítás: Ha az így kialakult jegy nem elég jó, akkor kizárólag a vizsga eredményhirdetésének idopontjában lehet szóban felelni, amivel ±1 jegyet lehet változtatni.

A LGORITMUSELMÉLET 1.

EL OADÁS

3

Algoritmus fogalma
· Egyelore nem definiáljuk rendesen az algoritmus fogalmát.

A LGORITMUSELMÉLET 1.

EL OADÁS

3

Algoritmus fogalma
· Egyelore nem definiáljuk rendesen az algoritmus fogalmát. · Eljárás, recept, módszer.

A LGORITMUSELMÉLET 1.

EL OADÁS

3

Algoritmus fogalma
· Egyelore nem definiáljuk rendesen az algoritmus fogalmát. · Eljárás, recept, módszer. · Jól meghatározott lépések egymásutánja, amelyek már elég pontosan, egyértelmuen megfogalmazottak ahhoz, hogy gépiesen végrehajthatók legyenek.

A LGORITMUSELMÉLET 1.

EL OADÁS

4

A szó eredete
Al Khvarizimi (Mohamed ibn Músza) bagdadi matematikus a IX. században könyvet írt az egészekkel való alapmuveletek végzésérol.

A LGORITMUSELMÉLET 1.

EL OADÁS

4

A szó eredete
Al Khvarizimi (Mohamed ibn Músza) bagdadi matematikus a IX. században könyvet írt az egészekkel való alapmuveletek végzésérol.

algoritmus számítógép program

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol?

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol? · Az input méretét legtöbbször n-nel jelöljük.

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol? · Az input méretét legtöbbször n-nel jelöljük. · A lépésszám ennek egy f függvénye, azaz ha n méretu az input, akkor az algoritmus f (n) lépést végez.

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol? · Az input méretét legtöbbször n-nel jelöljük. · A lépésszám ennek egy f függvénye, azaz ha n méretu az input, akkor az algoritmus f (n) lépést végez. · Igazából az f függvény az érdekes.

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol? · Az input méretét legtöbbször n-nel jelöljük. · A lépésszám ennek egy f függvénye, azaz ha n méretu az input, akkor az algoritmus f (n) lépést végez. · Igazából az f függvény az érdekes. · 100n vagy 101n, általában mindegy

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol? · Az input méretét legtöbbször n-nel jelöljük. · A lépésszám ennek egy f függvénye, azaz ha n méretu az input, akkor az algoritmus f (n) lépést végez. · Igazából az f függvény az érdekes. · 100n vagy 101n, általában mindegy · n2 vagy n3 már sokszor nagy különbség, de néha mindegy

A LGORITMUSELMÉLET 1.

EL OADÁS

5

Milyen hatékony egy algoritmus?
· Legtöbbször csak a lépésszám nagyságrendje érdekes. Hogyan függ a lépésszám az input méretétol? · Az input méretét legtöbbször n-nel jelöljük. · A lépésszám ennek egy f függvénye, azaz ha n méretu az input, akkor az algoritmus f (n) lépést végez. · Igazából az f függvény az érdekes. · 100n vagy 101n, általában mindegy · n2 vagy n3 már sokszor nagy különbség, de néha mindegy · n2 vagy 2n már mindig nagy különbség

A LGORITMUSELMÉLET 1.

EL OADÁS

6

Függvények nagyságrendje
Definíció. Ha f (x) és g(x) az R+ egy részhalmazán értelmezett valós értékeket felvevo függvények, akkor f = O(g) jelöli azt a tényt, hogy vannak olyan c, n > 0 állandók, hogy |f (x)| c|g(x)| teljesül, ha x n.

A LGORITMUSELMÉLET 1.

EL OADÁS

6

Függvények nagyságrendje
Definíció. Ha f (x) és g(x) az R+ egy részhalmazán értelmezett valós értékeket felvevo függvények, akkor f = O(g) jelöli azt a tényt, hogy vannak olyan c, n > 0 állandók, hogy |f (x)| c|g(x)| teljesül, ha x n. Például: · 100n + 300 = O(n), hiszen n = 300, c = 101-re teljesülnek a feltételek, 100n + 300 101n, ha n 300

A LGORITMUSELMÉLET 1.

EL OADÁS

6

Függvények nagyságrendje
Definíció. Ha f (x) és g(x) az R+ egy részhalmazán értelmezett valós értékeket felvevo függvények, akkor f = O(g) jelöli azt a tényt, hogy vannak olyan c, n > 0 állandók, hogy |f (x)| c|g(x)| teljesül, ha x n. Például: · 100n + 300 = O(n), hiszen n = 300, c = 101-re teljesülnek a feltételek, 100n + 300 101n, ha n 300 · 5n2 + 3n = O(n2) · n4 + 5n3 = O(n5) · n1000 = O(2n)

A LGORITMUSELMÉLET 1.

EL OADÁS

7

Függvények nagyságrendje
Definíció. Ha f (x) és g(x) az R+ egy részhalmazán értelmezett valós értékeket felvevo függvények, akkor f = (g) jelöli azt a tényt, hogy vannak olyan c, n > 0 állandók, hogy |f (x)| c|g(x)| teljesül, ha x n.

A LGORITMUSELMÉLET 1.

EL OADÁS

7

Függvények nagyságrendje
Definíció. Ha f (x) és g(x) az R+ egy részhalmazán értelmezett valós értékeket felvevo függvények, akkor f = (g) jelöli azt a tényt, hogy vannak olyan c, n > 0 állandók, hogy |f (x)| c|g(x)| teljesül, ha x n. Például: · 100n - 300 = (n), hiszen n > 300, c = 99-re teljesülnek a feltételek

A LGORITMUSELMÉLET 1.

EL OADÁS

7

Függvények nagyságrendje
Definíció. Ha f (x) és g(x) az R+ egy részhalmazán értelmezett valós értékeket felvevo függvények, akkor f = (g) jelöli azt a tényt, hogy vannak olyan c, n > 0 állandók, hogy |f (x)| c|g(x)| teljesül, ha x n. Például: · 100n - 300 = (n), hiszen n > 300, c = 99-re teljesülnek a feltételek · 5n2 - 3n = (n2) · n4 - 5n3 = (n4) · 2n = (n1000)

A LGORITMUSELMÉLET 1.

EL OADÁS

8

Függvények nagyságrendje
Definíció. Ha f = O(g) és f = (g) is teljesül, akkor f = (g).

A LGORITMUSELMÉLET 1.

EL OADÁS

8

Függvények nagyságrendje
Definíció. Ha f = O(g) és f = (g) is teljesül, akkor f = (g). Például: · 100n - 300 = (n)

A LGORITMUSELMÉLET 1.

EL OADÁS

8

Függvények nagyságrendje
Definíció. Ha f = O(g) és f = (g) is teljesül, akkor f = (g). Például: · 100n - 300 = (n) · 5n2 - 3n = (n2) · n4 - 5n3 = (n4) · 1000 · 2n = (2n)

A LGORITMUSELMÉLET 1.

EL OADÁS

9

Függvények nagyságrendje
Definíció. Legyenek f (n) és g(n) a pozitív egészeken értelmezett valós értéku függvények. Ekkor az f = o(g) jelöléssel rövidítjük azt, hogy f (n) g(n) 0, ha n .

A LGORITMUSELMÉLET 1.

EL OADÁS

9

Függvények nagyságrendje
Definíció. Legyenek f (n) és g(n) a pozitív egészeken értelmezett valós értéku függvények. Ekkor az f = o(g) jelöléssel rövidítjük azt, hogy f (n) g(n) 0, ha n .

Például: · 100n + 300 = o(n2), hiszen
100n+300 n2

0 ha n

A LGORITMUSELMÉLET 1.

EL OADÁS

9

Függvények nagyságrendje
Definíció. Legyenek f (n) és g(n) a pozitív egészeken értelmezett valós értéku függvények. Ekkor az f = o(g) jelöléssel rövidítjük azt, hogy f (n) g(n) 0, ha n .

Például: · 100n + 300 = o(n2), hiszen · 5n2 + 3n = o(n3) · n4 + 5n3 = o(n4 log2 n) · n1000 = o(2n)
100n+300 n2

0 ha n

A LGORITMUSELMÉLET 1.

EL OADÁS

10

Algoritmikus problémák megoldása

Algoritmikus probléma - modell - program

A

B

A LGORITMUSELMÉLET 1.

EL OADÁS

10

Algoritmikus problémák megoldása

Algoritmikus probléma - modell - program
A: pontosítás, egyszerusítés, absztrakció, lényegtelen elemek kiszurése, a lényeg kihámozása

A

B

A LGORITMUSELMÉLET 1.

EL OADÁS

10

Algoritmikus problémák megoldása

Algoritmikus probléma - modell - program
A: pontosítás, egyszerusítés, absztrakció, lényegtelen elemek kiszurése, a lényeg kihámozása Modell: sokféle lehet, elég tág, de elég egyszeru, formalizált, pontos

A

B

A LGORITMUSELMÉLET 1.

EL OADÁS

10

Algoritmikus problémák megoldása

Algoritmikus probléma - modell - program
A: pontosítás, egyszerusítés, absztrakció, lényegtelen elemek kiszurése, a lényeg kihámozása Modell: sokféle lehet, elég tág, de elég egyszeru, formalizált, pontos B: hatékony algoritmus, bemeno adatok eredmény, érdemes foglalkozni a kapott algoritmus elemzésével, értékelésével, megvizsgálva, hogy a módszer mennyire hatékony

A

B

A LGORITMUSELMÉLET 1.

EL OADÁS

11

Arthur király civilizációs törekvései

Arthur király fényes udvarában 150 lovag és 150 udvarhölgy él. A király, aki közismert civilizációs erofeszítéseirol, elhatározza, hogy megházasítja jó lovagjait és szép udvarhölgyeit. Mindezt persze emberségesen szeretné tenni. Csak olyan párok egybekelését akarja, amelyek tagjai kölcsönösen vonzalmat éreznek egymás iránt. Hogyan fogjon hozzá?

A LGORITMUSELMÉLET 1.

EL OADÁS

11

Arthur király civilizációs törekvései

Arthur király fényes udvarában 150 lovag és 150 udvarhölgy él. A király, aki közismert civilizációs erofeszítéseirol, elhatározza, hogy megházasítja jó lovagjait és szép udvarhölgyeit. Mindezt persze emberségesen szeretné tenni. Csak olyan párok egybekelését akarja, amelyek tagjai kölcsönösen vonzalmat éreznek egymás iránt. Hogyan fogjon hozzá?

A LGORITMUSELMÉLET 1.

EL OADÁS

12

Természetesen pártfogójához, a nagyhatalmú varázslóhoz, Merlinhez fordul. Merlin rögvest felismeri, hogy itt is bináris szimmetrikus viszonyok ábrázolásáról van szó.

A LGORITMUSELMÉLET 1.

EL OADÁS

12

Természetesen pártfogójához, a nagyhatalmú varázslóhoz, Merlinhez fordul. Merlin rögvest felismeri, hogy itt is bináris szimmetrikus viszonyok ábrázolásáról van szó. Nagy darab pergament vesz elo, és nekilát egy páros gráfot rajzolni.

A LGORITMUSELMÉLET 1.

EL OADÁS

12

Természetesen pártfogójához, a nagyhatalmú varázslóhoz, Merlinhez fordul. Merlin rögvest felismeri, hogy itt is bináris szimmetrikus viszonyok ábrázolásáról van szó. Nagy darab pergament vesz elo, és nekilát egy páros gráfot rajzolni. A királyi parancs teljesítéséhez Merlinnek élek egy olyan rendszerét kell kiválasztania a gráf éleibol, hogy a kiválasztott élek közül a gráf minden pontjához pontosan egy csatlakozzon. A kiválasztott élek felelnek meg a tervezett házasságoknak. A gráfelmélet nyelvén teljes párosítást kell keresnie.

A LGORITMUSELMÉLET 1.

EL OADÁS

13

Közlekedési lámpák ütemezése
¥ ¥ ¥ £ ¥ ¥ £ ¥ ¥ ££ ¥ ¥ © ¥ ¥¥ 4 4 4 e 4 e 4 4 e Q ¤ ¤ e e e ¤ £ ¥¥ee e e £ e ¤ ¥ e e e ¤ £ ¥ e e ¤ £ ¥ e e ¤ ¥ e e ¤ ¥ e

a

b

e

d

c

A LGORITMUSELMÉLET 1.

EL OADÁS

13

Közlekedési lámpák ütemezése
¥ ¥ ¥ £ ¥ ¥ £ ¥ ¥ ££ ¥ ¥ © ¥ ¥¥ 4 4 4 e 4 e 4 4 e Q ¤ ¤ e e e ¤ £ ¥¥ee e e £ e ¤ ¥ e e e ¤ £ ¥ e e ¤ £ ¥ e e ¤ ¥ e e ¤ ¥ e

a

b

lámpák: ac, ad, bc, bd, ec és ed állapot: lámpák {P, Z}

e

d

c

A LGORITMUSELMÉLET 1.

EL OADÁS

13

Közlekedési lámpák ütemezése
¥ ¥ ¥ £ ¥ ¥ £ ¥ ¥ ££ ¥ ¥ © ¥ ¥¥ 4 4 4 e 4 e 4 4 e Q ¤ ¤ e e e ¤ £ ¥¥ee e e £ e ¤ ¥ e e e ¤ £ ¥ e e ¤ £ ¥ e e ¤ ¥ e e ¤ ¥ e

a

b

lámpák: ac, ad, bc, bd, ec és ed állapot: lámpák {P, Z} Feladat: Mennyi a minimális számú állapot, ami biztonságos és nem okoz örök dugót?

e

d

c

A LGORITMUSELMÉLET 1.

EL OADÁS

13

Közlekedési lámpák ütemezése
¥ ¥ ¥ £ ¥ ¥ £ ¥ ¥ ££ ¥ ¥ © ¥ ¥¥ 4 4 4 e 4 e 4 4 e Q ¤ ¤ e e e ¤ £ ¥¥ee e e £ e ¤ ¥ e e e ¤ £ ¥ e e ¤ £ ¥ e e ¤ ¥ e e ¤ ¥ e

a

b

lámpák: ac, ad, bc, bd, ec és ed állapot: lámpák {P, Z} Feladat: Mennyi a minimális számú állapot, ami biztonságos és nem okoz örök dugót?

e

d

c

ac d I. dd I. ad

d 33 d 33 33 d 33 d 33 3 d d

bc 3 ec 33 D 33 II.3333 DDDIII. 3
D D D

II. DD D bd

III. ed

A LGORITMUSELMÉLET 1.

EL OADÁS

13

Közlekedési lámpák ütemezése
¥ ¥ ¥ £ ¥ ¥ £ ¥ ¥ ££ ¥ ¥ © ¥ ¥¥ 4 4 4 e 4 e 4 4 e Q ¤ ¤ e e e ¤ £ ¥¥ee e e £ e ¤ ¥ e e e ¤ £ ¥ e e ¤ £ ¥ e e ¤ ¥ e e ¤ ¥ e

a

b

lámpák: ac, ad, bc, bd, ec és ed állapot: lámpák {P, Z} Feladat: Mennyi a minimális számú állapot, ami biztonságos és nem okoz örök dugót?

e

d

c

ac d I. dd I. ad

d 33 d 33 33 d 33 d 33 3 d d

bc 3 ec 33 D 33 II.3333 DDDIII. 3
D D D

II. DD D bd

III. ed

Gráfelméleti nyelven: Mennyi G kromatikus száma?

A LGORITMUSELMÉLET 1.

EL OADÁS

14

Mobil telefon átjátszók frekvencia kiosztása
Egy adott átjátszóhoz egy adott frenkvenciát rendelnek. Egy telefon a közelben levo átjátszók közül választ. ,,Közel levo" átjátszók frekvenciája különbözzön.

A LGORITMUSELMÉLET 1.

EL OADÁS

14

Mobil telefon átjátszók frekvencia kiosztása
Egy adott átjátszóhoz egy adott frenkvenciát rendelnek. Egy telefon a közelben levo átjátszók közül választ. ,,Közel levo" átjátszók frekvenciája különbözzön.

A A C C

A B B A

A LGORITMUSELMÉLET 1.

EL OADÁS

15

Szuperforrás keresése
Definíció. A G irányított gráf s V csúcsa szuperforrás, ha minden s-tol különbözo y V csúcs esetén teljesül, hogy (s, y) E és (y, s) E. A szuperforrás olyan s csúcs, amibol a gráf minden más csúcsába él vezet, az s-be pedig egyetlen más csúcsból sem megy él.

A LGORITMUSELMÉLET 1.

EL OADÁS

15

Szuperforrás keresése
Definíció. A G irányított gráf s V csúcsa szuperforrás, ha minden s-tol különbözo y V csúcs esetén teljesül, hogy (s, y) E és (y, s) E. A szuperforrás olyan s csúcs, amibol a gráf minden más csúcsába él vezet, az s-be pedig egyetlen más csúcsból sem megy él. A feladat a következo: tegyük fel, hogy az A adjacencia mátrixával adott a G = (V, E) irányított gráf, aminek a csúcshalmaza V = {1, . . . , n}. Döntsük el, hogy van-e G-ben szuperforrás. Ha igen, találjuk meg.

A LGORITMUSELMÉLET 1.

EL OADÁS

15

Szuperforrás keresése
Definíció. A G irányított gráf s V csúcsa szuperforrás, ha minden s-tol különbözo y V csúcs esetén teljesül, hogy (s, y) E és (y, s) E. A szuperforrás olyan s csúcs, amibol a gráf minden más csúcsába él vezet, az s-be pedig egyetlen más csúcsból sem megy él. A feladat a következo: tegyük fel, hogy az A adjacencia mátrixával adott a G = (V, E) irányított gráf, aminek a csúcshalmaza V = {1, . . . , n}. Döntsük el, hogy van-e G-ben szuperforrás. Ha igen, találjuk meg. Elso ötlet: Sorra vesszük az i V csúcsokat, mindegyikrol megnézve, hogy szuperforrás-e.

A LGORITMUSELMÉLET 1.

EL OADÁS

15

Szuperforrás keresése
Definíció. A G irányított gráf s V csúcsa szuperforrás, ha minden s-tol különbözo y V csúcs esetén teljesül, hogy (s, y) E és (y, s) E. A szuperforrás olyan s csúcs, amibol a gráf minden más csúcsába él vezet, az s-be pedig egyetlen más csúcsból sem megy él. A feladat a következo: tegyük fel, hogy az A adjacencia mátrixával adott a G = (V, E) irányított gráf, aminek a csúcshalmaza V = {1, . . . , n}. Döntsük el, hogy van-e G-ben szuperforrás. Ha igen, találjuk meg. Elso ötlet: Sorra vesszük az i V csúcsokat, mindegyikrol megnézve, hogy szuperforrás-e. Ennek költsége: az A mátrix 2(n2 - n) elemét vizsgáljuk meg.

A LGORITMUSELMÉLET 1.

EL OADÁS

15

Szuperforrás keresése
Definíció. A G irányított gráf s V csúcsa szuperforrás, ha minden s-tol különbözo y V csúcs esetén teljesül, hogy (s, y) E és (y, s) E. A szuperforrás olyan s csúcs, amibol a gráf minden más csúcsába él vezet, az s-be pedig egyetlen más csúcsból sem megy él. A feladat a következo: tegyük fel, hogy az A adjacencia mátrixával adott a G = (V, E) irányított gráf, aminek a csúcshalmaza V = {1, . . . , n}. Döntsük el, hogy van-e G-ben szuperforrás. Ha igen, találjuk meg. Elso ötlet: Sorra vesszük az i V csúcsokat, mindegyikrol megnézve, hogy szuperforrás-e. Ennek költsége: az A mátrix 2(n2 - n) elemét vizsgáljuk meg. Jobb módszer: Ha (i, j) E, akkor j nem lehet szuperforrás, ha (i, j) E akkor i nem lehet szuperforrás

A LGORITMUSELMÉLET 1.

EL OADÁS

16

Gyorsabb algoritmus
i := 1, j := n; while i = j do if A[i, j] = 1 then j := j - 1 else i := i + 1; (* Amikor ideérünk, már csak i lehet szuperforrás, ezt ellenorizzük a továbbiakban. *) for k = 1 to n do if k = i és (A[i, k] = 1 vagy A[k, i] = 0) then return(nincs szuperforrás) return(i szuperforrás).

A LGORITMUSELMÉLET 1.

EL OADÁS

16

Gyorsabb algoritmus
i := 1, j := n; while i = j do if A[i, j] = 1 then j := j - 1 else i := i + 1; (* Amikor ideérünk, már csak i lehet szuperforrás, ezt ellenorizzük a továbbiakban. *) for k = 1 to n do if k = i és (A[i, k] = 1 vagy A[k, i] = 0) then return(nincs szuperforrás) return(i szuperforrás). Ennek költsége: összesen 3n - 3 elemet vizsgálunk meg, n - 1-et a while ciklusban, 2n - 2-t az ellenozésnél

A LGORITMUSELMÉLET 1.

EL OADÁS

16

Gyorsabb algoritmus
i := 1, j := n; while i = j do if A[i, j] = 1 then j := j - 1 else i := i + 1; (* Amikor ideérünk, már csak i lehet szuperforrás, ezt ellenorizzük a továbbiakban. *) for k = 1 to n do if k = i és (A[i, k] = 1 vagy A[k, i] = 0) then return(nincs szuperforrás) return(i szuperforrás). Ennek költsége: összesen 3n - 3 elemet vizsgálunk meg, n - 1-et a while ciklusban, 2n - 2-t az ellenozésnél Mennyire jó ez?

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra.

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra. Tudjuk, hogy T (n) 3n - 3.

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra. Tudjuk, hogy T (n) 3n - 3. Nyilvánvaló, hogy 2n - 2 T (n), mert le kell ellenorizni, hogy szuperforrás-e.

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra. Tudjuk, hogy T (n) 3n - 3. Nyilvánvaló, hogy 2n - 2 T (n), mert le kell ellenorizni, hogy szuperforrás-e. 1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást.

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra. Tudjuk, hogy T (n) 3n - 3. Nyilvánvaló, hogy 2n - 2 T (n), mert le kell ellenorizni, hogy szuperforrás-e. 1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást. Egy algoritmus elso n - 2 kérdése után még legalább két csúcs ­ mondjuk i és j ­ lehet szuperforrás. Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az i-edik sor és i-edik oszlop minden elemét.

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra. Tudjuk, hogy T (n) 3n - 3. Nyilvánvaló, hogy 2n - 2 T (n), mert le kell ellenorizni, hogy szuperforrás-e. 1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást. Egy algoritmus elso n - 2 kérdése után még legalább két csúcs ­ mondjuk i és j ­ lehet szuperforrás. Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az i-edik sor és i-edik oszlop minden elemét. Vagy i-re vagy j-re igaz lesz, hogy az elso n - 2 kérdés közül legfeljebb (n - 2)/2 kérdés vonatkozott rá. Így még 2n - 2 - (n - 2)/2 legalább kérdés kell.

A LGORITMUSELMÉLET 1.

EL OADÁS

17

A költség elemzése
Jelölje T (n) a legjobb (leggyorsabb) algoritmus által megvizsgált mátrix-elemek számának maximumát az összes n pontú gráfra. Tudjuk, hogy T (n) 3n - 3. Nyilvánvaló, hogy 2n - 2 T (n), mert le kell ellenorizni, hogy szuperforrás-e. 1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást. Egy algoritmus elso n - 2 kérdése után még legalább két csúcs ­ mondjuk i és j ­ lehet szuperforrás. Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az i-edik sor és i-edik oszlop minden elemét. Vagy i-re vagy j-re igaz lesz, hogy az elso n - 2 kérdés közül legfeljebb (n - 2)/2 kérdés vonatkozott rá. Így még 2n - 2 - (n - 2)/2 legalább kérdés kell. Tehát n-2 n-2 + n - 2 = 3n - 4 - . T (n) 2n - 2 - 2 2 Azaz a fenti algoritmus közel optimális.

A LGORITMUSELMÉLET 1.

EL OADÁS

18

Rendezési reláció
Legyen U egy halmaz, és < egy kétváltozós reláció U -n. Ha a, b U és a < b, akkor azt mondjuk, hogy a kisebb, mint b.

A LGORITMUSELMÉLET 1.

EL OADÁS

18

Rendezési reláció
Legyen U egy halmaz, és < egy kétváltozós reláció U -n. Ha a, b U és a < b, akkor azt mondjuk, hogy a kisebb, mint b. A < reláció egy rendezés, ha teljesülnek a következok: 1. a < a minden a U elemre (< irreflexív); 2. Ha a, b, c U , a < b, és b < c, akkor a < c (< tranzitív); 3. Tetszoleges a = b U elemekre vagy a < b, vagy b < a fennáll (< teljes).

A LGORITMUSELMÉLET 1.

EL OADÁS

18

Rendezési reláció
Legyen U egy halmaz, és < egy kétváltozós reláció U -n. Ha a, b U és a < b, akkor azt mondjuk, hogy a kisebb, mint b. A < reláció egy rendezés, ha teljesülnek a következok: 1. a < a minden a U elemre (< irreflexív); 2. Ha a, b, c U , a < b, és b < c, akkor a < c (< tranzitív); 3. Tetszoleges a = b U elemekre vagy a < b, vagy b < a fennáll (< teljes). Ha < egy rendezés U -n, akkor az (U, <) párt rendezett halmaznak nevezzük. Példák: · Z az egész számok halmaza. A < rendezés a nagyság szerinti rendezés.

A LGORITMUSELMÉLET 1.

EL OADÁS

18

Rendezési reláció
Legyen U egy halmaz, és < egy kétváltozós reláció U -n. Ha a, b U és a < b, akkor azt mondjuk, hogy a kisebb, mint b. A < reláció egy rendezés, ha teljesülnek a következok: 1. a < a minden a U elemre (< irreflexív); 2. Ha a, b, c U , a < b, és b < c, akkor a < c (< tranzitív); 3. Tetszoleges a = b U elemekre vagy a < b, vagy b < a fennáll (< teljes). Ha < egy rendezés U -n, akkor az (U, <) párt rendezett halmaznak nevezzük. Példák: · Z az egész számok halmaza. A < rendezés a nagyság szerinti rendezés. · Az abc betuinek halmaza; a < rendezést az abc-sorrend adja. Az x betu kisebb, mint az y betu, ha x elobb szerepel az abc-sorrendben, mint y.

A LGORITMUSELMÉLET 1.

EL OADÁS

18

Rendezési reláció
Legyen U egy halmaz, és < egy kétváltozós reláció U -n. Ha a, b U és a < b, akkor azt mondjuk, hogy a kisebb, mint b. A < reláció egy rendezés, ha teljesülnek a következok: 1. a < a minden a U elemre (< irreflexív); 2. Ha a, b, c U , a < b, és b < c, akkor a < c (< tranzitív); 3. Tetszoleges a = b U elemekre vagy a < b, vagy b < a fennáll (< teljes). Ha < egy rendezés U -n, akkor az (U, <) párt rendezett halmaznak nevezzük. Példák: · Z az egész számok halmaza. A < rendezés a nagyság szerinti rendezés. · Az abc betuinek halmaza; a < rendezést az abc-sorrend adja. Az x betu kisebb, mint az y betu, ha x elobb szerepel az abc-sorrendben, mint y.

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A rendezés feladata: adott az (U, <) rendezett halmaz elemeinek egy u1, u2, . . . , un sorozata; rendezzük ezt át egy nem csökkeno v1, v2, . . . , vn sorrendbe.

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A rendezés feladata: adott az (U, <) rendezett halmaz elemeinek egy u1, u2, . . . , un sorozata; rendezzük ezt át egy nem csökkeno v1, v2, . . . , vn sorrendbe. Input: tömb, láncolt lista, (vagy bármi)

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A rendezés feladata: adott az (U, <) rendezett halmaz elemeinek egy u1, u2, . . . , un sorozata; rendezzük ezt át egy nem csökkeno v1, v2, . . . , vn sorrendbe. Input: tömb, láncolt lista, (vagy bármi) Output: általában, mint az Input

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A rendezés feladata: adott az (U, <) rendezett halmaz elemeinek egy u1, u2, . . . , un sorozata; rendezzük ezt át egy nem csökkeno v1, v2, . . . , vn sorrendbe. Input: tömb, láncolt lista, (vagy bármi) Output: általában, mint az Input Lépések: elemek mozgatása, cseréje, összehasonlítása

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A rendezés feladata: adott az (U, <) rendezett halmaz elemeinek egy u1, u2, . . . , un sorozata; rendezzük ezt át egy nem csökkeno v1, v2, . . . , vn sorrendbe. Input: tömb, láncolt lista, (vagy bármi) Output: általában, mint az Input Lépések: elemek mozgatása, cseréje, összehasonlítása A rendezés önmagában is eloforduló feladat, de elojön, mint hasznos adatstruktúra is.

A LGORITMUSELMÉLET 1.

EL OADÁS

19

· A betuibol alkotott szavak halmaza a szótárszeru vagy lexikografikus rendezéssel. legyen X = x1x2 · · · xk és Y = y1y2 · · · yl két szó. Az X kisebb mint Y , ha vagy l > k és xi = yi ha i = 1, 2, . . . , k; vagy pedig xj < yj teljesül a legkisebb olyan j indexre, melyre xj = yj . Tehát például kar < karika és bor < bot.

A rendezés feladata: adott az (U, <) rendezett halmaz elemeinek egy u1, u2, . . . , un sorozata; rendezzük ezt át egy nem csökkeno v1, v2, . . . , vn sorrendbe. Input: tömb, láncolt lista, (vagy bármi) Output: általában, mint az Input Lépések: elemek mozgatása, cseréje, összehasonlítása A rendezés önmagában is eloforduló feladat, de elojön, mint hasznos adatstruktúra is. Rendezett halmazban könnyebb keresni (pl. telefonkönyv).

A LGORITMUSELMÉLET 1.

EL OADÁS

20

Keresés rendezett halmazban
Bar Kochba játék: gondolok egy számot 1 - 100-ig, hány eldöntendo kérdésbol lehet kitalálni?

A LGORITMUSELMÉLET 1.

EL OADÁS

20

Keresés rendezett halmazban
Bar Kochba játék: gondolok egy számot 1 - 100-ig, hány eldöntendo kérdésbol lehet kitalálni? Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn-1 < sn} és s U . részhalmaza. Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s S. Hány összehasonlítás kell?

A LGORITMUSELMÉLET 1.

EL OADÁS

20

Keresés rendezett halmazban
Bar Kochba játék: gondolok egy számot 1 - 100-ig, hány eldöntendo kérdésbol lehet kitalálni? Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn-1 < sn} és s U . részhalmaza. Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s S. Hány összehasonlítás kell?

Lineáris keresés
Sorban mindegyik elemmel összehasonlítjuk.

A LGORITMUSELMÉLET 1.

EL OADÁS

20

Keresés rendezett halmazban
Bar Kochba játék: gondolok egy számot 1 - 100-ig, hány eldöntendo kérdésbol lehet kitalálni? Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn-1 < sn} és s U . részhalmaza. Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s S. Hány összehasonlítás kell?

Lineáris keresés
Sorban mindegyik elemmel összehasonlítjuk. Költség a legrosszabb esetben: n, mert lehet, hogy pont az utolsó volt.

A LGORITMUSELMÉLET 1.

EL OADÁS

20

Keresés rendezett halmazban
Bar Kochba játék: gondolok egy számot 1 - 100-ig, hány eldöntendo kérdésbol lehet kitalálni? Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn-1 < sn} és s U . részhalmaza. Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s S. Hány összehasonlítás kell?

Lineáris keresés
Sorban mindegyik elemmel összehasonlítjuk. Költség a legrosszabb esetben: n, mert lehet, hogy pont az utolsó volt. Költség átlagos esetben esetben: (n/2) + 1

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk.

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk. Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| |S|/2.

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk. Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| |S|/2. És így tovább: |S2| |S| 4 , |S3| |S| 23 , . . . |Sk| |S| 2k

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk. Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| |S|/2. És így tovább: |S2| |S| 4 , |S3| |S| 23 , . . . |Sk| |S| 2k

Pl. keressük meg, benne van-e 21 az alábbi sorozatban! 15, 22, 25, 37, 48 , 56, 70, 82 (1)

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk. Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| |S|/2. És így tovább: |S2| |S| 4 , |S3| |S| 23 , . . . |Sk| |S| 2k

Pl. keressük meg, benne van-e 21 az alábbi sorozatban! 15, 22, 25, 37, 48 , 56, 70, 82 15, 22, 25 , 37,48, 56, 70, 82 (1) (2)

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk. Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| |S|/2. És így tovább: |S2| |S| 4 , |S3| |S| 23 , . . . |Sk| |S| 2k

Pl. keressük meg, benne van-e 21 az alábbi sorozatban! 15, 22, 25, 37, 48 , 56, 70, 82 15, 22, 25 , 37,48, 56, 70, 82 15, 22 , 25, 37, 48, 56, 70, 82 (1) (2) (3)

A LGORITMUSELMÉLET 1.

EL OADÁS

21

Bináris keresés
Oszd meg és uralkodj: eloször a középso si-vel hasonlítunk. Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| |S|/2. És így tovább: |S2| |S| 4 , |S3| |S| 23 , . . . |Sk| |S| 2k

Pl. keressük meg, benne van-e 21 az alábbi sorozatban! 15, 22, 25, 37, 48 , 56, 70, 82 15, 22, 25 , 37,48, 56, 70, 82 15, 22 , 25, 37, 48, 56, 70, 82 15 , 22, 25, 37, 48, 56, 70, 82 (1) (2) (3) (4)

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
Addig kell csinálni, amig |Sk| 1, vagyis 1
n . 2k

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
Addig kell csinálni, amig |Sk| 1, vagyis 1 = 2k n = k log2 n
n . 2k

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
n Addig kell csinálni, amig |Sk| 1, vagyis 1 2k . = 2k n = k log2 n Ez k + 1 összehasonlítás volt. = k + 1 log2 n + 1 log2(n + 1)

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
n Addig kell csinálni, amig |Sk| 1, vagyis 1 2k . = 2k n = k log2 n Ez k + 1 összehasonlítás volt. = k + 1 log2 n + 1 log2(n + 1) Tétel. Ez optimális, nincs olyan kereso algoritmus, ami minden esetben kevesebb mint log2(n + 1) kérdést használ.

Bizonyítás: Az ellenség nem is gondol egy számra, csak mindig úgy válaszol, hogy minél többet kelljen kérdezni.

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
n Addig kell csinálni, amig |Sk| 1, vagyis 1 2k . = 2k n = k log2 n Ez k + 1 összehasonlítás volt. = k + 1 log2 n + 1 log2(n + 1) Tétel. Ez optimális, nincs olyan kereso algoritmus, ami minden esetben kevesebb mint log2(n + 1) kérdést használ.

Bizonyítás: Az ellenség nem is gondol egy számra, csak mindig úgy válaszol, hogy minél többet kelljen kérdezni. Ha egy kérdést felteszek, és az igen válasz után mondjuk szóba jön x lehetoség, akkor a nem esetén szóba jön még n - x lehetoség.

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
n Addig kell csinálni, amig |Sk| 1, vagyis 1 2k . = 2k n = k log2 n Ez k + 1 összehasonlítás volt. = k + 1 log2 n + 1 log2(n + 1) Tétel. Ez optimális, nincs olyan kereso algoritmus, ami minden esetben kevesebb mint log2(n + 1) kérdést használ.

Bizonyítás: Az ellenség nem is gondol egy számra, csak mindig úgy válaszol, hogy minél többet kelljen kérdezni. Ha egy kérdést felteszek, és az igen válasz után mondjuk szóba jön x lehetoség, akkor a nem esetén szóba jön még n - x lehetoség. Az ellenség úgy válaszol, hogy minél több lehetoség maradjon, így el tudja n érni, hogy legalább n/2 marad. = k kérdés után is marad még 2k lehetoség.

A LGORITMUSELMÉLET 1.

EL OADÁS

22

Bináris keresés
n Addig kell csinálni, amig |Sk| 1, vagyis 1 2k . = 2k n = k log2 n Ez k + 1 összehasonlítás volt. = k + 1 log2 n + 1 log2(n + 1) Tétel. Ez optimális, nincs olyan kereso algoritmus, ami minden esetben kevesebb mint log2(n + 1) kérdést használ.

Bizonyítás: Az ellenség nem is gondol egy számra, csak mindig úgy válaszol, hogy minél többet kelljen kérdezni. Ha egy kérdést felteszek, és az igen válasz után mondjuk szóba jön x lehetoség, akkor a nem esetén szóba jön még n - x lehetoség. Az ellenség úgy válaszol, hogy minél több lehetoség maradjon, így el tudja n érni, hogy legalább n/2 marad. = k kérdés után is marad még 2k lehetoség. n Ha tehát 2k > 1, akkor nem tudom, hogy az-e a gondolt szám, vagy nincs benne a sorozatban. Tehát még egy kérdésre szükség van. n = 2k > 1 = n > 2k = log2 n > k.

Algoritmuselmélet 2. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Február 12.

A LGORITMUSELMÉLET 2.

EL OADÁS

1

Buborék-rendezés
Input: A[1 : n] (rendezetlen) tömb Ha valamely i-re A[i] > A[i + 1], akkor a két cella tartalmát kicseréljük. A tömb elejérol indulva a cserélgetve eljutunk a tömb végéig.

A LGORITMUSELMÉLET 2.

EL OADÁS

1

Buborék-rendezés
Input: A[1 : n] (rendezetlen) tömb Ha valamely i-re A[i] > A[i + 1], akkor a két cella tartalmát kicseréljük. A tömb elejérol indulva a cserélgetve eljutunk a tömb végéig. Ekkor a legnagyobb elem A[n]-ben van.

A LGORITMUSELMÉLET 2.

EL OADÁS

1

Buborék-rendezés
Input: A[1 : n] (rendezetlen) tömb Ha valamely i-re A[i] > A[i + 1], akkor a két cella tartalmát kicseréljük. A tömb elejérol indulva a cserélgetve eljutunk a tömb végéig. Ekkor a legnagyobb elem A[n]-ben van. Ismételjük ezt az A[1 : n - 1] tömbre, majd az A[1 : n - 2] tömbre, stb.

A LGORITMUSELMÉLET 2.

EL OADÁS

1

Buborék-rendezés
Input: A[1 : n] (rendezetlen) tömb Ha valamely i-re A[i] > A[i + 1], akkor a két cella tartalmát kicseréljük. A tömb elejérol indulva a cserélgetve eljutunk a tömb végéig. Ekkor a legnagyobb elem A[n]-ben van. Ismételjük ezt az A[1 : n - 1] tömbre, majd az A[1 : n - 2] tömbre, stb. procedure buborék (* az A[1 : n] tömböt nem csökkenoen rendezi *) for (j = n - 1, j > 0, j := j - 1) do for (i = 1, i j, i := i + 1) do { ha A[i + 1] < A[i], akkor cseréljük ki oket.} összehasonlítások száma: n - 1 + n - 2 + . . . + 1 = cserék száma:
n(n-1) 2 n(n-1) 2

A LGORITMUSELMÉLET 2.

EL OADÁS

1

Buborék-rendezés
Input: A[1 : n] (rendezetlen) tömb Ha valamely i-re A[i] > A[i + 1], akkor a két cella tartalmát kicseréljük. A tömb elejérol indulva a cserélgetve eljutunk a tömb végéig. Ekkor a legnagyobb elem A[n]-ben van. Ismételjük ezt az A[1 : n - 1] tömbre, majd az A[1 : n - 2] tömbre, stb. procedure buborék (* az A[1 : n] tömböt nem csökkenoen rendezi *) for (j = n - 1, j > 0, j := j - 1) do for (i = 1, i j, i := i + 1) do { ha A[i + 1] < A[i], akkor cseréljük ki oket.} összehasonlítások száma: n - 1 + n - 2 + . . . + 1 = cserék száma:
n(n-1) 2 n(n-1) 2

Java animáció: Buborék rendezés

A LGORITMUSELMÉLET 2.

EL OADÁS

2

Beszúrásos rendezés
Ha az A[1 : k] résztömb már rendezett, akkor szúrjuk be a következo elemet A[k + 1]-et lineáris vagy bináris kereséssel, majd a következot ebbe, stb.

A LGORITMUSELMÉLET 2.

EL OADÁS

2

Beszúrásos rendezés
Ha az A[1 : k] résztömb már rendezett, akkor szúrjuk be a következo elemet A[k + 1]-et lineáris vagy bináris kereséssel, majd a következot ebbe, stb. lineáris összehasonlítás n(n - 1) 2
n-1

bináris log2(k + 1)
k=1

A LGORITMUSELMÉLET 2.

EL OADÁS

2

Beszúrásos rendezés
Ha az A[1 : k] résztömb már rendezett, akkor szúrjuk be a következo elemet A[k + 1]-et lineáris vagy bináris kereséssel, majd a következot ebbe, stb. lineáris összehasonlítás n(n - 1) 2 (n + 2)(n - 1) 2
n-1

bináris log2(k + 1)
k=1

mozgatás

(n + 2)(n - 1) 2

A LGORITMUSELMÉLET 2.

EL OADÁS

2

Beszúrásos rendezés
Ha az A[1 : k] résztömb már rendezett, akkor szúrjuk be a következo elemet A[k + 1]-et lineáris vagy bináris kereséssel, majd a következot ebbe, stb. lineáris összehasonlítás n(n - 1) 2 (n + 2)(n - 1) 2 n(n - 1) 4
n-1 n-1

bináris log2(k + 1)
k=1

mozgatás

(n + 2)(n - 1) 2 log2(n + 1)
k=1

átlagos összehasonlítás

A LGORITMUSELMÉLET 2.

EL OADÁS

2

Beszúrásos rendezés
Ha az A[1 : k] résztömb már rendezett, akkor szúrjuk be a következo elemet A[k + 1]-et lineáris vagy bináris kereséssel, majd a következot ebbe, stb. lineáris összehasonlítás n(n - 1) 2 (n + 2)(n - 1) 2 n(n - 1) 4 n2 4
n-1 n-1

bináris log2(k + 1)
k=1

mozgatás

(n + 2)(n - 1) 2 log2(n + 1)
k=1

átlagos összehasonlítás

átlagos mozgatás

n2 4

A LGORITMUSELMÉLET 2.

EL OADÁS

3

Bináris beszúrásos rendezés lépésszáma

K := log2 2 + log2 3 + . . . + log2 n n log2 n

A LGORITMUSELMÉLET 2.

EL OADÁS

3

Bináris beszúrásos rendezés lépésszáma

K := log2 2 + log2 3 + . . . + log2 n n log2 n

Jobb becslés: használjuk fel, hogy log2 k 1 + log2 k K < n - 1 + log2 2 + . . . + log2 n = n - 1 + log2(n!)

A LGORITMUSELMÉLET 2.

EL OADÁS

3

Bináris beszúrásos rendezés lépésszáma

K := log2 2 + log2 3 + . . . + log2 n n log2 n

Jobb becslés: használjuk fel, hogy log2 k 1 + log2 k K < n - 1 + log2 2 + . . . + log2 n = n - 1 + log2(n!)
n

Felhasználva a Stirling formulát: n! (n/e) log2 n! n(log2 n - log2 e) + 1 2

2n kapjuk, hogy 2 n(log2 n - 1, 442)

log2 n + log2

A LGORITMUSELMÉLET 2.

EL OADÁS

3

Bináris beszúrásos rendezés lépésszáma

K := log2 2 + log2 3 + . . . + log2 n n log2 n

Jobb becslés: használjuk fel, hogy log2 k 1 + log2 k K < n - 1 + log2 2 + . . . + log2 n = n - 1 + log2(n!)
n

Felhasználva a Stirling formulát: n! (n/e) log2 n! n(log2 n - log2 e) + 1 2

2n kapjuk, hogy 2 n(log2 n - 1, 442)

log2 n + log2

Ezért K n(log2 n - 0, 442) elég nagy n-re.

A LGORITMUSELMÉLET 2.

EL OADÁS

3

Bináris beszúrásos rendezés lépésszáma

K := log2 2 + log2 3 + . . . + log2 n n log2 n

Jobb becslés: használjuk fel, hogy log2 k 1 + log2 k K < n - 1 + log2 2 + . . . + log2 n = n - 1 + log2(n!)
n

Felhasználva a Stirling formulát: n! (n/e) log2 n! n(log2 n - log2 e) + 1 2

2n kapjuk, hogy 2 n(log2 n - 1, 442)

log2 n + log2

Ezért K n(log2 n - 0, 442) elég nagy n-re. Java animáció: Beszúrásos rendezés

A LGORITMUSELMÉLET 2.

EL OADÁS

4

Alsó becslés összehasonlítás alapú rendezésre
Ugyanaz, mintha Bar Kochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend.

A LGORITMUSELMÉLET 2.

EL OADÁS

4

Alsó becslés összehasonlítás alapú rendezésre
Ugyanaz, mintha Bar Kochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend. Kezdetben n! lehetséges sorrend jön szóba.

A LGORITMUSELMÉLET 2.

EL OADÁS

4

Alsó becslés összehasonlítás alapú rendezésre
Ugyanaz, mintha Bar Kochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend. Kezdetben n! lehetséges sorrend jön szóba. Két elemet összehasonlítva, a válasz két részre osztja a sorrendeket. Ha pl. azt kapjuk, hogy x < y, akkor az olyan sorrendek, amikben x hátrébb van y-nál, már nem jönnek szóba.

A LGORITMUSELMÉLET 2.

EL OADÁS

4

Alsó becslés összehasonlítás alapú rendezésre
Ugyanaz, mintha Bar Kochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend. Kezdetben n! lehetséges sorrend jön szóba. Két elemet összehasonlítva, a válasz két részre osztja a sorrendeket. Ha pl. azt kapjuk, hogy x < y, akkor az olyan sorrendek, amikben x hátrébb van y-nál, már nem jönnek szóba. Ha az ellenség megint úgy válaszol, hogy minél több sorrend maradjon meg, n! akkor k kérdés után még szóba jön 2k sorrend.

A LGORITMUSELMÉLET 2.

EL OADÁS

4

Alsó becslés összehasonlítás alapú rendezésre
Ugyanaz, mintha Bar Kochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend. Kezdetben n! lehetséges sorrend jön szóba. Két elemet összehasonlítva, a válasz két részre osztja a sorrendeket. Ha pl. azt kapjuk, hogy x < y, akkor az olyan sorrendek, amikben x hátrébb van y-nál, már nem jönnek szóba. Ha az ellenség megint úgy válaszol, hogy minél több sorrend maradjon meg, n! akkor k kérdés után még szóba jön 2k sorrend. n! Ha 2k > 1 nem tudjuk megadni a rendezést. =

Tétel. Minden összehasonlítás alapú rendezo módszer n elem rendezésekor legalább log2(n!) összehasonlítást használ.

A LGORITMUSELMÉLET 2.

EL OADÁS

5

Összefésüléses rendezés Összefésülés (MERGE):
Két már rendezett sorozat (tömb, lista, stb.) tartalmának egy sorozatba való rendezése:

A LGORITMUSELMÉLET 2.

EL OADÁS

5

Összefésüléses rendezés Összefésülés (MERGE):
Két már rendezett sorozat (tömb, lista, stb.) tartalmának egy sorozatba való rendezése: A[1 : k] és B[1 : l] rendezett tömbök = C[1 : k + l] rendezett tömb

A LGORITMUSELMÉLET 2.

EL OADÁS

5

Összefésüléses rendezés Összefésülés (MERGE):
Két már rendezett sorozat (tömb, lista, stb.) tartalmának egy sorozatba való rendezése: A[1 : k] és B[1 : l] rendezett tömbök = C[1 : k + l] rendezett tömb Nyilván C[1] = min{A[1], B[1]}, pl. A[1],

A LGORITMUSELMÉLET 2.

EL OADÁS

5

Összefésüléses rendezés Összefésülés (MERGE):
Két már rendezett sorozat (tömb, lista, stb.) tartalmának egy sorozatba való rendezése: A[1 : k] és B[1 : l] rendezett tömbök = C[1 : k + l] rendezett tömb Nyilván C[1] = min{A[1], B[1]}, pl. A[1], ezt rakjuk át C-be és töröljük A-ból.

A LGORITMUSELMÉLET 2.

EL OADÁS

5

Összefésüléses rendezés Összefésülés (MERGE):
Két már rendezett sorozat (tömb, lista, stb.) tartalmának egy sorozatba való rendezése: A[1 : k] és B[1 : l] rendezett tömbök = C[1 : k + l] rendezett tömb Nyilván C[1] = min{A[1], B[1]}, pl. A[1], ezt rakjuk át C-be és töröljük A-ból. C[2] = min{A[2], B[1]}, stb.

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A B C 12, 15, 20, 31 13, 16, 18

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A B C 12, 15, 20, 31 13, 16, 18 15, 20, 31 13, 16, 18 12,

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31

B C 13, 16, 18 13, 16, 18 12, 16, 18 12, 13

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31 20, 31

B 13, 16, 18 13, 16, 18 16, 18 16, 18

C 12, 12, 13 12, 13, 15

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31 20, 31 20, 31

B 13, 16, 18 13, 16, 18 16, 18 16, 18 18

C 12, 12, 13 12, 13, 15 12, 13, 15, 16

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31 20, 31 20, 31 20, 31

B 13, 16, 18 13, 16, 18 16, 18 16, 18 18

C 12, 12, 13 12, 13, 15 12, 13, 15, 16 12, 13, 15, 16, 18

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31 20, 31 20, 31 20, 31 31

B 13, 16, 18 13, 16, 18 16, 18 16, 18 18

C 12, 12, 13 12, 13, 15 12, 13, 15, 16 12, 13, 15, 16, 18 12, 13, 15, 16, 18, 20

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31 20, 31 20, 31 20, 31 31

B 13, 16, 18 13, 16, 18 16, 18 16, 18 18

C 12, 12, 13 12, 13, 15 12, 13, 15, 16 12, 13, 15, 16, 18 12, 13, 15, 16, 18, 20 12, 13, 15, 16, 18, 20, 31

A LGORITMUSELMÉLET 2.

EL OADÁS

6

Példa

A 12, 15, 20, 31 15, 20, 31 15, 20, 31 20, 31 20, 31 20, 31 31

B 13, 16, 18 13, 16, 18 16, 18 16, 18 18

C 12, 12, 13 12, 13, 15 12, 13, 15, 16 12, 13, 15, 16, 18 12, 13, 15, 16, 18, 20 12, 13, 15, 16, 18, 20, 31

összehasonlítások száma: k + l - 1, ahol k, l a két tömb hossza

A LGORITMUSELMÉLET 2.

EL OADÁS

7

Összefésüléses rendezés
Alapötlet: Rendezzük külön a tömb elso felét, majd a második felét, végül fésüljük össze.

A LGORITMUSELMÉLET 2.

EL OADÁS

7

Összefésüléses rendezés
Alapötlet: Rendezzük külön a tömb elso felét, majd a második felét, végül fésüljük össze. Ezt csináljuk rekurzívan.

MSORT(A[1 : n]) := MERGE(MSORT(A[1 : n/2 ]), MSORT(A[ n/2 + 1 : n])).

Hogy elvarrjuk a rekurzió alját, legyen MSORT(A[i, i]) az üres utasítás.

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k.

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2),

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2), T (n) n - 1 + 2(n/2 - 1 + 2T (n/4)) = n - 1 + 2(n/2 - 1) + 4T (n/4).

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2), T (n) n - 1 + 2(n/2 - 1 + 2T (n/4)) = n - 1 + 2(n/2 - 1) + 4T (n/4). T (n) n-1+2(n/2-1)+4(n/4-1)+· · ·+2k-1(n/2k-1-1) n log2 n . Felhasználva, hogy T (1) = 0.

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2), T (n) n - 1 + 2(n/2 - 1 + 2T (n/4)) = n - 1 + 2(n/2 - 1) + 4T (n/4). T (n) n-1+2(n/2-1)+4(n/4-1)+· · ·+2k-1(n/2k-1-1) n log2 n . Felhasználva, hogy T (1) = 0. Az összefésüléses rendezés konstans szorzó erejéig optimális.

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2), T (n) n - 1 + 2(n/2 - 1 + 2T (n/4)) = n - 1 + 2(n/2 - 1) + 4T (n/4). T (n) n-1+2(n/2-1)+4(n/4-1)+· · ·+2k-1(n/2k-1-1) n log2 n . Felhasználva, hogy T (1) = 0. Az összefésüléses rendezés konstans szorzó erejéig optimális. Mozgatások száma: 2n log2 n

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2), T (n) n - 1 + 2(n/2 - 1 + 2T (n/4)) = n - 1 + 2(n/2 - 1) + 4T (n/4). T (n) n-1+2(n/2-1)+4(n/4-1)+· · ·+2k-1(n/2k-1-1) n log2 n . Felhasználva, hogy T (1) = 0. Az összefésüléses rendezés konstans szorzó erejéig optimális. Mozgatások száma: 2n log2 n Tárigény: 2n cella (bonyolultabban megcsinálva elég n + konst.)

A LGORITMUSELMÉLET 2.

EL OADÁS

8

Összehasonlítások száma
Jelöljük T (n)-el a lépésszámot n hosszú tömb rendezésekor. Az egyszeruség kedvéért tegyük fel, hogy n = 2k. T (n) n - 1 + 2T (n/2), T (n) n - 1 + 2(n/2 - 1 + 2T (n/4)) = n - 1 + 2(n/2 - 1) + 4T (n/4). T (n) n-1+2(n/2-1)+4(n/4-1)+· · ·+2k-1(n/2k-1-1) n log2 n . Felhasználva, hogy T (1) = 0. Az összefésüléses rendezés konstans szorzó erejéig optimális. Mozgatások száma: 2n log2 n Tárigény: 2n cella (bonyolultabban megcsinálva elég n + konst.) Java animáció: Összefésüléses rendezés

A LGORITMUSELMÉLET 2.

EL OADÁS

9

Kupac adatszerkezet
Egy (U, <) rendezett halmaz egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör ) hatékony legyen.

A LGORITMUSELMÉLET 2.

EL OADÁS

9

Kupac adatszerkezet
Egy (U, <) rendezett halmaz egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör ) hatékony legyen. Alkalmazások: · Jobok indítása

A LGORITMUSELMÉLET 2.

EL OADÁS

9

Kupac adatszerkezet
Egy (U, <) rendezett halmaz egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör ) hatékony legyen. Alkalmazások: · Jobok indítása · Több rendezett halmaz összefésülése

A LGORITMUSELMÉLET 2.

EL OADÁS

9

Kupac adatszerkezet
Egy (U, <) rendezett halmaz egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör ) hatékony legyen. Alkalmazások: · Jobok indítása · Több rendezett halmaz összefésülése · Gyors rendezési algoritmus

A LGORITMUSELMÉLET 2.

EL OADÁS

9

Kupac adatszerkezet
Egy (U, <) rendezett halmaz egy S véges részhalmazát szeretnénk tárolni, hogy a beszúrás és a minimális elem törlése (mintör ) hatékony legyen. Alkalmazások: · Jobok indítása · Több rendezett halmaz összefésülése · Gyors rendezési algoritmus

Teljes bináris fa:

gyökér

levelek

A LGORITMUSELMÉLET 2.

EL OADÁS

10

Bináris fa ábrázolása tömbbel
A fa csúcsai az A[1 : n] tömb elemei. Az A[i] csúcs bal fia A[2i], a jobb fia pedig A[2i + 1].

A LGORITMUSELMÉLET 2.

EL OADÁS

10

Bináris fa ábrázolása tömbbel
A fa csúcsai az A[1 : n] tömb elemei. Az A[i] csúcs bal fia A[2i], a jobb fia pedig A[2i + 1]. = A[j] csúcs apja A[ j/2 ]

A LGORITMUSELMÉLET 2.

EL OADÁS

10

Bináris fa ábrázolása tömbbel
A fa csúcsai az A[1 : n] tömb elemei. Az A[i] csúcs bal fia A[2i], a jobb fia pedig A[2i + 1]. = A[j] csúcs apja A[ j/2 ]

8 4 5 2 9 6 6
2 4 6 8 5 9 6

A LGORITMUSELMÉLET 2.

EL OADÁS

11

Kupac tulajdonság: apa < fia

A LGORITMUSELMÉLET 2.

EL OADÁS

12

Kupacépítés

c a f1 b f2

f1 és f2 kupacok

A LGORITMUSELMÉLET 2.

EL OADÁS

12

Kupacépítés
felszivárog(f ) { Ha min{a, b} < c, akkor min{a, b} és c helyet cserél Ha a c elem a-val cserélt helyet, akkor felszivárog(f1), ha b-vel, akkor felszivárog(f2) }

c a f1 b f2

f1 és f2 kupacok

A LGORITMUSELMÉLET 2.

EL OADÁS

12

Kupacépítés
felszivárog(f ) { Ha min{a, b} < c, akkor min{a, b} és c helyet cserél Ha a c elem a-val cserélt helyet, akkor felszivárog(f1), ha b-vel, akkor felszivárog(f2) } c addig megy lefelé, amig sérti a kupac tulajdonságot. Lépésszám: Ha l a fa szintjeinek száma, akkor l - 1 csere és 2(l - 1) összehasonlítás

c a f1 b f2

f1 és f2 kupacok

A LGORITMUSELMÉLET 2.

EL OADÁS

12

Kupacépítés
felszivárog(f ) { Ha min{a, b} < c, akkor min{a, b} és c helyet cserél Ha a c elem a-val cserélt helyet, akkor felszivárog(f1), ha b-vel, akkor felszivárog(f2) } c addig megy lefelé, amig sérti a kupac tulajdonságot. Lépésszám: Ha l a fa szintjeinek száma, akkor l - 1 csere és 2(l - 1) összehasonlítás

c a f1 b f2

f1 és f2 kupacok

kupacépítés(f ) { Az f fa v csúcsaira lentrol felfelé, jobbról balra felszivárog(v). }

A LGORITMUSELMÉLET 2.

EL OADÁS

13

Kupacépítés költsége
Bináris fában: 1. szint: 1 pont 2. szint: 2 pont 3. szint: 22 pont . . l-edik szint: > 1 és 2l-1 pont

A LGORITMUSELMÉLET 2.

EL OADÁS

13

Kupacépítés költsége
Bináris fában: 1. szint: 1 pont 2. szint: 2 pont 3. szint: 22 pont . . l-edik szint: > 1 és 2l-1 pont

= n 1 +

l-2 i=0

2i = 2l-1 = l 1 + log2 n

A LGORITMUSELMÉLET 2.

EL OADÁS

13

Kupacépítés költsége
Bináris fában: 1. szint: 1 pont 2. szint: 2 pont 3. szint: 22 pont . . l-edik szint: > 1 és 2l-1 pont

= n 1 +

l-2 i=0

2i = 2l-1 = l 1 + log2 n

Az i-edik szinten levo v csúcsra felszivárog(v) költsége legfeljebb l - i csere és legfeljebb 2(l - i) összehasonlítás.

A LGORITMUSELMÉLET 2.

EL OADÁS

14

A cserék száma ezért összesen legfeljebb j = l - i (azaz i = l - j) helyettesítéssel

l i=1 (l

- i)2i-1.

A LGORITMUSELMÉLET 2.

EL OADÁS

14

A cserék száma ezért összesen legfeljebb j = l - i (azaz i = l - j) helyettesítéssel
l-1 l-1

l i=1 (l

- i)2i-1.

j2l-j-1 = 2l-1
j =0 j =0

j/2j < 2l 2n.

A LGORITMUSELMÉLET 2.

EL OADÁS

14

A cserék száma ezért összesen legfeljebb j = l - i (azaz i = l - j) helyettesítéssel
l-1 l-1

l i=1 (l

- i)2i-1.

j2l-j-1 = 2l-1
j =0 j =0

j/2j < 2l 2n.

1/2 1/4 1/8 . .
1 2l-1

1/4 1/8
1 2l-1

1/8
1 2l-1

...

1 2l-1 1 2l-1

< 1 < 1/2 < 1/4 · · · <

A LGORITMUSELMÉLET 2.

EL OADÁS

14

A cserék száma ezért összesen legfeljebb j = l - i (azaz i = l - j) helyettesítéssel
l-1 l-1

l i=1 (l

- i)2i-1.

j2l-j-1 = 2l-1
j =0 j =0

j/2j < 2l 2n.

1/2 1/4 1/8 . .
1 2l-1

1/4 1/8
1 2l-1

1/8
1 2l-1

...

1 2l-1 1 2l-1

< 1 < 1/2 < 1/4 · · · <

Tétel. Kupacépítés költsége: O(n)

A LGORITMUSELMÉLET 2.

EL OADÁS

15

MINTÖR
A minimális elem az f gyökérben van, ezt töröljük.

A LGORITMUSELMÉLET 2.

EL OADÁS

15

MINTÖR
A minimális elem az f gyökérben van, ezt töröljük. A f -be tesszük a fa utolsó szintjének jobb szélso elemét, majd felszivárog(f ).

A LGORITMUSELMÉLET 2.

EL OADÁS

15

MINTÖR
A minimális elem az f gyökérben van, ezt töröljük. A f -be tesszük a fa utolsó szintjének jobb szélso elemét, majd felszivárog(f ).

8 4 5 2 9 6

A LGORITMUSELMÉLET 2.

EL OADÁS

15

MINTÖR
A minimális elem az f gyökérben van, ezt töröljük. A f -be tesszük a fa utolsó szintjének jobb szélso elemét, majd felszivárog(f ).

8 4 5 2 9 6

8 4 5 9 2 6

A LGORITMUSELMÉLET 2.

EL OADÁS

15

MINTÖR
A minimális elem az f gyökérben van, ezt töröljük. A f -be tesszük a fa utolsó szintjének jobb szélso elemét, majd felszivárog(f ).

8 4 5 2 9 6

8 4 5 9 2 6

8 5 9 4 2 6

A LGORITMUSELMÉLET 2.

EL OADÁS

15

MINTÖR
A minimális elem az f gyökérben van, ezt töröljük. A f -be tesszük a fa utolsó szintjének jobb szélso elemét, majd felszivárog(f ).

Költség: O(l) = O(log2 n)

8 4 5 2 9 6

8 4 5 9 2 6

8 5 9 4 2 6

A LGORITMUSELMÉLET 2.

EL OADÁS

16

BESZÚR
Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával.

A LGORITMUSELMÉLET 2.

EL OADÁS

16

BESZÚR
Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával.

8 4 5 2 9 6 1

A LGORITMUSELMÉLET 2.

EL OADÁS

16

BESZÚR
Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával.

2 4 4 2 8 6 5 9 1 6

8 5 9 1

A LGORITMUSELMÉLET 2.

EL OADÁS

16

BESZÚR
Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával.

2 4 4 2 8 6 5 9 1 6

8

8 5 9 1

4 5 1 9 2 6

A LGORITMUSELMÉLET 2.

EL OADÁS

16

BESZÚR
Új levelet adunk a fához (ügyelve a teljességre), ide tesszük az s elemet. Ezután s-et mozgatjuk felfelé, mindig összehasonlítjuk az apjával.

2 4 4 2 8 6 5 9 1 6

8

Költség: O(l) = O(log2 n)

8 5 9 1

4 5 1 9 2 6

A LGORITMUSELMÉLET 2.

EL OADÁS

17

A kupacos rendezés
Eloször kupacot építünk, utána n darab MINTÖR adja nem csökkeno sorrendben az elemeket. [J. W. J. Williams és R. W. Floyd, 1964]

A LGORITMUSELMÉLET 2.

EL OADÁS

17

A kupacos rendezés
Eloször kupacot építünk, utána n darab MINTÖR adja nem csökkeno sorrendben az elemeket. [J. W. J. Williams és R. W. Floyd, 1964] Költség: O(n) + O(n log2 n) = O(n log2 n)

A LGORITMUSELMÉLET 2.

EL OADÁS

17

A kupacos rendezés
Eloször kupacot építünk, utána n darab MINTÖR adja nem csökkeno sorrendben az elemeket. [J. W. J. Williams és R. W. Floyd, 1964] Költség: O(n) + O(n log2 n) = O(n log2 n) Legjobb ismert rendezo algoritmus. Pontos implementációval: 2n log2 n + 3n (összehasonlítások száma) és n log2 n + 2, 5n (cserék száma).

A LGORITMUSELMÉLET 2.

EL OADÁS

17

A kupacos rendezés
Eloször kupacot építünk, utána n darab MINTÖR adja nem csökkeno sorrendben az elemeket. [J. W. J. Williams és R. W. Floyd, 1964] Költség: O(n) + O(n log2 n) = O(n log2 n) Legjobb ismert rendezo algoritmus. Pontos implementációval: 2n log2 n + 3n (összehasonlítások száma) és n log2 n + 2, 5n (cserék száma). Java animáció: Kupacos rendezés

Algoritmuselmélet 3. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Február 18.

A LGORITMUSELMÉLET 3.

EL OADÁS

1

Gyorsrendezés
[C. A. R. Hoare, 1960] oszd meg és uralkodj: véletlen s elem a tömbbol = PARTÍCIÓ(s) = s-nél kisebb elemek s ... s s-nél nagyobb elemek

A LGORITMUSELMÉLET 3.

EL OADÁS

1

Gyorsrendezés
[C. A. R. Hoare, 1960] oszd meg és uralkodj: véletlen s elem a tömbbol = PARTÍCIÓ(s) = s-nél kisebb elemek s ... s s-nél nagyobb elemek

GYORSREND(A[1 : n]) 1. Válasszunk egy véletlen s elemet az A tömbbol. 2. PARTÍCIÓ(s); az eredmény legyen az A[1 : k], A[k + 1 : l], A[l + 1 : n] felbontás. 3. GYORSREND(A[1 : k]); GYORSREND(A[l + 1 : n]).

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n,

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n, = i-t növeljük, amíg A[i] < s teljesül

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n, = i-t növeljük, amíg A[i] < s teljesül = j-t csökkentjük, amíg A[j] s = i s-nél kisebb elemek

j s-nél nem kisebb elemek

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n, = i-t növeljük, amíg A[i] < s teljesül = j-t csökkentjük, amíg A[j] s = i s-nél kisebb elemek

j s-nél nem kisebb elemek

Ha mindketto megáll (nem lehet továbblépni), és i < j, akkor A[i] s és A[j] < s

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n, = i-t növeljük, amíg A[i] < s teljesül = j-t csökkentjük, amíg A[j] s = i s-nél kisebb elemek

j s-nél nem kisebb elemek

Ha mindketto megáll (nem lehet továbblépni), és i < j, akkor A[i] s és A[j] < s = Kicseréljük A[i] és A[j] tartalmát = i := i + 1 és j := j - 1. Ha a két mutató összeér (már nem teljesül i < j), akkor s elofordulásait a felso rész elejére mozgatjuk.

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n, = i-t növeljük, amíg A[i] < s teljesül = j-t csökkentjük, amíg A[j] s = i s-nél kisebb elemek

j s-nél nem kisebb elemek

Ha mindketto megáll (nem lehet továbblépni), és i < j, akkor A[i] s és A[j] < s = Kicseréljük A[i] és A[j] tartalmát = i := i + 1 és j := j - 1. Ha a két mutató összeér (már nem teljesül i < j), akkor s elofordulásait a felso rész elejére mozgatjuk. PARTÍCIÓ lépésszáma: O(n) GYORSREND lépésszáma legrosszabb esetben: O(n2) GYORSREND lépésszáma átlagos esetben: 1, 39n log2 n + O(n) = O(n log n)

A LGORITMUSELMÉLET 3.

EL OADÁS

2

A PARTÍCIÓ(s) muködése
Legyen i := 1, j := n, = i-t növeljük, amíg A[i] < s teljesül = j-t csökkentjük, amíg A[j] s = i s-nél kisebb elemek

j s-nél nem kisebb elemek

Ha mindketto megáll (nem lehet továbblépni), és i < j, akkor A[i] s és A[j] < s = Kicseréljük A[i] és A[j] tartalmát = i := i + 1 és j := j - 1. Ha a két mutató összeér (már nem teljesül i < j), akkor s elofordulásait a felso rész elejére mozgatjuk. PARTÍCIÓ lépésszáma: O(n) GYORSREND lépésszáma legrosszabb esetben: O(n2) GYORSREND lépésszáma átlagos esetben: 1, 39n log2 n + O(n) = O(n log n) Java animáció: Gyorsrendezés

A LGORITMUSELMÉLET 3.

EL OADÁS

3

A k-adik elem kiválasztása
Elso ötlet: válasszuk ki a legkisebbet, majd a maradékból a legkisebbet, stb. = O(nk) lépés

A LGORITMUSELMÉLET 3.

EL OADÁS

3

A k-adik elem kiválasztása
Elso ötlet: válasszuk ki a legkisebbet, majd a maradékból a legkisebbet, stb. = O(nk) lépés Második ötlet: Rendezzük az elemeket, vegyük ki a k-adikat = O(n log2 n) lépés

A LGORITMUSELMÉLET 3.

EL OADÁS

3

A k-adik elem kiválasztása
Elso ötlet: válasszuk ki a legkisebbet, majd a maradékból a legkisebbet, stb. = O(nk) lépés Második ötlet: Rendezzük az elemeket, vegyük ki a k-adikat = O(n log2 n) lépés De van jobb: Tetszoleges k-ra meg lehet keresni O(n) lépésben.

A LGORITMUSELMÉLET 3.

EL OADÁS

4

Kulcsmanipulációs rendezések
Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belso szerkezetét.

A LGORITMUSELMÉLET 3.

EL OADÁS

4

Kulcsmanipulációs rendezések
Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belso szerkezetét.

Ládarendezés (binsort)
Tudjuk, hogy A[1 : n] elemei egy m elemu U halmazból kerülnek ki, pl. {1, . . . , m}

A LGORITMUSELMÉLET 3.

EL OADÁS

4

Kulcsmanipulációs rendezések
Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belso szerkezetét.

Ládarendezés (binsort)
Tudjuk, hogy A[1 : n] elemei egy m elemu U halmazból kerülnek ki, pl. {1, . . . , m} = Lefoglalunk egy U elemeivel indexelt B tömböt (m db ládát), eloször mind üres.

A LGORITMUSELMÉLET 3.

EL OADÁS

4

Kulcsmanipulációs rendezések
Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belso szerkezetét.

Ládarendezés (binsort)
Tudjuk, hogy A[1 : n] elemei egy m elemu U halmazból kerülnek ki, pl. {1, . . . , m} = Lefoglalunk egy U elemeivel indexelt B tömböt (m db ládát), eloször mind üres. elso fázis = végigolvassuk az A-t, és az s = A[i] elemet a B[s] lista végére fuzzük.

A LGORITMUSELMÉLET 3.

EL OADÁS

4

Kulcsmanipulációs rendezések
Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belso szerkezetét.

Ládarendezés (binsort)
Tudjuk, hogy A[1 : n] elemei egy m elemu U halmazból kerülnek ki, pl. {1, . . . , m} = Lefoglalunk egy U elemeivel indexelt B tömböt (m db ládát), eloször mind üres. elso fázis = végigolvassuk az A-t, és az s = A[i] elemet a B[s] lista végére fuzzük. Példa: Tegyük fel, hogy a rendezendo A[1 : 7] tömb elemei 0 és 9 közötti egészek: A: 5 3 1 5 6 9 6

A LGORITMUSELMÉLET 3.

EL OADÁS

4

Kulcsmanipulációs rendezések
Nem csak összehasonlításokat használ. Pl. ismerjük az elemek számát, belso szerkezetét.

Ládarendezés (binsort)
Tudjuk, hogy A[1 : n] elemei egy m elemu U halmazból kerülnek ki, pl. {1, . . . , m} = Lefoglalunk egy U elemeivel indexelt B tömböt (m db ládát), eloször mind üres. elso fázis = végigolvassuk az A-t, és az s = A[i] elemet a B[s] lista végére fuzzük. Példa: Tegyük fel, hogy a rendezendo A[1 : 7] tömb elemei 0 és 9 közötti egészek: A: 5 3 1 5 6 9 6

B:

1

3

55

66

9

A LGORITMUSELMÉLET 3.

EL OADÁS

5

második fázis = elejétol a végéig növo sorrendben végigmegyünk B-n, és a B[i] listák tartalmát visszaírjuk A-ba.

A LGORITMUSELMÉLET 3.

EL OADÁS

5

második fázis = elejétol a végéig növo sorrendben végigmegyünk B-n, és a B[i] listák tartalmát visszaírjuk A-ba. B: 1 A: 1 3 3 5 55 5 6 66 6 9 9

A LGORITMUSELMÉLET 3.

EL OADÁS

5

második fázis = elejétol a végéig növo sorrendben végigmegyünk B-n, és a B[i] listák tartalmát visszaírjuk A-ba. B: 1 A: 1 3 3 5 55 5 6 66 6 9 9

Lépésszám: B létrehozása O(m), elso fázis O(n), második fázis O(n + m), összesen O(n + m).

A LGORITMUSELMÉLET 3.

EL OADÁS

5

második fázis = elejétol a végéig növo sorrendben végigmegyünk B-n, és a B[i] listák tartalmát visszaírjuk A-ba. B: 1 A: 1 3 3 5 55 5 6 66 6 9 9

Lépésszám: B létrehozása O(m), elso fázis O(n), második fázis O(n + m), összesen O(n + m). Ez gyorsabb, mint az általános alsó korlát, ha pl. m cn. Java animáció: Láda rendezés

A LGORITMUSELMÉLET 3.

EL OADÁS

6

Radix rendezés

A kulcsok összetettek, több komponensbol állnak, t1 . . . tk alakú szavak, ahol a ti komponens az Li rendezett típusból való, a rendezés lexikografikus.

A LGORITMUSELMÉLET 3.

EL OADÁS

6

Radix rendezés

A kulcsok összetettek, több komponensbol állnak, t1 . . . tk alakú szavak, ahol a ti komponens az Li rendezett típusból való, a rendezés lexikografikus. Példa: Legyen (U, <) a huszadik századi dátumok összessége az idorendnek megfelelo rendezéssel.

A LGORITMUSELMÉLET 3.

EL OADÁS

6

Radix rendezés

A kulcsok összetettek, több komponensbol állnak, t1 . . . tk alakú szavak, ahol a ti komponens az Li rendezett típusból való, a rendezés lexikografikus. Példa: Legyen (U, <) a huszadik századi dátumok összessége az idorendnek megfelelo rendezéssel. L1 = {1900, 1901, . . . , 1999}, s1 = 100.

A LGORITMUSELMÉLET 3.

EL OADÁS

6

Radix rendezés

A kulcsok összetettek, több komponensbol állnak, t1 . . . tk alakú szavak, ahol a ti komponens az Li rendezett típusból való, a rendezés lexikografikus. Példa: Legyen (U, <) a huszadik századi dátumok összessége az idorendnek megfelelo rendezéssel. L1 = {1900, 1901, . . . , 1999}, s1 = 100.

L2 = {január, február,. . ., december},

s2 = 12.

A LGORITMUSELMÉLET 3.

EL OADÁS

6

Radix rendezés

A kulcsok összetettek, több komponensbol állnak, t1 . . . tk alakú szavak, ahol a ti komponens az Li rendezett típusból való, a rendezés lexikografikus. Példa: Legyen (U, <) a huszadik századi dátumok összessége az idorendnek megfelelo rendezéssel. L1 = {1900, 1901, . . . , 1999}, s1 = 100.

L2 = {január, február,. . ., december},

s2 = 12.

L3 = {1, 2, . . . , 31},

s3 = 31.

A LGORITMUSELMÉLET 3.

EL OADÁS

6

Radix rendezés

A kulcsok összetettek, több komponensbol állnak, t1 . . . tk alakú szavak, ahol a ti komponens az Li rendezett típusból való, a rendezés lexikografikus. Példa: Legyen (U, <) a huszadik századi dátumok összessége az idorendnek megfelelo rendezéssel. L1 = {1900, 1901, . . . , 1999}, s1 = 100.

L2 = {január, február,. . ., december},

s2 = 12.

L3 = {1, 2, . . . , 31},

s3 = 31.

A dátumok rendezése éppen az Li típusokból származó lexikografikus rendezés lesz.

A LGORITMUSELMÉLET 3.

EL OADÁS

7

· rendezzük a sorozatot az utolsó, a k-adik komponensek szerint ládarendezéssel · a kapottat rendezzük a k - 1-edik komponensek szerint ládarendezéssel · stb.

A LGORITMUSELMÉLET 3.

EL OADÁS

7

· rendezzük a sorozatot az utolsó, a k-adik komponensek szerint ládarendezéssel · a kapottat rendezzük a k - 1-edik komponensek szerint ládarendezéssel · stb.

Fontos, hogy a ládarendezésnél, az elemeket a ládában mindig a lista végére tettük. Így ha két azonos kulcsú elem közül az egyik megelozi a másikat, akkor a rendezés után sem változik a sorrendjük.

A LGORITMUSELMÉLET 3.

EL OADÁS

7

· rendezzük a sorozatot az utolsó, a k-adik komponensek szerint ládarendezéssel · a kapottat rendezzük a k - 1-edik komponensek szerint ládarendezéssel · stb.

Fontos, hogy a ládarendezésnél, az elemeket a ládában mindig a lista végére tettük. Így ha két azonos kulcsú elem közül az egyik megelozi a másikat, akkor a rendezés után sem változik a sorrendjük. = konzervatív rendezés

A LGORITMUSELMÉLET 3.

EL OADÁS

8

Miért muködik a radix jól?
Ha X < Y , az elso i - 1 tag megegyezik, de xi < yi, akkor az i-edik komponens rendezésekor X elore kerül.

A LGORITMUSELMÉLET 3.

EL OADÁS

8

Miért muködik a radix jól?
Ha X < Y , az elso i - 1 tag megegyezik, de xi < yi, akkor az i-edik komponens rendezésekor X elore kerül. konzervatív rendezés = késobb már nem változik a sorrendjük.

A LGORITMUSELMÉLET 3.

EL OADÁS

8

Miért muködik a radix jól?
Ha X < Y , az elso i - 1 tag megegyezik, de xi < yi, akkor az i-edik komponens rendezésekor X elore kerül. konzervatív rendezés = késobb már nem változik a sorrendjük. Példa:
1969. jan. 18. 1969. jan. 1. 1955. dec. 18. 1955. jan. 18. 1918. dec. 18.

A LGORITMUSELMÉLET 3.

EL OADÁS

8

Miért muködik a radix jól?
Ha X < Y , az elso i - 1 tag megegyezik, de xi < yi, akkor az i-edik komponens rendezésekor X elore kerül. konzervatív rendezés = késobb már nem változik a sorrendjük. Példa:
1969. jan. 18. 1969. jan. 1. 1955. dec. 18. 1955. jan. 18. 1918. dec. 18.

1.

1969. jan. 1.

1969. jan. 18.

1955. dec. 18.

1955. jan. 18.

1918. dec. 18.

A LGORITMUSELMÉLET 3.

EL OADÁS

8

Miért muködik a radix jól?
Ha X < Y , az elso i - 1 tag megegyezik, de xi < yi, akkor az i-edik komponens rendezésekor X elore kerül. konzervatív rendezés = késobb már nem változik a sorrendjük. Példa:
1969. jan. 18. 1969. jan. 1. 1955. dec. 18. 1955. jan. 18. 1918. dec. 18.

1.

1969. jan. 1.

1969. jan. 18.

1955. dec. 18.

1955. jan. 18.

1918. dec. 18.

2.

1969. jan. 1.

1969. jan. 18.

1955. jan. 18.

1955. dec. 18.

1918. dec. 18.

A LGORITMUSELMÉLET 3.

EL OADÁS

8

Miért muködik a radix jól?
Ha X < Y , az elso i - 1 tag megegyezik, de xi < yi, akkor az i-edik komponens rendezésekor X elore kerül. konzervatív rendezés = késobb már nem változik a sorrendjük. Példa:
1969. jan. 18. 1969. jan. 1. 1955. dec. 18. 1955. jan. 18. 1918. dec. 18.

1.

1969. jan. 1.

1969. jan. 18.

1955. dec. 18.

1955. jan. 18.

1918. dec. 18.

2.

1969. jan. 1.

1969. jan. 18.

1955. jan. 18.

1955. dec. 18.

1918. dec. 18.

3.

1918. dec. 18.

1955. jan. 18.

1955. dec. 18.

1969. jan. 1.

1969. jan. 18.

A LGORITMUSELMÉLET 3.

EL OADÁS

9

Lépésszám: k ládarendezés összköltsége: O(kn +

k i=1

si )

A LGORITMUSELMÉLET 3.

EL OADÁS

9

Lépésszám: k ládarendezés összköltsége: O(kn + Ez lehet gyorsabb az általános korlátnál

k i=1

si )

· k = állandó és si cn = O(kn + i=1 cn) = O(k(c + 1)n) = O(n). pl. az [1, nk - 1] intervallumból való egészek rendezése

k

A LGORITMUSELMÉLET 3.

EL OADÁS

9

Lépésszám: k ládarendezés összköltsége: O(kn + Ez lehet gyorsabb az általános korlátnál

k i=1

si )

· k = állandó és si cn = O(kn + i=1 cn) = O(k(c + 1)n) = O(n). pl. az [1, nk - 1] intervallumból való egészek rendezése · k = log n, si = 2 = O(n log n + 2 log n) = O(n log n).

k

A LGORITMUSELMÉLET 3.

EL OADÁS

9

Lépésszám: k ládarendezés összköltsége: O(kn + Ez lehet gyorsabb az általános korlátnál

k i=1

si )

· k = állandó és si cn = O(kn + i=1 cn) = O(k(c + 1)n) = O(n). pl. az [1, nk - 1] intervallumból való egészek rendezése · k = log n, si = 2 = O(n log n + 2 log n) = O(n log n).

k

Java animáció: Radix rendezés

A LGORITMUSELMÉLET 3.

EL OADÁS

10

A Batcher-féle páros-páratlan összefésülés
Párhuzamos algoritmus, az összefésüléses rendezés egy változata.

A LGORITMUSELMÉLET 3.

EL OADÁS

10

A Batcher-féle páros-páratlan összefésülés
Párhuzamos algoritmus, az összefésüléses rendezés egy változata. Az összefésülés lépése különbözo, a többi rész ugyanaz.

A LGORITMUSELMÉLET 3.

EL OADÁS

10

A Batcher-féle páros-páratlan összefésülés
Párhuzamos algoritmus, az összefésüléses rendezés egy változata. Az összefésülés lépése különbözo, a többi rész ugyanaz. A = a1 < . . . < al és B = b1 < . . . < bm összefésülése = C = c1 < . . . < cl+m

A LGORITMUSELMÉLET 3.

EL OADÁS

10

A Batcher-féle páros-páratlan összefésülés
Párhuzamos algoritmus, az összefésüléses rendezés egy változata. Az összefésülés lépése különbözo, a többi rész ugyanaz. A = a1 < . . . < al és B = b1 < . . . < bm összefésülése = C = c1 < . . . < cl+m 1. brigád: a1 < a3 < a5 < . . . és b2 < b4 < b6 < . . . = u1 < u2 < u3 < . . . 2. brigád: a2 < a4 < a6 < . . . és b1 < b3 < b5 < . . . = v1 < v2 < v3 < . . .

A LGORITMUSELMÉLET 3.

EL OADÁS

10

A Batcher-féle páros-páratlan összefésülés
Párhuzamos algoritmus, az összefésüléses rendezés egy változata. Az összefésülés lépése különbözo, a többi rész ugyanaz. A = a1 < . . . < al és B = b1 < . . . < bm összefésülése = C = c1 < . . . < cl+m 1. brigád: a1 < a3 < a5 < . . . és b2 < b4 < b6 < . . . = u1 < u2 < u3 < . . . 2. brigád: a2 < a4 < a6 < . . . és b1 < b3 < b5 < . . . = v1 < v2 < v3 < . . . Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2).

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}.

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}.

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2

2k-s 2

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2 s |{a1, . . . , as} V| = 2 és |{b1, . . . , b2k-s} V| =

2k-s 2 2k-s 2

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2k-s 2 2 2k-s s |{a1, . . . , as} V| = 2 és |{b1, . . . , b2k-s} V| = 2 Mivel s/2 + (2k - s)/2 = s/2 + (2k - s)/2 beláttuk az elso állítást.

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2k-s 2 2 2k-s s |{a1, . . . , as} V| = 2 és |{b1, . . . , b2k-s} V| = 2 Mivel s/2 + (2k - s)/2 = s/2 + (2k - s)/2 beláttuk az elso állítást. = {c2i-1, c2i} = {ui, vi}

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2k-s 2 2 2k-s s |{a1, . . . , as} V| = 2 és |{b1, . . . , b2k-s} V| = 2 Mivel s/2 + (2k - s)/2 = s/2 + (2k - s)/2 beláttuk az elso állítást. = {c2i-1, c2i} = {ui, vi} A tétel miatt U és V már egy párhuzamos lépésben összefésülheto.

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2k-s 2 2 2k-s s |{a1, . . . , as} V| = 2 és |{b1, . . . , b2k-s} V| = 2 Mivel s/2 + (2k - s)/2 = s/2 + (2k - s)/2 beláttuk az elso állítást. = {c2i-1, c2i} = {ui, vi} A tétel miatt U és V már egy párhuzamos lépésben összefésülheto. A rendezés: MSORT(A[1 : n]) := PM(MSORT(A[1 : n/2 ]), MSORT(A[ n/2 + 1 : n])), ahol PM a fenti párhuzamos összefésülés.

A LGORITMUSELMÉLET 3.

EL OADÁS

11

Tétel. c2i-1 = min{ui, vi} és c2i = max{ui, vi} (1 i (l + m)/2). Bizonyítás: Belátjuk, hogy C2k := {c1, . . . , c2k} = {u1, . . . , uk} {v1, . . . , vk}. Mivel C a növekvo A és B összefésülése = C2k = {a1, . . . , as} {b1, . . . , b2k-s}. |{a1, . . . , as} U | = s és |{b1, . . . , b2k-s} U | = 2k-s 2 2 2k-s s |{a1, . . . , as} V| = 2 és |{b1, . . . , b2k-s} V| = 2 Mivel s/2 + (2k - s)/2 = s/2 + (2k - s)/2 beláttuk az elso állítást. = {c2i-1, c2i} = {ui, vi} A tétel miatt U és V már egy párhuzamos lépésben összefésülheto. A rendezés: MSORT(A[1 : n]) := PM(MSORT(A[1 : n/2 ]), MSORT(A[ n/2 + 1 : n])), ahol PM a fenti párhuzamos összefésülés. Párhuzamos lépésszám: O(log 2n)

A LGORITMUSELMÉLET 3.

EL OADÁS

12

Keresofák
Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek.

A LGORITMUSELMÉLET 3.

EL OADÁS

12

Keresofák
Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek.

Bináris fa bejárása
teljes fa (új def.) = az alsó szint is tele van = l szintu, teljes fának 2l - 1 csúcsa van.

A LGORITMUSELMÉLET 3.

EL OADÁS

12

Keresofák
Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek.

Bináris fa bejárása
teljes fa (új def.) = az alsó szint is tele van = l szintu, teljes fának 2l - 1 csúcsa van. Fa csúcsai elem(x), bal(x), jobb(x) esetleg apa(x) és reszf a(x)

A LGORITMUSELMÉLET 3.

EL OADÁS

12

Keresofák
Tároljuk az U rendezett halmaz elemeit, hogy BESZÚR, TÖRÖL, KERES, MIN, (MAX, TÓLIG) hatékonyak legyenek.

Bináris fa bejárása
teljes fa (új def.) = az alsó szint is tele van = l szintu, teljes fának 2l - 1 csúcsa van. Fa csúcsai elem(x), bal(x), jobb(x) esetleg apa(x) és reszf a(x)


+


ha x a gyökér, y pedig a 9-es csúcs, akkor bal(jobb(x)) = y, apa(apa(y)) = x, elem(bal(x)) = , reszf a(x) = 7.


£ £ £ g g g g

-
£ £ £ g g g

£ £ g £ g £ g g £ g £

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: +



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5 +



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5 + 9 - 6



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5 + 9 - 6 POSTORDER: 85



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5 + 9 - 6 POSTORDER: 85 96 -



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5 + 9 - 6 POSTORDER: 85 96 - +



-

8

5

9

6

A LGORITMUSELMÉLET 3.

EL OADÁS

13

PREORDER, INORDER, POSTORDER
pre(x) begin látogat(x); pre(bal(x)); pre(jobb(x)) end
£ g £ g £ g £ g g £ g £ £ £ g g £ g £ g g £ g £

in(x) begin in(bal(x)); látogat(x); in(jobb(x)) end

post(x) begin post(bal(x)); post(jobb(x)); látogat(x) end

+

ha x a gyökér, y pedig a 9-es csúcs, akkor PREORDER: + 85 - 96 INORDER: 8 5 + 9 - 6 POSTORDER: 85 96 - +



-

8

5

9

6

Lépésszám: O(n)

A LGORITMUSELMÉLET 3.

EL OADÁS

14

Bináris keresofa
Definíció (Keresofa-tulajdonság). Tetszoleges x csúcsra és az x baloldali részfájában levo y csúcsra igaz, hogy elem(y) elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) elem(z).

A LGORITMUSELMÉLET 3.

EL OADÁS

14

Bináris keresofa
Definíció (Keresofa-tulajdonság). Tetszoleges x csúcsra és az x baloldali részfájában levo y csúcsra igaz, hogy elem(y) elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) elem(z).

6 2 1 4 9 8 10 13

A LGORITMUSELMÉLET 3.

EL OADÁS

14

Bináris keresofa
Definíció (Keresofa-tulajdonság). Tetszoleges x csúcsra és az x baloldali részfájában levo y csúcsra igaz, hogy elem(y) elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) elem(z).

6 2 1 4 9 8 10 13

Házi feladat: Igazoljuk, hogy egy bináris keresofa elemeit a fa inorder bejárása növekvo sorrendben látogatja meg.

A LGORITMUSELMÉLET 3.

EL OADÁS

14

Bináris keresofa
Definíció (Keresofa-tulajdonság). Tetszoleges x csúcsra és az x baloldali részfájában levo y csúcsra igaz, hogy elem(y) elem(x). Hasonlóan, ha z egy csúcs az x jobb részfájából, akkor elem(x) elem(z).

6 2 1 4 9 8 10 13

Házi feladat: Igazoljuk, hogy egy bináris keresofa elemeit a fa inorder bejárása növekvo sorrendben látogatja meg. Egy kényelmes megállapodás: a továbbiakban feltesszük, hogy nincsenek ismétlodo elemek a keresofában.

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

· Ha s = s , akkor megtaláltuk.

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

· Ha s = s , akkor megtaláltuk. · Ha s < s , akkor balra megyünk tovább.

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

· Ha s = s , akkor megtaláltuk. · Ha s < s , akkor balra megyünk tovább. · Ha s > s , akkor jobbra megyünk.

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

· Ha s = s , akkor megtaláltuk. · Ha s < s , akkor balra megyünk tovább. · Ha s > s , akkor jobbra megyünk.

Ugyanezt az utat járjuk be a KERES(5, S) kapcsán, de azt nem találjuk meg.

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

· Ha s = s , akkor megtaláltuk. · Ha s < s , akkor balra megyünk tovább. · Ha s > s , akkor jobbra megyünk.

Ugyanezt az utat járjuk be a KERES(5, S) kapcsán, de azt nem találjuk meg. Lépésszám: O(l), ahol l a fa mélysége MIN: mindig balra lépünk, amig lehet MAX: mindig jobbra lépünk, amig lehet Lépésszám: O(l)

A LGORITMUSELMÉLET 3.

EL OADÁS

15

Naiv algoritmusok
6 2 1 4
KERES(4, S) KERES(s,S): Összehasonlítjuk s-et S gyökerével s -vel.

8 9

· Ha s = s , akkor megtaláltuk. · Ha s < s , akkor balra megyünk tovább. · Ha s > s , akkor jobbra megyünk.

Ugyanezt az utat járjuk be a KERES(5, S) kapcsán, de azt nem találjuk meg. Lépésszám: O(l), ahol l a fa mélysége MIN: mindig balra lépünk, amig lehet MAX: mindig jobbra lépünk, amig lehet Lépésszám: O(l) Lépésszám: O(n)

TÓLIG(a, b, S): KERES(a, S) = INORDER a-tól b-ig

A LGORITMUSELMÉLET 3.

EL OADÁS

16

Naiv BESZÚR
BESZÚR(s, S): KERES(s, S)-sel megkeressük hova kerülne és új levelet adunk hozzá, pl. BESZÚR(3, S):

A LGORITMUSELMÉLET 3.

EL OADÁS

16

Naiv BESZÚR
BESZÚR(s, S): KERES(s, S)-sel megkeressük hova kerülne és új levelet adunk hozzá, pl. BESZÚR(3, S):

6 2 1 4 8 9
=

A LGORITMUSELMÉLET 3.

EL OADÁS

16

Naiv BESZÚR
BESZÚR(s, S): KERES(s, S)-sel megkeressük hova kerülne és új levelet adunk hozzá, pl. BESZÚR(3, S):

6 2 1 4 8 9
=

6 2 1 3 4 8 9

A LGORITMUSELMÉLET 3.

EL OADÁS

16

Naiv BESZÚR
BESZÚR(s, S): KERES(s, S)-sel megkeressük hova kerülne és új levelet adunk hozzá, pl. BESZÚR(3, S):

6 2 1 4 8 9
=

6 2 1 3 4 8 9

Lépésszám: O(l)

A LGORITMUSELMÉLET 3.

EL OADÁS

17

Naiv TÖRÖL

· TÖRÖL(s, S): Ha s levél, akkor trivi, pl. TÖRÖL(3, S):
6 2 1 3 4 8 9

=

A LGORITMUSELMÉLET 3.

EL OADÁS

17

Naiv TÖRÖL

· TÖRÖL(s, S): Ha s levél, akkor trivi, pl. TÖRÖL(3, S):
6 2 1 3 4 8 9 6

=
1

2 4

8 9

A LGORITMUSELMÉLET 3.

EL OADÁS

17

Naiv TÖRÖL

· TÖRÖL(s, S): Ha s levél, akkor trivi, pl. TÖRÖL(3, S):
6 2 1 3 4 8 9 6

=
1

2 4

8 9

· TÖRÖL(s, S): Ha s-nek egy fia van, akkor: s fiú(s), pl. TÖRÖL(4, S):
6 2 1 3 4 8 9

=

A LGORITMUSELMÉLET 3.

EL OADÁS

17

Naiv TÖRÖL

· TÖRÖL(s, S): Ha s levél, akkor trivi, pl. TÖRÖL(3, S):
6 2 1 3 4 8 9 6

=
1

2 4

8 9

· TÖRÖL(s, S): Ha s-nek egy fia van, akkor: s fiú(s), pl. TÖRÖL(4, S):
6 2 1 3 4 8 9 6

=
1

2 3

8 9

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

=

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

6

=

2 1 3 4 9

10 11

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

6

=

2 1 3 4 9

10 11

· TÖRÖL(s, S): Ha s-nek két fia van, akkor visszavezetjük az elozo esetre. s helyére tegyük y := MAX(bal(s))-t és töröljük y-t. Pl. TÖRÖL(6, S ):
6 2 1 3 4 9 8 10 11

=

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

6

=

2 1 3 4 9

10 11

· TÖRÖL(s, S): Ha s-nek két fia van, akkor visszavezetjük az elozo esetre. s helyére tegyük y := MAX(bal(s))-t és töröljük y-t. Pl. TÖRÖL(6, S ):
6 2 1 3 4 9 8 10 11 4 2 1 3 9 8 10 11

=

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

6

=

2 1 3 4 9

10 11

· TÖRÖL(s, S): Ha s-nek két fia van, akkor visszavezetjük az elozo esetre. s helyére tegyük y := MAX(bal(s))-t és töröljük y-t. Pl. TÖRÖL(6, S ):
6 2 1 3 4 9 8 10 11 4 2 1 3 9 8 10 11

=

Állítás. y := MAX(bal(s))-nak nem lehet két fia.

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

6

=

2 1 3 4 9

10 11

· TÖRÖL(s, S): Ha s-nek két fia van, akkor visszavezetjük az elozo esetre. s helyére tegyük y := MAX(bal(s))-t és töröljük y-t. Pl. TÖRÖL(6, S ):
6 2 1 3 4 9 8 10 11 4 2 1 3 9 8 10 11

=

Állítás. y := MAX(bal(s))-nak nem lehet két fia. Bizonyítás: Ha lenne két fia, akkor lenne egy y jobb fia is. De ekkor y > y

A LGORITMUSELMÉLET 3.

EL OADÁS

18

· Vagy pl. TÖRÖL(8, S ):
2 1 3 4

6 8 10 9 11

6

=

2 1 3 4 9

10 11

· TÖRÖL(s, S): Ha s-nek két fia van, akkor visszavezetjük az elozo esetre. s helyére tegyük y := MAX(bal(s))-t és töröljük y-t. Pl. TÖRÖL(6, S ):
6 2 1 3 4 9 8 10 11 4 2 1 3 9 8 10 11

=

Állítás. y := MAX(bal(s))-nak nem lehet két fia. Bizonyítás: Ha lenne két fia, akkor lenne egy y jobb fia is. De ekkor y > y Lépésszám: O(l)

A LGORITMUSELMÉLET 3.

EL OADÁS

19

Faépítés naiv beszúrásokkal

Ha pl. az 1, 2, . . . , n sorozatból építünk fát így, akkor ezt kapjuk:

A LGORITMUSELMÉLET 3.

EL OADÁS

19

Faépítés naiv beszúrásokkal
1
Ha pl. az 1, 2, . . . , n sorozatból építünk fát így, akkor ezt kapjuk: Az építés költsége: 2 + 3 + . . . + (n - 1) = O(n2)

2 3 n

A LGORITMUSELMÉLET 3.

EL OADÁS

19

Faépítés naiv beszúrásokkal
1
Ha pl. az 1, 2, . . . , n sorozatból építünk fát így, akkor ezt kapjuk: Az építés költsége: 2 + 3 + . . . + (n - 1) = O(n2)

2 3 n

Tétel. Ha egy véletlen sorozatból építünk fát naiv beszúrásokkal, akkor az építés költsége átlagosan O(n log2 n). A kapott fa mélysége átlagosan O(log2 n).

Algoritmuselmélet 4. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Február 25.

A LGORITMUSELMÉLET 4.

EL OADÁS

1

Bináris keresofa
Java animáció: Bináris keresofa

A LGORITMUSELMÉLET 4.

EL OADÁS

2

AVL-fák
G. M. Adelszon-Velszkij, E. M. Landisz, 1962 = kiegyensúlyozott bináris keresofa

A LGORITMUSELMÉLET 4.

EL OADÁS

2

AVL-fák
G. M. Adelszon-Velszkij, E. M. Landisz, 1962 = kiegyensúlyozott bináris keresofa Jelölje m(f ) az f bináris fa magasságát (szintjeinek számát), ha x az f fa egy csúcsa; ekkor m(x) jelöli az x-gyökeru részfa magasságát. Definíció (AVL-tulajdonság). Egy bináris keresofa AVL-fa, ha minden x csúcsára teljesül, hogy |m(bal(x)) - m(jobb(x))| 1.

A LGORITMUSELMÉLET 4.

EL OADÁS

2

AVL-fák
G. M. Adelszon-Velszkij, E. M. Landisz, 1962 = kiegyensúlyozott bináris keresofa Jelölje m(f ) az f bináris fa magasságát (szintjeinek számát), ha x az f fa egy csúcsa; ekkor m(x) jelöli az x-gyökeru részfa magasságát. Definíció (AVL-tulajdonság). Egy bináris keresofa AVL-fa, ha minden x csúcsára teljesül, hogy |m(bal(x)) - m(jobb(x))| 1. Mekkora a k szintu AVL-fa minimális csúcsszáma?

A LGORITMUSELMÉLET 4.

EL OADÁS

2

AVL-fák
G. M. Adelszon-Velszkij, E. M. Landisz, 1962 = kiegyensúlyozott bináris keresofa Jelölje m(f ) az f bináris fa magasságát (szintjeinek számát), ha x az f fa egy csúcsa; ekkor m(x) jelöli az x-gyökeru részfa magasságát. Definíció (AVL-tulajdonság). Egy bináris keresofa AVL-fa, ha minden x csúcsára teljesül, hogy |m(bal(x)) - m(jobb(x))| 1. Mekkora a k szintu AVL-fa minimális csúcsszáma?
~ ~




~ ~
T
T T
T
T~
~ B B B B B~ ~ e e e e e ~ e~
T
T T
T
T~ ~
~ B B B B B~

G1 = 1

G2 = 2

G3 = 4

G4 = 7

A LGORITMUSELMÉLET 4.

EL OADÁS

3

A k szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája k - 1, a másik k - 2 szintu; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

k k-1 k-2

A LGORITMUSELMÉLET 4.

EL OADÁS

3

A k szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája k - 1, a másik k - 2 szintu; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

k k-1 k-2

= rekurzió Gk = 1 + Gk-1 + Gk-2.

A LGORITMUSELMÉLET 4.

EL OADÁS

3

A k szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája k - 1, a másik k - 2 szintu; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

k k-1 k-2

= rekurzió Gk = 1 + Gk-1 + Gk-2. Tétel. Gk = Fk+2 - 1 ha k 1.

A LGORITMUSELMÉLET 4.

EL OADÁS

3

A k szintszámú minimális csúcsszámú AVL-fa gyökerének egyik részfája k - 1, a másik k - 2 szintu; az eredeti fa minimalitása miatt pedig mindkét részfa minimális csúcsszámú.

k k-1 k-2

= rekurzió Gk = 1 + Gk-1 + Gk-2. Tétel. Gk = Fk+2 - 1 ha k 1. Bizonyítás: k = 1, 2



= indukció:

Gk = 1 + Gk-1 + Gk-2 = 1 + Fk+1 - 1 + Fk - 1 = Fk+2 - 1.

A LGORITMUSELMÉLET 4.

EL OADÁS

4

Tétel. Egy n-pontú AVL-fa szintjeinek k száma nem több mint O(log n), pontosabban k 1.44 log2(n + 1).

A LGORITMUSELMÉLET 4.

EL OADÁS

4

Tétel. Egy n-pontú AVL-fa szintjeinek k száma nem több mint O(log n), pontosabban k 1.44 log2(n + 1). Bizonyítás: tétel = n Fk+2 - 1

A LGORITMUSELMÉLET 4.

EL OADÁS

4

Tétel. Egy n-pontú AVL-fa szintjeinek k száma nem több mint O(log n), pontosabban k 1.44 log2(n + 1). Bizonyítás: tétel = n Fk+2 - 1 Fibonacci-számokra vonatkozó alsó becslésbol n + 1 k

A LGORITMUSELMÉLET 4.

EL OADÁS

4

Tétel. Egy n-pontú AVL-fa szintjeinek k száma nem több mint O(log n), pontosabban k 1.44 log2(n + 1). Bizonyítás: tétel = n Fk+2 - 1 Fibonacci-számokra vonatkozó alsó becslésbol n + 1 k = log(n + 1) k = k 1.44 log2(n + 1)

A LGORITMUSELMÉLET 4.

EL OADÁS

5

Az AVL-tulajdonság megorzése
Hogyan lehet a BESZÚR és TÖRÖL eljárásokat úgy megvalósítani, hogy megtartsák az AVL-tulajdonságot?

A LGORITMUSELMÉLET 4.

EL OADÁS

5

Az AVL-tulajdonság megorzése
Hogyan lehet a BESZÚR és TÖRÖL eljárásokat úgy megvalósítani, hogy megtartsák az AVL-tulajdonságot? = forgatás

A LGORITMUSELMÉLET 4.

EL OADÁS

5

Az AVL-tulajdonság megorzése
Hogyan lehet a BESZÚR és TÖRÖL eljárásokat úgy megvalósítani, hogy megtartsák az AVL-tulajdonságot? = forgatás
x y h f g jobb forgatás f g h bal forgatás y x

A LGORITMUSELMÉLET 4.

EL OADÁS

5

Az AVL-tulajdonság megorzése
Hogyan lehet a BESZÚR és TÖRÖL eljárásokat úgy megvalósítani, hogy megtartsák az AVL-tulajdonságot? = forgatás
x y h f g jobb forgatás x y z f i dupla forgatás y z x f g h bal forgatás y x

f g h

g

h

i

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n).

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: Minden csúcsban tartsuk számon m(f )-et, az f gyökeru részfa mélységét, ez könnyen karban tartható.

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: Minden csúcsban tartsuk számon m(f )-et, az f gyökeru részfa mélységét, ez könnyen karban tartható. KERES(s, S) segítségével megkeressük s helyét.

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: Minden csúcsban tartsuk számon m(f )-et, az f gyökeru részfa mélységét, ez könnyen karban tartható. KERES(s, S) segítségével megkeressük s helyét. A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság = x
keresési út nagyítva x y l h h' f g l-1 h x

s s

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: Minden csúcsban tartsuk számon m(f )-et, az f gyökeru részfa mélységét, ez könnyen karban tartható. KERES(s, S) segítségével megkeressük s helyét. A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság = x
keresési út nagyítva x y l h h' f g l-1 h x

x definíciója = m(h ) = m(h)

s s

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: Minden csúcsban tartsuk számon m(f )-et, az f gyökeru részfa mélységét, ez könnyen karban tartható. KERES(s, S) segítségével megkeressük s helyét. A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság = x
keresési út nagyítva x y l h h' f g l-1 h x

x definíciója = m(h ) = m(h) feltehetjük, hogy m(h ) = l, m(h) = l - 1

s s

A LGORITMUSELMÉLET 4.

EL OADÁS

6

Tétel. Legyen S egy n csúcsból álló AVL-fa. BESZÚR(s, S) után legfeljebb egy (esetleg dupla) forgatással helyreállítható az AVL-tulajdonság. A beszúrás költsége ezzel együtt is O(log n). Bizonyítás: Minden csúcsban tartsuk számon m(f )-et, az f gyökeru részfa mélységét, ez könnyen karban tartható. KERES(s, S) segítségével megkeressük s helyét. A keresési utat végigjárva megkeressük a legalsó olyan csúcsot, ahol sérül az AVL-tulajdonság = x
keresési út nagyítva x y l h h' f g l-1 h x

x definíciója = m(h ) = m(h) feltehetjük, hogy m(h ) = l, m(h) = l - 1 Két eset van: a) s az f részfába kerül b) s a g részfába kerül

s s

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

s

g

h

s

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

a) eset: m(f ) < m(g) = x-ben nem sérül az AVL-tul.

s

g

h

s

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

a) eset: m(f ) < m(g) = x-ben nem sérül az AVL-tul. m(f ) > m(g) = y-ben is sérül az AVL-tul.
h

s

g

s

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

s

g

h

s

a) eset: m(f ) < m(g) = x-ben nem sérül az AVL-tul. m(f ) > m(g) = y-ben is sérül az AVL-tul. = m(f ) = m(g) = m(h) = = m(y) - 1 = l - 1

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

s

g

h

s

a) eset: m(f ) < m(g) = x-ben nem sérül az AVL-tul. m(f ) > m(g) = y-ben is sérül az AVL-tul. = m(f ) = m(g) = m(h) = = m(y) - 1 = l - 1 = jobb forgatás helyre állítja az AVL-tul.

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

s

g

h

s

a) eset: m(f ) < m(g) = x-ben nem sérül az AVL-tul. m(f ) > m(g) = y-ben is sérül az AVL-tul. = m(f ) = m(g) = m(h) = = m(y) - 1 = l - 1 = jobb forgatás helyre állítja az AVL-tul.

A forgatás után y mindkét részfájának a magassága l lesz, x új részfái g és h, mindketto szintszáma l - 1.

A LGORITMUSELMÉLET 4.

EL OADÁS

7

x y h f g f

y x

s

g

h

s

a) eset: m(f ) < m(g) = x-ben nem sérül az AVL-tul. m(f ) > m(g) = y-ben is sérül az AVL-tul. = m(f ) = m(g) = m(h) = = m(y) - 1 = l - 1 = jobb forgatás helyre állítja az AVL-tul.

A forgatás után y mindkét részfájának a magassága l lesz, x új részfái g és h, mindketto szintszáma l - 1. y feletti csúcsok magassága nem változik, így az AVL-feltétel feljebb is megmarad a kereso út mentén.

A LGORITMUSELMÉLET 4.

EL OADÁS

8

b1) eset: s a g részfába került és s az y csúcs fia (l = 1)

A LGORITMUSELMÉLET 4.

EL OADÁS

8

b1) eset: s a g részfába került és s az y csúcs fia (l = 1) = dupla forgatás

x y y

s
x

s

A LGORITMUSELMÉLET 4.

EL OADÁS

9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)

A LGORITMUSELMÉLET 4.

EL OADÁS

9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)
x y z h f g' g'' h y z x

f

g'

g''

s

s

A LGORITMUSELMÉLET 4.

EL OADÁS

9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)
x y z h f g' g'' h y z x

f

g'

g''

s

s
= m(f ) = l - 1 (mert y-ban az AVL-tul. teljesül), és m(g ) = m(g ) = l - 2 (mert z-ben sincs baj az AVL-tulajdonsággal)

A LGORITMUSELMÉLET 4.

EL OADÁS

9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)
x y z h f g' g'' h y z x

f

g'

g''

s

s
= m(f ) = l - 1 (mert y-ban az AVL-tul. teljesül), és m(g ) = m(g ) = l - 2 (mert z-ben sincs baj az AVL-tulajdonsággal) = dupla forgatás elég

A LGORITMUSELMÉLET 4.

EL OADÁS

9

b2) eset: s a g részfába került és s nem az y csúcs fia (l > 1)
x y z h f g' g'' h y z x

f

g'

g''

s

s
= m(f ) = l - 1 (mert y-ban az AVL-tul. teljesül), és m(g ) = m(g ) = l - 2 (mert z-ben sincs baj az AVL-tulajdonsággal) = dupla forgatás elég Költség: 1.44 log2(n + 1) = O(log n)

A LGORITMUSELMÉLET 4.

EL OADÁS

10

Törlés AVL-fából
Tétel. Az n pontú AVL-fából való naiv törlés után legfeljebb 1.44 log2 n (szimpla vagy dupla) forgatás helyreállítja az AVL-tulajdonságot. Nem bizonyítjuk, a módszer hasonló, de nem mindig elég egy forgatás. Pl.:

A LGORITMUSELMÉLET 4.

EL OADÁS

10

Törlés AVL-fából
Tétel. Az n pontú AVL-fából való naiv törlés után legfeljebb 1.44 log2 n (szimpla vagy dupla) forgatás helyreállítja az AVL-tulajdonságot. Nem bizonyítjuk, a módszer hasonló, de nem mindig elég egy forgatás. Pl.:

A LGORITMUSELMÉLET 4.

EL OADÁS

10

Törlés AVL-fából
Tétel. Az n pontú AVL-fából való naiv törlés után legfeljebb 1.44 log2 n (szimpla vagy dupla) forgatás helyreállítja az AVL-tulajdonságot. Nem bizonyítjuk, a módszer hasonló, de nem mindig elég egy forgatás. Pl.:

Java animáció: AVL-fa

A LGORITMUSELMÉLET 4.

EL OADÁS

11

További kiegyensúlyozott fák
Az AVL-tulajdonság csak egy a lehetséges kiegyensúlyozottsági feltételek közül.

A LGORITMUSELMÉLET 4.

EL OADÁS

11

További kiegyensúlyozott fák
Az AVL-tulajdonság csak egy a lehetséges kiegyensúlyozottsági feltételek közül. Általánosítása: Definíció. HB[k]-fák: (C. C. Foster, 1973) Legyen k 1 egy egész szám. Egy bináris keresofa HB[k]-fa, ha minden x csúcsára teljesül, hogy |m(bal(x)) - m(jobb(x))| k.

A LGORITMUSELMÉLET 4.

EL OADÁS

11

További kiegyensúlyozott fák
Az AVL-tulajdonság csak egy a lehetséges kiegyensúlyozottsági feltételek közül. Általánosítása: Definíció. HB[k]-fák: (C. C. Foster, 1973) Legyen k 1 egy egész szám. Egy bináris keresofa HB[k]-fa, ha minden x csúcsára teljesül, hogy |m(bal(x)) - m(jobb(x))| k.

= HB[1]-fák AVL-fák

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ).

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

x)) Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < ss(bal((x)) < 2 (jobb l korlátokat már csak az l szintbol álló 2 - 1 pontú bináris fák a teljesítik.

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

x)) Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < ss(bal((x)) < 2 (jobb l korlátokat már csak az l szintbol álló 2 - 1 pontú bináris fák a teljesítik. Tétel. Egy n csúcsú SK-fa mélysége 2 log2 n + 1.

Bizonyítás:
x y z

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

x)) Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < ss(bal((x)) < 2 (jobb l korlátokat már csak az l szintbol álló 2 - 1 pontú bináris fák a teljesítik. Tétel. Egy n csúcsú SK-fa mélysége 2 log2 n + 1.

Bizonyítás:
x y z

s(x) > s(y)+s(z) > s(y)+( 2-1)s(y) = 2s(y)

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

x)) Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < ss(bal((x)) < 2 (jobb l korlátokat már csak az l szintbol álló 2 - 1 pontú bináris fák a teljesítik. Tétel. Egy n csúcsú SK-fa mélysége 2 log2 n + 1.

Bizonyítás:
x y z

s(x) > s(y)+s(z) > s(y)+( 2-1)s(y) = 2s(y) Legyenek x1, x2, . . . , xk egy k-hosszúságú gyökértol levélig meno út csúcsai.

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

x)) Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < ss(bal((x)) < 2 (jobb l korlátokat már csak az l szintbol álló 2 - 1 pontú bináris fák a teljesítik. Tétel. Egy n csúcsú SK-fa mélysége 2 log2 n + 1.

Bizonyítás:
x y z

s(x) > s(y)+s(z) > s(y)+( 2-1)s(y) = 2s(y) Legyenek x1, x2, . . . , xk egy k-hosszúságú gyökértol levélig meno út csúcsai. 2 n = s(x1) > 2s(x2) 2) k-1 > ( k-1)/s(x3) > · · · > k-1 2 ( 2) s(xk) = ( 2) = 2( .

A LGORITMUSELMÉLET 4.

EL OADÁS

12

Súlyra kiegyensúlyozott fák
A részfák súlya legyen a csúcsszámuk: s(f ). Definíció. Egy bináris keresofát súlyra kiegyensúlyozott fának (röviden SK-fának) nevezünk, ha minden x belso csúcsára teljesül, hogy 2-1< s(bal(x)) s(jobb(x)) < 2 + 1.

x)) Feladat: Igazoljuk, hogy a leheletnyivel szigorúbb 1/2 < ss(bal((x)) < 2 (jobb l korlátokat már csak az l szintbol álló 2 - 1 pontú bináris fák a teljesítik. Tétel. Egy n csúcsú SK-fa mélysége 2 log2 n + 1.

Bizonyítás:
x y z

s(x) > s(y)+s(z) > s(y)+( 2-1)s(y) = 2s(y) Legyenek x1, x2, . . . , xk egy k-hosszúságú gyökértol levélig meno út csúcsai. 2 n = s(x1) > 2s(x2) 2) k-1 > ( k-1)/s(x3) > · · · > k-1 2 ( 2) s(xk) = ( 2) = 2( . =

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983.

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983. Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi.

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983. Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi. = Hosszú átlagos muveletsor alatt az egy lépésre eso költség optimális lesz.

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983. Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi. = Hosszú átlagos muveletsor alatt az egy lépésre eso költség optimális lesz. Fo öltlet: KIFORDÍT(x, f ) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x f ; különben f gyökere x valamelyik szomszédja lesz: vagy max{y f ; y < x} vagy min{y f ; y > x}.

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983. Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi. = Hosszú átlagos muveletsor alatt az egy lépésre eso költség optimális lesz. Fo öltlet: KIFORDÍT(x, f ) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x f ; különben f gyökere x valamelyik szomszédja lesz: vagy max{y f ; y < x} vagy min{y f ; y > x}.

KIFORDÍT(x, f ) implementációja: KERES(x, f ) = ha x f , akkor majd x-et visszük fel,

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983. Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi. = Hosszú átlagos muveletsor alatt az egy lépésre eso költség optimális lesz. Fo öltlet: KIFORDÍT(x, f ) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x f ; különben f gyökere x valamelyik szomszédja lesz: vagy max{y f ; y < x} vagy min{y f ; y > x}.

KIFORDÍT(x, f ) implementációja: KERES(x, f ) = ha x f , akkor majd x-et visszük fel, ha x f , akkor a keresés x egyik szomszédjánál (max{y f ; y < x} vagy min{y f ; y > x}) ér véget, vegyük ezt.

A LGORITMUSELMÉLET 4.

EL OADÁS

13

S-fák
Splay-tree: D. D. Sleator és R. E. Tarjan, 1983. Olyan bináris fa, ami tanul: pl. gyakran keresett elemet feljebb teszi. = Hosszú átlagos muveletsor alatt az egy lépésre eso költség optimális lesz. Fo öltlet: KIFORDÍT(x, f ) átszervezi az f S-fát úgy, hogy x lesz az új gyökér, ha x f ; különben f gyökere x valamelyik szomszédja lesz: vagy max{y f ; y < x} vagy min{y f ; y > x}.

KIFORDÍT(x, f ) implementációja: KERES(x, f ) = ha x f , akkor majd x-et visszük fel, ha x f , akkor a keresés x egyik szomszédjánál (max{y f ; y < x} vagy min{y f ; y > x}) ér véget, vegyük ezt. = feltehetjük, hogy x f .

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér.

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk.

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk. (* A továbbiakban jelölje y az x apját. *) (1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk. (* A továbbiakban jelölje y az x apját. *) (1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben

(2) ha x és y is baloldali (jobboldali) gyerek,

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk. (* A továbbiakban jelölje y az x apját. *) (1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben z x y y y x z z (2) ha x és y is baloldali (jobboldali) gyerek, x

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk. (* A továbbiakban jelölje y az x apját. *) (1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben z x y y y x z z (2) ha x és y is baloldali (jobboldali) gyerek, x akkor FORGAT(y), majd FORGAT(x), különben (3) ha x és y különbözo oldali gyerekek,

akkor FORGAT(x), majd ismét FORGAT(x).

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk. (* A továbbiakban jelölje y az x apját. *) (1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben z x y y y x z z (2) ha x és y is baloldali (jobboldali) gyerek, x akkor FORGAT(y), majd FORGAT(x), különben (3) ha x és y különbözo oldali gyerekek, z z x y x y x y akkor FORGAT(x), majd ismét FORGAT(x).

z

A LGORITMUSELMÉLET 4.

EL OADÁS

14

A következo eljárás x-et maximum két szinttel viszi feljebb, addig alkalmazzuk, amig x felér. (0) Ha x gyökér, akkor készen vagyunk. (* A továbbiakban jelölje y az x apját. *) (1) Ha x-nek nincs nagyapja, akkor FORGAT(x), különben z x y y y x z z (2) ha x és y is baloldali (jobboldali) gyerek, x akkor FORGAT(y), majd FORGAT(x), különben (3) ha x és y különbözo oldali gyerekek, z z x y x y x y akkor FORGAT(x), majd ismét FORGAT(x).

z

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak.

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra.

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra. A VÁG(x, f ) muvelet szétvágja f -et az f és f S-fákra úgy, hogy y x z teljesül minden y f és z f csúcsra.

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra. A VÁG(x, f ) muvelet szétvágja f -et az f és f S-fákra úgy, hogy y x z teljesül minden y f és z f csúcsra. Tétel. Az ismertetett muveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató beállítás, stb.) segítségével. Bizonyítás: Csak két muvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbrol, többi trivi.

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra. A VÁG(x, f ) muvelet szétvágja f -et az f és f S-fákra úgy, hogy y x z teljesül minden y f és z f csúcsra. Tétel. Az ismertetett muveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató beállítás, stb.) segítségével. Bizonyítás: Csak két muvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbrol, többi trivi. RAGASZT(f, f ) = eloször KIFORDÍT(+, f ) =: f

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra. A VÁG(x, f ) muvelet szétvágja f -et az f és f S-fákra úgy, hogy y x z teljesül minden y f és z f csúcsra. Tétel. Az ismertetett muveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató beállítás, stb.) segítségével. Bizonyítás: Csak két muvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbrol, többi trivi. RAGASZT(f, f ) = eloször KIFORDÍT(+, f ) =: f = f gyökere x az új fa legnagyobb kulcsa

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra. A VÁG(x, f ) muvelet szétvágja f -et az f és f S-fákra úgy, hogy y x z teljesül minden y f és z f csúcsra. Tétel. Az ismertetett muveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató beállítás, stb.) segítségével. Bizonyítás: Csak két muvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbrol, többi trivi. RAGASZT(f, f ) = eloször KIFORDÍT(+, f ) =: f = f gyökere x az új fa legnagyobb kulcsa = csatoljuk f -t x jobb fiának

A LGORITMUSELMÉLET 4.

EL OADÁS

15

Muveletek az S-fákban
A keresofákra jellemzo KERES(x, f ), BESZÚR(x, f ) és TÖRÖL(x, f ) muveletek a szokásosak. A RAGASZT(f, f ) muvelet az f és f S-fákból egyetlen S-fát szervez, feltéve, hogy x < y teljesül minden x f és y f kulcsra. A VÁG(x, f ) muvelet szétvágja f -et az f és f S-fákra úgy, hogy y x z teljesül minden y f és z f csúcsra. Tétel. Az ismertetett muveletek mindegyike megvalósítható konstans számú KIFORDÍT és konstans számú elemi operáció (összehasonlítás, mutató beállítás, stb.) segítségével. Bizonyítás: Csak két muvelet, a RAGASZT és a TÖRÖL esetét nézzük meg közelebbrol, többi trivi. RAGASZT(f, f ) = eloször KIFORDÍT(+, f ) =: f = f gyökere x az új fa legnagyobb kulcsa = csatoljuk f -t x jobb fiának

A LGORITMUSELMÉLET 4.

EL OADÁS

16

TÖRÖL(x, f ) = KIFORDÍT(x, f )

A LGORITMUSELMÉLET 4.

EL OADÁS

16

TÖRÖL(x, f ) = KIFORDÍT(x, f )ha a kapott fa gyökere nem x, akkor x f =

A LGORITMUSELMÉLET 4.

EL OADÁS

16

TÖRÖL(x, f ) = KIFORDÍT(x, f )ha a kapott fa gyökere nem x, akkor x f = Ha x az új fa gyökere, töröljük és a kapott két f1 és f2 részfára RAGASZT(f1, f2)

A LGORITMUSELMÉLET 4.

EL OADÁS

16

TÖRÖL(x, f ) = KIFORDÍT(x, f )ha a kapott fa gyökere nem x, akkor x f = Ha x az új fa gyökere, töröljük és a kapott két f1 és f2 részfára RAGASZT(f1, f2) Tétel. Egy üres S-fából induló olyan m muveletbol álló sorozat költsége, melyben n beszúrás van, O(m log n).

A LGORITMUSELMÉLET 4.

EL OADÁS

16

TÖRÖL(x, f ) = KIFORDÍT(x, f )ha a kapott fa gyökere nem x, akkor x f = Ha x az új fa gyökere, töröljük és a kapott két f1 és f2 részfára RAGASZT(f1, f2) Tétel. Egy üres S-fából induló olyan m muveletbol álló sorozat költsége, melyben n beszúrás van, O(m log n). Java animáció: S-fa

Algoritmuselmélet 5. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Február 26.

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet.

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: · A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvo sorrendben. Egy levél egy rekordot tartalmaz.

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: · A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvo sorrendben. Egy levél egy rekordot tartalmaz. · Minden belso (azaz nem levél) csúcsból 2 vagy 3 él megy lefelé; ennek megfeleloen a belso csúcsok egy illetve két s U kulcsot tartalmaznak. A belso csúcsok szerkezete tehát kétféle lehet. Az egyik típus így ábrázolható:

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: · A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvo sorrendben. Egy levél egy rekordot tartalmaz. · Minden belso (azaz nem levél) csúcsból 2 vagy 3 él megy lefelé; ennek megfeleloen a belso csúcsok egy illetve két s U kulcsot tartalmaznak. A belso csúcsok szerkezete tehát kétféle lehet. Az egyik típus így ábrázolható: m1 s1 m2 s2 m3

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: · A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvo sorrendben. Egy levél egy rekordot tartalmaz. · Minden belso (azaz nem levél) csúcsból 2 vagy 3 él megy lefelé; ennek megfeleloen a belso csúcsok egy illetve két s U kulcsot tartalmaznak. A belso csúcsok szerkezete tehát kétféle lehet. Az egyik típus így ábrázolható: m1 s1 m2 s2 m3 Itt m1, m2, m3 mutatók a csúcs részfáira, s1, s2 pedig U -beli kulcsok, melyekre s1 < s2. Az m1 által mutatott részfa minden kulcsa kisebb, mint s1, az m2 részfájában s1 a legkisebb kulcs, és minden kulcs kisebb, mint s2. Végül m3 részfájában s2 a legkisebb kulcs.

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: · A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvo sorrendben. Egy levél egy rekordot tartalmaz. · Minden belso (azaz nem levél) csúcsból 2 vagy 3 él megy lefelé; ennek megfeleloen a belso csúcsok egy illetve két s U kulcsot tartalmaznak. A belso csúcsok szerkezete tehát kétféle lehet. Az egyik típus így ábrázolható: m1 s1 m2 s2 m3 Itt m1, m2, m3 mutatók a csúcs részfáira, s1, s2 pedig U -beli kulcsok, melyekre s1 < s2. Az m1 által mutatott részfa minden kulcsa kisebb, mint s1, az m2 részfájában s1 a legkisebb kulcs, és minden kulcs kisebb, mint s2. Végül m3 részfájában s2 a legkisebb kulcs.Elofordulhat, hogy egy csúcsból az utolsó két mezo hiányzik: m1 s1 m2

A LGORITMUSELMÉLET 5.

EL OADÁS

1

2-3-fák
Hatékony keresofa-konstrukció Ez is fa, de a binárisnál bonyolultabb: egy nem-levél csúcsnak 2 vagy 3 fia lehet. A 2-3-fa egy (lefelé) irányított gyökeres fa, melyre: · A rekordok a fa leveleiben helyezkednek el, a kulcs értéke szerint balról jobbra növekvo sorrendben. Egy levél egy rekordot tartalmaz. · Minden belso (azaz nem levél) csúcsból 2 vagy 3 él megy lefelé; ennek megfeleloen a belso csúcsok egy illetve két s U kulcsot tartalmaznak. A belso csúcsok szerkezete tehát kétféle lehet. Az egyik típus így ábrázolható: m1 s1 m2 s2 m3 Itt m1, m2, m3 mutatók a csúcs részfáira, s1, s2 pedig U -beli kulcsok, melyekre s1 < s2. Az m1 által mutatott részfa minden kulcsa kisebb, mint s1, az m2 részfájában s1 a legkisebb kulcs, és minden kulcs kisebb, mint s2. Végül m3 részfájában s2 a legkisebb kulcs.Elofordulhat, hogy egy csúcsból az utolsó két mezo hiányzik: m1 s1 m2 · A fa levelei a gyökértol egyforma távolságra vannak.

A LGORITMUSELMÉLET 5.

EL OADÁS

2

Példa 2-3-fára
16 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 22 25 25

A LGORITMUSELMÉLET 5.

EL OADÁS

2

Példa 2-3-fára
16 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 22 25 25

Tétel. Ha a fának m szintje van, akkor a levelek száma legalább 2m-1. Megfordítva, ha |S| = n (itt S U a fában tárolt kulcsok halmaza; |S| megegyezik a tárolt rekordok számával), akkor m log2 n + 1.

A LGORITMUSELMÉLET 5.

EL OADÁS

2

Példa 2-3-fára
16 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 22 25 25

Tétel. Ha a fának m szintje van, akkor a levelek száma legalább 2m-1. Megfordítva, ha |S| = n (itt S U a fában tárolt kulcsok halmaza; |S| megegyezik a tárolt rekordok számával), akkor m log2 n + 1. Bizonyítás: Minde belso csúcsnak legalább 2 fia van =

A LGORITMUSELMÉLET 5.

EL OADÁS

2

Példa 2-3-fára
16 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 22 25 25

Tétel. Ha a fának m szintje van, akkor a levelek száma legalább 2m-1. Megfordítva, ha |S| = n (itt S U a fában tárolt kulcsok halmaza; |S| megegyezik a tárolt rekordok számával), akkor m log2 n + 1. Bizonyítás: Minde belso csúcsnak legalább 2 fia van = az i-edik szinten legalább 2i-1 csúcs van (1 i m).

A LGORITMUSELMÉLET 5.

EL OADÁS

2

Példa 2-3-fára
16 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 22 25 25

Tétel. Ha a fának m szintje van, akkor a levelek száma legalább 2m-1. Megfordítva, ha |S| = n (itt S U a fában tárolt kulcsok halmaza; |S| megegyezik a tárolt rekordok számával), akkor m log2 n + 1. Bizonyítás: Minde belso csúcsnak legalább 2 fia van = az i-edik szinten legalább 2i-1 csúcs van (1 i m). = m-1 2 n, = m - 1 log2 n.

A LGORITMUSELMÉLET 5.

EL OADÁS

3

Keresés 2-3-fában
13 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 16 22 25 25

A LGORITMUSELMÉLET 5.

EL OADÁS

3

Keresés 2-3-fában
13 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 16 22 25 25

Hasonló, mint a bináris kereso fában.

A LGORITMUSELMÉLET 5.

EL OADÁS

3

Keresés 2-3-fában
13 6 3 1 3 6 10 10 11 11 13 13 14 14 16 20 20 22 16 22 25 25

Hasonló, mint a bináris kereso fában. Lépésszám: O(m), ahol log3(n) + 1 m log2(n) + 1

A LGORITMUSELMÉLET 5.

EL OADÁS

4

BESZÚR 2-3-fába
12 6 11 13 11 13 14 14 16

A LGORITMUSELMÉLET 5.

EL OADÁS

4

BESZÚR 2-3-fába
12 6 11 13 11 13 16 6 11 12 11 12 13 14 14 14 14 16

A LGORITMUSELMÉLET 5.

EL OADÁS

4

BESZÚR 2-3-fába
12 6 11 13 11 13 16 6 11 12 11 12 13 14 14 11 6 12 12 13 14 14 11 13 14 14 16 16

A LGORITMUSELMÉLET 5.

EL OADÁS

4

BESZÚR 2-3-fába
12 6 11 13 11 13 16 6 11 12 11 12 13 14 14 11 6 12 12 13 14 14 11 13 14 14 16 16

Ha a gyökeret is ,,vágni" kell = új gyökér, no a fa magassága.

A LGORITMUSELMÉLET 5.

EL OADÁS

4

BESZÚR 2-3-fába
12 6 11 13 11 13 16 6 11 12 11 12 13 14 14 11 6 12 12 13 14 14 11 13 14 14 16 16

Ha a gyökeret is ,,vágni" kell = új gyökér, no a fa magassága. Lépésszám: O(m), (minden szinten legfeljebb 1 ,,vágás")

A LGORITMUSELMÉLET 5.

EL OADÁS

5

TÖRÖL 2-3-fából
Legyen x a legalsó belso csúcs a kereso út mentén. · Ha x-nek három fia van =



A LGORITMUSELMÉLET 5.

EL OADÁS

5

TÖRÖL 2-3-fából
Legyen x a legalsó belso csúcs a kereso út mentén. · Ha x-nek három fia van = · ha x-nek csak két fia van



A LGORITMUSELMÉLET 5.

EL OADÁS

5

TÖRÖL 2-3-fából
Legyen x a legalsó belso csúcs a kereso út mentén. · Ha x-nek három fia van = · ha x-nek csak két fia van ha x (valamelyik) szomszédos testvérének 3 fia van = egyet átteszünk x alá



A LGORITMUSELMÉLET 5.

EL OADÁS

5

TÖRÖL 2-3-fából
Legyen x a legalsó belso csúcs a kereso út mentén. · Ha x-nek három fia van = · ha x-nek csak két fia van ha x (valamelyik) szomszédos testvérének 3 fia van = egyet átteszünk x alá ha x egyik szomszédos testvérének sincs három fia = ,,összevonunk" két kettes csúcsot



A LGORITMUSELMÉLET 5.

EL OADÁS

5

TÖRÖL 2-3-fából
Legyen x a legalsó belso csúcs a kereso út mentén. · Ha x-nek három fia van = · ha x-nek csak két fia van ha x (valamelyik) szomszédos testvérének 3 fia van = egyet átteszünk x alá ha x egyik szomszédos testvérének sincs három fia = ,,összevonunk" két kettes csúcsot Ez is ,,felgyuruzhet" = Lépésszám: O(m)



A LGORITMUSELMÉLET 5.

EL OADÁS

6

B-fák
R. Bayer, E. McCreight, 1972

A LGORITMUSELMÉLET 5.

EL OADÁS

6

B-fák
R. Bayer, E. McCreight, 1972 A 2-3-fa általánosítása.

A LGORITMUSELMÉLET 5.

EL OADÁS

6

B-fák
R. Bayer, E. McCreight, 1972 A 2-3-fa általánosítása. Nagy méretu adatbázisok, külso táron levo adatok feldolgozására használják. Több szabvány tartalmazza valamilyen változatát.

A LGORITMUSELMÉLET 5.

EL OADÁS

6

B-fák
R. Bayer, E. McCreight, 1972 A 2-3-fa általánosítása. Nagy méretu adatbázisok, külso táron levo adatok feldolgozására használják. Több szabvány tartalmazza valamilyen változatát. Probléma: Nem az összhasonlítás idoigényes, hanem az adatok kiolvasása, de sokszor egy adat kiolvasásához amúgy is kiolvasunk több más adatot, egy lapot.

A LGORITMUSELMÉLET 5.

EL OADÁS

6

B-fák
R. Bayer, E. McCreight, 1972 A 2-3-fa általánosítása. Nagy méretu adatbázisok, külso táron levo adatok feldolgozására használják. Több szabvány tartalmazza valamilyen változatát. Probléma: Nem az összhasonlítás idoigényes, hanem az adatok kiolvasása, de sokszor egy adat kiolvasásához amúgy is kiolvasunk több más adatot, egy lapot. = A fa csúcsai legyenek lapok, a költség a lapelérések száma.

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak:

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes.

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes. b) Minden más belso csúcsnak legalább
m 2

fia van.

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes. b) Minden más belso csúcsnak legalább
m 2

fia van.

c) A levelek a gyökértol egyforma messze vannak.

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes. b) Minden más belso csúcsnak legalább
m 2

fia van.

c) A levelek a gyökértol egyforma messze vannak. d) Egy csúcsnak legfeljebb m fia lehet.

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes. b) Minden más belso csúcsnak legalább
m 2

fia van.

c) A levelek a gyökértol egyforma messze vannak. d) Egy csúcsnak legfeljebb m fia lehet. d) A tárolni kívánt rekordok itt is a fa leveleiben vannak; egy levélben a lapmérettol és a rekordhossztól függoen több rekord is lehet, növekvo, láncolt listában.

A LGORITMUSELMÉLET 5.

EL OADÁS

7

B-fa definíciója
Egy m-edrendu B-fa, röviden Bm-fa egy gyökeres, (lefelé) irányított fa, melyre érvényesek az alábbiaknak: a) A gyökér foka legalább 2, kivéve esetleg, ha a fa legfeljebb kétszintes. b) Minden más belso csúcsnak legalább
m 2

fia van.

c) A levelek a gyökértol egyforma messze vannak. d) Egy csúcsnak legfeljebb m fia lehet. d) A tárolni kívánt rekordok itt is a fa leveleiben vannak; egy levélben a lapmérettol és a rekordhossztól függoen több rekord is lehet, növekvo, láncolt listában. A belso csúcsok hasonlítanak a 2-3-fák belso csúcsaira. Egy belso csúcs így néz ki: m0 s1 m1 s2 m2 . . . si mi

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között.

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2 m k-2 = n 2 2 ,

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2 m k-2 = n 2 2 , = log m n + 2 k 2 2

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2 m k-2 = n 2 2 , = log m n + 2 k 2 2 k log2 n - 1 log2 m 2 + 2.

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2 m k-2 = n 2 2 , = log m n + 2 k 2 2 k log2 n - 1 log2 m 2 + 2.

Minden muvelet lépésszáma: m nagy.

log2 n-1 log2 m 2

= O(log n), de a konstans kicsi, ha

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2 m k-2 = n 2 2 , = log m n + 2 k 2 2 k log2 n - 1 log2 m 2 + 2.

Minden muvelet lépésszáma: m nagy.

log2 n-1 log2 m 2

= O(log n), de a konstans kicsi, ha

Például: Például, ha m = 32, n = 220 (itt n az alsó szint lapjainak száma), akkor k 19 + 2 < 7. Egy rekord keresése tehát legfeljebb 6 lap elérését 4 igényli.

A LGORITMUSELMÉLET 5.

EL OADÁS

8

A B-fa szintszáma
Tegyük fel, hogy egy B-fának n levele és k szintje van, és keressünk összefüggést e két paraméter között. A kicsi fáktól eltekintve a gyökérnek legalább két fia van, a többi belso csúcsnak pedig legalább m . 2 m k-2 = n 2 2 , = log m n + 2 k 2 2 k log2 n - 1 log2 m 2 + 2.

Minden muvelet lépésszáma: m nagy.

log2 n-1 log2 m 2

= O(log n), de a konstans kicsi, ha

Például: Például, ha m = 32, n = 220 (itt n az alsó szint lapjainak száma), akkor k 19 + 2 < 7. Egy rekord keresése tehát legfeljebb 6 lap elérését 4 igényli. Java animáció: B-fák

Piros-fekete f´k a
(2007. ´prilis 15.) a A piros-fekete fa egy bin´ris fa, amiben a 1. minden nem lev´l(=bels) cs´ csnak k´t fia van e o u e 2. elemeket a bels cs´ csokban t´rolunk csak (lev´lben nem) o u a e 3. teljes¨ l a keresfa tulajdons´g u o a 4. a fa minden cs´ csa piros vagy fekete u 5. a gy¨k´r fekete o e 6. a levelek feket´k e 7. piros cs´ cs mindk´t gyereke fekete u e 8. minden v cs´ csra igaz, hogy az ¨sszes v-bl lev´lbe vezet uton ugyanannyi fekete cs´ cs van. u o o e o´ u ´ 1. Megjegyz´s. Az 1-2 tulajdons´gok technikai felt´telek. Ugy is szok´s fogalmazni, hogy vesz¨ nk egy e a e a u szok´sos F bin´ris keresf´t ´s mindenhol, ahol F -ben hi´nyzik egy ´g (mert vagy csak egy fia van a cs´ csnak, a a oa e a a u vagy mert lev´l), ott kieg´sz´ uk a f´t ´s keletkezik egy uj lev´l amiben nem lesz kulcs (F levelein´l mindk´t e e itj¨ a e ´ e e e hi´nyz´ ´gat beh´ zzuk, azaz 2 uj lev´l keletkezik az egy r´gi helyett). Teh´t a f´nak csak uj t´ u levelei a oa u ´ e e a a ´ ipus´ lesznek, minden eredeti pont bels. Igaz´b´l el´g egyetlen uj cs´ csot hozz´venni F -hez, ´s abba vezetni o a o e ´ u a e minden sehova nem mutat´ mutat´t (b´r ez m´r akkor nem fa, de az elj´r´sainkat ez nem fogja zavarni). o o a a a a Sokszor csak az eredeti F f´t rajzolj´k piros-fekete fak´nt. a a e Jel¨l´sek: oe Fv jel¨li a v gy¨ker r´szf´t. o o u e a m(v) = a v cs´ cs magass´ga, azaz hogy h´ny ´lbl ´ll a v-bl lev´lbe vezet leghosszabb ut (csak lefel´ u a a e o a o e o ´ e megy¨ nk, ahogy egy keresf´n´l illik). Teh´t pl. lev´lre m(v) = 0. u oa a a e f m(v) = a v cs´ cs fekete magass´ga, azaz hogy a v-bl lev´lbe vezet utakon v n´lk¨ l h´ny fekete cs´ csot u a o e o e u a u l´tunk. (Ez a 8. tulajdons´g miatt minden uton egyforma.) a a ´ Feladat. Lehet-e egy piros-fekete fa alakja ilyen?

Megold´s. Nem, mert a bal oldali ´g miatt a gy¨k´rre f m(r) = 1, ´s ´ a gy¨k´ren ´s a leveleken k´ ul a a o e e igy o e e iv¨ nincs fekete cs´ cs, ami 7. miatt nem lehets´ges. u e ´ it´ 1. All´ as. Egy piros-fekete fa minden v cs´cs´ra teljes¨l, hogy u a u m(v) f m(v) m(v). 2 Bizony´ as. Nyilv´n f m(v) m(v) mindig igaz. Egy uton a 7. tulajdons´g miatt nem lehet k´t egym´s it´ a ´ a e a ut´ni piros cs´ cs, teh´t a cs´ csok legal´bb fele fekete. a u a u a ´ it´ 2. All´ as. Egy piros-fekete f´ban az Fv r´szfa bels cs´csainak sz´ma legal´bb 2f m(v) - 1. a e o u a a 1

Bizony´ as. Jel¨lje bv az Fv r´szfa bels cs´ csainak sz´m´t. m(v) szerinti teljes indukci´val bizony´ it´ o e o u a a o itunk: Ha m(v) = 0, akkor v lev´l, f m(v) = 0, ´s bv = 0. e e Ha m(v) > 0, akkor v egy bels cs´ cs, aminek 2 fia van, legyenek ezek x ´s y. Vil´gos, hogy m(x), m(y) < o u e a m(v) ´s f m(v) - 1 f m(x), f m(y) f m(v), ez´rt az indukci´s feltev´s szerint e e o e bv (2f m(x) - 1) + (2f m(y) - 1) + 1 2 · 2f m(v)-1 - 1 = 2f m(v) - 1. 3. T´tel. Ha egy piros-fekete f´ban n elemet t´rolunk, akkor a fa magass´ga legfeljebb 2 · log(n + 1). e a a a Bizony´ as. Legyen r a fa gy¨kere. Ha n elemet t´rolunk, akkor a bels cs´ csok sz´ma br = n. Az elz it´ o a o u a o o a it´ ´ll´ as szerint br 2f m(r) - 1. Ebbl log(n + 1) f m(r). Ha felhaszn´ljuk, hogy f m(r) m(r)/2 (l´sd 1. o a a ´ it´ All´ as), akkor a k´ ant becsl´st kapjuk. iv´ e Ebbl k¨vetkezik az al´bbi o o a 4. T´tel. KERES, MAX, MIN l´p´ssz´ma piros-fekete f´ban is O(log n). e e e a a ´ e ¨ ¨ A BESZUR ´s TOROL elj´r´sokn´l c´l, hogy lehetleg helyi kis v´ltoztat´sokkal biztos´ a a a e o a a itsuk a pirosfekete fa tulajdons´gokat. Ez forgat´sokkal, ´s ´tsz´ esekkel megy, kiv´ve 1-1 esetet, amikor a probl´m´t a a a e a inez´ e e a f´ban feljebbi szintre toljuk. A k¨vetkezkben az ´br´kon l´that´ r´szf´kban karika jelzi a fekete cs´ csokat, a o o a a a o e a u n´gyzet a pirosat ´s nincs semmi, ha nem tudjuk/mindegy hogy milyen sz´ u a cs´ cs. A szimetrikus esetekbl e e in u o csak egyet rajzolok fel.

Forgat´sok a
Egy bin´ris f´ban (nem csak piros-fekete f´ban) tetszleges cs´ csn´l v´gezhet¨ nk balra vagy jobbra forgat´st. a a a o u a e u a Az x-n´l balra forgat´s az Fx -en k´ uli cs´ csok hely´t nem v´ltoztatja, Fx cs´ csait pedig az al´bbiak szerint e a iv¨ u e a u a rendezi ´t: a

x y s Fy Fs Ft z t y Fy x s

z t Ft Fs

A jobb oldali f´b´l z-n´l jobbra forgat´ssal visszakapjuk a baloldali f´t. a o e a a 2. Megjegyz´s. Vegy¨ k ´szre, hogy ha az eredeti bin´ris fa rendelkezett a keresfa tulajdons´ggal, akkor e u e a o a a forgat´s ut´n is keresf´t kapunk, de a piros-fekete tulajdons´g elromolhat. a a oa a

´ A BESZUR elj´r´s a a
V´gezz¨ k el a bels cs´ csok ´ltal alkotott bin´ris f´ba val´ na´ besz´ r´st (ekkor a piros-fekete fogalmaival e u o u a a a o iv ua uj bels cs´ cs keletkezik). Legyen ez z. ´ o u ­ Ha z gy¨k´r (azaz a fa els cs´ csa), akkor z legyen fekete. o e o u ­ Ha nem gy¨k´r, akkor az apj´t jel¨lje x. Kezdetben legyen z piros. o e a o (1) Ha x fekete, akkor a fa piros-fekete fa maradt ­ k´szen vagyunk. e (2) Ha x piros, akkor s´r¨ l a 7. tulajdons´g. Ilyenkor x nem a gy¨k´r (mert a gy¨k´r fekete). Jel¨lje x eu a o e o e o testv´r´t y, apj´t t. Mivel x piros, ez´rt t fekete (7. tulajdons´g) e e a e a 2

(2.1) Ha y piros, akkor ´tsz´ unk: x ´s y fekete lesz, t pedig piros. ´ a probl´m´t k´t szinttel a inez¨ e Igy e a e feljebb toltuk.

t x z y z x

t y

Ha t a gy¨k´r, akkor t sz´ et hagyjuk meg feket´nek ­ ebben az esetben a fa fekete magass´ga o e in´ e a 1-gyel n. o (2.2) Ha y fekete, akkor forgatni is kell: (2.2.1) ha z ´s x nem azonos oldali gyerekek, akkor forgassunk x-n´l, hogy egy oldalra ker¨ ljenek: e e u

t x z y x z

t y

Ezzel visszavezett¨ k a k¨vetkez esetre (csak x ´s z fel van cser´lve). u o o e e (2.2.2) ha azonos oldaliak, akkor egy szimpla forgat´s ut´n ´tsz´ unk ugy, hogy az egyes ´gak a a a inez¨ ´ a fekete magass´ga az eredetihez k´pest ne v´ltozzon: a e a
t x z y z x t y z x t y

´ 5. T´tel. A BESZUR elj´r´s sor´n e a a a (a) a l´p´ssz´m O(log n), e e a (b) legfeljebb 2 forgat´s t¨rt´nik. a o e Bizony´ as. (a) Az y piros esetben az ´tsz´ eskor egy szinttel feljebb csin´lhatunk bajt, ez felgy r zhet it´ a inez´ a uu a fa tetej´ig. Minden m´s esetben viszont r¨gt¨n k´szen vagyunk. e a o o e (b) Forgat´s csak az y fekete esetben t¨rt´nik, akkor egybl helyre is ´ll´ a o e o a itjuk a f´t. a 3. Megjegyz´s. Az y=fekete els eset´ben k´t egym´s ut´ni forgat´st fogunk v´grehajtani.Ezt ak´r egyben e o e e a a a e a megcsin´lhatjuk, ´s akkor m´r csak a sz´ est kell a le´ a e a inez´ irtak szerint megv´ltoztatni. a

¨ ¨ A TOROL elj´r´s a a
A bels cs´ csokb´l ´ll´ bin´ris f´ban hajtsuk v´gre a na´ t¨rl´st ugy, hogy a cs´ csok sz´ en nem v´ltoztatunk o u o a o a a e iv o e ´ u in´ a akkor sem, ha esetleg m´sik kulcs ker¨ lt a cs´ csba. Legyen y az a cs´ csa a f´nak, ami enn´l a t¨rl´sn´l a u u u a e o e e t´nylegesen megsz nik (ez nem felt´tlen¨ l egyezik meg azzal a cs´ ccsal, ahol a t¨rlend ´rt´k volt). Mivel e u e u u o oe e y-nak a bels cs´ csok ´ltal alkotott f´ban legfeljebb 1 fia van, y a piros-fekete f´nak egy olyan bels cs´ csa, o u a a a o u aminek legal´bb az egyik fia lev´l. Legyen x a nem lev´l fia, ha ilyen van, ha nincs, akkor valamelyik fia. a e e ­ Ha y piros, akkor elhagyjuk ´s x-et rakjuk a hely´be. (A m´sik fi´ elt¨ nik, x megrzi a sz´ et.) e e a u u o in´ ­ Ha y fekete, akkor elhagy´sa 1-gyel cs¨kkenti a r´szf´ban az f m ´rt´keket -- hogy ezt ellens´ lyozzuk, x a o e a e e u kap egy fekete pontot". " ´ ­ Altal´ban, ha egy fekete ponttal rendelkez cs´ cs piros, akkor v´ltoztassuk a sz´ et feket´re ´s ezzel a a o u a in´ e e fekete pontot felhaszn´ltuk. a ­ Ha egy fekete pontos x cs´ cs fekete, t¨bb eset van: u o 3

(1) x a gy¨k´r: a fekete pontot elfelejtj¨ k. Ez az az eset, amikor a fa fekete m´lys´ge cs¨kken. o e u e e o (2) x nem a gy¨k´r, akkor van apja, legyen ez t, az x testv´r´t jel¨lje z o e e e o (2.1) Ha z piros, akkor t fekete ´s egy forgat´ssal+´tsz´ essel el´rhetj¨ k, hogy x uj testv´re fekete e a a inez´ e u ´ e legyen, de a r´szf´k fekete magass´ga ne v´ltozz´k. Innen a k¨vetkez, (2.2) eset szerint j´runk e a a a e o o a el.

t x z x t

z t x

z

(2.2) z fekete. Vegy¨ k ´szre, hogy z nem lehet lev´l, hiszen a fekete pont miatt eredetileg az x u e e gy¨ker r´szf´nak legal´bb 1 kellett legyen a fekete magass´ga. o u e a a a (2.2.1) Ha z fiai feket´k, akkor legyen z piros ´s a fekete pontot adjuk x helyett az ap´nak t-nek. e e a

t x z x

t z

(2.2.2) Ha z fiai k¨z¨tt van piros, akkor egy forgat´ssal z-n´l ´s a fekete magass´g helyre´ll´ as´val o o a e e a a it´ a el´rhetj¨ k, hogy az x-tl t´volabbi" fia z-nek (azaz az x-szel ellent´tes oldali fi´ ) piros legyen. e u o a e u " t t t

x w

z

x

w z

x

w z

Ebben az esetben pedig t-n´l forgatunk ´s felhaszn´ljuk a fekete pontot: e e a
t x w z x t w z t w z

A v´g´n w sz´ a t eredeti sz´ lesz. e e ine ine ¨ ¨ 6. T´tel. A TOROL elj´r´s sor´n e a a a (a) a l´p´ssz´m O(log n), e e a (b) legfeljebb 3 forgat´s t¨rt´nik a o e Bizony´ as. (a) Csak amikor z fekete ´s a fiai is feket´k, akkor nem el´g a lok´lis v´ltoztat´s, de ilyenkor it´ e e e a a a a fekete pont csak felfel´ v´ndorolhat a f´n. e a a (b) Ha forgatunk (ebbl b´rmely esetben max h´rom kell), akkor k´sz is vagyunk. o a a e

Tov´bbi inform´ci´k a a o
· wikipedia: http://en.wikipedia.org/wiki/Red black tree · anim´ci´val: http://www.ececs.uc.edu/~ franco/C321/html/RedBlack/ a o ´ · Cormen, Leiserson, Rivest, Stein: Uj algoritmusok

4

A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok.

A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok. egy részhalmazát (szavak egy halmazát) szeretnénk tárolni.

A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok. egy részhalmazát (szavak egy halmazát) szeretnénk tárolni. KÖR, KÖVÉR, KAPOS, KAP, KALAP =

A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok. egy részhalmazát (szavak egy halmazát) szeretnénk tárolni. KÖR, KÖVÉR, KAPOS, KAP, KALAP =
E E E U E E E E d ¢¢T d ¢ d ¢ d

L

A

P



A

P

O

S



f f f x f E E w E E E

K



Ö

R



V

É

R



A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok. egy részhalmazát (szavak egy halmazát) szeretnénk tárolni. KÖR, KÖVÉR, KAPOS, KAP, KALAP =
E E E U E E E E d ¢¢T d ¢ d ¢ d

L

A

P



azt jelenti, hogy itt a szó vége

A

P

O

S



f f f x f E E w E E E

K



Ö

R



V

É

R



A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok. egy részhalmazát (szavak egy halmazát) szeretnénk tárolni. KÖR, KÖVÉR, KAPOS, KAP, KALAP =
E E E U E E E E d ¢¢T d ¢ d ¢ d

L

A

P



A

P

O

S



f f f x f E E w E E E

K



azt jelenti, hogy itt a szó vége A szófa adatszerkezet érzéketlen a beszúrások sorrendjére, a fa alakja csak a tárolt szavak összességétol függ.

Ö

R



V

É

R



A LGORITMUSELMÉLET 5.

EL OADÁS

9

Szófák
Legyen egy véges halmaz, a -beli elemekbol alkotott véges hosszú sorozatok. egy részhalmazát (szavak egy halmazát) szeretnénk tárolni. KÖR, KÖVÉR, KAPOS, KAP, KALAP =
E E E U E E E E d ¢¢T d ¢ d ¢ d

L

A

P



A

P

O

S



f f f x f E E w E E E

K



azt jelenti, hogy itt a szó vége A szófa adatszerkezet érzéketlen a beszúrások sorrendjére, a fa alakja csak a tárolt szavak összességétol függ. A tömbbel megvalósított szófában való keresés: a szóbeli betuk száma

Ö

R



V

É

R



A LGORITMUSELMÉLET 5.

EL OADÁS

10

Hash-elés

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét.

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové.

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . .

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek.

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyu személyi szám

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyu személyi szám lehetséges személyi számok = 4 · 102 · 12 · 31 · 103 148 millió darab

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyu személyi szám lehetséges személyi számok = 4 · 102 · 12 · 31 · 103 148 millió darab elég lefoglalni 11 millió rekordnak helyet

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyu személyi szám lehetséges személyi számok = 4 · 102 · 12 · 31 · 103 148 millió darab elég lefoglalni 11 millió rekordnak helyet Olyan h függvény kell, ami minden személyi számhoz rendel egy egészet a [0, 12 · 106 - 1] intervallumból.

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyu személyi szám lehetséges személyi számok = 4 · 102 · 12 · 31 · 103 148 millió darab elég lefoglalni 11 millió rekordnak helyet Olyan h függvény kell, ami minden személyi számhoz rendel egy egészet a [0, 12 · 106 - 1] intervallumból. Jó lenne ha, K = K esetén h(K) = h(K ) teljesülne, de ez nem lehetséges.

A LGORITMUSELMÉLET 5.

EL OADÁS

11

Hash-elés
Nem tételezzük fel a lehetséges kulcsok összességének (az U univerzumnak) a rendezettségét. Olyan módszercsalád, amely a keresés, beszúrás, törlés és módosítás gyors és egyszeru megvalósítását teszi lehetové. Nincs rendezés = nincs MIN, MAX, . . . Cél = S U kulcshalmazzal azonosított állomány megszervezése úgy, hogy a fenti muveletek átlagos értelemben hatékonyak legyenek. Példa: Magyar állampolgárok személyi nyilvántartása = kulcs= 11 jegyu személyi szám lehetséges személyi számok = 4 · 102 · 12 · 31 · 103 148 millió darab elég lefoglalni 11 millió rekordnak helyet Olyan h függvény kell, ami minden személyi számhoz rendel egy egészet a [0, 12 · 106 - 1] intervallumból. Jó lenne ha, K = K esetén h(K) = h(K ) teljesülne, de ez nem lehetséges. = ütközések elkerülhetetlenek

A LGORITMUSELMÉLET 5.

EL OADÁS

12

Hash-elés alapveto ötelete
Veszünk egy alkalmas h hash-függvényt, elsonek a K kulcsú elemet a h(K) cellába próbáljuk illeszteni.

A LGORITMUSELMÉLET 5.

EL OADÁS

12

Hash-elés alapveto ötelete
Veszünk egy alkalmas h hash-függvényt, elsonek a K kulcsú elemet a h(K) cellába próbáljuk illeszteni. Ha késobb érkezik egy K elem, amire h(K) = h(K ), akkor ütközés van.

A LGORITMUSELMÉLET 5.

EL OADÁS

12

Hash-elés alapveto ötelete
Veszünk egy alkalmas h hash-függvényt, elsonek a K kulcsú elemet a h(K) cellába próbáljuk illeszteni. Ha késobb érkezik egy K elem, amire h(K) = h(K ), akkor ütközés van. Az ütközések feloldására több módszer is van, próbálunk más helyet találni K -nek.

A LGORITMUSELMÉLET 5.

EL OADÁS

12

Hash-elés alapveto ötelete
Veszünk egy alkalmas h hash-függvényt, elsonek a K kulcsú elemet a h(K) cellába próbáljuk illeszteni. Ha késobb érkezik egy K elem, amire h(K) = h(K ), akkor ütközés van. Az ütközések feloldására több módszer is van, próbálunk más helyet találni K -nek. Fontos kérdés a megfelelo hash függvény kiválasztása is, pl. h(K) = konst. nyilván nem praktikus.

A LGORITMUSELMÉLET 5.

EL OADÁS

13

Vödrös hash-elés
Foleg külso táron tárolt, nagy állományok kezelésére.

A LGORITMUSELMÉLET 5.

EL OADÁS

13

Vödrös hash-elés
Foleg külso táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(K) = i betesszük V (i)-be, ha több ilyen is van, láncolt listaként.

A LGORITMUSELMÉLET 5.

EL OADÁS

13

Vödrös hash-elés
Foleg külso táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(K) = i betesszük V (i)-be, ha több ilyen is van, láncolt listaként. V [0 : M - 1] vödörkatalógus, V [i] mutató egy vödörbe, amiben az elemek listái (lapláncai) vannak.

A LGORITMUSELMÉLET 5.

EL OADÁS

13

Vödrös hash-elés
Foleg külso táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(K) = i betesszük V (i)-be, ha több ilyen is van, láncolt listaként. V [0 : M - 1] vödörkatalógus, V [i] mutató egy vödörbe, amiben az elemek listái (lapláncai) vannak. (A vödrök mérete általában kicsi.)

A LGORITMUSELMÉLET 5.

EL OADÁS

13

Vödrös hash-elés
Foleg külso táron tárolt, nagy állományok kezelésére. Minden elemet, amelyre h(K) = i betesszük V (i)-be, ha több ilyen is van, láncolt listaként. V [0 : M - 1] vödörkatalógus, V [i] mutató egy vödörbe, amiben az elemek listái (lapláncai) vannak. (A vödrök mérete általában kicsi.) 0 K
t t t t t E E

r rr u e rr e r e

egy vödör lapjai
E

h(K)

K

M -1 V

E

E

A LGORITMUSELMÉLET 5.

EL OADÁS

14

Kulcsok a vödörben
Hogyan helyezzük az új kulcsot a vödörbe?

A LGORITMUSELMÉLET 5.

EL OADÁS

14

Kulcsok a vödörben
Hogyan helyezzük az új kulcsot a vödörbe? · Az elso szabad helyre tesszük, ha kell új lappal bovítünk (az elején).

A LGORITMUSELMÉLET 5.

EL OADÁS

14

Kulcsok a vödörben
Hogyan helyezzük az új kulcsot a vödörbe? · Az elso szabad helyre tesszük, ha kell új lappal bovítünk (az elején). · Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük.

A LGORITMUSELMÉLET 5.

EL OADÁS

14

Kulcsok a vödörben
Hogyan helyezzük az új kulcsot a vödörbe? · Az elso szabad helyre tesszük, ha kell új lappal bovítünk (az elején). · Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük.

Keresés a hash-táblában
· Kiszámítjuk h(K)-t

A LGORITMUSELMÉLET 5.

EL OADÁS

14

Kulcsok a vödörben
Hogyan helyezzük az új kulcsot a vödörbe? · Az elso szabad helyre tesszük, ha kell új lappal bovítünk (az elején). · Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük.

Keresés a hash-táblában
· Kiszámítjuk h(K)-t · A V [h(K)] vödörben keresünk szekvenciálisan, addig megyünk, amig megtaláljuk, vagy véget ér.

A LGORITMUSELMÉLET 5.

EL OADÁS

14

Kulcsok a vödörben
Hogyan helyezzük az új kulcsot a vödörbe? · Az elso szabad helyre tesszük, ha kell új lappal bovítünk (az elején). · Kulcs szerint rendezve vannak, beszúráskor a helyére tesszük.

Keresés a hash-táblában
· Kiszámítjuk h(K)-t · A V [h(K)] vödörben keresünk szekvenciálisan, addig megyünk, amig megtaláljuk, vagy véget ér.

Törlés ugyanígy.

A LGORITMUSELMÉLET 5.

EL OADÁS

15

Hash-elés költsége
Külso táras szerkezet = lapelérések száma.

A LGORITMUSELMÉLET 5.

EL OADÁS

15

Hash-elés költsége
Külso táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/M lap kerül = átlagos lánchossz

A LGORITMUSELMÉLET 5.

EL OADÁS

15

Hash-elés költsége
Külso táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/M lap kerül = átlagos lánchossz = Keresés áltagos lépéshossza: 1 + l/M Hogyan válasszuk meg M -et?:

A LGORITMUSELMÉLET 5.

EL OADÁS

15

Hash-elés költsége
Külso táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/M lap kerül = átlagos lánchossz = Keresés áltagos lépéshossza: 1 + l/M Hogyan válasszuk meg M -et?: l/M legyen kb. 1, de hagyjunk rá 20%-ot Példa: 1 000 000 rekordból álló állományt szeretnénk láncolásos módszerrel kezelni, egy lapon 5 rekord fér el.

A LGORITMUSELMÉLET 5.

EL OADÁS

15

Hash-elés költsége
Külso táras szerkezet = lapelérések száma. M vödör van, és l-lapnyi rekordot tárolunk = egy vödörbe átlagosan l/M lap kerül = átlagos lánchossz = Keresés áltagos lépéshossza: 1 + l/M Hogyan válasszuk meg M -et?: l/M legyen kb. 1, de hagyjunk rá 20%-ot Példa: 1 000 000 rekordból álló állományt szeretnénk láncolásos módszerrel kezelni, egy lapon 5 rekord fér el. Ekkor l = 1 000 000/5 = 200 000 = M 220 000 - 240 000 = keresés átlagos költsége valamivel 2 lapelérés alatt marad.

A LGORITMUSELMÉLET 5.

EL OADÁS

16

Hashelés nyitott címzéssel
Csak belso memóriás módszerként hasznosak.

A LGORITMUSELMÉLET 5.

EL OADÁS

16

Hashelés nyitott címzéssel
Csak belso memóriás módszerként hasznosak. Fo ötlet: ha h(K) már foglalt, keresünk egy üreset valamilyen módszerrel.

A LGORITMUSELMÉLET 5.

EL OADÁS

16

Hashelés nyitott címzéssel
Csak belso memóriás módszerként hasznosak. Fo ötlet: ha h(K) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h1(K), h2(K), . . . , hM -1(K) a 0, 1, . . . , M - 1 számok egy permutációja

A LGORITMUSELMÉLET 5.

EL OADÁS

16

Hashelés nyitott címzéssel
Csak belso memóriás módszerként hasznosak. Fo ötlet: ha h(K) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h1(K), h2(K), . . . , hM -1(K) a 0, 1, . . . , M - 1 számok egy permutációja = végigpróbálgatjuk a h(K) + hi(K) (mod M ) sorszámú cellákat (i = 0, 1, . . . , M - 1) az elso üres helyig, ahol a rekordot elhelyezzük.

A LGORITMUSELMÉLET 5.

EL OADÁS

16

Hashelés nyitott címzéssel
Csak belso memóriás módszerként hasznosak. Fo ötlet: ha h(K) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h1(K), h2(K), . . . , hM -1(K) a 0, 1, . . . , M - 1 számok egy permutációja = végigpróbálgatjuk a h(K) + hi(K) (mod M ) sorszámú cellákat (i = 0, 1, . . . , M - 1) az elso üres helyig, ahol a rekordot elhelyezzük. = Ha nincs üres, a tábla betelt.

A LGORITMUSELMÉLET 5.

EL OADÁS

16

Hashelés nyitott címzéssel
Csak belso memóriás módszerként hasznosak. Fo ötlet: ha h(K) már foglalt, keresünk egy üreset valamilyen módszerrel. Legyen 0, h1(K), h2(K), . . . , hM -1(K) a 0, 1, . . . , M - 1 számok egy permutációja = végigpróbálgatjuk a h(K) + hi(K) (mod M ) sorszámú cellákat (i = 0, 1, . . . , M - 1) az elso üres helyig, ahol a rekordot elhelyezzük. = Ha nincs üres, a tábla betelt.
' K

' c

$ ' c

$ ' c

$ c

0

h( K )

h( K ) + h1 ( K ) h( K ) + h2 ( K ) h( K ) + h3 ( K )

M -1

A LGORITMUSELMÉLET 5.

EL OADÁS

17

Lineáris próbálás hi(K) := -i

A LGORITMUSELMÉLET 5.

EL OADÁS

17

Lineáris próbálás hi(K) := -i
Visszafelé lépkedünk egyesével h(K)-tól indulva az elso üres helyig.

A LGORITMUSELMÉLET 5.

EL OADÁS

17

Lineáris próbálás hi(K) := -i
Visszafelé lépkedünk egyesével h(K)-tól indulva az elso üres helyig. Sikeres keresés átlagos költsége: CN = 1 2 1+ 1 1-

Sikertelen keresés átlagos költsége: 1 2 1 1-
2

CN =

1+

ahol = N/M ­ a telítettségi (betöltöttségi) tényezo, N ­ a táblában levo rekordok száma, M ­ a tábla celláinak száma

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba,

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba,

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba,

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 2 3 4 5 6

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 2 3 3 4 5 6

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 2 3 3 4 11 5 6

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 2 9 3 3 4 11 5 6

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

Ha most töröljük a 9-et, akkor késobb nem találnánk meg a 4-et.

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

Ha most töröljük a 9-et, akkor késobb nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. =

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

Ha most töröljük a 9-et, akkor késobb nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 10 1 4 2 3 3 4 11 5 6

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

Ha most töröljük a 9-et, akkor késobb nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 10 1 4 2 3 3 4 11 5 6

Lineáris próba hátránya: Ha már sok cella tele van, kialakulnak egybefüggo csomók, megno a keresési, beillesztési út

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

Ha most töröljük a 9-et, akkor késobb nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 10 1 4 2 3 3 4 11 5 6

Lineáris próba hátránya: Ha már sok cella tele van, kialakulnak egybefüggo csomók, megno a keresési, beillesztési út = elsodleges csomósodás

A LGORITMUSELMÉLET 5.

EL OADÁS

18

CN CN Példa: M = 7, h(K) := K beillesztendo: 3, 11, 9, 4, 10 0 10

2/3 2 5

0, 8 3 13

0, 9 5, 5 50, 5

(mod 7), lineáris próba, 1 4 2 9 3 3 4 11 5 6

Ha most töröljük a 9-et, akkor késobb nem találnánk meg a 4-et. = 9 helyére egy speciális TÖRÖLT jelet pl. -ot teszünk. = 0 10 1 4 2 3 3 4 11 5 6

Lineáris próba hátránya: Ha már sok cella tele van, kialakulnak egybefüggo csomók, megno a keresési, beillesztési út = elsodleges csomósodás Java animáció: Hash-elés lineáris próbával

Algoritmuselmélet 6. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Március 4.

A LGORITMUSELMÉLET 6.

EL OADÁS

1

Hash-elés álvéletlen próbával
A 0, h1(K), h2(K), . . . , hM -1(K) próbasorozat a 0, 1, . . . , M - 1 számoknak egy a K kulcstól független álvéletlen permutációja.

A LGORITMUSELMÉLET 6.

EL OADÁS

1

Hash-elés álvéletlen próbával
A 0, h1(K), h2(K), . . . , hM -1(K) próbasorozat a 0, 1, . . . , M - 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie véletlen

A LGORITMUSELMÉLET 6.

EL OADÁS

1

Hash-elés álvéletlen próbával
A 0, h1(K), h2(K), . . . , hM -1(K) próbasorozat a 0, 1, . . . , M - 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie véletlen Ha h(K) = h(L), akkor a K és L kulcsok teljes próbasorozata is megegyezik = másodlagos csomósodásnak

A LGORITMUSELMÉLET 6.

EL OADÁS

1

Hash-elés álvéletlen próbával
A 0, h1(K), h2(K), . . . , hM -1(K) próbasorozat a 0, 1, . . . , M - 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie véletlen Ha h(K) = h(L), akkor a K és L kulcsok teljes próbasorozata is megegyezik = másodlagos csomósodásnak

Kvadratikus maradék próba
Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész.

A LGORITMUSELMÉLET 6.

EL OADÁS

1

Hash-elés álvéletlen próbával
A 0, h1(K), h2(K), . . . , hM -1(K) próbasorozat a 0, 1, . . . , M - 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie véletlen Ha h(K) = h(L), akkor a K és L kulcsok teljes próbasorozata is megegyezik = másodlagos csomósodásnak

Kvadratikus maradék próba
Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész. Ekkor a próbasorozat legyen 0, 12, -(12), 22, -(22), . . . , M -1 2
2

,-

M -1 2

2

.

A LGORITMUSELMÉLET 6.

EL OADÁS

1

Hash-elés álvéletlen próbával
A 0, h1(K), h2(K), . . . , hM -1(K) próbasorozat a 0, 1, . . . , M - 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie véletlen Ha h(K) = h(L), akkor a K és L kulcsok teljes próbasorozata is megegyezik = másodlagos csomósodásnak

Kvadratikus maradék próba
Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész. Ekkor a próbasorozat legyen 0, 12, -(12), 22, -(22), . . . , M -1 2
2

,-

M -1 2

2

.

= Belátjuk, hogy ez tényleg permutáció.

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ).

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n2 -1 (mod M ).

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n2 -1 (mod M ). = -1 (-1)
M -1 2

n

- 2 M2 1

nM -1 1

(mod M ).

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n2 -1 (mod M ). = -1 (-1)
M -1 2

n

- 2 M2 1

nM -1 1

(mod M ).

Az utolsó lépésnél a kis Fermat-tételt használtuk.

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n2 -1 (mod M ). = -1 (-1)
M -1 2

n

- 2 M2 1

nM -1 1

(mod M ).

Az utolsó lépésnél a kis Fermat-tételt használtuk.
- Ha 0 i < j M2 1 , akkor i2 j 2 (mod M ). = j 2 - i2 = (j - i)(j + i) felbontás egyik tényezoje sem lehet osztható M -mel, tehát a szorzatuk sem

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n2 -1 (mod M ). = -1 (-1)
M -1 2

n

- 2 M2 1

nM -1 1

(mod M ).

Az utolsó lépésnél a kis Fermat-tételt használtuk.
- Ha 0 i < j M2 1 , akkor i2 j 2 (mod M ). = j 2 - i2 = (j - i)(j + i) felbontás egyik tényezoje sem lehet osztható M -mel, tehát a szorzatuk sem

Ugyanígy = -i2 -j 2

(mod M ).

A LGORITMUSELMÉLET 6.

EL OADÁS

2

Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n2 -1 (mod M ). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n2 -1 (mod M ). = -1 (-1)
M -1 2

n

- 2 M2 1

nM -1 1

(mod M ).

Az utolsó lépésnél a kis Fermat-tételt használtuk.
- Ha 0 i < j M2 1 , akkor i2 j 2 (mod M ). = j 2 - i2 = (j - i)(j + i) felbontás egyik tényezoje sem lehet osztható M -mel, tehát a szorzatuk sem

Ugyanígy = -i2 -j 2 i -j
2 2

(mod M ).
-1 2

(mod M ) = (ij

) -1

(mod M )



A LGORITMUSELMÉLET 6.

EL OADÁS

3

Sikeres keresés költsége: CN 1 - log(1 - ) - Sikertelen keresés költsége: CN 1 (1 - ) - - log(1 - ) 2

A LGORITMUSELMÉLET 6.

EL OADÁS

3

Sikeres keresés költsége: CN 1 - log(1 - ) - Sikertelen keresés költsége: CN 1 (1 - ) - - log(1 - ) 2

Ezek az összefüggések valamivel általánosabban érvényesek az olyan módszerekre, amelyekre hi(K) = fi(h(K)); vagyis ahol a h(K) érték már az egész próbasorozatot meghatározza.

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül.

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk a h (K) értékek relatív prímek legyenek az M táblamérethez

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk a h (K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := -ih (K).

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk a h (K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := -ih (K). Ha M és h (K) relatív prímek = 0, -h (K), -2h (K), . . . , -(M - 1)h (K) sorozat elemei mind különbözok modulo M

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk a h (K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := -ih (K). Ha M és h (K) relatív prímek = 0, -h (K), -2h (K), . . . , -(M - 1)h (K) sorozat elemei mind különbözok modulo M Fontos sajátossága: különbözo K és K kulcsok próbasorozatai jó eséllyel akkor is különbözok lesznek, ha h(K) = h(K ).

A LGORITMUSELMÉLET 6.

EL OADÁS

4

Kettos hash-elés

G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk a h (K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := -ih (K). Ha M és h (K) relatív prímek = 0, -h (K), -2h (K), . . . , -(M - 1)h (K) sorozat elemei mind különbözok modulo M Fontos sajátossága: különbözo K és K kulcsok próbasorozatai jó eséllyel akkor is különbözok lesznek, ha h(K) = h(K ). A legjobb ismert implementációk idoigénye (empirikus adatok alapján) 1 1 (1 - ) 1 1-

CN

log

és

CN

.

A LGORITMUSELMÉLET 6.

EL OADÁS

5

· A kettos hash-elés kiküszöböli mindkét-féle csomósodást

A LGORITMUSELMÉLET 6.

EL OADÁS

5

· A kettos hash-elés kiküszöböli mindkét-féle csomósodást · Sikertelen keresés esetén minden érdekes -ra gyorsabb, mint a lineáris próbálás

A LGORITMUSELMÉLET 6.

EL OADÁS

5

· A kettos hash-elés kiküszöböli mindkét-féle csomósodást · Sikertelen keresés esetén minden érdekes -ra gyorsabb, mint a lineáris próbálás · Sikeres kereséskor csak az 0, 8 tartományban lesz gyorsabb a lineáris próbálásnál.

A LGORITMUSELMÉLET 6.

EL OADÁS

6

Hash-függvények
· legyen könnyen (gyorsan) számítható

A LGORITMUSELMÉLET 6.

EL OADÁS

6

Hash-függvények
· legyen könnyen (gyorsan) számítható · és minél kevesebb ütközést okozzon.

A LGORITMUSELMÉLET 6.

EL OADÁS

6

Hash-függvények
· legyen könnyen (gyorsan) számítható · és minél kevesebb ütközést okozzon.

A második követelmény elég nehezen megfogható, mert a gyakorlatban eloforduló kulcshalmazok egyáltalán nem véletlenszeruek.

A LGORITMUSELMÉLET 6.

EL OADÁS

6

Hash-függvények
· legyen könnyen (gyorsan) számítható · és minél kevesebb ütközést okozzon.

A második követelmény elég nehezen megfogható, mert a gyakorlatban eloforduló kulcshalmazok egyáltalán nem véletlenszeruek. hasznos tanácsok = h(K) értéke lehetoleg a K kulcs minden bitjétol függjön

A LGORITMUSELMÉLET 6.

EL OADÁS

6

Hash-függvények
· legyen könnyen (gyorsan) számítható · és minél kevesebb ütközést okozzon.

A második követelmény elég nehezen megfogható, mert a gyakorlatban eloforduló kulcshalmazok egyáltalán nem véletlenszeruek. hasznos tanácsok = h(K) értéke lehetoleg a K kulcs minden bitjétol függjön és a h értékkészlete a teljes [0, M - 1] címtartomány legyen

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete.

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok.

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(K) számítása gyors és egyszeru.

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(K) számítása gyors és egyszeru. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(K) csak a kulcs utolsó néhány bitjétol függ.

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(K) számítása gyors és egyszeru. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(K) csak a kulcs utolsó néhány bitjétol függ. A jó M értékeket illetoen van egy széles körben elfogadott recept: D. E. Knuth javaslata = M -et prímnek választjuk, úgy, hogy M nem osztja r k+a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k ,,kicsi" egészek.

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(K) számítása gyors és egyszeru. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(K) csak a kulcs utolsó néhány bitjétol függ. A jó M értékeket illetoen van egy széles körben elfogadott recept: D. E. Knuth javaslata = M -et prímnek választjuk, úgy, hogy M nem osztja r k+a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k ,,kicsi" egészek. M prím = lényeges feltétel a kvadratikus maradék próbánál.

A LGORITMUSELMÉLET 6.

EL OADÁS

7

Osztómódszer
Legyen h(K) := K (mod M ), ahol M a tábla vagy a vödörkatalógus mérete. Feltesszük, hogy a kulcsok egész számok. A h(K) számítása gyors és egyszeru. A tábla mérete sem teljesen közömbös. Például ha M a 2 egy hatványa, akkor h(K) csak a kulcs utolsó néhány bitjétol függ. A jó M értékeket illetoen van egy széles körben elfogadott recept: D. E. Knuth javaslata = M -et prímnek választjuk, úgy, hogy M nem osztja r k+a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k ,,kicsi" egészek. M prím = lényeges feltétel a kvadratikus maradék próbánál. Könnyu hozzájuk relatív prím számot találni = kettos hash-elés

A LGORITMUSELMÉLET 6.

EL OADÁS

8

Szorzómódszer

egy rögzített paraméter

A LGORITMUSELMÉLET 6.

EL OADÁS

8

Szorzómódszer

egy rögzített paraméter

h(K) := M · {K} . {x} jelöli az x valós szám törtrészét

A LGORITMUSELMÉLET 6.

EL OADÁS

8

Szorzómódszer

egy rögzített paraméter

h(K) := M · {K} . {x} jelöli az x valós szám törtrészét Szemléletesen = {K} kiszámításával a K kulcsot ,,véletlenszeruen" belojük a [0, 1) intervallumba = az eredményt felskálázzuk a címtartományba.

A LGORITMUSELMÉLET 6.

EL OADÁS

8

Szorzómódszer

egy rögzített paraméter

h(K) := M · {K} . {x} jelöli az x valós szám törtrészét Szemléletesen = {K} kiszámításával a K kulcsot ,,véletlenszeruen" belojük a [0, 1) intervallumba = az eredményt felskálázzuk a címtartományba. Hatékonyan számítható speciális eset: M = 2t, w = 232, és legyen A egy a w-hez relatív prím egész. Ekkor = A választás mellett h(K) igen jól számolható. w A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni.

A LGORITMUSELMÉLET 6.

EL OADÁS

9

A szorzómódszer jól viselkedik számtani sorozatokon

A LGORITMUSELMÉLET 6.

EL OADÁS

9

A szorzómódszer jól viselkedik számtani sorozatokon pl. termék1, termék2, termék3, . . . esetében

A LGORITMUSELMÉLET 6.

EL OADÁS

9

A szorzómódszer jól viselkedik számtani sorozatokon pl. termék1, termék2, termék3, . . . esetében Megmutatható, hogy a h(K), h(K + d), h(K + 2d) . . . sorozat közelítoleg számtani sorozat lesz, azaz h jól ,,szétdobja" a kulcsok számtani sorozatait.

A LGORITMUSELMÉLET 6.

EL OADÁS

9

A szorzómódszer jól viselkedik számtani sorozatokon pl. termék1, termék2, termék3, . . . esetében Megmutatható, hogy a h(K), h(K + d), h(K + 2d) . . . sorozat közelítoleg számtani sorozat lesz, azaz h jól ,,szétdobja" a kulcsok számtani sorozatait. Tétel (T. Sós Vera, 1957). Legyen irracionális szám, és nézzük a 0, {}, {2} , . . ., {n} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különbözo értéket vehetnek fel, és {(n + 1)} a leghosszabbak egyikét fogja két részre vágni.

A LGORITMUSELMÉLET 6.

EL OADÁS

9

A szorzómódszer jól viselkedik számtani sorozatokon pl. termék1, termék2, termék3, . . . esetében Megmutatható, hogy a h(K), h(K + d), h(K + 2d) . . . sorozat közelítoleg számtani sorozat lesz, azaz h jól ,,szétdobja" a kulcsok számtani sorozatait. Tétel (T. Sós Vera, 1957). Legyen irracionális szám, és nézzük a 0, {}, {2} , . . ., {n} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különbözo értéket vehetnek fel, és {(n + 1)} a leghosszabbak egyikét fogja két részre vágni. a [0, 1)-beli számok közül a legegyenletesebb eloszlást a -1 = = 5-1 = 0.618033988 . . . és a = -2 = 1 - -1 értékek 2 adják.

A LGORITMUSELMÉLET 6.

EL OADÁS

9

A szorzómódszer jól viselkedik számtani sorozatokon pl. termék1, termék2, termék3, . . . esetében Megmutatható, hogy a h(K), h(K + d), h(K + 2d) . . . sorozat közelítoleg számtani sorozat lesz, azaz h jól ,,szétdobja" a kulcsok számtani sorozatait. Tétel (T. Sós Vera, 1957). Legyen irracionális szám, és nézzük a 0, {}, {2} , . . ., {n} pontok által meghatározott n + 1 részintervallumot [0, 1)-ben. Ezek hosszai legfeljebb 3 különbözo értéket vehetnek fel, és {(n + 1)} a leghosszabbak egyikét fogja két részre vágni. a [0, 1)-beli számok közül a legegyenletesebb eloszlást a -1 = = 5-1 = 0.618033988 . . . és a = -2 = 1 - -1 értékek 2 adják. = érdemes a szorzómódszernél az A-t úgy választani, hogy A közel w -1 legyen -hez. = Fibonacci-hash-elés

A LGORITMUSELMÉLET 6.

EL OADÁS

10

A kettos hash-elés második függvénye
Olyan h függvény kell, melynek értékei a [0, M - 1] intervallumba esnek, és relatív prímek az M -hez

A LGORITMUSELMÉLET 6.

EL OADÁS

10

A kettos hash-elés második függvénye
Olyan h függvény kell, melynek értékei a [0, M - 1] intervallumba esnek, és relatív prímek az M -hez Ha M prím = h (K) := K (mod M - 1) + 1.

A LGORITMUSELMÉLET 6.

EL OADÁS

10

A kettos hash-elés második függvénye
Olyan h függvény kell, melynek értékei a [0, M - 1] intervallumba esnek, és relatív prímek az M -hez Ha M prím = h (K) := K (mod M - 1) + 1. = h (K) és M relatív prímek

A LGORITMUSELMÉLET 6.

EL OADÁS

10

A kettos hash-elés második függvénye
Olyan h függvény kell, melynek értékei a [0, M - 1] intervallumba esnek, és relatív prímek az M -hez Ha M prím = h (K) := K (mod M - 1) + 1. = h (K) és M relatív prímek = elég sok különbözo próbasorozatot ad Java animáció: Hash-elés

A LGORITMUSELMÉLET 6.

EL OADÁS

11

Szekvenciális keresés
Ha egy állomány (tömb, lista, stb.) szegényes szerkezetu = nincs jobb , mint ,,elejétol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk.

A LGORITMUSELMÉLET 6.

EL OADÁS

11

Szekvenciális keresés
Ha egy állomány (tömb, lista, stb.) szegényes szerkezetu = nincs jobb , mint ,,elejétol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk. Ha egyenlo eséllyel kell keresni az elemeket = Sikeres keresés átlagos költsége: 1 + 2 + ··· + N N = N +1 2 .

A LGORITMUSELMÉLET 6.

EL OADÁS

11

Szekvenciális keresés
Ha egy állomány (tömb, lista, stb.) szegényes szerkezetu = nincs jobb , mint ,,elejétol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk. Ha egyenlo eséllyel kell keresni az elemeket = Sikeres keresés átlagos költsége: 1 + 2 + ··· + N N Sikertelen keresés költsége: N = N +1 2 .

A LGORITMUSELMÉLET 6.

EL OADÁS

11

Szekvenciális keresés
Ha egy állomány (tömb, lista, stb.) szegényes szerkezetu = nincs jobb , mint ,,elejétol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk. Ha egyenlo eséllyel kell keresni az elemeket = Sikeres keresés átlagos költsége: 1 + 2 + ··· + N N Sikertelen keresés költsége: N Ha az állományban az elemek nagyság szerint rendezettek = Sikeres keresés átlagos költsége:
N +1 . 2

=

N +1 2

.

A LGORITMUSELMÉLET 6.

EL OADÁS

11

Szekvenciális keresés
Ha egy állomány (tömb, lista, stb.) szegényes szerkezetu = nincs jobb , mint ,,elejétol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk. Ha egyenlo eséllyel kell keresni az elemeket = Sikeres keresés átlagos költsége: 1 + 2 + ··· + N N Sikertelen keresés költsége: N Ha az állományban az elemek nagyság szerint rendezettek = Sikeres keresés átlagos költsége: Sikertelen keresés költsége:
N +1 . 2

=

N +1 2

.

1 + 2 + ··· + N - 1 + N + N N +1

=

N 2

+

N N +1

<

N 2

+ 1.

A LGORITMUSELMÉLET 6.

EL OADÁS

12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószínusége, hogy az Ri rekordot keressük.

A LGORITMUSELMÉLET 6.

EL OADÁS

12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószínusége, hogy az Ri rekordot keressük. = Sikeres keresés átlagos költsége: CN = p1 + 2p2 + 3p3 + · · · + N pN . Hogy érdemes sorba rendezni az Ri rekordokat?

A LGORITMUSELMÉLET 6.

EL OADÁS

12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószínusége, hogy az Ri rekordot keressük. = Sikeres keresés átlagos költsége: CN = p1 + 2p2 + 3p3 + · · · + N pN . Hogy érdemes sorba rendezni az Ri rekordokat? = csökkeno sorrendben

A LGORITMUSELMÉLET 6.

EL OADÁS

12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószínusége, hogy az Ri rekordot keressük. = Sikeres keresés átlagos költsége: CN = p1 + 2p2 + 3p3 + · · · + N pN . Hogy érdemes sorba rendezni az Ri rekordokat? = csökkeno sorrendben Különbözo eloszlások esetén: Egyenletes: pi =
1 N

= CN =

N +1 2

A LGORITMUSELMÉLET 6.

EL OADÁS

12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószínusége, hogy az Ri rekordot keressük. = Sikeres keresés átlagos költsége: CN = p1 + 2p2 + 3p3 + · · · + N pN . Hogy érdemes sorba rendezni az Ri rekordokat? = csökkeno sorrendben Különbözo eloszlások esetén: Egyenletes: pi =
1 N

= CN =

N +1 2
1 2i

Egy nagyon ferde eloszlás: pi =

= CN = 2 -

1 2N - 1

A LGORITMUSELMÉLET 6.

EL OADÁS

13

Zipf eloszlás: pi = HN = 1 + =

1 , iHN

ahol 1 3 1 n

1 2

+

+ ... +

= log n + 0.55721 . . . + o(1)

N

N

CN =
i=1

ipi =
i=1

i

1 iHN

=

N HN



N log N

A LGORITMUSELMÉLET 6.

EL OADÁS

13

Zipf eloszlás: pi = HN = 1 + =

1 , iHN

ahol 1 3 1 n

1 2

+

+ ... +

= log n + 0.55721 . . . + o(1)

N

N

CN =
i=1

ipi =
i=1

i

1 iHN

=

N HN



N log N

80-20 szabály: Tapasztalat = Az adatelérési igények 80%-a a rekordoknak körülbelül csak 20%-át érinti.

A LGORITMUSELMÉLET 6.

EL OADÁS

13

Zipf eloszlás: pi = HN = 1 + =

1 , iHN

ahol 1 3 1 n

1 2

+

+ ... +

= log n + 0.55721 . . . + o(1)

N

N

CN =
i=1

ipi =
i=1

i

1 iHN

=

N HN



N log N

80-20 szabály: Tapasztalat = Az adatelérési igények 80%-a a rekordoknak körülbelül csak 20%-át érinti. pi = = log 0, 8 log 0, 2 1 7 , c= 1
(1-) HN

c i1-

, ahol = 1+ 1 2(1-) +· · ·+ 1 N (1-)

és

(1-) HN

A LGORITMUSELMÉLET 6.

EL OADÁS

13

Zipf eloszlás: pi = HN = 1 + =

1 , iHN

ahol 1 3 1 n

1 2

+

+ ... +

= log n + 0.55721 . . . + o(1)

N

N

CN =
i=1

ipi =
i=1

i

1 iHN

=

N HN



N log N

80-20 szabály: Tapasztalat = Az adatelérési igények 80%-a a rekordoknak körülbelül csak 20%-át érinti. pi = = log 0, 8 log 0, 2 1 7 , c= 1
(1-) HN

c i1-

, ahol = 1+ 1 2(1-) +· · ·+ 1 N (1-)

és

(1-) HN

= CN 0, 122N

A LGORITMUSELMÉLET 6.

EL OADÁS

14

Önszervezo módszerek
Mit tehetünk abban az esetben, ha a pi keresési valószínuségeket nem ismerjük, vagy esetleg azok idovel változnak?

A LGORITMUSELMÉLET 6.

EL OADÁS

14

Önszervezo módszerek
Mit tehetünk abban az esetben, ha a pi keresési valószínuségeket nem ismerjük, vagy esetleg azok idovel változnak? · A keresett (és megtalált) Ri elemet a tábla elejére visszük. Az eredmény: Ri R1 R2 ... RN

A LGORITMUSELMÉLET 6.

EL OADÁS

14

Önszervezo módszerek
Mit tehetünk abban az esetben, ha a pi keresési valószínuségeket nem ismerjük, vagy esetleg azok idovel változnak? · A keresett (és megtalált) Ri elemet a tábla elejére visszük. Az eredmény: Ri R1 R2 ... RN

· A keresett (és megtalált) Ri elemet felcseréljük a megelozovel. R1 ... Ri Ri-1 ... RN

A LGORITMUSELMÉLET 6.

EL OADÁS

14

Önszervezo módszerek
Mit tehetünk abban az esetben, ha a pi keresési valószínuségeket nem ismerjük, vagy esetleg azok idovel változnak? · A keresett (és megtalált) Ri elemet a tábla elejére visszük. Az eredmény: Ri R1 R2 ... RN

· A keresett (és megtalált) Ri elemet felcseréljük a megelozovel. R1 ... Ri Ri-1 ... RN

Ha az eloszlás idoben változik, akkor az elso megoldás ajánlatos. Ha a {pi} eloszlás stabil, azaz idoben nem változik, akkor a második heurisztika eredményesebb.

A LGORITMUSELMÉLET 6.

EL OADÁS

15

Információtömörítés
A b1, . . . , bn betukbol álló szöveget szeretnénk bitsorozatként kódolni.

A LGORITMUSELMÉLET 6.

EL OADÁS

15

Információtömörítés
A b1, . . . , bn betukbol álló szöveget szeretnénk bitsorozatként kódolni. uniform kódolás = log2 n a legrövidebb lehetséges kódhosszúság egy beture

A LGORITMUSELMÉLET 6.

EL OADÁS

15

Információtömörítés
A b1, . . . , bn betukbol álló szöveget szeretnénk bitsorozatként kódolni. uniform kódolás = log2 n a legrövidebb lehetséges kódhosszúság egy beture eltéro hosszú kódszavak = dekódolás problémásabb

A LGORITMUSELMÉLET 6.

EL OADÁS

15

Információtömörítés
A b1, . . . , bn betukbol álló szöveget szeretnénk bitsorozatként kódolni. uniform kódolás = log2 n a legrövidebb lehetséges kódhosszúság egy beture eltéro hosszú kódszavak = dekódolás problémásabb Definíció. Egy bitsorozatokból álló kód prefix kód, ha egy betu kódja sem prefixe (kezdoszelete) egy másik kódjának. Formálisan: ha x és y két különbözo betu kódja, akkor nincs olyan z bitsorozat, melyre xz = y.

A LGORITMUSELMÉLET 6.

EL OADÁS

15

Információtömörítés
A b1, . . . , bn betukbol álló szöveget szeretnénk bitsorozatként kódolni. uniform kódolás = log2 n a legrövidebb lehetséges kódhosszúság egy beture eltéro hosszú kódszavak = dekódolás problémásabb Definíció. Egy bitsorozatokból álló kód prefix kód, ha egy betu kódja sem prefixe (kezdoszelete) egy másik kódjának. Formálisan: ha x és y két különbözo betu kódja, akkor nincs olyan z bitsorozat, melyre xz = y. Egy prefix-tulajdonságú kóddal leírt üzenet egyértelmuen visszafejtheto.

A LGORITMUSELMÉLET 6.

EL OADÁS

16

0 0 A 0 B 1 0 1 C 1 D

1 0 E 1 F

A LGORITMUSELMÉLET 6.

EL OADÁS

16

0 0 A 0 B 1 0 1 C 1 D

1 0 E 1 F

Probléma: Adott egy szöveg, melyben a bi karakter qi-szer fordul elo. Keressünk olyan fát, amelyre a qih(bi) összeg minimális, ahol egy x csúcsra h(x) a gyökértol x-ig vezeto úton bejárt élek száma.

A LGORITMUSELMÉLET 6.

EL OADÁS

17

Huffman-kód
Optimális ilyen fa:

A LGORITMUSELMÉLET 6.

EL OADÁS

17

Huffman-kód
Optimális ilyen fa: · Kezdetben n izolált csúcspontunk van. bi címkéje legyen qi.

A LGORITMUSELMÉLET 6.

EL OADÁS

17

Huffman-kód
Optimális ilyen fa: · Kezdetben n izolált csúcspontunk van. bi címkéje legyen qi. · Tegyük fel, hogy már megépítettük az S1, . . . , Sk fákat, ezek gyökérpontjai x1, . . . , xk, utóbbiak címkéi az r1, . . . , rk számok.

A LGORITMUSELMÉLET 6.

EL OADÁS

17

Huffman-kód
Optimális ilyen fa: · Kezdetben n izolált csúcspontunk van. bi címkéje legyen qi. · Tegyük fel, hogy már megépítettük az S1, . . . , Sk fákat, ezek gyökérpontjai x1, . . . , xk, utóbbiak címkéi az r1, . . . , rk számok. Ekkor vesszük a két minimális címkéju gyökeret (legyenek ezek xi és xj ).

A LGORITMUSELMÉLET 6.

EL OADÁS

17

Huffman-kód
Optimális ilyen fa: · Kezdetben n izolált csúcspontunk van. bi címkéje legyen qi. · Tegyük fel, hogy már megépítettük az S1, . . . , Sk fákat, ezek gyökérpontjai x1, . . . , xk, utóbbiak címkéi az r1, . . . , rk számok. Ekkor vesszük a két minimális címkéju gyökeret (legyenek ezek xi és xj ). · Ezek fölé egy új y gyökérpontot teszünk, melynek fiai xi és xj . Az y címkéje ri + rj .

A LGORITMUSELMÉLET 6.

EL OADÁS

17

Huffman-kód
Optimális ilyen fa: · Kezdetben n izolált csúcspontunk van. bi címkéje legyen qi. · Tegyük fel, hogy már megépítettük az S1, . . . , Sk fákat, ezek gyökérpontjai x1, . . . , xk, utóbbiak címkéi az r1, . . . , rk számok. Ekkor vesszük a két minimális címkéju gyökeret (legyenek ezek xi és xj ). · Ezek fölé egy új y gyökérpontot teszünk, melynek fiai xi és xj . Az y címkéje ri + rj . · A fák száma eggyel csökken. Megállunk, ha már csak egy fa marad. Összesen n - 1 ilyen összevonó lépés szükséges.

A LGORITMUSELMÉLET 6.

EL OADÁS

18

A 6

B 1

C 2

D 4

E 5

F 5

A LGORITMUSELMÉLET 6.

EL OADÁS

18

3 A 6 B 1 C 2 D 4 E 5 F 5

A LGORITMUSELMÉLET 6.

EL OADÁS

18

7 3 A 6 B 1 C 2 D 4 E 5 F 5

A LGORITMUSELMÉLET 6.

EL OADÁS

18

10 7 3 A 6 B 1 C 2 D 4 E 5 F 5

A LGORITMUSELMÉLET 6.

EL OADÁS

18

13 7 3 A 6 B 1 C 2 D 4 E 5

10

F 5

A LGORITMUSELMÉLET 6.

EL OADÁS

18

23 13 7 3 A 6 B 1 C 2 D 4 E 5 F 5 10

A LGORITMUSELMÉLET 6.

EL OADÁS

18

23 0 13 0 0 0 A 6 B 1 3 1 C 2 1 7 1 0 1 10 1

D 4

E 5

F 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

2

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

2

2

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

4 2 2

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

6 4 2 2

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

6 4 2 2 10

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16

6 4 2 2 10

N 1

R 1

D 1

U 1

M 2

A 5

K 5

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11 K

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110 KA

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011 KAK

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101 KAKU

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111 KAKUK

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111 KAKUKK

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111011 KAKUKKM

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110 KAKUKKMA

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111011100100 KAKUKKMAD

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010 KAKUKKMADA

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001 KAKUKKMADAR

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111110111001001000110 KAKUKKMADARA

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111110111001001000110011 KAKUKKMADARAM

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111110111001001000110011000 KAKUKKMADARAMN

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111011100100100011001100010 KAKUKKMADARAMNA

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001100110001011 KAKUKKMADARAMNAK

A LGORITMUSELMÉLET 6.

EL OADÁS

19

KAKUKKMADARAMNAK = 7 betu = uniform kódolással betunként 3 bit, összesen 48 bit.

16 0 6 1 0 0 0 N 1 2 1 R 1 0 D 1 2 1 U 1 1 0 M 2 A 5 10 1 K 5 4 1

A betuk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001100110001011 KAKUKKMADARAMNAK összesen 40 bit

A LGORITMUSELMÉLET 6.

EL OADÁS

20

Optimális kód
Tétel. A Huffman-fa optimális. Pontosabban fogalmazva, a Huffman-fa esetén az I = qih(bi) összeg minimális azon bináris fák között, amelyek levelei b1, . . . , bn.

A LGORITMUSELMÉLET 6.

EL OADÁS

20

Optimális kód
Tétel. A Huffman-fa optimális. Pontosabban fogalmazva, a Huffman-fa esetén az I = qih(bi) összeg minimális azon bináris fák között, amelyek levelei b1, . . . , bn. Bizonyítás: A Huffman-fa által adott I érték legyen H(q1, q2, . . . , qn).

A LGORITMUSELMÉLET 6.

EL OADÁS

20

Optimális kód
Tétel. A Huffman-fa optimális. Pontosabban fogalmazva, a Huffman-fa esetén az I = qih(bi) összeg minimális azon bináris fák között, amelyek levelei b1, . . . , bn. Bizonyítás: A Huffman-fa által adott I érték legyen H(q1, q2, . . . , qn). konstrukció = H(q1, . . . , qn) = H(q1 + q2, q3, . . . , qn) + q1 + q2

A LGORITMUSELMÉLET 6.

EL OADÁS

20

Optimális kód
Tétel. A Huffman-fa optimális. Pontosabban fogalmazva, a Huffman-fa esetén az I = qih(bi) összeg minimális azon bináris fák között, amelyek levelei b1, . . . , bn. Bizonyítás: A Huffman-fa által adott I érték legyen H(q1, q2, . . . , qn). konstrukció = H(q1, . . . , qn) = H(q1 + q2, q3, . . . , qn) + q1 + q2

Jelölje Opt(q1, q2, . . . , qn) a qi gyakoriságok esetén elérheto optimális I-értéket.

A LGORITMUSELMÉLET 6.

EL OADÁS

20

Optimális kód
Tétel. A Huffman-fa optimális. Pontosabban fogalmazva, a Huffman-fa esetén az I = qih(bi) összeg minimális azon bináris fák között, amelyek levelei b1, . . . , bn. Bizonyítás: A Huffman-fa által adott I érték legyen H(q1, q2, . . . , qn). konstrukció = H(q1, . . . , qn) = H(q1 + q2, q3, . . . , qn) + q1 + q2

Jelölje Opt(q1, q2, . . . , qn) a qi gyakoriságok esetén elérheto optimális I-értéket. Lemma. Legyen továbbra is q1 q2 a két legkisebb gyakoriság. Ekkor Opt(q1, q2, . . . , qn) = Opt(q1 + q2, q3, . . . , qn) + q1 + q2.

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van.

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2.

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét.

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J .

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 ,

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 , = az új fának is optimálisnak kell lennie a q1 + q2, q3, . . . , qn gyakoriságokra vonatkozóan, hiszen, ha J -n tudnánk javítani, akkor az eredeti fán is.

A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 , = az új fának is optimálisnak kell lennie a q1 + q2, q3, . . . , qn gyakoriságokra vonatkozóan, hiszen, ha J -n tudnánk javítani, akkor az eredeti fán is. Bizonyítás: (Tétel) Indukció, n = 2



A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 , = az új fának is optimálisnak kell lennie a q1 + q2, q3, . . . , qn gyakoriságokra vonatkozóan, hiszen, ha J -n tudnánk javítani, akkor az eredeti fán is. Bizonyítás: (Tétel) Indukció, n = 2 Tegyük fel, hogy legfeljebb n - 1 betu esetén igaz =



A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 , = az új fának is optimálisnak kell lennie a q1 + q2, q3, . . . , qn gyakoriságokra vonatkozóan, hiszen, ha J -n tudnánk javítani, akkor az eredeti fán is. Bizonyítás: (Tétel) Indukció, n = 2 Tegyük fel, hogy legfeljebb n - 1 betu esetén igaz = Az indukciós feltevés szerint Opt(q1 + q2, q3, . . . , qn) = H(q1 + q2, q3, . . . , qn)



A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 , = az új fának is optimálisnak kell lennie a q1 + q2, q3, . . . , qn gyakoriságokra vonatkozóan, hiszen, ha J -n tudnánk javítani, akkor az eredeti fán is. Bizonyítás: (Tétel) Indukció, n = 2 Tegyük fel, hogy legfeljebb n - 1 betu esetén igaz = Az indukciós feltevés szerint Opt(q1 + q2, q3, . . . , qn) = H(q1 + q2, q3, . . . , qn) = Opt(q1, q2, q3, . . . , qn) = H(q1, q2, q3, . . . , qn)



A LGORITMUSELMÉLET 6.

EL OADÁS

21

Bizonyítás: Minden belso csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a leheto legnagyobb, x-nek van a fában egy y testvére, címkéik q1 és q2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q1 + q2 címkét. A fa I-értéke legyen J . = Opt(q1, q2, . . . , qn) = J - (h(x) - 1)(q1 + q2) + q1h(x) + q2h(x) = J + q 1 + q2 , = az új fának is optimálisnak kell lennie a q1 + q2, q3, . . . , qn gyakoriságokra vonatkozóan, hiszen, ha J -n tudnánk javítani, akkor az eredeti fán is. Bizonyítás: (Tétel) Indukció, n = 2 Tegyük fel, hogy legfeljebb n - 1 betu esetén igaz = Az indukciós feltevés szerint Opt(q1 + q2, q3, . . . , qn) = H(q1 + q2, q3, . . . , qn) = Opt(q1, q2, q3, . . . , qn) = H(q1, q2, q3, . . . , qn) Java animáció: Huffman-fa



Algoritmuselmélet 7. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Március 11.

A LGORITMUSELMÉLET 7.

EL OADÁS

1

Múltkori animációk
Java animáció: Hash-elés Java animáció: Huffman-fa

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betunként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betunként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S · az egybetus szavak, azaz elemei mind benne vannak S-ben;

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betunként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S · az egybetus szavak, azaz elemei mind benne vannak S-ben; · ha egy szó benne van a szótárban, akkor annak minden kezdodarabja is benne van;

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betunként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S · az egybetus szavak, azaz elemei mind benne vannak S-ben; · ha egy szó benne van a szótárban, akkor annak minden kezdodarabja is benne van; · a szótárban tárolt szavaknak fix hosszúságú kódjuk van; az x S szó kódját c(x) jelöli.

A LGORITMUSELMÉLET 7.

EL OADÁS

2

A Lempel­Ziv­Welch-módszer
A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betunként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S · az egybetus szavak, azaz elemei mind benne vannak S-ben; · ha egy szó benne van a szótárban, akkor annak minden kezdodarabja is benne van; · a szótárban tárolt szavaknak fix hosszúságú kódjuk van; az x S szó kódját c(x) jelöli.

Gyakorlatban a kódok hossza 12-15 bit.

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük · Az eredeti szöveg olvasásakor egyidoben épül, bovül az S szótár

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük · Az eredeti szöveg olvasásakor egyidoben épül, bovül az S szótár · nincs optimalizálás, de a gyakorlatban jól muködik

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük · Az eredeti szöveg olvasásakor egyidoben épül, bovül az S szótár · nincs optimalizálás, de a gyakorlatban jól muködik

A szótár egyik szokásos tárolási módja a szófa adatszerkezet.

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük · Az eredeti szöveg olvasásakor egyidoben épül, bovül az S szótár · nincs optimalizálás, de a gyakorlatban jól muködik

A szótár egyik szokásos tárolási módja a szófa adatszerkezet. Ha az olvasás során egy x S szót találunk, aminek a következo Y betuvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe.

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük · Az eredeti szöveg olvasásakor egyidoben épül, bovül az S szótár · nincs optimalizálás, de a gyakorlatban jól muködik

A szótár egyik szokásos tárolási módja a szófa adatszerkezet. Ha az olvasás során egy x S szót találunk, aminek a következo Y betuvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe. Az xY szót felvesszük az S szótárba. A szó c(xY ) kódja a legkisebb még eddig az S-ben nem szereplo kódérték lesz.

A LGORITMUSELMÉLET 7.

EL OADÁS

3

LZW kódolás
· az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk · a szavakat a szótárbeli kódokkal helyettesítjük · Az eredeti szöveg olvasásakor egyidoben épül, bovül az S szótár · nincs optimalizálás, de a gyakorlatban jól muködik

A szótár egyik szokásos tárolási módja a szófa adatszerkezet. Ha az olvasás során egy x S szót találunk, aminek a következo Y betuvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe. Az xY szót felvesszük az S szótárba. A szó c(xY ) kódja a legkisebb még eddig az S-ben nem szereplo kódérték lesz. Ezután az Y betuvel kezdodoen folytatjuk a bemeneti szöveg olvasását.

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S.

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S. (0) Olvassuk a bemeno állomány következo betujét K-ba.

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S. (0) Olvassuk a bemeno állomány következo betujét K-ba. (1) Ha az elozo olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg.

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S. (0) Olvassuk a bemeno állomány következo betujét K-ba. (1) Ha az elozo olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zK szó is S-ben van, akkor z zK, és menjünk vissza (0)-ra.

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S. (0) Olvassuk a bemeno állomány következo betujét K-ba. (1) Ha az elozo olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zK szó is S-ben van, akkor z zK, és menjünk vissza (0)-ra. (3) Különben (azaz ha zK S) írjuk ki c(z)-t, tegyük a zK szót S-be. Legyen z K, majd menjünk vissza (0)-ra.

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S. (0) Olvassuk a bemeno állomány következo betujét K-ba. (1) Ha az elozo olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zK szó is S-ben van, akkor z zK, és menjünk vissza (0)-ra. (3) Különben (azaz ha zK S) írjuk ki c(z)-t, tegyük a zK szót S-be. Legyen z K, majd menjünk vissza (0)-ra.

A c(x) kódok rögzített hosszúságúak. Ha például ez a hosszúság 12 bit, akkor az S szótárba összesen 4096 szó kerülhet. =

A LGORITMUSELMÉLET 7.

EL OADÁS

4

Legyen z egy szó típusú változó, K egy betu típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány elso betuje. Végig teljesül, hogy z S. (0) Olvassuk a bemeno állomány következo betujét K-ba. (1) Ha az elozo olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zK szó is S-ben van, akkor z zK, és menjünk vissza (0)-ra. (3) Különben (azaz ha zK S) írjuk ki c(z)-t, tegyük a zK szót S-be. Legyen z K, majd menjünk vissza (0)-ra.

A c(x) kódok rögzített hosszúságúak. Ha például ez a hosszúság 12 bit, akkor az S szótárba összesen 4096 szó kerülhet. = Ha a szótár betelt, nem bovítünk tovább, úgy folytatjuk.

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ababcbababaaaaaaa 1 2 3

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab 1 2 3 4

ababcbababaaaaaaa 1 0000



A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba 1 2 3 4 5

ababcbababaaaaaaa 12 0000 0001



A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc 1 2 3 4 5 6

ababcbababaaaaaaa 124 0000 0001 0011

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb 1 2 3 4 5 6 7

ababcbababaaaaaaa 1243 0000 0001 0011 0010

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab 1 2 3 4 5 6 7 8

ababcbababaaaaaaa 12435 0000 0001 0011 0010 0100

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab baba 1 2 3 4 5 6 7 8 9

ababcbababaaaaaaa 124358 0000 0001 0011 0010 0100 1000



A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab baba aa 1 2 3 4 5 6 7 8 9 10

ababcbababaaaaaaa 1243581 0000 0001 0011 0010 0100 1000 0000

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab baba aa aaa 1 2 3 4 5 6 7 8 9 10 11

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 0000 0001 0011 0010 0100 1000 0000 1001

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab baba aa aaa aaaa 1 2 3 4 5 6 7 8 9 10 11 12

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 0000 0001 0011 0010 0100 1000 0000 1001 1010

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab baba aa aaa aaaa 1 2 3 4 5 6 7 8 9 10 11 12

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 1 0000 0001 0011 0010 0100 1000 0000 1001 1010 0000

A LGORITMUSELMÉLET 7.

EL OADÁS

5

Példa LZW-re
Legyen = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár a b c ab ba abc cb bab baba aa aaa aaaa 1 2 3 4 5 6 7 8 9 10 11 12

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 1 0000 0001 0011 0010 0100 1000 0000 1001 1010 0000

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et.

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 =

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab =

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 c 3 1 2 4 3 5 8 1 10 11 1 ab 4 ababcba ba 5 abc 6 cb 7

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = ababcba ba 5 abc 6 cb 7

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következo betu biztos b ababcba ba 5 abc 6 cb 7

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következo betu biztos b ababcba ba 5 c(bab) = 8 abc 6 cb 7

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következo betu biztos b ababcba ba 5 c(bab) = 8 abc 6 ababcbabab cb 7

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következo betu biztos b ababcba ba 5 c(bab) = 8 abc 6 ababcbabab cb 7 Java animáció: LZW-kódolás

A LGORITMUSELMÉLET 7.

EL OADÁS

6

Dekódolás
Elvégezheto pusztán az egybetus szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez elso két jel betu kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következo szó, ami S-be került = c(ba) = 5 . . . Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következo betu biztos b ababcba ba 5 c(bab) = 8 abc 6 ababcbabab cb 7 Java animáció: LZW-kódolás Laczay Bálint féle GIF animáció

A LGORITMUSELMÉLET 7.

EL OADÁS

7

Gráfalgoritmusok
· irányított gráfok: G = (V, E)

A LGORITMUSELMÉLET 7.

EL OADÁS

7

Gráfalgoritmusok
· irányított gráfok: G = (V, E) · irányított él, irányított út, irányított kör

A LGORITMUSELMÉLET 7.

EL OADÁS

7

Gráfalgoritmusok
· irányított gráfok: G = (V, E) · irányított él, irányított út, irányított kör · élsúlyok: c(e) -- lehetnek negatívak is

A LGORITMUSELMÉLET 7.

EL OADÁS

7

Gráfalgoritmusok
· irányított gráfok: G = (V, E) · irányított él, irányított út, irányított kör · élsúlyok: c(e) -- lehetnek negatívak is
6

D
0

9

E
8 5 17 2 8

B
3

G J
3 7 3 6

8

A
9 4

F C
9

L

H
6 4

I
11

K

A LGORITMUSELMÉLET 7.

EL OADÁS

8

Adjacencia-mátrix
Definíció. A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következo ­ a V elemeivel indexelt ­ n-szer n-es mátrix: A[i, j] = 0 ha (i, j) E, 1 ha (i, j) E.

A LGORITMUSELMÉLET 7.

EL OADÁS

8

Adjacencia-mátrix
Definíció. A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következo ­ a V elemeivel indexelt ­ n-szer n-es mátrix: A[i, j] = 0 ha (i, j) E, 1 ha (i, j) E.

Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azaz A[i, j] = A[j, i] teljesül minden i, j csúcspárra).

A LGORITMUSELMÉLET 7.

EL OADÁS

8

Adjacencia-mátrix
Definíció. A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következo ­ a V elemeivel indexelt ­ n-szer n-es mátrix: A[i, j] = 0 ha (i, j) E, 1 ha (i, j) E.

Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azaz A[i, j] = A[j, i] teljesül minden i, j csúcspárra). v2 5 v1 1 1 v3 1 v4 3 5 -1 v5 A= 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0

A LGORITMUSELMÉLET 7.

EL OADÁS

9

Súlyozott adjacencia-mátrix
Ha költségek is vannak = 0 c(i, j) C[i, j] = ha i = j, ha i = j és (i, j) éle G-nek, különben.

A LGORITMUSELMÉLET 7.

EL OADÁS

9

Súlyozott adjacencia-mátrix
Ha költségek is vannak = 0 c(i, j) C[i, j] = v2 5 v1 1 1 v3 1 v4 3 5 -1 v5 C= 0 5 0 1 0 1 3 1 -1 0 5 0 ha i = j, ha i = j és (i, j) éle G-nek, különben.

A LGORITMUSELMÉLET 7.

EL OADÁS

9

Súlyozott adjacencia-mátrix
Ha költségek is vannak = 0 c(i, j) C[i, j] = v2 5 v1 1 1 v3 1 3 5 -1 v5 C= 0 5 0 1 0 1 3 1 -1 0 5 0 ha i = j, ha i = j és (i, j) éle G-nek, különben.

v4 Hátránya = a mérete (n2 tömbelem) teljesen független az élek számától.

A LGORITMUSELMÉLET 7.

EL OADÁS

10

Éllistás megadás
G = (V, E) gráf minden csúcsához egy lista tartozik.

A LGORITMUSELMÉLET 7.

EL OADÁS

10

Éllistás megadás
G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-bol kimeno éleket, és ha kell, ezek súlyát is.

A LGORITMUSELMÉLET 7.

EL OADÁS

10

Éllistás megadás
G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-bol kimeno éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg.

A LGORITMUSELMÉLET 7.

EL OADÁS

10

Éllistás megadás
G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-bol kimeno éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1-bol kimeno élek cellái
¨ % ¨ ¨ ¨¨ ¨ c E

1

E

i

E r r r rE

c E j c(i,j ) E

egy tipikus cella n
E r r r



A LGORITMUSELMÉLET 7.

EL OADÁS

10

Éllistás megadás
G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-bol kimeno éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1-bol kimeno élek cellái
¨ % ¨ ¨ ¨¨ ¨ c E

1

E

i

E r r r rE

c E j c(i,j ) E

Az (i, j) élnek megfelelo cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következo cellára, és esetleg még egyet az elozore is.

egy tipikus cella n
E r r r



A LGORITMUSELMÉLET 7.

EL OADÁS

10

Éllistás megadás
G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-bol kimeno éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1-bol kimeno élek cellái
¨ % ¨ ¨ ¨¨ ¨ c E

1

E

i

E r r r rE

c E j c(i,j ) E

egy tipikus cella n
E r r r



Az (i, j) élnek megfelelo cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következo cellára, és esetleg még egyet az elozore is. Tárigény: n + e cella, Irányítatlan gráfoknál: n + 2e cella

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba?

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe?

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között?

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összeköto (nem feltétlenül egyszeru) u útjának a hossza az úton szereplo élek súlyainak összege. v irányított

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összeköto (nem feltétlenül egyszeru) u v irányított útjának a hossza az úton szereplo élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között.

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összeköto (nem feltétlenül egyszeru) u v irányított útjának a hossza az úton szereplo élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: -- 0, ha u = v;

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összeköto (nem feltétlenül egyszeru) u v irányított útjának a hossza az úton szereplo élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: -- 0, ha u = v; -- , ha nincs u v út

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összeköto (nem feltétlenül egyszeru) u v irányított útjának a hossza az úton szereplo élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: -- 0, ha u = v; -- , ha nincs u v út -- egyébként pedig a legrövidebb u v út hossza.

A LGORITMUSELMÉLET 7.

EL OADÁS

11

A legrövidebb utak problémája
Legyen adott egy G = (V, E) irányított gráf a c(f ), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összeköto (nem feltétlenül egyszeru) u v irányított útjának a hossza az úton szereplo élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: -- 0, ha u = v; -- , ha nincs u v út -- egyébként pedig a legrövidebb u v út hossza. Vigyázat, itt u és v nem felcserélheto: ha az egyik csúcs valamilyen távol van a másiktól, akkor nem biztos, hogy a másik is ugyanolyan távol van az egyiktol!

A LGORITMUSELMÉLET 7.

EL OADÁS

12

Dijkstra módszere
Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R+ nemnegatív értéku súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = · Egy a G csúcsaival indexelt tömb

A LGORITMUSELMÉLET 7.

EL OADÁS

12

Dijkstra módszere
Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R+ nemnegatív értéku súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = · Egy a G csúcsaival indexelt tömb · az eljárás során addig megismert legrövidebb s v utak hossza

A LGORITMUSELMÉLET 7.

EL OADÁS

12

Dijkstra módszere
Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R+ nemnegatív értéku súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = · Egy a G csúcsaival indexelt tömb · az eljárás során addig megismert legrövidebb s · Felso közelítése a keresett d(s, v) távolságnak v utak hossza

A LGORITMUSELMÉLET 7.

EL OADÁS

12

Dijkstra módszere
Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R+ nemnegatív értéku súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = · Egy a G csúcsaival indexelt tömb · az eljárás során addig megismert legrövidebb s · Felso közelítése a keresett d(s, v) távolságnak · A közelítést lépésrol lépésre finomítjuk, végül d(s, v)-t érjük el. v utak hossza

A LGORITMUSELMÉLET 7.

EL OADÁS

13

Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: 0 c(v, w) C[v, w] = ha v = w, ha v = w és (v, w) éle G-nek, különben.

Kezdetben D[v] := C[s, v] minden v V csúcsra.

A LGORITMUSELMÉLET 7.

EL OADÁS

13

Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: 0 c(v, w) C[v, w] = ha v = w, ha v = w és (v, w) éle G-nek, különben.

Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális

A LGORITMUSELMÉLET 7.

EL OADÁS

13

Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: 0 c(v, w) C[v, w] = ha v = w, ha v = w és (v, w) éle G-nek, különben.

Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális Biztos, hogy az egyetlen (s, x) élbol álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!).

A LGORITMUSELMÉLET 7.

EL OADÁS

13

Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: 0 c(v, w) C[v, w] = ha v = w, ha v = w és (v, w) éle G-nek, különben.

Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális Biztos, hogy az egyetlen (s, x) élbol álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!). A KÉSZ halmaz azokat a csúcsokat tartalmazza, amelyeknek s-tol való távolságát már tudjuk.

A LGORITMUSELMÉLET 7.

EL OADÁS

13

Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: 0 c(v, w) C[v, w] = ha v = w, ha v = w és (v, w) éle G-nek, különben.

Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális Biztos, hogy az egyetlen (s, x) élbol álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!). A KÉSZ halmaz azokat a csúcsokat tartalmazza, amelyeknek s-tol való távolságát már tudjuk. = x-et betehetjük (s mellé) a KÉSZ halmazba.

A LGORITMUSELMÉLET 7.

EL OADÁS

14

Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w].

x C[x, w] s w

A LGORITMUSELMÉLET 7.

EL OADÁS

14

Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w].

x C[x, w] s w
Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális.

A LGORITMUSELMÉLET 7.

EL OADÁS

14

Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w].

x C[x, w] s w
Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális. Ezen csúcs D[ ]-értéke már az s-tol való távolságát tartalmazza.

A LGORITMUSELMÉLET 7.

EL OADÁS

14

Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w].

x C[x, w] s w
Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális. Ezen csúcs D[ ]-értéke már az s-tol való távolságát tartalmazza. Majd megint a D[ ]-értékeket módosítjuk, és így tovább, míg minden csúcs be nem kerül a KÉSZ halmazba.

A LGORITMUSELMÉLET 7.

EL OADÁS

15

Dijkstra algoritmusa adjacencia-mátrixszal
(1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság elso közelítése )

A LGORITMUSELMÉLET 7.

EL OADÁS

15

Dijkstra algoritmusa adjacencia-mátrixszal
(1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság elso közelítése ) (2) for i := 1 to n - 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be.

A LGORITMUSELMÉLET 7.

EL OADÁS

15

Dijkstra algoritmusa adjacencia-mátrixszal
(1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság elso közelítése ) (2) for i := 1 to n - 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be. (3) for minden w V \ KÉSZ csúcsra do D[w] := min{D[w], D[x] + C[x, w]} ( d(s, w) új közelítése ) end

A LGORITMUSELMÉLET 7.

EL OADÁS

15

Dijkstra algoritmusa adjacencia-mátrixszal
(1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság elso közelítése ) (2) for i := 1 to n - 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be. (3) for minden w V \ KÉSZ csúcsra do D[w] := min{D[w], D[x] + C[x, w]} ( d(s, w) új közelítése ) end Definíció. különleges út: egy s z irányított út különleges, ha a z végpontot kivéve minden pontja a KÉSZ halmazban van. A különleges úttal elérheto pontok éppen a KÉSZ-bol egyetlen éllel elérheto pontok.

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van.

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külso (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza.

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külso (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külso (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval (2) elott

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külso (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval (2) elott Tegyük fel, hogy igaz a j-edik iteráció után. Belátjuk, hogy igaz a j + 1-edik iteráció után is.

A LGORITMUSELMÉLET 7.

EL OADÁS

16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következok: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külso (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval (2) elott Tegyük fel, hogy igaz a j-edik iteráció után. Belátjuk, hogy igaz a j + 1-edik iteráció után is. Tegyük fel, hogy az algoritmus a j + 1. iterációs lépésben az x csúcsot választja a KÉSZ-be.

A LGORITMUSELMÉLET 7.

EL OADÁS

17

x s y

A LGORITMUSELMÉLET 7.

EL OADÁS

17

x Indirekt: mi van, ha D[x] nem a d(s, x) s y
távolságot jelöli, azaz van ennél rövidebb s x út?

A LGORITMUSELMÉLET 7.

EL OADÁS

17

x Indirekt: mi van, ha D[x] nem a d(s, x) s y
távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út ,,eleje" különleges = D[y] d(x, s) < D[x]

A LGORITMUSELMÉLET 7.

EL OADÁS

17

x Indirekt: mi van, ha D[x] nem a d(s, x) s y
távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út ,,eleje" különleges = D[y] d(x, s) < D[x]

(b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésbol

A LGORITMUSELMÉLET 7.

EL OADÁS

17

x Indirekt: mi van, ha D[x] nem a d(s, x) s y
távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út ,,eleje" különleges = D[y] d(x, s) < D[x]

(b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésbol Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1. iteráció elott (itt a (c)-re vonatkozó indukciós feltevést használtuk)

A LGORITMUSELMÉLET 7.

EL OADÁS

17

x Indirekt: mi van, ha D[x] nem a d(s, x) s y
távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út ,,eleje" különleges = D[y] d(x, s) < D[x]

(b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésbol Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1. iteráció elott (itt a (c)-re vonatkozó indukciós feltevést használtuk) annak végeztével az út minden pontja KÉSZ-beli lesz.

A LGORITMUSELMÉLET 7.

EL OADÁS

18

x s w

A LGORITMUSELMÉLET 7.

EL OADÁS

18

x s w

(c) A j + 1. iteráció elott D[w] = min {d(s, v) + C[v, w]}. vKÉSZ\{x}

A LGORITMUSELMÉLET 7.

EL OADÁS

18

x s w

(c) A j + 1. iteráció elott D[w] = min {d(s, v) + C[v, w]}. vKÉSZ\{x} min {d(s, v) + C[v, w]}. vKÉSZ

Utána

D[w] =

A LGORITMUSELMÉLET 7.

EL OADÁS

18

x s w

(c) A j + 1. iteráció elott D[w] = min {d(s, v) + C[v, w]}. vKÉSZ\{x}

Utána

min {d(s, v) + C[v, w]}. vKÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb D[w] =

A LGORITMUSELMÉLET 7.

EL OADÁS

18

x s w

(c) A j + 1. iteráció elott D[w] = min {d(s, v) + C[v, w]}. vKÉSZ\{x}

min {d(s, v) + C[v, w]}. vKÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb Lépészám: (2) ciklus O(n), ez lefut n - 1-szer = O(n2) Utána D[w] =

A LGORITMUSELMÉLET 7.

EL OADÁS

18

x s w

(c) A j + 1. iteráció elott D[w] = min {d(s, v) + C[v, w]}. vKÉSZ\{x}

min {d(s, v) + C[v, w]}. vKÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb Lépészám: (2) ciklus O(n), ez lefut n - 1-szer = O(n2) Utána D[w] =

Algoritmuselmélet 8. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Március 12.

A LGORITMUSELMÉLET 8.

EL OADÁS

1

Dijkstra animációk
Java animáció: Dijkstra-algoritmus, másik, harmadik

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk.

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint.

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni.

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n).

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n). Java animáció: Dijkstra-algoritmus

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n). Java animáció: Dijkstra-algoritmus Suru gráfokra = d-kupac.

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n). Java animáció: Dijkstra-algoritmus Suru gráfokra = d-kupac. = O(n + nd logd n + e logd n)

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n). Java animáció: Dijkstra-algoritmus Suru gráfokra = d-kupac. = O(n + nd logd n + e logd n) Ha n1,5 e n2 és legyen d = e/n

= d



n = logd n 2.

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n). Java animáció: Dijkstra-algoritmus Suru gráfokra = d-kupac. = O(n + nd logd n + e logd n) 1, 5 2 Ha n e n és legyen d = e/n = d n = logd n 2. = O(n+nd logd n+e logd n) = O(n+nd+e) = O(n+n·e/n+e) = O(e).

A LGORITMUSELMÉLET 8.

EL OADÁS

2

Dijkstra algoritmusa éllistával
Ha kevés él van = gráfot éllistával tároljuk. V \KÉSZ csúcsait kupacba rendezve tartjuk a D[ ] érték szerint. Kupacépítés O(n) költség, (2) ciklusban minimumkeresést O(log n) költségu MINTÖR A D[ ] értékek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. = Összidoigény O((n + e) log n). Java animáció: Dijkstra-algoritmus Suru gráfokra = d-kupac. = O(n + nd logd n + e logd n) 1, 5 2 Ha n e n és legyen d = e/n = d n = logd n 2. = O(n+nd logd n+e logd n) = O(n+nd+e) = O(n+n·e/n+e) = O(e). Dijkstra irányítatlan gráfokra is muködik.

A LGORITMUSELMÉLET 8.

EL OADÁS

3

A legrövidebb utak nyomon-követése
Minden pontra tárolunk és karbantartunk egy P [x] csúcsot is, ami megadja egy az eddig ismert hozzá vezeto legrövidebb úton az utolsó elotti csúcsot.

A LGORITMUSELMÉLET 8.

EL OADÁS

3

A legrövidebb utak nyomon-követése
Minden pontra tárolunk és karbantartunk egy P [x] csúcsot is, ami megadja egy az eddig ismert hozzá vezeto legrövidebb úton az utolsó elotti csúcsot. Kezdetben P [v] := s minden v V -re.

A LGORITMUSELMÉLET 8.

EL OADÁS

3

A legrövidebb utak nyomon-követése
Minden pontra tárolunk és karbantartunk egy P [x] csúcsot is, ami megadja egy az eddig ismert hozzá vezeto legrövidebb úton az utolsó elotti csúcsot. Kezdetben P [v] := s minden v V -re. = (3) ciklus belsejében, ha egy külso w csúcs D[w] értékét megváltoztatjuk, akkor P [w] := x. Lépésszám: O(n2)

A LGORITMUSELMÉLET 8.

EL OADÁS

4

A Bellman--Ford-módszer
Feladat. Egy pontból induló legrövidebb utak (hosszának) meghatározására, ha bizonyos élsúlyok negatívak. De feltesszük, hogy G nem tartalmaz negatív összhosszúságú irányított kört.

A LGORITMUSELMÉLET 8.

EL OADÁS

4

A Bellman--Ford-módszer
Feladat. Egy pontból induló legrövidebb utak (hosszának) meghatározására, ha bizonyos élsúlyok negatívak. De feltesszük, hogy G nem tartalmaz negatív összhosszúságú irányított kört.

Ha van negatív összhosszúságú irányított kör, akkor a legrövidebb út .

A LGORITMUSELMÉLET 8.

EL OADÁS

4

A Bellman--Ford-módszer
Feladat. Egy pontból induló legrövidebb utak (hosszának) meghatározására, ha bizonyos élsúlyok negatívak. De feltesszük, hogy G nem tartalmaz negatív összhosszúságú irányított kört.

Ha van negatív összhosszúságú irányított kör, akkor a legrövidebb út .

1 -1 -1

1 -1

Legyen a G = (V, E) súlyozott élu irányított gráf a C adjacencia-mátrixával adott az i, j helyzetu elem a c(i, j) élsúly, ha i j éle G-nek, a többi elem pedig ).

A LGORITMUSELMÉLET 8.

EL OADÁS

4

A Bellman--Ford-módszer
Feladat. Egy pontból induló legrövidebb utak (hosszának) meghatározására, ha bizonyos élsúlyok negatívak. De feltesszük, hogy G nem tartalmaz negatív összhosszúságú irányított kört.

Ha van negatív összhosszúságú irányított kör, akkor a legrövidebb út .

1 -1 -1

1 -1

Legyen a G = (V, E) súlyozott élu irányított gráf a C adjacencia-mátrixával adott az i, j helyzetu elem a c(i, j) élsúly, ha i j éle G-nek, a többi elem pedig ). Legyen V = {1, 2, . . . , n} és s = 1 = s-bol induló utakat keressük

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése.

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak.

()

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1 A T [1, j] sor kitöltése =

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A T [1, j] sor kitöltése = T [1, j] = C[1, j]

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A T [1, j] sor kitöltése = T [1, j] = C[1, j] Tegyük fel ezután, hogy az i-edik sort már kitöltöttük = T [i, 1], T [i, 2], . . . , T [i, n] értékekre () igaz.

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A T [1, j] sor kitöltése = T [1, j] = C[1, j] Tegyük fel ezután, hogy az i-edik sort már kitöltöttük = T [i, 1], T [i, 2], . . . , T [i, n] értékekre () igaz. =

()

T [i + 1, j] := min{T [i, j], min{T [i, k] + C[k, j]}}
k =j

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A T [1, j] sor kitöltése = T [1, j] = C[1, j] Tegyük fel ezután, hogy az i-edik sort már kitöltöttük = T [i, 1], T [i, 2], . . . , T [i, n] értékekre () igaz. =

()

T [i + 1, j] := min{T [i, j], min{T [i, k] + C[k, j]}}
k =j

= Ugyanis egy legfeljebb i + 1 élbol álló = 1

j út kétféle lehet:

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A T [1, j] sor kitöltése = T [1, j] = C[1, j] Tegyük fel ezután, hogy az i-edik sort már kitöltöttük = T [i, 1], T [i, 2], . . . , T [i, n] értékekre () igaz. =

()

T [i + 1, j] := min{T [i, j], min{T [i, k] + C[k, j]}}
k =j

= Ugyanis egy legfeljebb i + 1 élbol álló = 1 j út kétféle lehet: (a) Az útnak kevesebb, mint i + 1 éle van. Ekkor ennek a hossza szerepel T [i, j]-ben.

A LGORITMUSELMÉLET 8.

EL OADÁS

5

Módszer = egy T [1 : n - 1, 1 : n] táblázat sorról sorra haladó kitöltése. a legrövidebb olyan 1 j irányított utak hossza, T [i, j] = melyek legfeljebb i élbol állnak. j utak hossz

()

= T [n - 1, j] a legrövidebb 1

A T [1, j] sor kitöltése = T [1, j] = C[1, j] Tegyük fel ezután, hogy az i-edik sort már kitöltöttük = T [i, 1], T [i, 2], . . . , T [i, n] értékekre () igaz. =

()

T [i + 1, j] := min{T [i, j], min{T [i, k] + C[k, j]}}
k =j

= Ugyanis egy legfeljebb i + 1 élbol álló = 1 j út kétféle lehet: (a) Az útnak kevesebb, mint i + 1 éle van. Ekkor ennek a hossza szerepel T [i, j]-ben. (b) Az út éppen i + 1 élbol áll. Legyen l a út utolsó elotti pontja. Ekkor a út 1 l szakasza i élbol áll, és minimális hosszúságú a legfeljebb i élu 1 l utak között = hossza T [i, l] + C[l, j].

A LGORITMUSELMÉLET 8.

EL OADÁS

6

Lépésszám: Egy érték () szerinti számítása n - 1 összeadás és ugyanennyi összehasonlítás (minimumkeresés n elem közül)

A LGORITMUSELMÉLET 8.

EL OADÁS

6

Lépésszám: Egy érték () szerinti számítása n - 1 összeadás és ugyanennyi összehasonlítás (minimumkeresés n elem közül) = O(n3) muveletet

A LGORITMUSELMÉLET 8.

EL OADÁS

6

Lépésszám: Egy érték () szerinti számítása n - 1 összeadás és ugyanennyi összehasonlítás (minimumkeresés n elem közül) = O(n3) muveletet Java animáció: Bellman-Ford algoritmus

A LGORITMUSELMÉLET 8.

EL OADÁS

7

Floyd módszere
Feladat. Miként lehet egy irányított gráfban az összes pontpár távolságát meghatározni?

A LGORITMUSELMÉLET 8.

EL OADÁS

7

Floyd módszere
Feladat. Miként lehet egy irányított gráfban az összes pontpár távolságát meghatározni? 0 élsúlyok = ha a Dijkstra-algoritmust minden csúcsra mint forrásra lefuttatjuk = nO(n2) = O(n3)

A LGORITMUSELMÉLET 8.

EL OADÁS

7

Floyd módszere
Feladat. Miként lehet egy irányított gráfban az összes pontpár távolságát meghatározni? 0 élsúlyok = ha a Dijkstra-algoritmust minden csúcsra mint forrásra lefuttatjuk = nO(n2) = O(n3) Van olyan, ami nem lassabb és muködik negatív élsúlyokra is, ha nincs negatív összsúlyú kör.

A LGORITMUSELMÉLET 8.

EL OADÁS

7

Floyd módszere
Feladat. Miként lehet egy irányított gráfban az összes pontpár távolságát meghatározni? 0 élsúlyok = ha a Dijkstra-algoritmust minden csúcsra mint forrásra lefuttatjuk = nO(n2) = O(n3) Van olyan, ami nem lassabb és muködik negatív élsúlyokra is, ha nincs negatív összsúlyú kör. Feladat. Adott egy G = (V, E) irányított gráf, és egy c : E R súlyfüggvény úgy, hogy a gráfban nincs negatív összsúlyú irányított kör. Határozzuk meg az összes v, w V rendezett pontpárra a d(v, w) távolságot.

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott.

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz.

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz. Kezdetben F [i, j] := C[i, j].

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz. Kezdetben F [i, j] := C[i, j]. = ciklus = k-adik lefutása után F [i, j] azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülso pontjai k-nál nem nagyobb sorszámúak

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz. Kezdetben F [i, j] := C[i, j]. = ciklus = k-adik lefutása után F [i, j] azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülso pontjai k-nál nem nagyobb sorszámúak Az új Fk[i, j] értékeket kiszámíthatjuk ha ismerjük Fk-1[i, j]-t i, j-re

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz. Kezdetben F [i, j] := C[i, j]. = ciklus = k-adik lefutása után F [i, j] azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülso pontjai k-nál nem nagyobb sorszámúak Az új Fk[i, j] értékeket kiszámíthatjuk ha ismerjük Fk-1[i, j]-t i, j-re Egy legrövidebb i j út, melyen a közbülso pontok sorszáma legfeljebb k, vagy tartalmazza a k csúcsot vagy nem.

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz. Kezdetben F [i, j] := C[i, j]. = ciklus = k-adik lefutása után F [i, j] azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülso pontjai k-nál nem nagyobb sorszámúak Az új Fk[i, j] értékeket kiszámíthatjuk ha ismerjük Fk-1[i, j]-t i, j-re Egy legrövidebb i j út, melyen a közbülso pontok sorszáma legfeljebb k, vagy tartalmazza a k csúcsot vagy nem. -- igen = F [i, j] := F [i, k] + F [k, j]

i k j

A LGORITMUSELMÉLET 8.

EL OADÁS

8

A G gráf a C adjacencia-mátrixával adott. Egy szintén n × n-es F mátrixot fogunk használni a számításhoz. Kezdetben F [i, j] := C[i, j]. = ciklus = k-adik lefutása után F [i, j] azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülso pontjai k-nál nem nagyobb sorszámúak Az új Fk[i, j] értékeket kiszámíthatjuk ha ismerjük Fk-1[i, j]-t i, j-re Egy legrövidebb i j út, melyen a közbülso pontok sorszáma legfeljebb k, vagy tartalmazza a k csúcsot vagy nem. -- igen = F [i, j] := F [i, k] + F [k, j]

i k j

-- nem = Fk[i, j] = Fk-1[i, j]

A LGORITMUSELMÉLET 8.

EL OADÁS

9

FLOYD algoritmusa
(1) for i := 1 to n do for j := 1 to n do F [i, j] := C[i, j] (2) for k := 1 to n do for i := 1 to n do for j := 1 to n do F [i, j] := min{F [i, j], F [i, k] + F [k, j]}

A LGORITMUSELMÉLET 8.

EL OADÁS

9

FLOYD algoritmusa
(1) for i := 1 to n do for j := 1 to n do F [i, j] := C[i, j] (2) for k := 1 to n do for i := 1 to n do for j := 1 to n do F [i, j] := min{F [i, j], F [i, k] + F [k, j]} Tétel. F [i, j] a (2)-beli iteráció k-adik menete után azon legrövidebb i j utak hosszát tartalmazza, amelyek belso csúcsai 1, 2, . . . , k közül valók.

A LGORITMUSELMÉLET 8.

EL OADÁS

9

FLOYD algoritmusa
(1) for i := 1 to n do for j := 1 to n do F [i, j] := C[i, j] (2) for k := 1 to n do for i := 1 to n do for j := 1 to n do F [i, j] := min{F [i, j], F [i, k] + F [k, j]} Tétel. F [i, j] a (2)-beli iteráció k-adik menete után azon legrövidebb i j utak hosszát tartalmazza, amelyek belso csúcsai 1, 2, . . . , k közül valók. k = n = F [i, j] = d(i, j)

A LGORITMUSELMÉLET 8.

EL OADÁS

9

FLOYD algoritmusa
(1) for i := 1 to n do for j := 1 to n do F [i, j] := C[i, j] (2) for k := 1 to n do for i := 1 to n do for j := 1 to n do F [i, j] := min{F [i, j], F [i, k] + F [k, j]} Tétel. F [i, j] a (2)-beli iteráció k-adik menete után azon legrövidebb i j utak hosszát tartalmazza, amelyek belso csúcsai 1, 2, . . . , k közül valók. k = n = F [i, j] = d(i, j) Lépésszám: n-szer megyünk végig a táblázaton, minden helyen O(1) lépés = O(n3) Java animáció: Floyd algoritmus

A LGORITMUSELMÉLET 8.

EL OADÁS

10

A legrövidebb utak nyomon-követése
Menet közben karbantartunk egy n × n-esP tömböt.

A LGORITMUSELMÉLET 8.

EL OADÁS

10

A legrövidebb utak nyomon-követése
Menet közben karbantartunk egy n × n-esP tömböt. Kezdetben P [i, j] := 0.

A LGORITMUSELMÉLET 8.

EL OADÁS

10

A legrövidebb utak nyomon-követése
Menet közben karbantartunk egy n × n-esP tömböt. Kezdetben P [i, j] := 0. Ha egy F [i, j] értéket megváltoztatunk, mert találtunk egy k-n átmeno rövidebb utat, akkor P [i, j] := k.

A LGORITMUSELMÉLET 8.

EL OADÁS

10

A legrövidebb utak nyomon-követése
Menet közben karbantartunk egy n × n-esP tömböt. Kezdetben P [i, j] := 0. Ha egy F [i, j] értéket megváltoztatunk, mert találtunk egy k-n átmeno rövidebb utat, akkor P [i, j] := k. = Végül P [i, j] egy legrövidebb i j út ,,középso" csúcsát fogja tartalmazni.

A LGORITMUSELMÉLET 8.

EL OADÁS

10

A legrövidebb utak nyomon-követése
Menet közben karbantartunk egy n × n-esP tömböt. Kezdetben P [i, j] := 0. Ha egy F [i, j] értéket megváltoztatunk, mert találtunk egy k-n átmeno rövidebb utat, akkor P [i, j] := k. = Végül P [i, j] egy legrövidebb i j út ,,középso" csúcsát fogja tartalmazni. i j út összeállítása rekurzív = procedure legrövidebb út(i, j:csúcs); var k:csúcs; begin k := P [i, j]; if k = 0 then return; legrövidebb út(i, k); kiír(k); legrövidebb út(k, j) end;

A LGORITMUSELMÉLET 8.

EL OADÁS

11

Tranzitív lezárás
Bemenet: G = (V, E) irányított gráf. Csak arra vagyunk kíváncsiak, hogy mely pontok között vezet irányított út.

A LGORITMUSELMÉLET 8.

EL OADÁS

11

Tranzitív lezárás
Bemenet: G = (V, E) irányított gráf. Csak arra vagyunk kíváncsiak, hogy mely pontok között vezet irányított út. Floyd = ha a végén F [i, j] = , akkor van út, különben nincs.

A LGORITMUSELMÉLET 8.

EL OADÁS

11

Tranzitív lezárás
Bemenet: G = (V, E) irányított gráf. Csak arra vagyunk kíváncsiak, hogy mely pontok között vezet irányított út. Floyd = ha a végén F [i, j] = , akkor van út, különben nincs. Kicsit egyszerubb korábbi algoritmus: S. Warshall

A LGORITMUSELMÉLET 8.

EL OADÁS

11

Tranzitív lezárás
Bemenet: G = (V, E) irányított gráf. Csak arra vagyunk kíváncsiak, hogy mely pontok között vezet irányított út. Floyd = ha a végén F [i, j] = , akkor van út, különben nincs. Kicsit egyszerubb korábbi algoritmus: S. Warshall Definíció. [tranzitív lezárt] Legyen G = (V, E) egy irányított gráf, A az adjacencia-mátrixa. Legyen továbbá T a következo n × n-es mátrix: T [i, j] = 1 0 ha i-bol j elérheto irányított úttal; különben.

Ekkor a T mátrixot ­ illetve az általa meghatározott gráfot ­ az A mátrix ­ illetve az általa meghatározott G gráf ­ tranzitív lezártjának hívjuk.

A LGORITMUSELMÉLET 8.

EL OADÁS

11

Tranzitív lezárás
Bemenet: G = (V, E) irányított gráf. Csak arra vagyunk kíváncsiak, hogy mely pontok között vezet irányított út. Floyd = ha a végén F [i, j] = , akkor van út, különben nincs. Kicsit egyszerubb korábbi algoritmus: S. Warshall Definíció. [tranzitív lezárt] Legyen G = (V, E) egy irányított gráf, A az adjacencia-mátrixa. Legyen továbbá T a következo n × n-es mátrix: T [i, j] = 1 0 ha i-bol j elérheto irányított úttal; különben.

Ekkor a T mátrixot ­ illetve az általa meghatározott gráfot ­ az A mátrix ­ illetve az általa meghatározott G gráf ­ tranzitív lezártjának hívjuk. Feladat. Adott a (Boole-mátrixként értelmezett) A adjacencia-mátrixával a G = (V, E) irányított gráf. Adjuk meg a G tranzitív lezártját.

A LGORITMUSELMÉLET 8.

EL OADÁS

12

Warhall algoritmus
(1) ciklusban a kezdoértékek beállítása helyett T [i, j] := 1 0 ha i = j vagy A[i, j] = 1, különben.

A LGORITMUSELMÉLET 8.

EL OADÁS

12

Warhall algoritmus
(1) ciklusban a kezdoértékek beállítása helyett T [i, j] := 1 0 ha i = j vagy A[i, j] = 1, különben.

A (2) ciklusban F értékeinek változtatása helyett (ugyanazt megfogalmazva logikai muveletekkel) (+) T [i, j] := T [i, j] (T [i, k] T [k, j]).

A LGORITMUSELMÉLET 8.

EL OADÁS

12

Warhall algoritmus
(1) ciklusban a kezdoértékek beállítása helyett T [i, j] := 1 0 ha i = j vagy A[i, j] = 1, különben.

A (2) ciklusban F értékeinek változtatása helyett (ugyanazt megfogalmazva logikai muveletekkel) (+) T [i, j] := T [i, j] (T [i, k] T [k, j]).

Bizonyítás ugyanúgy.

A LGORITMUSELMÉLET 8.

EL OADÁS

12

Warhall algoritmus
(1) ciklusban a kezdoértékek beállítása helyett T [i, j] := 1 0 ha i = j vagy A[i, j] = 1, különben.

A (2) ciklusban F értékeinek változtatása helyett (ugyanazt megfogalmazva logikai muveletekkel) (+) T [i, j] := T [i, j] (T [i, k] T [k, j]).

Bizonyítás ugyanúgy. Lépésszám: O(n3)

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }.

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }. A v csúcs centruma G-nek, ha e(v) minimális az összes v V között.

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }. A v csúcs centruma G-nek, ha e(v) minimális az összes v V között. Feladat. Keressük meg a G gráf centrumát.

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }. A v csúcs centruma G-nek, ha e(v) minimális az összes v V között. Feladat. Keressük meg a G gráf centrumát. Algoritmus centrum keresésére:

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }. A v csúcs centruma G-nek, ha e(v) minimális az összes v V között. Feladat. Keressük meg a G gráf centrumát. Algoritmus centrum keresésére: (1) Eloször Floyd módszerével kiszámítjuk a G-beli pontpárok közötti távolságokat. = O(n3) muvelet

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }. A v csúcs centruma G-nek, ha e(v) minimális az összes v V között. Feladat. Keressük meg a G gráf centrumát. Algoritmus centrum keresésére: (1) Eloször Floyd módszerével kiszámítjuk a G-beli pontpárok közötti távolságokat. = O(n3) muvelet (2) Az elozo lépésben kapott F mátrix minden oszlopában meghatározzuk a maximális értéket ( = e(v)). = n-szer keresünk maximumot n elem közül = összesen O(n2).

A LGORITMUSELMÉLET 8.

EL OADÁS

13

Alkalmazás Floyd módszerére
A súlyozott élu G irányított gráf v csúcsára legyen e(v) = max{d(w, v) : w V }. A v csúcs centruma G-nek, ha e(v) minimális az összes v V között. Feladat. Keressük meg a G gráf centrumát. Algoritmus centrum keresésére: (1) Eloször Floyd módszerével kiszámítjuk a G-beli pontpárok közötti távolságokat. = O(n3) muvelet (2) Az elozo lépésben kapott F mátrix minden oszlopában meghatározzuk a maximális értéket ( = e(v)). = n-szer keresünk maximumot n elem közül = összesen O(n2). (3) Végül megkeressük az n darab e(v) érték minimumát. = O(n).

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS)

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS) Pl. lámpagyújtogató algoritmus

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS) Pl. lámpagyújtogató algoritmus

Mélységi keresés
Mohó menetelés, addig megyünk elore, amíg tudunk, csak aztán fordulunk vissza.

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS) Pl. lámpagyújtogató algoritmus

Mélységi keresés
Mohó menetelés, addig megyünk elore, amíg tudunk, csak aztán fordulunk vissza. Java animáció: Mélységi keresés

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS) Pl. lámpagyújtogató algoritmus

Mélységi keresés
Mohó menetelés, addig megyünk elore, amíg tudunk, csak aztán fordulunk vissza. Java animáció: Mélységi keresés G = (V, E) egy irányított gráf, ahol V = {1, . . . , n}.

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS) Pl. lámpagyújtogató algoritmus

Mélységi keresés
Mohó menetelés, addig megyünk elore, amíg tudunk, csak aztán fordulunk vissza. Java animáció: Mélységi keresés G = (V, E) egy irányított gráf, ahol V = {1, . . . , n}. L[v] a v csúcs éllistája (1 v n).

A LGORITMUSELMÉLET 8.

EL OADÁS

14

Mélységi bejárás
Gráf bejárás = minden pontot felsorolunk, bejárunk Mélységi bejárás (depth-first-search, DFS), Szélességi bejárás (breadth-first-search, BFS) Pl. lámpagyújtogató algoritmus

Mélységi keresés
Mohó menetelés, addig megyünk elore, amíg tudunk, csak aztán fordulunk vissza. Java animáció: Mélységi keresés G = (V, E) egy irányított gráf, ahol V = {1, . . . , n}. L[v] a v csúcs éllistája (1 v n). bejárva[1 : n] logikai vektor = jártunk-e már ott

A LGORITMUSELMÉLET 8.

EL OADÁS

15

Mélységi keresés algoritmusa
procedure bejár ( elvégzi a G irányított gráf mélységi bejárását ) begin for v := 1 to n do bejárva[v] := hamis; for v := 1 to n do if bejárva[v] = hamis then mb(v) end

A LGORITMUSELMÉLET 8.

EL OADÁS

15

Mélységi keresés algoritmusa
procedure bejár ( elvégzi a G irányított gráf mélységi bejárását ) begin for v := 1 to n do bejárva[v] := hamis; for v := 1 to n do if bejárva[v] = hamis then mb(v) end procedure mb (v: csúcs) var w: csúcs; begin (1) bejárva[v] := igaz; ( meggyújtjuk a lámpát ) for minden L[v]-beli w csúcsra do (2) if bejárva[w] = hamis then mb(w) ( megyünk a következo még sötét lámpához ) end

A LGORITMUSELMÉLET 8.

EL OADÁS

15

Mélységi keresés algoritmusa
procedure bejár ( elvégzi a G irányított gráf mélységi bejárását ) begin for v := 1 to n do bejárva[v] := hamis; for v := 1 to n do if bejárva[v] = hamis then mb(v) end procedure mb (v: csúcs) var w: csúcs; begin (1) bejárva[v] := igaz; ( meggyújtjuk a lámpát ) for minden L[v]-beli w csúcsra do (2) if bejárva[w] = hamis then mb(w) ( megyünk a következo még sötét lámpához ) end Lépésszám: O(n + e)Mélységi számok és befejezési számok

A LGORITMUSELMÉLET 8.

EL OADÁS

16

Definíció. [mélységi számozás] A G irányított gráf csúcsainak egy mélységi számozása a gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy az mb eljárás (1) sorában a csúcsok közül hányadikként állítottuk bejárva[v] értékét igaz-ra. A v csúcs mélységi számát mszám[v] jelöli.

A LGORITMUSELMÉLET 8.

EL OADÁS

16

Definíció. [mélységi számozás] A G irányított gráf csúcsainak egy mélységi számozása a gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy az mb eljárás (1) sorában a csúcsok közül hányadikként állítottuk bejárva[v] értékét igaz-ra. A v csúcs mélységi számát mszám[v] jelöli. Definíció. [befejezési számozás] A G irányított gráf csúcsainak egy befejezési számozása a gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy a csúcsok közül hányadikként ért véget az mb(v) hívás. A v csúcs befejezési számát bszám[v] jelöli.

A LGORITMUSELMÉLET 8.

EL OADÁS

16

Definíció. [mélységi számozás] A G irányított gráf csúcsainak egy mélységi számozása a gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy az mb eljárás (1) sorában a csúcsok közül hányadikként állítottuk bejárva[v] értékét igaz-ra. A v csúcs mélységi számát mszám[v] jelöli. Definíció. [befejezési számozás] A G irányított gráf csúcsainak egy befejezési számozása a gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy a csúcsok közül hányadikként ért véget az mb(v) hívás. A v csúcs befejezési számát bszám[v] jelöli. Elozo algoritmus kis módosítással:

A LGORITMUSELMÉLET 8.

EL OADÁS

17

procedure begin msz := 0; bsz := 0; for v := 1 to n do bejárva[v] := hamis; mszám[v] := 0; bszám[v] := 0; for v := 1 to n do if bejárva[v] = hamis then mb(v) end

A LGORITMUSELMÉLET 8.

EL OADÁS

17

procedure begin msz := 0; bsz := 0; for v := 1 to n do bejárva[v] := hamis; mszám[v] := 0; bszám[v] := 0; for v := 1 to n do if bejárva[v] = hamis then mb(v) end procedure mb (v: csúcs) var w: csúcs; begin (1) bejárva[v] := igaz; msz := msz + 1; mszám[v] := msz; for minden L[v]-beli w csúcsra do (2) if bejárva[w] = hamis then mb(w); bsz := bsz + 1; bszám[v] := bsz; end

A LGORITMUSELMÉLET 8.

EL OADÁS

17

procedure begin msz := 0; bsz := 0; for v := 1 to n do bejárva[v] := hamis; mszám[v] := 0; bszám[v] := 0; for v := 1 to n do if bejárva[v] = hamis then mb(v) end procedure mb (v: csúcs) var w: csúcs; begin (1) bejárva[v] := igaz; msz := msz + 1; mszám[v] := msz; for minden L[v]-beli w csúcsra do (2) if bejárva[w] = hamis then mb(w); bsz := bsz + 1; bszám[v] := bsz; end Java animáció: Mélységi és befejezési számok

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül.

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek.

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek. = ez erdo

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek. = ez erdo Definíció. [mélységi feszít erd , feszít fa] Az elobb meghatározott T gráfot a G o o o gráf egy mélységi feszíto erdejének nevezzük. Ha T csak egy komponensbol áll, akkor mélységi feszítofáról beszélünk.

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek. = ez erdo Definíció. [mélységi feszít erd , feszít fa] Az elobb meghatározott T gráfot a G o o o gráf egy mélységi feszíto erdejének nevezzük. Ha T csak egy komponensbol áll, akkor mélységi feszítofáról beszélünk. Definíció. [élek osztályozása] Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszíto erdot. (Ezen bejárás szerint) G egy x y éle faél, ha x y éle T -nek;

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek. = ez erdo Definíció. [mélységi feszít erd , feszít fa] Az elobb meghatározott T gráfot a G o o o gráf egy mélységi feszíto erdejének nevezzük. Ha T csak egy komponensbol áll, akkor mélységi feszítofáról beszélünk. Definíció. [élek osztályozása] Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszíto erdot. (Ezen bejárás szerint) G egy x y éle faél, eloreél, ha x y éle T -nek; ha x y nem faél, y leszármazottja x-nek T -ben, és x = y;

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek. = ez erdo Definíció. [mélységi feszít erd , feszít fa] Az elobb meghatározott T gráfot a G o o o gráf egy mélységi feszíto erdejének nevezzük. Ha T csak egy komponensbol áll, akkor mélységi feszítofáról beszélünk. Definíció. [élek osztályozása] Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszíto erdot. (Ezen bejárás szerint) G egy x y éle faél, eloreél, visszaél, ha x y éle T -nek; ha x y nem faél, y leszármazottja x-nek T -ben, és x = y; ha x leszármazottja y-nak T -ben (a hurokél is ilyen);

A LGORITMUSELMÉLET 8.

EL OADÁS

18

Mélységi feszíto erdo
Definíció. [faél] A G = (V, E) irányított gráf v w éle faél (az adott mélységi bejárásra vonatkozóan), ha megvizsgálásakor a (2) sorban a (bejárva[w] = hamis) feltétel teljesül. Jelölje T azt a gráfot, amelynek csúcshalmaza V , élei pedig a faélek. = ez erdo Definíció. [mélységi feszít erd , feszít fa] Az elobb meghatározott T gráfot a G o o o gráf egy mélységi feszíto erdejének nevezzük. Ha T csak egy komponensbol áll, akkor mélységi feszítofáról beszélünk. Definíció. [élek osztályozása] Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszíto erdot. (Ezen bejárás szerint) G egy x y éle faél, eloreél, visszaél, keresztél, ha x y éle T -nek; ha x y nem faél, y leszármazottja x-nek T -ben, és x = y; ha x leszármazottja y-nak T -ben (a hurokél is ilyen); ha x és y nem leszármazottai egymásnak.

A LGORITMUSELMÉLET 8.

EL OADÁS

19

1 2 6 3 8 4 5 10 9 7

faél el reél o visszaél keresztél ilyen nincs

A LGORITMUSELMÉLET 8.

EL OADÁS

19

1 2 6 3 8 4 5 10 9 7

faél el reél o visszaél keresztél ilyen nincs

faél, elore él: kisebb mélységi számúból nagyobb mélységi számúba mutat

A LGORITMUSELMÉLET 8.

EL OADÁS

19

1 2 6 3 8 4 5 10 9 7

faél el reél o visszaél keresztél ilyen nincs

faél, elore él: kisebb mélységi számúból nagyobb mélységi számúba mutat visszaél, keresztél: nagyobb mélységi számúból kisebb mélységi számúba mutat

A LGORITMUSELMÉLET 8.

EL OADÁS

19

1 2 6 3 8 4 5 10 9 7

faél el reél o visszaél keresztél ilyen nincs

faél, elore él: kisebb mélységi számúból nagyobb mélységi számúba mutat visszaél, keresztél: nagyobb mélységi számúból kisebb mélységi számúba mutat visszaél: kisebb befejezési számúból nagyobb befejezési számúba mutat

A LGORITMUSELMÉLET 8.

EL OADÁS

20

x y egy - faél - visszaél - eloreél - keresztél

ha az él vizsgálatakor mszám[y] = 0 mszám[y] mszám[x] és bszám[y] = 0 mszám[y] > mszám[x] mszám[y] < mszám[x] és bszám[y] > 0.

A LGORITMUSELMÉLET 8.

EL OADÁS

20

x y egy - faél - visszaél - eloreél - keresztél

ha az él vizsgálatakor mszám[y] = 0 mszám[y] mszám[x] és bszám[y] = 0 mszám[y] > mszám[x] mszám[y] < mszám[x] és bszám[y] > 0.

Tétel. A G irányított gráf mélységi bejárása ­ beleértve a mélységi, a befejezési számozást és az élek osztályozását is ­ O(n + e) lépésben megteheto.

Algoritmuselmélet 9. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Március 18.

A LGORITMUSELMÉLET 9.

EL OADÁS

1

Mélységi feszítoerdo
Legyen T a G = (V, E) irányított gráf egy feszíto erdeje. Legyen x V egy tetszoleges csúcs, és jelölje Tx a feszíto erdo x-gyökeru részfájának a csúcshalmazát.

A LGORITMUSELMÉLET 9.

EL OADÁS

1

Mélységi feszítoerdo
Legyen T a G = (V, E) irányított gráf egy feszíto erdeje. Legyen x V egy tetszoleges csúcs, és jelölje Tx a feszíto erdo x-gyökeru részfájának a csúcshalmazát. Legyen Sx = yV van olyan G-beli x y irányított út, amelyen a csúcsok mélységi száma legalább mszám[x] .

A LGORITMUSELMÉLET 9.

EL OADÁS

1

Mélységi feszítoerdo
Legyen T a G = (V, E) irányított gráf egy feszíto erdeje. Legyen x V egy tetszoleges csúcs, és jelölje Tx a feszíto erdo x-gyökeru részfájának a csúcshalmazát. Legyen Sx = yV van olyan G-beli x y irányított út, amelyen a csúcsok mélységi száma legalább mszám[x] .

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség.

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt:

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van.

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x]

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x] = y Tx miatt azt jelenti, hogy y-t valamikor a Tx pontjai után látogatjuk meg

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x] = y Tx miatt azt jelenti, hogy y-t valamikor a Tx pontjai után látogatjuk meg = (v, y) faél vagy elore él = y Tx

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x] = y Tx miatt azt jelenti, hogy y-t valamikor a Tx pontjai után látogatjuk meg = (v, y) faél vagy elore él = y Tx = Sx Tx

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x] = y Tx miatt azt jelenti, hogy y-t valamikor a Tx pontjai után látogatjuk meg = (v, y) faél vagy elore él = y Tx = Sx Tx Következmény. Tegyük fel, hogy a G = (V, E) gráf x csúcsából minden pont elérheto irányított úton. Tegyük fel továbbá, hogy a G mélységi bejárását x-szel kezdjük. Ekkor a mélységi feszíto erdo egyetlen fából áll.

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x] = y Tx miatt azt jelenti, hogy y-t valamikor a Tx pontjai után látogatjuk meg = (v, y) faél vagy elore él = y Tx = Sx Tx Következmény. Tegyük fel, hogy a G = (V, E) gráf x csúcsából minden pont elérheto irányított úton. Tegyük fel továbbá, hogy a G mélységi bejárását x-szel kezdjük. Ekkor a mélységi feszíto erdo egyetlen fából áll. Bizonyítás: mszám[x] = 1 = Sx = V

A LGORITMUSELMÉLET 9.

EL OADÁS

2

Tétel. Tetszoleges x V csúcs esetén érvényes a Tx = Sx egyenloség. Bizonyítás: Tx éppen azokból a pontokból áll, amelyek x-bol faélek mentén elérhetok. = faélekre mindig no a mélységi szám = Tx Sx Fordított irány indirekt: tegyük fel indirekt, hogy létezik egy y Sx \ Tx Legyen x y egy az Sx meghatározásában szereplo irányított út, feltehetjük, hogy az út utolsó elotti v pontja Tx-ben van. Az y Sx feltétel szerint mszám[y] >mszám[x] = y Tx miatt azt jelenti, hogy y-t valamikor a Tx pontjai után látogatjuk meg = (v, y) faél vagy elore él = y Tx = Sx Tx Következmény. Tegyük fel, hogy a G = (V, E) gráf x csúcsából minden pont elérheto irányított úton. Tegyük fel továbbá, hogy a G mélységi bejárását x-szel kezdjük. Ekkor a mélységi feszíto erdo egyetlen fából áll. Bizonyítás: mszám[x] = 1 = Sx = V = Tx = V

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört. Directed Acyclic Graph

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört. Directed Acyclic Graph Alkalmazásai például: · Teendok ütemezése

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört. Directed Acyclic Graph Alkalmazásai például: · Teendok ütemezése = PERT

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört. Directed Acyclic Graph Alkalmazásai például: · Teendok ütemezése = PERT · Várakozási gráfok

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört. Directed Acyclic Graph Alkalmazásai például: · Teendok ütemezése = PERT · Várakozási gráfok = adatbázisok

A LGORITMUSELMÉLET 9.

EL OADÁS

3

Irányított körmentes gráfok
Definíció. Egy G irányított gráf DAG, ha nem tartalmaz irányított kört. Directed Acyclic Graph Alkalmazásai például: · Teendok ütemezése = PERT · Várakozási gráfok = adatbázisok Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG.

A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: =



A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: = = tegyük fel, hogy G nem DAG



A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: = = tegyük fel, hogy G nem DAG = van benne irányított kör



A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: = = tegyük fel, hogy G nem DAG = van benne irányított kör = vegyük ennek a legkisebb mélységi számú v csúcsát, a kör elozo pontja legyen u



A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: = = tegyük fel, hogy G nem DAG = van benne irányított kör = vegyük ennek a legkisebb mélységi számú v csúcsát, a kör elozo pontja legyen u = mszám[v] < mszám[u] = vissza- vagy keresztél



A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: = = tegyük fel, hogy G nem DAG = van benne irányított kör = vegyük ennek a legkisebb mélységi számú v csúcsát, a kör elozo pontja legyen u = mszám[v] < mszám[u] = vissza- vagy keresztél de u elérheto v-bol irányított úton



A LGORITMUSELMÉLET 9.

EL OADÁS

4

DAG
1 7 6 3 8 4 5 10 9

2

faél el reél o visszaél keresztél

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányított kört, azaz nem DAG. Tétel. Legyen G = (V, E) egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva: ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás: = = tegyük fel, hogy G nem DAG = van benne irányított kör = vegyük ennek a legkisebb mélységi számú v csúcsát, a kör elozo pontja legyen u = mszám[v] < mszám[u] = vissza- vagy keresztél de u elérheto v-bol irányított úton ; (részfa lemma) = u a v leszármazottja = visszaél



A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j).

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG. Bizonyítás: : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelelo sorrendje.

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG. Bizonyítás: : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelelo sorrendje. : G-ben van olyan csúcs, amibe nem fut be él (forrás)

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG. Bizonyítás: : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelelo sorrendje. : G-ben van olyan csúcs, amibe nem fut be él (forrás) Indukció pontszámra

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG. Bizonyítás: : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelelo sorrendje. : G-ben van olyan csúcs, amibe nem fut be él (forrás) Indukció pontszámra = hagyjunk el egy forrást, ez legyen az elso pont

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG. Bizonyítás: : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelelo sorrendje. : G-ben van olyan csúcs, amibe nem fut be él (forrás) Indukció pontszámra = hagyjunk el egy forrást, ez legyen az elso pont = a többit az indukció miatt rendezheto w1, . . . , wn-1

A LGORITMUSELMÉLET 9.

EL OADÁS

5

DAG topologikus rendezése
Definíció. Legyen G = (V, E) (|V | = n) egy irányított gráf. G egy topologikus rendezése a csúcsoknak egy olyan v1, . . . , vn sorrendje, melyben x y E esetén x elobb van, mint y (azaz ha x = vi, y = vj , akkor i < j). Tétel. Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG. Bizonyítás: : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelelo sorrendje. : G-ben van olyan csúcs, amibe nem fut be él (forrás) Indukció pontszámra = hagyjunk el egy forrást, ez legyen az elso pont = a többit az indukció miatt rendezheto w1, . . . , wn-1 = x, w1, . . . , wn-1

A LGORITMUSELMÉLET 9.

EL OADÁS

6

Topologikus rendezés mélységi kereséssel
Tétel. Végezzük el a G DAG egy mélységi bejárását és írjuk ki G csúcsait a befejezési számaik szerint növekvo w1, . . . , wn sorrendben. A wn, wn-1, . . . , w1 sorrend a G DAG egy topologikus rendezése.

A LGORITMUSELMÉLET 9.

EL OADÁS

6

Topologikus rendezés mélységi kereséssel
Tétel. Végezzük el a G DAG egy mélységi bejárását és írjuk ki G csúcsait a befejezési számaik szerint növekvo w1, . . . , wn sorrendben. A wn, wn-1, . . . , w1 sorrend a G DAG egy topologikus rendezése. Bizonyítás: Azt kell belátnunk, hogy ha wi wj éle G-nek, akkor i > j.

A LGORITMUSELMÉLET 9.

EL OADÁS

6

Topologikus rendezés mélységi kereséssel
Tétel. Végezzük el a G DAG egy mélységi bejárását és írjuk ki G csúcsait a befejezési számaik szerint növekvo w1, . . . , wn sorrendben. A wn, wn-1, . . . , w1 sorrend a G DAG egy topologikus rendezése. Bizonyítás: Azt kell belátnunk, hogy ha wi wj éle G-nek, akkor i > j. Ha volna olyan wi wj , amire j = bszám[wj ] > bszám[wi] = i, akkor az csak visszaél lehetne.

A LGORITMUSELMÉLET 9.

EL OADÁS

6

Topologikus rendezés mélységi kereséssel
Tétel. Végezzük el a G DAG egy mélységi bejárását és írjuk ki G csúcsait a befejezési számaik szerint növekvo w1, . . . , wn sorrendben. A wn, wn-1, . . . , w1 sorrend a G DAG egy topologikus rendezése. Bizonyítás: Azt kell belátnunk, hogy ha wi wj éle G-nek, akkor i > j. Ha volna olyan wi wj , amire j = bszám[wj ] > bszám[wi] = i, akkor az csak visszaél lehetne. Lépésszám: O(n + e)

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3)

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2)

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2) Vegyünk egy topologikus rendezést: x1, x2, . . . , xn

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2) Vegyünk egy topologikus rendezést: x1, x2, . . . , xn Feltehetjük, hogy s = x1

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2) Vegyünk egy topologikus rendezést: x1, x2, . . . , xn Feltehetjük, hogy s = x1 = d(s, xi) =
(xj ,xi )E

min {d(s, xj ) + c(xj , xi)},

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2) Vegyünk egy topologikus rendezést: x1, x2, . . . , xn Feltehetjük, hogy s = x1 = d(s, xi) =
(xj ,xi )E

min {d(s, xj ) + c(xj , xi)},

s xi

...

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2) Vegyünk egy topologikus rendezést: x1, x2, . . . , xn Feltehetjük, hogy s = x1 = d(s, xi) =
(xj ,xi )E

min {d(s, xj ) + c(xj , xi)},

s xi

...

Ezt sorban elvégezzük minden i-re.

A LGORITMUSELMÉLET 9.

EL OADÁS

7

Legrövidebb utak DAG-ban
Legrövidebb utak egy forrásból: Bellman-Ford = O(n3) Ha nincs negatív élsúly: Dijkstra: = O(n2) Vegyünk egy topologikus rendezést: x1, x2, . . . , xn Feltehetjük, hogy s = x1 = d(s, xi) =
(xj ,xi )E

min {d(s, xj ) + c(xj , xi)},

s xi

...

Ezt sorban elvégezzük minden i-re. Lépésszám: O(n + e)

A LGORITMUSELMÉLET 9.

EL OADÁS

8

Leghosszabb utak DAG-ban
Leghosszabb út = egyszeru út

A LGORITMUSELMÉLET 9.

EL OADÁS

8

Leghosszabb utak DAG-ban
Leghosszabb út = egyszeru út Általában nehéz, nem ismert rá gyors algoritmus.

A LGORITMUSELMÉLET 9.

EL OADÁS

8

Leghosszabb utak DAG-ban
Leghosszabb út = egyszeru út Általában nehéz, nem ismert rá gyors algoritmus. DAG-ban van: Tétel. Ha G egy éllistával adott súlyozott élu DAG, akkor az egy forrásból induló legrövidebb és leghosszabb utak meghatározásának feladatai O(n + e) lépésben megoldhatók.

A LGORITMUSELMÉLET 9.

EL OADÁS

8

Leghosszabb utak DAG-ban
Leghosszabb út = egyszeru út Általában nehéz, nem ismert rá gyors algoritmus. DAG-ban van: Tétel. Ha G egy éllistával adott súlyozott élu DAG, akkor az egy forrásból induló legrövidebb és leghosszabb utak meghatározásának feladatai O(n + e) lépésben megoldhatók. Bizonyítás: DAG-ban minden út csak elore megy

A LGORITMUSELMÉLET 9.

EL OADÁS

8

Leghosszabb utak DAG-ban
Leghosszabb út = egyszeru út Általában nehéz, nem ismert rá gyors algoritmus. DAG-ban van: Tétel. Ha G egy éllistával adott súlyozott élu DAG, akkor az egy forrásból induló legrövidebb és leghosszabb utak meghatározásának feladatai O(n + e) lépésben megoldhatók. Bizonyítás: DAG-ban minden út csak elore megy = l(s, xi) = max {l(s, xj ) + c(xj , xi)}. xi út hossza

(xj ,xi )E

ahol l(s, xi) a leghosszabb s

A LGORITMUSELMÉLET 9.

EL OADÁS

8

Leghosszabb utak DAG-ban
Leghosszabb út = egyszeru út Általában nehéz, nem ismert rá gyors algoritmus. DAG-ban van: Tétel. Ha G egy éllistával adott súlyozott élu DAG, akkor az egy forrásból induló legrövidebb és leghosszabb utak meghatározásának feladatai O(n + e) lépésben megoldhatók. Bizonyítás: DAG-ban minden út csak elore megy = l(s, xi) = max {l(s, xj ) + c(xj , xi)}. xi út hossza

(xj ,xi )E

ahol l(s, xi) a leghosszabb s Alkalmazás: PERT

A LGORITMUSELMÉLET 9.

EL OADÁS

9

Erosen összefüggo (eros) komponensek
Definíció. Egy G = (V, E) irányított gráf erosen összefüggo, ha bármely u, v V pontpárra létezik u v irányított út.

A LGORITMUSELMÉLET 9.

EL OADÁS

9

Erosen összefüggo (eros) komponensek
Definíció. Egy G = (V, E) irányított gráf erosen összefüggo, ha bármely u, v V pontpárra létezik u v irányított út.

s

A LGORITMUSELMÉLET 9.

EL OADÁS

9

Erosen összefüggo (eros) komponensek
Definíció. Egy G = (V, E) irányított gráf erosen összefüggo, ha bármely u, v V pontpárra létezik u v irányított út.

s

Definíció. Legyen G = (V, E) egy irányított gráf. Bevezetünk egy relációt V -n: u, v V -re legyen u v, ha G-ben léteznek u v és v u irányított utak.

A LGORITMUSELMÉLET 9.

EL OADÁS

9

Erosen összefüggo (eros) komponensek
Definíció. Egy G = (V, E) irányított gráf erosen összefüggo, ha bármely u, v V pontpárra létezik u v irányított út.

s

Definíció. Legyen G = (V, E) egy irányított gráf. Bevezetünk egy relációt V -n: u, v V -re legyen u v, ha G-ben léteznek u v és v u irányított utak. Ez ekvivalenciareláció =

A LGORITMUSELMÉLET 9.

EL OADÁS

9

Erosen összefüggo (eros) komponensek
Definíció. Egy G = (V, E) irányított gráf erosen összefüggo, ha bármely u, v V pontpárra létezik u v irányított út.

s

Definíció. Legyen G = (V, E) egy irányított gráf. Bevezetünk egy relációt V -n: u, v V -re legyen u v, ha G-ben léteznek u v és v u irányított utak. Ez ekvivalenciareláció = Definíció. A reláció ekvivalenciaosztályait a G erosen összefüggo (eros) komponenseinek nevezzük.

A LGORITMUSELMÉLET 9.

EL OADÁS

9

Erosen összefüggo (eros) komponensek
Definíció. Egy G = (V, E) irányított gráf erosen összefüggo, ha bármely u, v V pontpárra létezik u v irányított út.

s

Definíció. Legyen G = (V, E) egy irányított gráf. Bevezetünk egy relációt V -n: u, v V -re legyen u v, ha G-ben léteznek u v és v u irányított utak. Ez ekvivalenciareláció = Definíció. A reláció ekvivalenciaosztályait a G erosen összefüggo (eros) komponenseinek nevezzük.

A LGORITMUSELMÉLET 9.

EL OADÁS

10

Tétel. Egy irányított gráf két eros komponense között az élek csak egy irányba mehetnek.

C1

C2 C3

A LGORITMUSELMÉLET 9.

EL OADÁS

10

Tétel. Egy irányított gráf két eros komponense között az élek csak egy irányba mehetnek. Bizonyítás: Ha menne él a C1 C2 és C2 C1-be is, akkor C1 és C2 ugyanabban az eros komponensben volna. C1

C2 C3

A LGORITMUSELMÉLET 9.

EL OADÁS

10

Tétel. Egy irányított gráf két eros komponense között az élek csak egy irányba mehetnek. Bizonyítás: Ha menne él a C1 C2 és C2 C1-be is, akkor C1 és C2 ugyanabban az eros komponensben volna. C1 C1

C2 C3

C2 C3

Definíció. Legyen G = (V, E) irányított gráf. G redukált gráfja egy irányított gráf, melynek pontjai a G eros komponensei; a C1, C2 komponensek között akkor van C1 C2 él, ha G-ben a C1 komponens valamely pontjából vezet él a C2 komponensbe.

A LGORITMUSELMÉLET 9.

EL OADÁS

10

Tétel. Egy irányított gráf két eros komponense között az élek csak egy irányba mehetnek. Bizonyítás: Ha menne él a C1 C2 és C2 C1-be is, akkor C1 és C2 ugyanabban az eros komponensben volna. C1 C1

C2 C3

C2 C3

Definíció. Legyen G = (V, E) irányított gráf. G redukált gráfja egy irányított gráf, melynek pontjai a G eros komponensei; a C1, C2 komponensek között akkor van C1 C2 él, ha G-ben a C1 komponens valamely pontjából vezet él a C2 komponensbe. A redukált gráf mindig DAG lesz.

A LGORITMUSELMÉLET 9.

EL OADÁS

10

Tétel. Egy irányított gráf két eros komponense között az élek csak egy irányba mehetnek. Bizonyítás: Ha menne él a C1 C2 és C2 C1-be is, akkor C1 és C2 ugyanabban az eros komponensben volna. C1 C1

C2 C3

C2 C3

Definíció. Legyen G = (V, E) irányított gráf. G redukált gráfja egy irányított gráf, melynek pontjai a G eros komponensei; a C1, C2 komponensek között akkor van C1 C2 él, ha G-ben a C1 komponens valamely pontjából vezet él a C2 komponensbe. A redukált gráf mindig DAG lesz. = C1 C2 · · · Ck C1 irányított kör a redukált gráfban azt jelentené, hogy C1 C2 · · · Ck a G ugyanazon eros komponensében van.

A LGORITMUSELMÉLET 9.

EL OADÁS

11

Erosen összefüggo komponensek meghatározása

(1) Mélységi bejárással végigmegyünk G-n, közben minden pontnak sorszámot adunk: a befejezési számát

A LGORITMUSELMÉLET 9.

EL OADÁS

11

Erosen összefüggo komponensek meghatározása

(1) Mélységi bejárással végigmegyünk G-n, közben minden pontnak sorszámot adunk: a befejezési számát (2) Elkészítjük a Gford gráfot, melyet úgy kapunk G-bol, hogy minden él irányítását megfordítjuk. Pontosabban: Gford := (V, E ), ahol u v E akkor és csak akkor, ha v u E.

A LGORITMUSELMÉLET 9.

EL OADÁS

11

Erosen összefüggo komponensek meghatározása

(1) Mélységi bejárással végigmegyünk G-n, közben minden pontnak sorszámot adunk: a befejezési számát (2) Elkészítjük a Gford gráfot, melyet úgy kapunk G-bol, hogy minden él irányítását megfordítjuk. Pontosabban: Gford := (V, E ), ahol u v E akkor és csak akkor, ha v u E. (3) Bejárjuk a Gford gráfot mélységi bejárással, a legnagyobb sorszámú csúccsal kezdve (az (1)-beli befejezési számozás szerint). Új gyökérpont választásakor mindig a legnagyobb sorszámú csúcsot vesszük a maradékból.

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak.

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja.

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja. = K Sx = részfa-lemma

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja. = K Sx = részfa-lemma
v

: Tegyük fel, hogy x és y egy fában vannak a (3) pont szerinti mélységi bejárás után. Azt kell belátnunk, hogy ekkor x y a G gráfban, azaz x és y egymásból irányított úton elérhetok.
y

Gford

x

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja. = K Sx = részfa-lemma
v

Gford y x

: Tegyük fel, hogy x és y egy fában vannak a (3) pont szerinti mélységi bejárás után. Azt kell belátnunk, hogy ekkor x y a G gráfban, azaz x és y egymásból irányított úton elérhetok. Legyen a v csúcs a gyökere annak a fának, mely x-et és y-t is tartalmazza.

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja. = K Sx = részfa-lemma
v

Gford y x

: Tegyük fel, hogy x és y egy fában vannak a (3) pont szerinti mélységi bejárás után. Azt kell belátnunk, hogy ekkor x y a G gráfban, azaz x és y egymásból irányított úton elérhetok. Legyen a v csúcs a gyökere annak a fának, mely x-et és y-t is tartalmazza. = Gford gráfban van v x irányított út, = G gráfban van egy L irányított út x v-be.

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja. = K Sx = részfa-lemma : Tegyük fel, hogy x és y egy fában vannak a (3) pont szerinti mélységi bejárás után. Azt kell belátnunk, hogy ekkor x y a G gráfban, azaz x és y egymásból irányított úton elérhetok. Gford Legyen a v csúcs a gyökere annak a fának, mely x-et és y-t is tartalmazza. y = Gford gráfban van v x irányított út, = G x gráfban van egy L irányított út x v-be. Legyen x az L-nek az a pontja, amelynek az elso bejárás szerinti mélységi száma a legkisebb.
v

A LGORITMUSELMÉLET 9.

EL OADÁS

12

Tétel. A (3) pontban kapott fák lesznek G eros komponensei, azaz G-ben x y pontosan akkor igaz, ha x és y egy fában vannak. Bizonyítás: : Azt kell belátni, hogy egy eros komponens pontjai egy fába kerülnek Legyen K egy eros komponens, és legyen x a K legkisebb mélységi számú pontja. = K Sx = részfa-lemma : Tegyük fel, hogy x és y egy fában vannak a (3) pont szerinti mélységi bejárás után. Azt kell belátnunk, hogy ekkor x y a G gráfban, azaz x és y egymásból irányított úton elérhetok. Gford Legyen a v csúcs a gyökere annak a fának, mely x-et és y-t is tartalmazza. y = Gford gráfban van v x irányított út, = G x gráfban van egy L irányított út x v-be. Legyen x az L-nek az a pontja, amelynek az elso bejárás szerinti mélységi száma a legkisebb. részfa-lemma = L-nek az x v darabjában levo csúcsok az (1) bejárásnál x leszármazottjai lesznek.
v

A LGORITMUSELMÉLET 9.

EL OADÁS

13

Az x gyökeru részfában x befejezési száma a legnagyobb = v nem választhattuk v-t gyökérnek = x = v.

A LGORITMUSELMÉLET 9.

EL OADÁS

13

Az x gyökeru részfában x befejezési száma a legnagyobb = v nem választhattuk v-t gyökérnek = x = v. Az L pontjai közül tehát v-t látogattuk meg legeloször, és v-nek a befejezési száma volt a legnagyobb.

A LGORITMUSELMÉLET 9.

EL OADÁS

13

Az x gyökeru részfában x befejezési száma a legnagyobb = v nem választhattuk v-t gyökérnek = x = v. Az L pontjai közül tehát v-t látogattuk meg legeloször, és v-nek a befejezési száma volt a legnagyobb. = Így G-ben van v x

A LGORITMUSELMÉLET 9.

EL OADÁS

13

Az x gyökeru részfában x befejezési száma a legnagyobb = v nem választhattuk v-t gyökérnek = x = v. Az L pontjai közül tehát v-t látogattuk meg legeloször, és v-nek a befejezési száma volt a legnagyobb. = Így G-ben van v x = x v, hasonlóan y v = x y



A LGORITMUSELMÉLET 9.

EL OADÁS

13

Az x gyökeru részfában x befejezési száma a legnagyobb = v nem választhattuk v-t gyökérnek = x = v. Az L pontjai közül tehát v-t látogattuk meg legeloször, és v-nek a befejezési száma volt a legnagyobb. = Így G-ben van v x = x v, hasonlóan y v = x y



Lépésszám: O(n + e) + O(e) + O(n + e) = O(n + e)

A LGORITMUSELMÉLET 9.

EL OADÁS

14

Példa
5 3

6

4

1

2

A LGORITMUSELMÉLET 9.

EL OADÁS

14

Példa
5 3

6

4

1

2

5

3

6

4

1

2

A LGORITMUSELMÉLET 9.

EL OADÁS

15

Irányítatlan gráfok mélységi bejárása
Mélységi keresés ugyanígy.

A LGORITMUSELMÉLET 9.

EL OADÁS

15

Irányítatlan gráfok mélységi bejárása
Mélységi keresés ugyanígy. Mélységi feszíto erdo komponensei = összefüggo komponensek

A LGORITMUSELMÉLET 9.

EL OADÁS

15

Irányítatlan gráfok mélységi bejárása
Mélységi keresés ugyanígy. Mélységi feszíto erdo komponensei = összefüggo komponensek

1

faél
2 6 3 8 4 5 10 9 7

visszaél ilyen nincs

A LGORITMUSELMÉLET 9.

EL OADÁS

15

Irányítatlan gráfok mélységi bejárása
Mélységi keresés ugyanígy. Mélységi feszíto erdo komponensei = összefüggo komponensek

1

faél
2 6 3 8 4
faél faél

7

visszaél
9

ilyen nincs

5

10

A LGORITMUSELMÉLET 9.

EL OADÁS

15

Irányítatlan gráfok mélységi bejárása
Mélységi keresés ugyanígy. Mélységi feszíto erdo komponensei = összefüggo komponensek

1

faél
2 6 3 8 4 5 10 9 7

visszaél ilyen nincs

faél faél eloreél, visszaél visszaél

A LGORITMUSELMÉLET 9.

EL OADÁS

15

Irányítatlan gráfok mélységi bejárása
Mélységi keresés ugyanígy. Mélységi feszíto erdo komponensei = összefüggo komponensek

1

faél
2 6 3 8 4 5 10 9 7

visszaél ilyen nincs

faél faél eloreél, visszaél visszaél keresztél = nem létezik

A LGORITMUSELMÉLET 9.

EL OADÁS

16

Artikulációs pont keresése
Definíció. Legyen G = (V, E) összefüggo irányítatlan gráf. A v V csúcs artikulációs (elvágó) pontja G-nek, ha v és a rá illeszkedo élek elhagyásával a gráf több komponensre esik szét.

A LGORITMUSELMÉLET 9.

EL OADÁS

16

Artikulációs pont keresése
Definíció. Legyen G = (V, E) összefüggo irányítatlan gráf. A v V csúcs artikulációs (elvágó) pontja G-nek, ha v és a rá illeszkedo élek elhagyásával a gráf több komponensre esik szét. A fa gyökere pontosan akkor artikulációs pontja a gráfnak, ha egynél több fia van

A LGORITMUSELMÉLET 9.

EL OADÁS

16

Artikulációs pont keresése
Definíció. Legyen G = (V, E) összefüggo irányítatlan gráf. A v V csúcs artikulációs (elvágó) pontja G-nek, ha v és a rá illeszkedo élek elhagyásával a gráf több komponensre esik szét. A fa gyökere pontosan akkor artikulációs pontja a gráfnak, ha egynél több fia van Ha elhagyunk egy v csúcsot = A visszaélek csak úgy tarthatják egybe a részfákat, ha a v alatti nem üres részfák mindegyikébol megy visszaél a v feletti feszítofadarabba.

A LGORITMUSELMÉLET 9.

EL OADÁS

16

Artikulációs pont keresése
Definíció. Legyen G = (V, E) összefüggo irányítatlan gráf. A v V csúcs artikulációs (elvágó) pontja G-nek, ha v és a rá illeszkedo élek elhagyásával a gráf több komponensre esik szét. A fa gyökere pontosan akkor artikulációs pontja a gráfnak, ha egynél több fia van Ha elhagyunk egy v csúcsot = A visszaélek csak úgy tarthatják egybe a részfákat, ha a v alatti nem üres részfák mindegyikébol megy visszaél a v feletti feszítofadarabba. Kiszámítjuk a fel[v] értéket. Ez megadja a v csúcshoz annak a ,,feszítofában legmagasabban levo" w csúcsnak a mélységi számát, amelyhez el tudunk jutni v-bol úgy, hogy ,,lefelé" megyünk faélen, aztán egy visszaélen ,,felmegyünk" w-be.

A LGORITMUSELMÉLET 9.

EL OADÁS

16

Artikulációs pont keresése
Definíció. Legyen G = (V, E) összefüggo irányítatlan gráf. A v V csúcs artikulációs (elvágó) pontja G-nek, ha v és a rá illeszkedo élek elhagyásával a gráf több komponensre esik szét. A fa gyökere pontosan akkor artikulációs pontja a gráfnak, ha egynél több fia van Ha elhagyunk egy v csúcsot = A visszaélek csak úgy tarthatják egybe a részfákat, ha a v alatti nem üres részfák mindegyikébol megy visszaél a v feletti feszítofadarabba. Kiszámítjuk a fel[v] értéket. Ez megadja a v csúcshoz annak a ,,feszítofában legmagasabban levo" w csúcsnak a mélységi számát, amelyhez el tudunk jutni v-bol úgy, hogy ,,lefelé" megyünk faélen, aztán egy visszaélen ,,felmegyünk" w-be. A v csúcs tehát artikulációs pont van olyan w fia, melyre fel[w] mszám[v].

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket = Járjuk be a feszítofát a befejezési számok szerinti sorrendben, és ebben a sorrendben töltsük ki a fel[ ] tömböt.

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket = Járjuk be a feszítofát a befejezési számok szerinti sorrendben, és ebben a sorrendben töltsük ki a fel[ ] tömböt. mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket = Járjuk be a feszítofát a befejezési számok szerinti sorrendben, és ebben a sorrendben töltsük ki a fel[ ] tömböt. mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek} 3. Artikulációs pontok megkeresése: a feszítofát bejárva a csúcsokról ellenorizzük, hogy elvágó pontok-e.

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket = Járjuk be a feszítofát a befejezési számok szerinti sorrendben, és ebben a sorrendben töltsük ki a fel[ ] tömböt. mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek} 3. Artikulációs pontok megkeresése: a feszítofát bejárva a csúcsokról ellenorizzük, hogy elvágó pontok-e. (a) a gyökér pontosan akkor artikulációs pont, ha legalább 2 fia van a fában.

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket = Járjuk be a feszítofát a befejezési számok szerinti sorrendben, és ebben a sorrendben töltsük ki a fel[ ] tömböt. mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek} 3. Artikulációs pontok megkeresése: a feszítofát bejárva a csúcsokról ellenorizzük, hogy elvágó pontok-e. (a) a gyökér pontosan akkor artikulációs pont, ha legalább 2 fia van a fában. (b) a gyökértol különbözo v csúcs akkor és csak akkor artikulációs pont, ha van v-nek olyan y fia, hogy fel[y] mszám[v].

A LGORITMUSELMÉLET 9.

EL OADÁS

17

Algoritmus
1. Végezzük el a gráf mélységi bejárását, és határozzuk meg a csúcsok mélységi számát 2. Számítsuk ki minden v csúcsra a fel[v] értéket = Járjuk be a feszítofát a befejezési számok szerinti sorrendben, és ebben a sorrendben töltsük ki a fel[ ] tömböt. mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek} 3. Artikulációs pontok megkeresése: a feszítofát bejárva a csúcsokról ellenorizzük, hogy elvágó pontok-e. (a) a gyökér pontosan akkor artikulációs pont, ha legalább 2 fia van a fában. (b) a gyökértol különbözo v csúcs akkor és csak akkor artikulációs pont, ha van v-nek olyan y fia, hogy fel[y] mszám[v]. Lépésszám: O(n + e)

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám 2

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám 2 3

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám 2 3 4

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 1 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 1 5 6 2

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 3 1 5 6 2

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4

4 3 1 5 6 2

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7

4 3 1 5 6 2

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7 8

4 3 1 5 6 2

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7 9 2 6 6 8

4 3 1 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7 9 2 6 6 10 8

4 3 1 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7 9 2 6 11 7 6 10 8

4 3 1 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7 9 2 6 11 7 6 8 10 8

4 3 1 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1 mélységi szám befejezési szám 2 3 4 5 7 9 2 6 11 7 6 8 9 8 10

4 3 1 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

mélységi szám befejezési szám 8 9 9 6 8 10

2 3 4 5 7

4 3 1 5 6 2 11

7

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 4 5 7 9 2 6 11 7 6 8 9 8 10

mélységi szám befejezési szám fel[v]

4 3 15 5

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 4 5 7 9 11 7 6 8 9 8 10

mélységi szám befejezési szám fel[v]

4 3 15 5 2 63

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 4 5 7 9 11 7 6 8 9 8 10

mélységi szám befejezési szám fel[v]

4 3 3 15 2 5 63

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 1 4 3 3 15 2 5 63 4 5 7 9 11 7 6 8 9 8 10

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 1 4 3 3 15 2 5 63 4 7 5 7 9 11 7 8 9 6 8 10

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 1 4 3 3 15 2 5 63 4 8 7 5 9 7 9 6 8 9 10 11 7

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 1 4 3 3 15 2 5 63 4 8 7 5 9 7 9 6 8 9 10 2 7 11

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 1 4 3 3 15 2 5 63 4 8 7 5 9 7 9 6 8 9 10 2 2 7 11

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11 10

2 3 1 4 3 3 15 2 5 63 4 8 1 7 5 9 7 9 6 8 9 10 2 2 7 11

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

11

1 10 2 3 1 4 3 3 15 2 5 63 4 8 1 7 5 9 7 9 6 8 9 10 2 2 7 11

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

1

11

1 10 2 3 1 4 3 3 15 2 5 63 4 8 1 7 5 9 7 9 6 8 9 10 2 2 7 11

mélységi szám befejezési szám fel[v]

A LGORITMUSELMÉLET 9.

EL OADÁS

18

Példa
mszám[v], min{mszám[z], ahol v z visszaél}, fel[v] = min min{fel[y], ahol y fia v-nek}

1

1

11

1 10 2 3 1 4 3 3 15 2 5 63 4 8 1 7 5 9 7 9 6 8 9 10 2 2 7 11

mélységi szám befejezési szám fel[v]

Algoritmuselmélet 10. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Március 25.

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search Meglátogatjuk az elso csúcsot, majd ennek a csúcsnak az összes szomszédját.

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search Meglátogatjuk az elso csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, hol még nem jártunk, és így tovább.

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search Meglátogatjuk az elso csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, hol még nem jártunk, és így tovább. megvalósítás = sor (FIFO-lista)

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search Meglátogatjuk az elso csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, hol még nem jártunk, és így tovább. megvalósítás = sor (FIFO-lista) Berakjuk be az épp meglátogatott csúcsot, hogy majd a megfelelo idoben a szomszédaira is sort keríthessünk.

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search Meglátogatjuk az elso csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, hol még nem jártunk, és így tovább. megvalósítás = sor (FIFO-lista) Berakjuk be az épp meglátogatott csúcsot, hogy majd a megfelelo idoben a szomszédaira is sort keríthessünk. Általános lépés = vesszük a sor elején levo x csúcsot, töröljük a sorból, meglátogatjuk azokat az y szomszédait, amelyeket eddig még nem láttunk, majd ezeket az y csúcsokat a sor végére tesszük.

A LGORITMUSELMÉLET 10.

EL OADÁS

1

Szélességi bejárás
BFS: Breadth First Search Meglátogatjuk az elso csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, hol még nem jártunk, és így tovább. megvalósítás = sor (FIFO-lista) Berakjuk be az épp meglátogatott csúcsot, hogy majd a megfelelo idoben a szomszédaira is sort keríthessünk. Általános lépés = vesszük a sor elején levo x csúcsot, töröljük a sorból, meglátogatjuk azokat az y szomszédait, amelyeket eddig még nem láttunk, majd ezeket az y csúcsokat a sor végére tesszük. procedure bejár ( elvégzi a G irányított gráf szélességi bejárását ) begin for v := 1 to n do bejárva[v] := hamis; for v := 1 to n do if bejárva[v] = hamis then szb(v) end

A LGORITMUSELMÉLET 10.

EL OADÁS

2

procedure szb (v: csúcs) var Q: csúcsokból álló sor; x, y: csúcsok; begin bejárva[v] := igaz; sorba(v, Q); while Q nem üres do begin x := elso(Q); for minden x y E élre do if bejárva[y] = hamis then begin bejárva[y] := igaz; () sorba(y, Q) end end end

A LGORITMUSELMÉLET 10.

EL OADÁS

2

procedure szb (v: csúcs) var Q: csúcsokból álló sor; x, y: csúcsok; begin bejárva[v] := igaz; sorba(v, Q); while Q nem üres do begin x := elso(Q); for minden x y E élre do if bejárva[y] = hamis then begin bejárva[y] := igaz; () sorba(y, Q) end end end

JAVA animáció: BFS

A LGORITMUSELMÉLET 10.

EL OADÁS

3

Faél: megvizsgálásukkor még be nem járt pontba mutatnak

A LGORITMUSELMÉLET 10.

EL OADÁS

3

1
Faél: megvizsgálásukkor még be nem járt pontba mutatnak

2 3 5 6 8 9 10

4 7

faél ilyen nincs visszaél keresztél keresztél

A LGORITMUSELMÉLET 10.

EL OADÁS

3

1
Faél: megvizsgálásukkor még be nem járt pontba mutatnak

2 3 5 6 8 9 1 10

4 7

faél ilyen nincs visszaél keresztél keresztél

Irányítatlan esetben csak faél és keresztél lehet.

2 3 5 6 8 9 10

4 7

faél ilyen nincs ilyen nincs keresztél keresztél

A LGORITMUSELMÉLET 10.

EL OADÁS

3

1
Faél: megvizsgálásukkor még be nem járt pontba mutatnak

2 3 5 6 8 9 1 10

4 7

faél ilyen nincs visszaél keresztél keresztél

Irányítatlan esetben csak faél és keresztél lehet. Lépésszám: O(n + e)

2 3 5 6 8 9 10

4 7

faél ilyen nincs ilyen nincs keresztél keresztél

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel = Jelentse D[v] a v csúcsnak az s-tol való távolságát az s-gyökeru szélességi fában.

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel = Jelentse D[v] a v csúcsnak az s-tol való távolságát az s-gyökeru szélességi fában. Legyen kezdetben D[s] := 0

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel = Jelentse D[v] a v csúcsnak az s-tol való távolságát az s-gyökeru szélességi fában. Legyen kezdetben D[s] := 0 az szb eljárásba tegyük be a D[y] := D[x] + 1; utasítást, miután elértük y-t.

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel = Jelentse D[v] a v csúcsnak az s-tol való távolságát az s-gyökeru szélességi fában. Legyen kezdetben D[s] := 0 az szb eljárásba tegyük be a D[y] := D[x] + 1; utasítást, miután elértük y-t. Lépésszám: O(n + e) Tétel. Az elozoek szerint módosított szélességi bejárás végeztével teljesülnek a következok: 1. Legyen s = x1, x2, . . . , xn a csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1] D[x2] . . . D[xn].

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel = Jelentse D[v] a v csúcsnak az s-tol való távolságát az s-gyökeru szélességi fában. Legyen kezdetben D[s] := 0 az szb eljárásba tegyük be a D[y] := D[x] + 1; utasítást, miután elértük y-t. Lépésszám: O(n + e) Tétel. Az elozoek szerint módosított szélességi bejárás végeztével teljesülnek a következok: 1. Legyen s = x1, x2, . . . , xn a csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1] D[x2] . . . D[xn]. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1.

A LGORITMUSELMÉLET 10.

EL OADÁS

4

Legrövidebb utak súlyozatlan gráfokban
Ha minden él hossza egy = út hossza = élek száma Szélességi kereséssel = Jelentse D[v] a v csúcsnak az s-tol való távolságát az s-gyökeru szélességi fában. Legyen kezdetben D[s] := 0 az szb eljárásba tegyük be a D[y] := D[x] + 1; utasítást, miután elértük y-t. Lépésszám: O(n + e) Tétel. Az elozoek szerint módosított szélességi bejárás végeztével teljesülnek a következok: 1. Legyen s = x1, x2, . . . , xn a csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1] D[x2] . . . D[xn]. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1. 3. D[v] = d(s, v) teljesül minden v V csúcsra.

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn].

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 =

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1]

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1] Ha pedig az apák megegyeznek = D[xi] = D[xi+1]

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1] Ha pedig az apák megegyeznek = D[xi] = D[xi+1] Tétel. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1 Bizonyítás: Nézzük, hogy mi történik, amikor x kikerül a Q sorból, és éppen az (x, y) élet vizsgáljuk.

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1] Ha pedig az apák megegyeznek = D[xi] = D[xi+1] Tétel. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1 Bizonyítás: Nézzük, hogy mi történik, amikor x kikerül a Q sorból, és éppen az (x, y) élet vizsgáljuk. Ha bejárva[y] = hamis = y apja x, vagyis D[y] = D[x] + 1

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1] Ha pedig az apák megegyeznek = D[xi] = D[xi+1] Tétel. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1 Bizonyítás: Nézzük, hogy mi történik, amikor x kikerül a Q sorból, és éppen az (x, y) élet vizsgáljuk. Ha bejárva[y] = hamis = y apja x, vagyis D[y] = D[x] + 1 Különben y-t már korábban láttuk = y apja elobb van mint x

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1] Ha pedig az apák megegyeznek = D[xi] = D[xi+1] Tétel. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1 Bizonyítás: Nézzük, hogy mi történik, amikor x kikerül a Q sorból, és éppen az (x, y) élet vizsgáljuk. Ha bejárva[y] = hamis = y apja x, vagyis D[y] = D[x] + 1 Különben y-t már korábban láttuk = y apja elobb van mint x = D[apa(y)] D[x]

A LGORITMUSELMÉLET 10.

EL OADÁS

5

Tétel. 1. D[x1] D[x2] . . . D[xn]. Bizonyítás: A csúcsok az s = x1, x2, . . . , xn sorrendben kerülnek bele a Q sorba = ebben a sorrendben is kerülnek ki a sorból ha x = s csúcs elobb van mint y = apa(x) nem lehet késobb, mint apa(y), hiszen ha elobb lenne, y-hoz elobb eljutottunk volna Indukció = Gyökérre D[s] = 0, fiaira mind nagyobb D[xi] = D[apa(xi)] + 1 és D[xi+1] = D[apa(xi+1)] + 1 = Ha a két apa különbözo = D[apa(xi)] D[apa(xi+1)] = D[xi] D[xi+1] Ha pedig az apák megegyeznek = D[xi] = D[xi+1] Tétel. 2. Ha x y éle G-nek, akkor D[y] D[x] + 1 Bizonyítás: Nézzük, hogy mi történik, amikor x kikerül a Q sorból, és éppen az (x, y) élet vizsgáljuk. Ha bejárva[y] = hamis = y apja x, vagyis D[y] = D[x] + 1 Különben y-t már korábban láttuk = y apja elobb van mint x = D[apa(y)] D[x] = D[y] = D[apa(y)] + 1 D[x] + 1

A LGORITMUSELMÉLET 10.

EL OADÁS

6

Tétel. 3. D[v] = d(s, v) teljesül minden v V csúcsra. Bizonyítás: d(s, v) D[v]



A LGORITMUSELMÉLET 10.

EL OADÁS

6

Tétel. 3. D[v] = d(s, v) teljesül minden v V csúcsra. Bizonyítás: d(s, v) D[v] Legyen s = y0, y1, . . . yk = v egy minimális hosszúságú G-beli irányított út s-bol v-be.



A LGORITMUSELMÉLET 10.

EL OADÁS

6

Tétel. 3. D[v] = d(s, v) teljesül minden v V csúcsra. Bizonyítás: d(s, v) D[v] Legyen s = y0, y1, . . . yk = v egy minimális hosszúságú G-beli irányított út s-bol v-be. = az út éleire: D[y1] D[s] + 1 = 1, majd D[y2] D[y1] + 1 2



A LGORITMUSELMÉLET 10.

EL OADÁS

6

Tétel. 3. D[v] = d(s, v) teljesül minden v V csúcsra. Bizonyítás: d(s, v) D[v] Legyen s = y0, y1, . . . yk = v egy minimális hosszúságú G-beli irányított út s-bol v-be. = az út éleire: D[y1] D[s] + 1 = 1, majd D[y2] D[y1] + 1 2 . . . D[v] = D[yk] k = d(s, v) =



A LGORITMUSELMÉLET 10.

EL OADÁS

6

Tétel. 3. D[v] = d(s, v) teljesül minden v V csúcsra. Bizonyítás: d(s, v) D[v] Legyen s = y0, y1, . . . yk = v egy minimális hosszúságú G-beli irányított út s-bol v-be. = az út éleire: D[y1] D[s] + 1 = 1, majd D[y2] D[y1] + 1 2 . . . D[v] = D[yk] k = d(s, v) = JAVA animáció: Legrövidebb út



A LGORITMUSELMÉLET 10.

EL OADÁS

7

Minimális költségu feszítofák

Most irányítatlan gráfokkal foglalkozunk kör és út = valóban egyszeru

A LGORITMUSELMÉLET 10.

EL OADÁS

7

Minimális költségu feszítofák

Most irányítatlan gráfokkal foglalkozunk kör és út = valóban egyszeru
Definíció. (minimális költség feszít fa) Legyen G = (V, E) egy összefüggo u o gráf. A G gráf egy körmentes összefüggo F = (V, E ) részgráfja a gráf egy feszítofája. Legyen továbbá az éleken értelmezve egy c : E R súlyfüggvény. Ekkor a G gráf egy F feszítofája minimális költségu, ha költsége (a benne szereplo élek súlyainak összege) minimális G összes feszítofája közül.

A LGORITMUSELMÉLET 10.

EL OADÁS

7

Minimális költségu feszítofák

Most irányítatlan gráfokkal foglalkozunk kör és út = valóban egyszeru
Definíció. (minimális költség feszít fa) Legyen G = (V, E) egy összefüggo u o gráf. A G gráf egy körmentes összefüggo F = (V, E ) részgráfja a gráf egy feszítofája. Legyen továbbá az éleken értelmezve egy c : E R súlyfüggvény. Ekkor a G gráf egy F feszítofája minimális költségu, ha költsége (a benne szereplo élek súlyainak összege) minimális G összes feszítofája közül. Probléma: Adott egy G = (V, E) összefüggo irányítatlan gráf, és az élein értelmezett c : E R súlyfüggvény. Határozzuk meg a G egy minimális költségu feszítofáját.

A LGORITMUSELMÉLET 10.

EL OADÁS

7

Minimális költségu feszítofák

Most irányítatlan gráfokkal foglalkozunk kör és út = valóban egyszeru
Definíció. (minimális költség feszít fa) Legyen G = (V, E) egy összefüggo u o gráf. A G gráf egy körmentes összefüggo F = (V, E ) részgráfja a gráf egy feszítofája. Legyen továbbá az éleken értelmezve egy c : E R súlyfüggvény. Ekkor a G gráf egy F feszítofája minimális költségu, ha költsége (a benne szereplo élek súlyainak összege) minimális G összes feszítofája közül. Probléma: Adott egy G = (V, E) összefüggo irányítatlan gráf, és az élein értelmezett c : E R súlyfüggvény. Határozzuk meg a G egy minimális költségu feszítofáját. Például: Villamosvezetékek kiépítése

A LGORITMUSELMÉLET 10.

EL OADÁS

8

Fák tulajdonságai
Tétel. 1. Minden legalább kétpontú fában van olyan csúcs, amibol csak egy él megy ki (elsofokú csúcs).

A LGORITMUSELMÉLET 10.

EL OADÁS

8

Fák tulajdonságai
Tétel. 1. Minden legalább kétpontú fában van olyan csúcs, amibol csak egy él megy ki (elsofokú csúcs). 2. Bármely összefüggo gráf tartalmaz feszítofát.

A LGORITMUSELMÉLET 10.

EL OADÁS

8

Fák tulajdonságai
Tétel. 1. Minden legalább kétpontú fában van olyan csúcs, amibol csak egy él megy ki (elsofokú csúcs). 2. Bármely összefüggo gráf tartalmaz feszítofát. 3. Egy n-pontú összefüggo gráf akkor és csak akkor fa, ha n - 1 éle van.

A LGORITMUSELMÉLET 10.

EL OADÁS

8

Fák tulajdonságai
Tétel. 1. Minden legalább kétpontú fában van olyan csúcs, amibol csak egy él megy ki (elsofokú csúcs). 2. Bármely összefüggo gráf tartalmaz feszítofát. 3. Egy n-pontú összefüggo gráf akkor és csak akkor fa, ha n - 1 éle van. 4. Egy fa bármely két pontja között pontosan egy út vezet.

A LGORITMUSELMÉLET 10.

EL OADÁS

8

Fák tulajdonságai
Tétel. 1. Minden legalább kétpontú fában van olyan csúcs, amibol csak egy él megy ki (elsofokú csúcs). 2. Bármely összefüggo gráf tartalmaz feszítofát. 3. Egy n-pontú összefüggo gráf akkor és csak akkor fa, ha n - 1 éle van. 4. Egy fa bármely két pontja között pontosan egy út vezet. 5. Legyen G egy súlyozott élu összefüggo gráf, F egy minimális költségu feszítofája. Legyen g = (u, v) a G-nek egy olyan éle, ami nem éle F -nek, és tegyük fel, hogy az F -beli u-ból v-be vezeto úton van olyan g él, amelyre c(g) c(g ). Ekkor az F -bol a g hozzávételével és a g elhagyásával adódó F gráf is egy minimális költségu feszítofa G-ben.

A LGORITMUSELMÉLET 10.

EL OADÁS

8

Fák tulajdonságai
Tétel. 1. Minden legalább kétpontú fában van olyan csúcs, amibol csak egy él megy ki (elsofokú csúcs). 2. Bármely összefüggo gráf tartalmaz feszítofát. 3. Egy n-pontú összefüggo gráf akkor és csak akkor fa, ha n - 1 éle van. 4. Egy fa bármely két pontja között pontosan egy út vezet. 5. Legyen G egy súlyozott élu összefüggo gráf, F egy minimális költségu feszítofája. Legyen g = (u, v) a G-nek egy olyan éle, ami nem éle F -nek, és tegyük fel, hogy az F -beli u-ból v-be vezeto úton van olyan g él, amelyre c(g) c(g ). Ekkor az F -bol a g hozzávételével és a g elhagyásával adódó F gráf is egy minimális költségu feszítofa G-ben. Bizonyítás: 1­4 volt már BSZ-ben



A LGORITMUSELMÉLET 10.

EL OADÁS

9

Bizonyítás: 5. g 5 2 4 u 8 g 3 8 10 4 v 2 2

A LGORITMUSELMÉLET 10.

EL OADÁS

9

Bizonyítás: 5. g 5 2 4 u 8 g 3 8 10 4 v 2 2 5 2 4 u 8 3 8 10 4 v 2 2

A LGORITMUSELMÉLET 10.

EL OADÁS

9

Bizonyítás: 5. g 5 2 4 u 8 g 3 8 10 4 v 2 2 5 2 4 u 8 3 8 10 4 v 2 2

F {g} gráfban van olyan kör, amelynek g éle = A g törlésével kapott F gráf összefüggo marad

A LGORITMUSELMÉLET 10.

EL OADÁS

9

Bizonyítás: 5. g 5 2 4 u 8 g 3 8 10 4 v 2 2 5 2 4 u 8 3 8 10 4 v 2 2

F {g} gráfban van olyan kör, amelynek g éle = A g törlésével kapott F gráf összefüggo marad F költsége nem nagyobb F költségénél

A LGORITMUSELMÉLET 10.

EL OADÁS

10

A piros-kék algoritmus
Sorra nézzük G éleit: bizonyosakat beveszünk a minimális feszítofába, másokat pedig eldobunk.

A LGORITMUSELMÉLET 10.

EL OADÁS

10

A piros-kék algoritmus
Sorra nézzük G éleit: bizonyosakat beveszünk a minimális feszítofába, másokat pedig eldobunk. = színezzük a G éleit: a kék élek belekerülnek a végeredményt jelento minimális feszítofába,

A LGORITMUSELMÉLET 10.

EL OADÁS

10

A piros-kék algoritmus
Sorra nézzük G éleit: bizonyosakat beveszünk a minimális feszítofába, másokat pedig eldobunk. = színezzük a G éleit: a kék élek belekerülnek a végeredményt jelento minimális feszítofába, a pirosak pedig nem

A LGORITMUSELMÉLET 10.

EL OADÁS

10

A piros-kék algoritmus
Sorra nézzük G éleit: bizonyosakat beveszünk a minimális feszítofába, másokat pedig eldobunk. = színezzük a G éleit: a kék élek belekerülnek a végeredményt jelento minimális feszítofába, a pirosak pedig nem = Úgy színezünk, hogy az eddig kialakult (részleges) színezés mindig takaros legyen.

A LGORITMUSELMÉLET 10.

EL OADÁS

10

A piros-kék algoritmus
Sorra nézzük G éleit: bizonyosakat beveszünk a minimális feszítofába, másokat pedig eldobunk. = színezzük a G éleit: a kék élek belekerülnek a végeredményt jelento minimális feszítofába, a pirosak pedig nem = Úgy színezünk, hogy az eddig kialakult (részleges) színezés mindig takaros legyen. Definíció. (takaros színezés) Tekintsük a súlyozott élu G gráf éleinek egy részleges színezését, melynél bármely él piros, kék vagy színtelen lehet. Ez a színezés takaros, ha van G-nek olyan minimális költségu feszítofája, ami az összes kék élet tartalmazza, és egyetlen piros élet sem tartalmaz.

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre.

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle.

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle. = a két szabályt tetszoleges sorrendben és helyeken alkalmazzuk, amíg csak lehetséges.

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle. = a két szabályt tetszoleges sorrendben és helyeken alkalmazzuk, amíg csak lehetséges. = piros-kék algoritmus

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle. = a két szabályt tetszoleges sorrendben és helyeken alkalmazzuk, amíg csak lehetséges. = piros-kék algoritmus Tétel. A piros-kék eljárás muködése során mindig takaros színezésünk van. Ezen felül a színezéssel sosem akadunk el: végül G minden éle színes lesz.

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle. = a két szabályt tetszoleges sorrendben és helyeken alkalmazzuk, amíg csak lehetséges. = piros-kék algoritmus Tétel. A piros-kék eljárás muködése során mindig takaros színezésünk van. Ezen felül a színezéssel sosem akadunk el: végül G minden éle színes lesz. Bizonyítás: Belátjuk, hogy a színezés mindig takaros.

A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle. = a két szabályt tetszoleges sorrendben és helyeken alkalmazzuk, amíg csak lehetséges. = piros-kék algoritmus Tétel. A piros-kék eljárás muködése során mindig takaros színezésünk van. Ezen felül a színezéssel sosem akadunk el: végül G minden éle színes lesz. Bizonyítás: Belátjuk, hogy a színezés mindig takaros. = kezdetben



A LGORITMUSELMÉLET 10.

EL OADÁS

11

K ÉK SZABÁLY:

P IROS SZABÁLY:

Válasszunk ki egy olyan = X V csúcshalmazt, amibol nem vezet ki kék él. Ezután egy legkisebb súlyú X-bol kimeno színezetlen élet fessünk kékre. Válasszunk G-ben egy olyan egyszeru kört, amiben nincs piros él. A kör egyik legnagyobb súlyú színtelen élét fessük pirosra.

Kezdetben G-nek nincs színes éle. = a két szabályt tetszoleges sorrendben és helyeken alkalmazzuk, amíg csak lehetséges. = piros-kék algoritmus Tétel. A piros-kék eljárás muködése során mindig takaros színezésünk van. Ezen felül a színezéssel sosem akadunk el: végül G minden éle színes lesz. Bizonyítás: Belátjuk, hogy a színezés mindig takaros. = kezdetben Tegyük fel, hogy egy takaros színezésünk van. Legyen F a G egy olyan minimális költségu feszítofája, amely minden kék élet tartalmaz, és egyetlen pirosat sem. Tegyük fel továbbá, hogy ebben a helyzetben a gráf f élét festjük be.



A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz.

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek Ha f nem éle F -nek = nézzük azt az X V csúcshalmazt, amire a kék szabályt alkalmaztuk. f F

X f

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek Ha f nem éle F -nek = nézzük azt az X V csúcshalmazt, amire a kék szabályt alkalmaztuk. Az F -ben van olyan út (mert feszítofa), ami f az f két végpontját összeköti. = Ezen az F úton pedig van olyan f él, ami kimegy X bol, ugyanis f kilép X-bol. X f

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek Ha f nem éle F -nek = nézzük azt az X V csúcshalmazt, amire a kék szabályt alkalmaztuk. Az F -ben van olyan út (mert feszítofa), ami f az f két végpontját összeköti. = Ezen az F úton pedig van olyan f él, ami kimegy X bol, ugyanis f kilép X-bol. X Az F választása miatt f nem lehet piros. f

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek Ha f nem éle F -nek = nézzük azt az X V csúcshalmazt, amire a kék szabályt alkalmaztuk. Az F -ben van olyan út (mert feszítofa), ami f az f két végpontját összeköti. = Ezen az F úton pedig van olyan f él, ami kimegy X bol, ugyanis f kilép X-bol. X Az F választása miatt f nem lehet piros. A kék szabály szerint kék sem lehet, továbbá c(f ) c(f ) is teljesül. f

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek Ha f nem éle F -nek = nézzük azt az X V csúcshalmazt, amire a kék szabályt alkalmaztuk. Az F -ben van olyan út (mert feszítofa), ami f az f két végpontját összeköti. = Ezen az F úton pedig van olyan f él, ami kimegy X bol, ugyanis f kilép X-bol. X Az F választása miatt f nem lehet piros. A kék szabály szerint kék sem lehet, továbbá c(f ) c(f ) is teljesül. f Legyen F az F -bol az f törlésével és az f hozzáadásával kapott gráf.

A LGORITMUSELMÉLET 10.

EL OADÁS

12

Két eset van aszerint, hogy melyik szabályt használjuk: A kék szabályt használjuk: = f kék lesz. Ha f éle F -nek Ha f nem éle F -nek = nézzük azt az X V csúcshalmazt, amire a kék szabályt alkalmaztuk. Az F -ben van olyan út (mert feszítofa), ami f az f két végpontját összeköti. = Ezen az F úton pedig van olyan f él, ami kimegy X bol, ugyanis f kilép X-bol. X Az F választása miatt f nem lehet piros. A kék szabály szerint kék sem lehet, továbbá c(f ) c(f ) is teljesül. f Legyen F az F -bol az f törlésével és az f hozzáadásával kapott gráf. = Eszerint F egy minimális feszítofa, tartalmaz minden kék élet és nem tartalmaz piros élet.

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz.

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f F

f

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut.

f

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f az F -be f helyett f -t véve a kapott F egy minimális költségu feszítofa lesz

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f az F -be f helyett f -t véve a kapott F egy minimális költségu feszítofa lesz Miért nem akadunk el soha?

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f az F -be f helyett f -t véve a kapott F egy minimális költségu feszítofa lesz Miért nem akadunk el soha? Tegyük fel, hogy van még egy f színtelen él.

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f az F -be f helyett f -t véve a kapott F egy minimális költségu feszítofa lesz Miért nem akadunk el soha? Tegyük fel, hogy van még egy f színtelen él. A színezés takaros = a kék élek egy erdot alkotnak.

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f az F -be f helyett f -t véve a kapott F egy minimális költségu feszítofa lesz Miért nem akadunk el soha? Tegyük fel, hogy van még egy f színtelen él. A színezés takaros = a kék élek egy erdot alkotnak. = Ha f végpontjai ugyanabban a kék fában vannak, akkor a piros szabály alkalmazható arra körre, aminek az élei f és az f végpontjait összeköto (egyetlen) kék út élei.

A LGORITMUSELMÉLET 10.

EL OADÁS

13

A piros szabályt használjuk: Ekkor f piros lesz. = Ha f nem éle F -nek Ha f F , akkor az f törlésével az F két komponensre esik. f = A körnek, amelyre a piros szabályt F alkalmaztuk. van olyan f = f éle, ami a két komponens között fut. A régi színezés takarossága és a piros szabály miatt az f színtelen és c(f ) c(f ). f az F -be f helyett f -t véve a kapott F egy minimális költségu feszítofa lesz Miért nem akadunk el soha? Tegyük fel, hogy van még egy f színtelen él. A színezés takaros = a kék élek egy erdot alkotnak. = Ha f végpontjai ugyanabban a kék fában vannak, akkor a piros szabály alkalmazható arra körre, aminek az élei f és az f végpontjait összeköto (egyetlen) kék út élei. = Ha f különbözo kék fákat köt össze, akkor pedig a kék szabály muködik; X legyen az egyik olyan fa csúcshalmaza, amihez f csatlakozik. (Ez utóbbi esetben nem biztos, hogy f fog színt kapni a következo lépésben.)

A LGORITMUSELMÉLET 10.

EL OADÁS

14

Tétel. Ha a piros-kék algoritmussal befestjük az összefüggo G = (V, E) gráf minden élét, akkor a kék élek egy minimális költségu feszítofa élei. Sot, ez már akkor is igaz, amikor van |V | - 1 kék élünk (és esetleg van még színezetlen él).

A LGORITMUSELMÉLET 10.

EL OADÁS

14

Tétel. Ha a piros-kék algoritmussal befestjük az összefüggo G = (V, E) gráf minden élét, akkor a kék élek egy minimális költségu feszítofa élei. Sot, ez már akkor is igaz, amikor van |V | - 1 kék élünk (és esetleg van még színezetlen él). Bizonyítás: Az elso állítás = a végso színezés is takaros.

A LGORITMUSELMÉLET 10.

EL OADÁS

14

Tétel. Ha a piros-kék algoritmussal befestjük az összefüggo G = (V, E) gráf minden élét, akkor a kék élek egy minimális költségu feszítofa élei. Sot, ez már akkor is igaz, amikor van |V | - 1 kék élünk (és esetleg van még színezetlen él). Bizonyítás: Az elso állítás = a végso színezés is takaros. A második: végül összesen |V | - 1 kék él lesz. Ha már van ennyi, akkor több nem keletkezhet.

A LGORITMUSELMÉLET 10.

EL OADÁS

15

Prim, Kruskal és Boruvka módszerei °
A recept helyessége szempontjából tehát közömbös a sorrend, hatékonyság szempontjából viszont nem.

A LGORITMUSELMÉLET 10.

EL OADÁS

15

Prim, Kruskal és Boruvka módszerei °
A recept helyessége szempontjából tehát közömbös a sorrend, hatékonyság szempontjából viszont nem. P RIM MÓDSZERE : Legyen s a G egy rögzített csúcsa. Minden egyes színezo lépéssel az s-et tartalmazó F kék fát bovítjük. Kezdetben az F csúcshalmaza {s}, végül pedig az egész V .

A LGORITMUSELMÉLET 10.

EL OADÁS

15

Prim, Kruskal és Boruvka módszerei °
A recept helyessége szempontjából tehát közömbös a sorrend, hatékonyság szempontjából viszont nem. P RIM MÓDSZERE : Legyen s a G egy rögzített csúcsa. Minden egyes színezo lépéssel az s-et tartalmazó F kék fát bovítjük. Kezdetben az F csúcshalmaza {s}, végül pedig az egész V . A következo kék élnek az egyik legkisebb súlyú élet választjuk azok közül, amelyek F -beli pontból F -en kívüli pontba mennek.

A LGORITMUSELMÉLET 10.

EL OADÁS

15

Prim, Kruskal és Boruvka módszerei °
A recept helyessége szempontjából tehát közömbös a sorrend, hatékonyság szempontjából viszont nem. P RIM MÓDSZERE : Legyen s a G egy rögzített csúcsa. Minden egyes színezo lépéssel az s-et tartalmazó F kék fát bovítjük. Kezdetben az F csúcshalmaza {s}, végül pedig az egész V . A következo kék élnek az egyik legkisebb súlyú élet választjuk azok közül, amelyek F -beli pontból F -en kívüli pontba mennek. K RUSKAL MÓDSZERE : A következo befestendo f él legyen mindig a legkisebb súlyú színtelen él.

A LGORITMUSELMÉLET 10.

EL OADÁS

15

Prim, Kruskal és Boruvka módszerei °
A recept helyessége szempontjából tehát közömbös a sorrend, hatékonyság szempontjából viszont nem. P RIM MÓDSZERE : Legyen s a G egy rögzített csúcsa. Minden egyes színezo lépéssel az s-et tartalmazó F kék fát bovítjük. Kezdetben az F csúcshalmaza {s}, végül pedig az egész V . A következo kék élnek az egyik legkisebb súlyú élet választjuk azok közül, amelyek F -beli pontból F -en kívüli pontba mennek. K RUSKAL MÓDSZERE : A következo befestendo f él legyen mindig a legkisebb súlyú színtelen él. Ha az f két végpontja ugyanazon kék fában van, akkor az él legyen piros, különben pedig kék.

A LGORITMUSELMÉLET 10.

EL OADÁS

15

Prim, Kruskal és Boruvka módszerei °
A recept helyessége szempontjából tehát közömbös a sorrend, hatékonyság szempontjából viszont nem. P RIM MÓDSZERE : Legyen s a G egy rögzített csúcsa. Minden egyes színezo lépéssel az s-et tartalmazó F kék fát bovítjük. Kezdetben az F csúcshalmaza {s}, végül pedig az egész V . A következo kék élnek az egyik legkisebb súlyú élet választjuk azok közül, amelyek F -beli pontból F -en kívüli pontba mennek. K RUSKAL MÓDSZERE : A következo befestendo f él legyen mindig a legkisebb súlyú színtelen él. Ha az f két végpontja ugyanazon kék fában van, akkor az él legyen piros, különben pedig kék.
° B OR UVKA MÓDSZERE : Minden egyes kék fához válasszuk ki a legkisebb súlyú belole kimeno (színtelen) élet. Színezzük kékre a kiválasztott éleket.

A LGORITMUSELMÉLET 10.

EL OADÁS

16

Prim módszere
Mindig a kék szabályt alkalmazzuk: Válasszuk X-nek a meglévo fa ponthalmazát.

A LGORITMUSELMÉLET 10.

EL OADÁS

16

Prim módszere
Mindig a kék szabályt alkalmazzuk: Válasszuk X-nek a meglévo fa ponthalmazát. A kék élek végig fát alkotnak.

A LGORITMUSELMÉLET 10.

EL OADÁS

16

Prim módszere
Mindig a kék szabályt alkalmazzuk: Válasszuk X-nek a meglévo fa ponthalmazát. A kék élek végig fát alkotnak. procedure Prim (G: gráf; var F : élek halmaza); var U : csúcsok halmaza; u, v: csúcsok; begin F := ; U := {1}; while U = V do begin () legyen (u, v) egy legkisebb súlyú olyan él, melyre u U és v V \ U ; F := F {(u, v)}; U := U {v} end end

A LGORITMUSELMÉLET 10.

EL OADÁS

16

Prim módszere
Mindig a kék szabályt alkalmazzuk: Válasszuk X-nek a meglévo fa ponthalmazát. A kék élek végig fát alkotnak. procedure Prim (G: gráf; var F : élek halmaza); var U : csúcsok halmaza; u, v: csúcsok; begin F := ; U := {1}; while U = V do begin () legyen (u, v) egy legkisebb súlyú olyan él, melyre u U és v V \ U ; F := F {(u, v)}; U := U {v} end end Jól muködik, mert piros-kék algoritmus.

A LGORITMUSELMÉLET 10.

EL OADÁS

16

Prim módszere
Mindig a kék szabályt alkalmazzuk: Válasszuk X-nek a meglévo fa ponthalmazát. A kék élek végig fát alkotnak. procedure Prim (G: gráf; var F : élek halmaza); var U : csúcsok halmaza; u, v: csúcsok; begin F := ; U := {1}; while U = V do begin () legyen (u, v) egy legkisebb súlyú olyan él, melyre u U és v V \ U ; F := F {(u, v)}; U := U {v} end end Jól muködik, mert piros-kék algoritmus. JAVA animáció: Prim módszere

A LGORITMUSELMÉLET 10.

EL OADÁS

17

Naiv implementáció
A gráf az élsúlyokat tartalmazó C adjacencia-mátrixával adott.

A LGORITMUSELMÉLET 10.

EL OADÁS

17

Naiv implementáció
A gráf az élsúlyokat tartalmazó C adjacencia-mátrixával adott. Az épp aktuális U és V \ U halmazok közt futó legkisebb súlyú élek kiválasztása = O(n2) lépés

A LGORITMUSELMÉLET 10.

EL OADÁS

17

Naiv implementáció
A gráf az élsúlyokat tartalmazó C adjacencia-mátrixával adott. Az épp aktuális U és V \ U halmazok közt futó legkisebb súlyú élek kiválasztása = O(n2) lépés = Minden V \ U -beli csúcshoz tároljuk, hogy milyen messze van az U halmaztól

A LGORITMUSELMÉLET 10.

EL OADÁS

17

Naiv implementáció
A gráf az élsúlyokat tartalmazó C adjacencia-mátrixával adott. Az épp aktuális U és V \ U halmazok közt futó legkisebb súlyú élek kiválasztása = O(n2) lépés = Minden V \ U -beli csúcshoz tároljuk, hogy milyen messze van az U halmaztól egy az i-hez legközelebbi U -beli csúcs ha i U ha i V \ U

KÖZEL[i] =

A LGORITMUSELMÉLET 10.

EL OADÁS

17

Naiv implementáció
A gráf az élsúlyokat tartalmazó C adjacencia-mátrixával adott. Az épp aktuális U és V \ U halmazok közt futó legkisebb súlyú élek kiválasztása = O(n2) lépés = Minden V \ U -beli csúcshoz tároljuk, hogy milyen messze van az U halmaztól egy az i-hez legközelebbi U -beli csúcs C[i, j] ha i U ha KÖZEL[i] = j = ha i U ha i V \ U

KÖZEL[i] =

MINSÚLY[i] =

A LGORITMUSELMÉLET 10.

EL OADÁS

17

Naiv implementáció
A gráf az élsúlyokat tartalmazó C adjacencia-mátrixával adott. Az épp aktuális U és V \ U halmazok közt futó legkisebb súlyú élek kiválasztása = O(n2) lépés = Minden V \ U -beli csúcshoz tároljuk, hogy milyen messze van az U halmaztól egy az i-hez legközelebbi U -beli csúcs C[i, j] ha i U ha KÖZEL[i] = j = ha i U ha i V \ U

KÖZEL[i] =

MINSÚLY[i] =

A következo kék él az (i, KÖZEL[i]) élek közül kerül majd ki = kékes élek

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés a (KÖZEL[k], k) élet fogjuk F -be tenni, k-t pedig U -ba.

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés a (KÖZEL[k], k) élet fogjuk F -be tenni, k-t pedig U -ba. = MINSÚLY[k] := KÖZEL[k] := .

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés a (KÖZEL[k], k) élet fogjuk F -be tenni, k-t pedig U -ba. = MINSÚLY[k] := KÖZEL[k] := . · A két tömb felfrissítése: A C[k, i] és a MINSÚLY[i] értékeket (i V \ U ) kell összevetni.

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés a (KÖZEL[k], k) élet fogjuk F -be tenni, k-t pedig U -ba. = MINSÚLY[k] := KÖZEL[k] := . · A két tömb felfrissítése: A C[k, i] és a MINSÚLY[i] értékeket (i V \ U ) kell összevetni. = if KÖZEL[i] = and C[k, i] < MINSÚLY[i] then begin KÖZEL[i] := k; MINSÚLY[i] := C[k, i] end

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés a (KÖZEL[k], k) élet fogjuk F -be tenni, k-t pedig U -ba. = MINSÚLY[k] := KÖZEL[k] := . · A két tömb felfrissítése: A C[k, i] és a MINSÚLY[i] értékeket (i V \ U ) kell összevetni. = if KÖZEL[i] = and C[k, i] < MINSÚLY[i] then begin KÖZEL[i] := k; MINSÚLY[i] := C[k, i] end Lépésszám: Egy él színezés O(n) = O(n2)

A LGORITMUSELMÉLET 10.

EL OADÁS

18

KÖZEL[i] :=

1

ha i = 1 ha i = 1 ha i = 1 ha i = 1

MINSÚLY[i] :=

C[i, 1]

· A következo kék él kiválasztása: megkeressük a MINSÚLY[ ] tömb minimumát, = legrövidebb kékes él hossza = k-ba mutató A minimumkeresés költsége: O(n) lépés a (KÖZEL[k], k) élet fogjuk F -be tenni, k-t pedig U -ba. = MINSÚLY[k] := KÖZEL[k] := . · A két tömb felfrissítése: A C[k, i] és a MINSÚLY[i] értékeket (i V \ U ) kell összevetni. = if KÖZEL[i] = and C[k, i] < MINSÚLY[i] then begin KÖZEL[i] := k; MINSÚLY[i] := C[k, i] end Lépésszám: Egy él színezés O(n) = O(n2) JAVA animáció: Prim módszere

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol.

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore.

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore. Lépésszám: A kupac mérete sosem haladja meg e-t.

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore. Lépésszám: A kupac mérete sosem haladja meg e-t. A kezdeti kupacépítés legfeljebb O(e), az egyes muveletek végrehajtása pedig O(log e) idot vesz igénybe.

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore. Lépésszám: A kupac mérete sosem haladja meg e-t. A kezdeti kupacépítés legfeljebb O(e), az egyes muveletek végrehajtása pedig O(log e) idot vesz igénybe. Összesen kevesebb, mint e darab BESZÚR és legfeljebb e darab MINTÖR muveletet végzünk

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore. Lépésszám: A kupac mérete sosem haladja meg e-t. A kezdeti kupacépítés legfeljebb O(e), az egyes muveletek végrehajtása pedig O(log e) idot vesz igénybe. Összesen kevesebb, mint e darab BESZÚR és legfeljebb e darab MINTÖR muveletet végzünk = O(e log e)

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore. Lépésszám: A kupac mérete sosem haladja meg e-t. A kezdeti kupacépítés legfeljebb O(e), az egyes muveletek végrehajtása pedig O(log e) idot vesz igénybe. Összesen kevesebb, mint e darab BESZÚR és legfeljebb e darab MINTÖR muveletet végzünk = O(e log e) Johnson: Kombináljuk a két ötletet, nyilvántartjuk a közeli csúcsokat, és d-kupacban tároljuk a kékes éleket

A LGORITMUSELMÉLET 10.

EL OADÁS

19

Kupacos-éllistás implementáció
Építsünk kupacot az aktuális U és V \ U közötti élekbol. (néhány) MINTÖR-rel O(log(e)) lépéssel kiválaszthatjuk a minimálisat, amit kékre színezünk Megváltozott U = BESZÚR-ral beszúrjuk az új éleket Nem törodünk azokkal az élekkel, amik így U -n belül mennek = ezért lehet, hogy MINTÖR-nél ilyet kapunk elsore. Lépésszám: A kupac mérete sosem haladja meg e-t. A kezdeti kupacépítés legfeljebb O(e), az egyes muveletek végrehajtása pedig O(log e) idot vesz igénybe. Összesen kevesebb, mint e darab BESZÚR és legfeljebb e darab MINTÖR muveletet végzünk = O(e log e) Johnson: Kombináljuk a két ötletet, nyilvántartjuk a közeli csúcsokat, és d-kupacban tároljuk a kékes éleket = ha n1,5 e = O(e)

Algoritmuselmélet 11. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Március 26.

A LGORITMUSELMÉLET 11.

EL OADÁ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 LGORITMUSELMÉLET 11.

EL OADÁ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 erdot határoznak meg, akkor van kész, ha feszítofa lesz.

A LGORITMUSELMÉLET 11.

EL OADÁ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 erdot határoznak meg, akkor van kész, ha feszítofa lesz. = Az új kék él az eddigi erdo két komponensét fogja összekötni.

A LGORITMUSELMÉLET 11.

EL OADÁ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 erdot határoznak meg, akkor van kész, ha feszítofa lesz. = Az új kék él az eddigi erdo két komponensét fogja összekötni. Kezdetben n komponens, egy él színezésével eggyel csökken a komponensek száma.

A LGORITMUSELMÉLET 11.

EL OADÁ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 erdot határoznak meg, akkor van kész, ha feszítofa lesz. = Az új kék él az eddigi erdo 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özo kék fákban vannak), akkor F := F {(v, w)} end end

A LGORITMUSELMÉLET 11.

EL OADÁ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 erdot határoznak meg, akkor van kész, ha feszítofa lesz. = Az új kék él az eddigi erdo 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özo 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.

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal Implementáció: · élekbol kupacot építünk O(e log e) lépés

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal Implementáció: · élekbol kupacot építünk O(e log e) lépés · éleket elore rendezzük O(e log e) lépés

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal Implementáció: · élekbol kupacot építünk O(e log e) lépés · éleket elore 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?

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal Implementáció: · élekbol kupacot építünk O(e log e) lépés · éleket elore 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.

A LGORITMUSELMÉLET 11.

EL OADÁS

2

Tétel. A Kruskal-algoritmus eredményeként végül F a G gráf egy minimális költségu feszítofájának éleit tartalmazza. Bizonyítás: ez is piros-kék algoritmus JAVA animáció: Kruskal Implementáció: · élekbol kupacot építünk O(e log e) lépés · éleket elore 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

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S Adott egy n elemu S halmaz, és ennek bizonyos U1, . . . , Um részhalmazai, melyekre Ui Uj = (i = j) és U1 . . . Um = S (vagyis az Uj részhalmazok S egy partícióját adják).

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S Adott egy n elemu S halmaz, és ennek bizonyos U1, . . . , Um részhalmazai, melyekre Ui Uj = (i = j) és U1 . . . Um = S (vagyis az Uj részhalmazok S egy partícióját adják). Muveletek:

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S Adott egy n elemu S halmaz, és ennek bizonyos U1, . . . , Um részhalmazai, melyekre Ui Uj = (i = j) és U1 . . . Um = S (vagyis az Uj részhalmazok S egy partícióját adják). Muveletek: UNIÓ(Ui, Uj ) = ({U1, . . . , Um} {Ui Uj }) \ {Ui, Uj } (az Ui, Uj halmazokat Ui Uj helyettesíti).

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S Adott egy n elemu S halmaz, és ennek bizonyos U1, . . . , Um részhalmazai, melyekre Ui Uj = (i = j) és U1 . . . Um = S (vagyis az Uj részhalmazok S egy partícióját adják). Muveletek: UNIÓ(Ui, Uj ) = ({U1, . . . , Um} {Ui Uj }) \ {Ui, Uj } (az Ui, Uj halmazokat Ui Uj helyettesíti). HOLVAN(v) eredménye (itt v S) annak az Ui halmaznak a neve, amelynek v eleme.

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S Adott egy n elemu S halmaz, és ennek bizonyos U1, . . . , Um részhalmazai, melyekre Ui Uj = (i = j) és U1 . . . Um = S (vagyis az Uj részhalmazok S egy partícióját adják). Muveletek: UNIÓ(Ui, Uj ) = ({U1, . . . , Um} {Ui Uj }) \ {Ui, Uj } (az Ui, Uj halmazokat Ui Uj helyettesíti). HOLVAN(v) eredménye (itt v S) annak az Ui halmaznak a neve, amelynek v eleme. Kruskalban: annak megvizsgálása, hogy milyen színu legyen az új (u, v) él = Ha HOLVAN(u) = HOLVAN(v), akkor kék, különben piros.

A LGORITMUSELMÉLET 11.

EL OADÁS

3

Az UNIÓ-HOLVAN adatszerkezet
Legyen adott egy véges S halmaz. Ennek egy partícióját szeretnénk tárolni U1, . . . , Uk S Adott egy n elemu S halmaz, és ennek bizonyos U1, . . . , Um részhalmazai, melyekre Ui Uj = (i = j) és U1 . . . Um = S (vagyis az Uj részhalmazok S egy partícióját adják). Muveletek: UNIÓ(Ui, Uj ) = ({U1, . . . , Um} {Ui Uj }) \ {Ui, Uj } (az Ui, Uj halmazokat Ui Uj helyettesíti). HOLVAN(v) eredménye (itt v S) annak az Ui halmaznak a neve, amelynek v eleme. Kruskalban: annak megvizsgálása, hogy milyen színu 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))

A LGORITMUSELMÉLET 11.

EL OADÁS

4

Implementáció fákkal
Uj gyökeres, felfelé irányított fa

A LGORITMUSELMÉLET 11.

EL OADÁS

4

Implementáció fákkal
Uj gyökeres, felfelé irányított fa Uj elemeit a fa csúcsaiban tároljuk, egy szülomutatóval.

A LGORITMUSELMÉLET 11.

EL OADÁS

4

Implementáció fákkal
Uj gyökeres, felfelé irányított fa Uj elemeit a fa csúcsaiban tároljuk, egy szülomutatóval. Egy részhalmaz neve legyen az ot ábrázoló fa gyökere. A gyökérben nyilvántartjuk még a fa méretét is.

A LGORITMUSELMÉLET 11.

EL OADÁS

4

Implementáció fákkal
Uj gyökeres, felfelé irányított fa Uj elemeit a fa csúcsaiban tároljuk, egy szülomutatóval. Egy részhalmaz neve legyen az ot ábrázoló fa gyökere. A gyökérben nyilvántartjuk még a fa méretét is. · UNIÓ: Ui Uj fáját a következoképpen készítjük el: Tegyük fel, hogy |Ui| |Uj |. Ekkor az Uj fa x gyökeréhez gyermekként hozzákapcsoljuk Ui gyökerét.

x q
¢f ¢ f ¢ ¢

Uiff

¢

f

¢v ¢ v ¢ v v ¢ v ¢ v ¢ j v ¢

U

q $$$v ¢ $$ $ ¢ v ¢f ¢ v ¢ f v ¢ ¢ f v ¢ ¢ f v ¢ j v ¢ if ¢

x

U U Ui Uj

A LGORITMUSELMÉLET 11.

EL OADÁS

4

Implementáció fákkal
Uj gyökeres, felfelé irányított fa Uj elemeit a fa csúcsaiban tároljuk, egy szülomutatóval. Egy részhalmaz neve legyen az ot ábrázoló fa gyökere. A gyökérben nyilvántartjuk még a fa méretét is. · UNIÓ: Ui Uj fáját a következoképpen készítjük el: Tegyük fel, hogy |Ui| |Uj |. Ekkor az Uj fa x gyökeréhez gyermekként x t hozzákapcsoljuk Ui gyökerét. ¡e
¢ ¡ e ¢ ¡¢ e ¡¢ e ¡ d e s ¡ e d ¡ e d Q ¡ e ¡ e ¡ e w f ¡ e f ¡ e f ¡ e f ¡ e f I ¡ e ¡ n e ¡ e T

x q
¢f ¢ f ¢ ¢

Uiff

¢

f

¢v ¢ v ¢ v v ¢ v ¢ v ¢ j v ¢

U

q $$$v ¢ $$ $ ¢ v ¢f ¢ v ¢ f v ¢ ¢ f v ¢ ¢ f v ¢ j v ¢ if ¢

x

U U Ui Uj

v

v

· HOLVAN: A v S elemet tartalmazó részhalmaz nevét, azaz a megfelelo fa gyökerét a szülokhöz meno mutatók végigkövetésével találhatjuk meg.

A LGORITMUSELMÉLET 11.

EL OADÁS

5

Az UNIÓ hívásakor az Ui és Uj halmazok a gyökerükkel adottak = költség: O(1)

A LGORITMUSELMÉLET 11.

EL OADÁS

5

Az UNIÓ hívásakor az Ui és Uj 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értol, míg az új fájának a mérete legalább az eredeti duplájára változik.

A LGORITMUSELMÉLET 11.

EL OADÁS

5

Az UNIÓ hívásakor az Ui és Uj 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értol, míg az új fájának a mérete legalább az eredeti duplájára változik. = Egy csúcs legfeljebb log2 n-szer kerülhet új gyökér alá

A LGORITMUSELMÉLET 11.

EL OADÁS

5

Az UNIÓ hívásakor az Ui és Uj 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értol, míg az új fájának a mérete legalább az eredeti duplájára változik. = Egy csúcs legfeljebb log2 n-szer kerülhet új gyökér alá = szintszám log2 n

A LGORITMUSELMÉLET 11.

EL OADÁS

5

Az UNIÓ hívásakor az Ui és Uj 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értol, míg az új fájának a mérete legalább az eredeti duplájára változik. = Egy csúcs legfeljebb log2 n-szer kerülhet új gyökér alá = szintszám log2 n = HOLVAN költsége O(log n)

A LGORITMUSELMÉLET 11.

EL OADÁS

5

Az UNIÓ hívásakor az Ui és Uj 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értol, míg az új fájának a mérete legalább az eredeti duplájára változik. = Egy csúcs legfeljebb log2 n-szer kerülhet új gyökér alá = szintszám log2 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Ó muveletet jelent. Ezek idoigénye O(e log n + n) = O(e log n), vagy ami ugyanaz: O(e log e).

A LGORITMUSELMÉLET 11.

EL OADÁ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

A LGORITMUSELMÉLET 11.

EL OADÁ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 elso alkalommal, minden osét kössük közvetlenül a gyökérbe
s u 3 r B s ¡e ¨¨ d 33 T rr ¢e ¨ ¡¢ e 33 d rr ¨¨ 33 rr ¡¢ d 3 ¨ E e rr ¡¢ 33 ¨ ¨ d 3 ¨ e rr ¡¢ 4 e ¨ dr s r s q 33 ¡ d 33 s s d d e d
33 1 4 ¡ 2 3 d 3 e d ¡ 33 d dr 3 e 33 ¡ Q s 3 d e 3 d ¡ e d ¡ de pr ¡ e w f 2 ¡ e ¡ f e ¡ f e ¡ f e ¡ f I q e ¡ e 1 ¡ e ¡ ¡ e

gyökér x

gyökér

x

v

x

x

x

x

x

v

x

A LGORITMUSELMÉLET 11.

EL OADÁ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 elso alkalommal, minden osét kössük közvetlenül a gyökérbe
s u 3 r B s ¡e ¨¨ d 33 T rr ¢e ¨ ¡¢ e 33 d rr ¨¨ 33 rr ¡¢ d 3 ¨ E e rr ¡¢ 33 ¨ ¨ d 3 ¨ e rr ¡¢ 4 e ¨ dr s r s q 33 ¡ d 33 s s d d e d
33 1 4 ¡ 2 3 d 3 e d ¡ 33 d dr 3 e 33 ¡ Q s 3 d e 3 d ¡ e d ¡ de pr ¡ e w f 2 ¡ e ¡ f e ¡ f e ¡ f e ¡ f I q e ¡ e 1 ¡ e ¡ ¡ e

gyökér x

gyökér

x

v

x

x

x

x

x

v

x

Tétel. Legyen |S| = n, és tegyük fel, hogy kezdetben mindegyik Uj egyelemu. 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 idoigénye O(m(m)).

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : Z+ Z+ függvény az inverz Ackermann-függvény.

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : 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+ tetszoleges). Pl. (m) 4, ha m < 265536 A normális méretu feladatoknál tehát (m) állandónak ( 4) tekintheto.

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : 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+ tetszoleges). Pl. (m) 4, ha m < 265536 A normális méretu feladatoknál tehát (m) állandónak ( 4) tekintheto. Tétel. Ha az élek rendezésével kapcsolatos teendok O(e) idoben megoldhatók, akkor a Kruskal-algoritmus O(e(e)) idoben megvalósítható.

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : 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+ tetszoleges). Pl. (m) 4, ha m < 265536 A normális méretu feladatoknál tehát (m) állandónak ( 4) tekintheto. Tétel. Ha az élek rendezésével kapcsolatos teendok O(e) idoben megoldhatók, akkor a Kruskal-algoritmus O(e(e)) idoben megvalósítható. Manipuláció a súlyokkal = Yao (1975): O(e log log n)

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : 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+ tetszoleges). Pl. (m) 4, ha m < 265536 A normális méretu feladatoknál tehát (m) állandónak ( 4) tekintheto. Tétel. Ha az élek rendezésével kapcsolatos teendok O(e) idoben megoldhatók, akkor a Kruskal-algoritmus O(e(e)) idoben 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)

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : 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+ tetszoleges). Pl. (m) 4, ha m < 265536 A normális méretu feladatoknál tehát (m) állandónak ( 4) tekintheto. Tétel. Ha az élek rendezésével kapcsolatos teendok O(e) idoben megoldhatók, akkor a Kruskal-algoritmus O(e(e)) idoben 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 mukö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.

A LGORITMUSELMÉLET 11.

EL OADÁS

7

A korlátban szereplo : 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+ tetszoleges). Pl. (m) 4, ha m < 265536 A normális méretu feladatoknál tehát (m) állandónak ( 4) tekintheto. Tétel. Ha az élek rendezésével kapcsolatos teendok O(e) idoben megoldhatók, akkor a Kruskal-algoritmus O(e(e)) idoben 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 mukö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

A LGORITMUSELMÉLET 11.

EL OADÁ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 ­ V1-re és V2-re ­ úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V1 és y V2 vagy fordítva.

A LGORITMUSELMÉLET 11.

EL OADÁ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 ­ V1-re és V2-re ­ úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V1 és y V2 vagy fordítva. Definíció. Legyen G = (V, E) egy tetszoleges 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.

A LGORITMUSELMÉLET 11.

EL OADÁ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 ­ V1-re és V2-re ­ úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V1 és y V2 vagy fordítva. Definíció. Legyen G = (V, E) egy tetszoleges 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 LGORITMUSELMÉLET 11.

EL OADÁ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 ­ V1-re és V2-re ­ úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V1 és y V2 vagy fordítva. Definíció. Legyen G = (V, E) egy tetszoleges 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 = (V1, V2; E) páros gráf. Határozzuk meg G egy maximális párosítását.

A LGORITMUSELMÉLET 11.

EL OADÁ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 ­ V1-re és V2-re ­ úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V1 és y V2 vagy fordítva. Definíció. Legyen G = (V, E) egy tetszoleges 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 = (V1, V2; E) páros gráf. Határozzuk meg G egy maximális párosítását. Definíció. Legyen G egy tetszoleges 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.

A LGORITMUSELMÉLET 11.

EL OADÁ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 ­ V1-re és V2-re ­ úgy, hogy minden él ezen két halmaz között fut, vagyis (x, y) E esetén x V1 és y V2 vagy fordítva. Definíció. Legyen G = (V, E) egy tetszoleges 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 = (V1, V2; E) páros gráf. Határozzuk meg G egy maximális párosítását. Definíció. Legyen G egy tetszoleges 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.

A LGORITMUSELMÉLET 11.

EL OADÁS

9

Tétel. Legyen G = (V, E) egy tetszoleges 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.

A LGORITMUSELMÉLET 11.

EL OADÁS

9

Tétel. Legyen G = (V, E) egy tetszoleges 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 v M v X A u X u

B w v X t

w A

v X

u

A LGORITMUSELMÉLET 11.

EL OADÁS

9

Tétel. Legyen G = (V, E) egy tetszoleges 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 v M v X A
Hogyan keressünk javító utat?

B X u w v X t

u A

w

v X

u

A LGORITMUSELMÉLET 11.

EL OADÁS

10

Javító út keresése alternáló erdo építésével
0. szint: . . V1 azon pontjai, melyeket E nem fed le, vagyis a párosítatlan pontok.

A LGORITMUSELMÉLET 11.

EL OADÁS

10

Javító út keresése alternáló erdo építésével
0. szint: . . 2k - 1. szint: V1 azon pontjai, melyeket E nem fed le, vagyis a párosítatlan pontok. V2 azon még fel nem vett pontjai, melyek egy párosítatlan, azaz egy E \ E -beli éllel elérhetok egy 2k - 2. szintbeli pontból; ezen éllel együtt.

A LGORITMUSELMÉLET 11.

EL OADÁS

10

Javító út keresése alternáló erdo építésével
0. szint: . . 2k - 1. szint: V1 azon pontjai, melyeket E nem fed le, vagyis a párosítatlan pontok. V2 azon még fel nem vett pontjai, melyek egy párosítatlan, azaz egy E \ E -beli éllel elérhetok egy 2k - 2. szintbeli pontból; ezen éllel együtt. V1 azon még fel nem vett pontjai, melyek egy párosított, azaz egy E -beli éllel elérhetok egy 2k - 1. szintbeli pontból; ezen éllel együtt.

2k. szint: . .

A LGORITMUSELMÉLET 11.

EL OADÁS

10

Javító út keresése alternáló erdo építésével
0. szint: . . 2k - 1. szint: V1 azon pontjai, melyeket E nem fed le, vagyis a párosítatlan pontok. V2 azon még fel nem vett pontjai, melyek egy párosítatlan, azaz egy E \ E -beli éllel elérhetok egy 2k - 2. szintbeli pontból; ezen éllel együtt. V1 azon még fel nem vett pontjai, melyek egy párosított, azaz egy E -beli éllel elérhetok egy 2k - 1. szintbeli pontból; ezen éllel együtt.

2k. szint: . .

A LGORITMUSELMÉLET 11.

EL OADÁS

11

Tétel. A G = (V1, V2; 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ó erdoben valamelyik páratlan szinten megjelenik egy párosítatlan pont.

A LGORITMUSELMÉLET 11.

EL OADÁS

11

Tétel. A G = (V1, V2; 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ó erdoben 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é vezeto út javító út

A LGORITMUSELMÉLET 11.

EL OADÁS

11

Tétel. A G = (V1, V2; 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ó erdoben 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é vezeto út javító út Fordítva: Megmutatjuk, hogy a V1 párosítatlan csúcsaiból (ezek vannak az erdoben a nulladik szinten) alternáló úton elérheto pontok mindegyikét beválasztjuk valamikor az alternáló erdobe.

A LGORITMUSELMÉLET 11.

EL OADÁS

11

Tétel. A G = (V1, V2; 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ó erdoben 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é vezeto út javító út Fordítva: Megmutatjuk, hogy a V1 párosítatlan csúcsaiból (ezek vannak az erdoben a nulladik szinten) alternáló úton elérheto pontok mindegyikét beválasztjuk valamikor az alternáló erdobe. Tegyük fel, hogy v0, v1, . . . , vk egy alternáló út, és v0 V1 egy párosítatlan csúcs; i szerinti indukcióval megmutatjuk, hogy vi bekerül az erdobe. Ha i = 0

A LGORITMUSELMÉLET 11.

EL OADÁS

11

Tétel. A G = (V1, V2; 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ó erdoben 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é vezeto út javító út Fordítva: Megmutatjuk, hogy a V1 párosítatlan csúcsaiból (ezek vannak az erdoben a nulladik szinten) alternáló úton elérheto pontok mindegyikét beválasztjuk valamikor az alternáló erdobe. Tegyük fel, hogy v0, v1, . . . , vk egy alternáló út, és v0 V1 egy párosítatlan csúcs; i szerinti indukcióval megmutatjuk, hogy vi bekerül az erdobe. Ha i = 0 Az út v2j csúcsa V1-ben van és a (v2j , v2j +1) él párosítatlan. = ha v2j -t beválasztottuk, akkor v2j +1 is bekerül

A LGORITMUSELMÉLET 11.

EL OADÁS

11

Tétel. A G = (V1, V2; 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ó erdoben 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é vezeto út javító út Fordítva: Megmutatjuk, hogy a V1 párosítatlan csúcsaiból (ezek vannak az erdoben a nulladik szinten) alternáló úton elérheto pontok mindegyikét beválasztjuk valamikor az alternáló erdobe. Tegyük fel, hogy v0, v1, . . . , vk egy alternáló út, és v0 V1 egy párosítatlan csúcs; i szerinti indukcióval megmutatjuk, hogy vi bekerül az erdobe. Ha i = 0 Az út v2j csúcsa V1-ben van és a (v2j , v2j +1) él párosítatlan. = ha v2j -t beválasztottuk, akkor v2j +1 is bekerül Az út v2j-1 csúcsa V2-ben van és (v2j-1, v2j ) E . Így v2j-1 után v2j is sorra kerül, ha korábban ez még nem történt meg.

A LGORITMUSELMÉLET 11.

EL OADÁS

12

Tegyük fel, hogy G-ben a v és w csúcsok egy javító út végpontjai.

A LGORITMUSELMÉLET 11.

EL OADÁS

12

Tegyük fel, hogy G-ben a v és w csúcsok egy javító út végpontjai. v V1 párosítatlan = w V2

A LGORITMUSELMÉLET 11.

EL OADÁS

12

Tegyük fel, hogy G-ben a v és w csúcsok egy javító út végpontjai. v V1 párosítatlan = w V2 w elérheto alternáló úton v-bol = valamikor beválasztjuk

A LGORITMUSELMÉLET 11.

EL OADÁS

12

Tegyük fel, hogy G-ben a v és w csúcsok egy javító út végpontjai. v V1 párosítatlan = w V2 w elérheto alternáló úton v-bol = valamikor beválasztjuk De V2-beli csúcsokat csak páratlan szintekre veszünk fel = w is itt lesz Lépésszám: Alternáló erdo építése: O(e), össze lépésszám: O(ne)

A LGORITMUSELMÉLET 11.

EL OADÁS

12

Tegyük fel, hogy G-ben a v és w csúcsok egy javító út végpontjai. v V1 párosítatlan = w V2 w elérheto alternáló úton v-bol = valamikor beválasztjuk De V2-beli csúcsokat csak páratlan szintekre veszünk fel = w is itt lesz Lépésszám: Alternáló erdo építése: O(e), össze lépésszám: O(ne) Karp (1973): O(e n)

A LGORITMUSELMÉLET 11.

EL OADÁS

13

Maximális folyamok hálózatokban
JAVA animáció: Ford-Fulkerson algoritmus

A LGORITMUSELMÉLET 11.

EL OADÁS

13

Maximális folyamok hálózatokban
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 (1010) s (1010) b (1010) (1) t (1010)

A LGORITMUSELMÉLET 11.

EL OADÁS

13

Maximális folyamok hálózatokban
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 (1010) s (1010) b (1010) (1) t (1010) 1(1010) s 0(1010)

a 0(1010) 1(1) b t 1(1010)

A LGORITMUSELMÉLET 11.

EL OADÁS

13

Maximális folyamok hálózatokban
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 (1010) s (1010) b (1010) (1) t (1010) 1(1010) s 0(1010)

a 0(1010) 1(1) b t 1(1010) 1(1010) s 1(1010)

a 1(1010) 0(1) b t 1(1010)

Ha az élkapacitások racionális számok = véges lépés

A LGORITMUSELMÉLET 11.

EL OADÁS

13

Maximális folyamok hálózatokban
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 (1010) s (1010) b (1010) (1) t (1010) 1(1010) s 0(1010)

a 0(1010) 1(1) b t 1(1010) 1(1010) s 1(1010)

a 1(1010) 0(1) b t 1(1010)

Ha az élkapacitások racionális számok = véges lépés Ha irracionális kapacitásokat is megengedünk = lehet, hogy nem ér véget véges sok lépésben, sot lehet, hogy nem is jó értékhez konvergál

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk.

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo út. Ennek hosszát (élszámát) jelölje l.

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo út. Ennek hosszát (élszámát) jelölje l. Szélességi kereséssel osszuk szintekre = D[v]

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo ú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 elore.

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo ú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 elore. A Gf egy x y élét nevezzük vastagnak, ha D[y] = D[x] + 1. (2) Az l hosszúságú s rövidebb s t út. t utak csupa vastag élbol állnak, és nincs l-nél

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo ú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 elore. A Gf 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 élbol á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?

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo ú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 elore. A Gf 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 élbol á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ítodik és eltunik a javító gráfból.

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo ú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 elore. A Gf 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 élbol á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ítodik és eltunik a javító gráfból. Legfeljebb l darab új él jelenik meg a Gf -ben ( élei ellenkezo irányítással, ha eddig még 0 folyt át rajtuk).

A LGORITMUSELMÉLET 11.

EL OADÁS

14

Edmonds­Karp algoritmus
A folyam növelésére mindig a legrövidebb ­ vagyis a legkevesebb élbol álló ­ növelo utak egyikét válasszuk. Tekintsük a Gf javító gráfot; legyen benne egy legrövidebb növelo ú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 elore. A Gf 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 élbol á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ítodik és eltunik a javító gráfból. Legfeljebb l darab új él jelenik meg a Gf -ben ( élei ellenkezo irányítással, ha eddig még 0 folyt át rajtuk). = a következo növelo út sem lehet rövidebb l-nél.

A LGORITMUSELMÉLET 11.

EL OADÁS

15

Hányszor adódhat egymás után l hosszú növelo út?

A LGORITMUSELMÉLET 11.

EL OADÁS

15

Hányszor adódhat egymás után l hosszú növelo út? Minden javítás után eggyel kevesebb vastag él lesz (legalább egy kritikus él törlodik).

A LGORITMUSELMÉLET 11.

EL OADÁS

15

Hányszor adódhat egymás után l hosszú növelo út? Minden javítás után eggyel kevesebb vastag él lesz (legalább egy kritikus él törlodik). Addig lesz l élbol álló növelo út, amíg marad vastag élekbol álló s t út.

A LGORITMUSELMÉLET 11.

EL OADÁS

15

Hányszor adódhat egymás után l hosszú növelo út? Minden javítás után eggyel kevesebb vastag él lesz (legalább egy kritikus él törlodik). Addig lesz l élbol álló növelo út, amíg marad vastag élekbol álló s t út. Tétel. Az Edmonds­Karp-heurisztika szerinti növelésnél a növelo utak hosszai nem csökkeno sorozatot alkotnak. Ebben a sorozatban egy adott úthosszúság legfeljebb e-szer fordulhat elo. Következésképpen legfeljebb e(n - 1) növelés lehetséges. A heurisztika alkalmazásával O(e2n) elemi lépésben kapunk maximális folyamot.

A LGORITMUSELMÉLET 11.

EL OADÁS

15

Hányszor adódhat egymás után l hosszú növelo út? Minden javítás után eggyel kevesebb vastag él lesz (legalább egy kritikus él törlodik). Addig lesz l élbol álló növelo út, amíg marad vastag élekbol álló s t út. Tétel. Az Edmonds­Karp-heurisztika szerinti növelésnél a növelo utak hosszai nem csökkeno sorozatot alkotnak. Ebben a sorozatban egy adott úthosszúság legfeljebb e-szer fordulhat elo. Következésképpen legfeljebb e(n - 1) növelés lehetséges. A heurisztika alkalmazásával O(e2n) elemi lépésben kapunk maximális folyamot. Bonyolultabb algoritmusok Dinic: O(en2)

A LGORITMUSELMÉLET 11.

EL OADÁS

15

Hányszor adódhat egymás után l hosszú növelo út? Minden javítás után eggyel kevesebb vastag él lesz (legalább egy kritikus él törlodik). Addig lesz l élbol álló növelo út, amíg marad vastag élekbol álló s t út. Tétel. Az Edmonds­Karp-heurisztika szerinti növelésnél a növelo utak hosszai nem csökkeno sorozatot alkotnak. Ebben a sorozatban egy adott úthosszúság legfeljebb e-szer fordulhat elo. Következésképpen legfeljebb e(n - 1) növelés lehetséges. A heurisztika alkalmazásával O(e2n) elemi lépésben kapunk maximális folyamot. Bonyolultabb algoritmusok Dinic: O(en2) Goldberg, Tarjan: O(en log(n2/e))

A LGORITMUSELMÉLET 11.

EL OADÁS

16

Hálózatok alsó korlátokkal
Tegyük fel, hogy a c(u, v) kapacitások mellett (felso 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.

A LGORITMUSELMÉLET 11.

EL OADÁS

16

Hálózatok alsó korlátokkal
Tegyük fel, hogy a c(u, v) kapacitások mellett (felso 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)

A LGORITMUSELMÉLET 11.

EL OADÁS

16

Hálózatok alsó korlátokkal
Tegyük fel, hogy a c(u, v) kapacitások mellett (felso 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?

A LGORITMUSELMÉLET 11.

EL OADÁS

16

Hálózatok alsó korlátokkal
Tegyük fel, hogy a c(u, v) kapacitások mellett (felso 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

A LGORITMUSELMÉLET 11.

EL OADÁS

16

Hálózatok alsó korlátokkal
Tegyük fel, hogy a c(u, v) kapacitások mellett (felso 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 visszavezetheto.

A LGORITMUSELMÉLET 11.

EL OADÁS

17

H = (G, s, t, c, k) H

A LGORITMUSELMÉLET 11.

EL OADÁS

17

H = (G, s, t, c, k) H · Új forrás: S, új nyelo: T

A LGORITMUSELMÉLET 11.

EL OADÁS

17

H = (G, s, t, c, k) H · Új forrás: S, új nyelo: T · Régi éleken új kapacitás: c (u, v) := c(u, v) - k(u, v)

A LGORITMUSELMÉLET 11.

EL OADÁS

17

H = (G, s, t, c, k) H · Új forrás: S, új nyelo: 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)

A LGORITMUSELMÉLET 11.

EL OADÁS

17

H = (G, s, t, c, k) H · Új forrás: S, új nyelo: 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 ) := · Új T S él kapacitással

(v,w)E

k(v, w)

S s 1, 3 2, 3 0 t 2 1 s 2 1 2 1 t 0 T

A LGORITMUSELMÉLET 11.

EL OADÁ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-bol T -be meno) maximális folyamának az értéke (u,v )E k(u, v).

A LGORITMUSELMÉLET 11.

EL OADÁ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-bol T -be meno) maximális folyamának az értéke (u,v )E k(u, v). Ha a T S él kapacitást d-nek választjuk = ugyanígy megkaphatjuk, hogy van-e legfeljebb d értéku folyam

A LGORITMUSELMÉLET 11.

EL OADÁ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-bol T -be meno) maximális folyamának az értéke (u,v )E k(u, v). Ha a T S él kapacitást d-nek választjuk = ugyanígy megkaphatjuk, hogy van-e legfeljebb d értéku folyam = algoritmus alsó korlátos folyamokra

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra.

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére.

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére. Ha Ji, Jj -re a válasz igenlo, akkor azt mondjuk, hogy Jj követheti Ji-t.

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére. Ha Ji, Jj -re a válasz igenlo, akkor azt mondjuk, hogy Jj követheti Ji-t. Gráf: Egy Ji légijáratnak = két csúcs, i és i és egy i i él

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére. Ha Ji, Jj -re a válasz igenlo, akkor azt mondjuk, hogy Jj követheti Ji-t. Gráf: Egy Ji légijáratnak = két csúcs, i és i és egy i i él Ha Jj követheti Ji-t, akkor vezessünk irányított élet i -bol j-be.

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére. Ha Ji, Jj -re a válasz igenlo, akkor azt mondjuk, hogy Jj követheti Ji-t. Gráf: Egy Ji légijáratnak = két csúcs, i és i és egy i i él Ha Jj követheti Ji-t, akkor vezessünk irányított élet i -bol j-be. Vegyünk még fel egy s forrást és egy t nyelot, és adjuk a hálózathoz az s i és i t éleket (1 i m).

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére. Ha Ji, Jj -re a válasz igenlo, akkor azt mondjuk, hogy Jj követheti Ji-t. Gráf: Egy Ji légijáratnak = két csúcs, i és i és egy i i él Ha Jj követheti Ji-t, akkor vezessünk irányított élet i -bol j-be. Vegyünk még fel egy s forrást és egy t nyelot, é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.

A LGORITMUSELMÉLET 11.

EL OADÁS

19

Egy ütemezési feladat

Tegyük fel, hogy egy légitársaság a J1, J2, . . . , Jm járatokat szeretné üzemeltetni, és d darab azonos típusú repülogépe van erre a célra. Minden Ji, Jj járatpárra ismert, hogy van-e elég ido arra, hogy a Ji teljesítése után egy gép felkészüljön a Jj repülésére. Ha Ji, Jj -re a válasz igenlo, akkor azt mondjuk, hogy Jj követheti Ji-t. Gráf: Egy Ji légijáratnak = két csúcs, i és i és egy i i él Ha Jj követheti Ji-t, akkor vezessünk irányított élet i -bol j-be. Vegyünk még fel egy s forrást és egy t nyelot, é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 J1, J2, . . . , Jm járatok akkor és csak akkor teljesíthetok legfeljebb d géppel, ha a hálózathoz van olyan g folyam, amelyre |g| d.

A LGORITMUSELMÉLET 11.

EL OADÁS

20

S

J3 J4 0, 1 1, 1 0, 1 1, 1 0, 1 0, 1 0, 1 0, 1 0, 1 0, 1 J1 J5 0, 1 0, 1 0, 1 1, 1 1, 1 0, 1 J2 0, 1 0, 1 1, 1

T

A LGORITMUSELMÉLET 11.

EL OADÁS

21

Hirdetmények

A LGORITMUSELMÉLET 11.

EL OADÁS

21

Hirdetmények

Április 1. = Húsvét hétfo = elmarad az eloadás

A LGORITMUSELMÉLET 11.

EL OADÁS

21

Hirdetmények

Április 1. = Húsvét hétfo = elmarad az eloadás

Április 8. = Eloadás helyett konzultáció

A LGORITMUSELMÉLET 11.

EL OADÁS

21

Hirdetmények

Április 1. = Húsvét hétfo = elmarad az eloadás

Április 8. = Eloadás helyett konzultáció ZH Április 8. 16:15 CH. max. I.B. 27 I.B. 28 E.I.B. St. nagy

A­He Hi­Ka Ke­M N-Se Si-Z

Algoritmuselmélet 12. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Április 9.

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása.

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje.

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként · véges vezérlo, ennek véges sok állapota van

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként · véges vezérlo, ennek véges sok állapota van · Lépés: függ a belso állapottól és a fej alatti jelektol

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként · véges vezérlo, ennek véges sok állapota van · Lépés: függ a belso állapottól és a fej alatti jelektol a gép megáll

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként · véges vezérlo, ennek véges sok állapota van · Lépés: függ a belso állapottól és a fej alatti jelektol a gép megáll átmegy új állapotba,

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként · véges vezérlo, ennek véges sok állapota van · Lépés: függ a belso állapottól és a fej alatti jelektol a gép megáll átmegy új állapotba, ír valamit minden fej alatti cellába,

A LGORITMUSELMÉLET 12.

EL OADÁS

1

Turing-gépek
Az algoritmus fogalmának pontosabb meghatározása. Számítógép elméleti, egyszerusített modellje. Alan Turing 1912-1954 Definíció. Többszalagos Turing-gép (TG), k 1 egész szám · k db szalag cellákra osztva, cellákba jelek, a szalag egyik (mindkét) irányban végtelen · minden szalaghoz tartozik egy fej, ami jobbra és balra is lépegethet a szalagon cellánként · véges vezérlo, ennek véges sok állapota van · Lépés: függ a belso állapottól és a fej alatti jelektol a gép megáll átmegy új állapotba, ír valamit minden fej alatti cellába, minden fej lép vagy jobbra, vagy balra egyet vagy helyben marad

A LGORITMUSELMÉLET 12.

EL OADÁS

2

Definíció. Egy k-szalagos Turing-gép egy hetessel jellemezheto: M = (Q, T, ü, I, q0, F, ),

A LGORITMUSELMÉLET 12.

EL OADÁS

2

Definíció. Egy k-szalagos Turing-gép egy hetessel jellemezheto: M = (Q, T, ü, I, q0, F, ), ahol Q: egy véges halmaz, az M gép belso állapotainak halmaza.

A LGORITMUSELMÉLET 12.

EL OADÁS

2

Definíció. Egy k-szalagos Turing-gép egy hetessel jellemezheto: M = (Q, T, ü, I, q0, F, ), ahol Q: T : egy véges halmaz, az M gép belso állapotainak halmaza. egy véges halmaz, a szalagjelek halmaza.

A LGORITMUSELMÉLET 12.

EL OADÁS

2

Definíció. Egy k-szalagos Turing-gép egy hetessel jellemezheto: M = (Q, T, ü, I, q0, F, ), ahol Q: T : ü: egy véges halmaz, az M gép belso állapotainak halmaza. egy véges halmaz, a szalagjelek halmaza.

egy kitüntetett szalagjel, az üresjel. A bemenetként felírt jeleken és a gép számítása során kiírt jeleken kívül minden szalagcellában ü van.

A LGORITMUSELMÉLET 12.

EL OADÁS

2

Definíció. Egy k-szalagos Turing-gép egy hetessel jellemezheto: M = (Q, T, ü, I, q0, F, ), ahol Q: T : ü: egy véges halmaz, az M gép belso állapotainak halmaza. egy véges halmaz, a szalagjelek halmaza.

egy kitüntetett szalagjel, az üresjel. A bemenetként felírt jeleken és a gép számítása során kiírt jeleken kívül minden szalagcellában ü van.

I : I T \ {ü} az input jelek vagy bemeno jelek halmaza, más szóval az input abc. Az üresjel nem lehet input jel.

A LGORITMUSELMÉLET 12.

EL OADÁS

2

Definíció. Egy k-szalagos Turing-gép egy hetessel jellemezheto: M = (Q, T, ü, I, q0, F, ), ahol Q: T : ü: egy véges halmaz, az M gép belso állapotainak halmaza. egy véges halmaz, a szalagjelek halmaza.

egy kitüntetett szalagjel, az üresjel. A bemenetként felírt jeleken és a gép számítása során kiírt jeleken kívül minden szalagcellában ü van.

I : I T \ {ü} az input jelek vagy bemeno jelek halmaza, más szóval az input abc. Az üresjel nem lehet input jel. q0 : q0 Q a kezdo állapot.

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F :

F Q az elfogadó állapotok halmaza.

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F : F Q az elfogadó állapotok halmaza. Elfogadó állapotban áll meg = IGEN

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F : F Q az elfogadó állapotok halmaza. Elfogadó állapotban áll meg = IGEN Nem elfogadó állapotban áll meg = NEM

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F : F Q az elfogadó állapotok halmaza. Elfogadó állapotban áll meg = IGEN Nem elfogadó állapotban áll meg = NEM = a Q \ F -be tartozó állapotokat elutasító állapotoknak is nevezik.

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F : F Q az elfogadó állapotok halmaza. Elfogadó állapotban áll meg = IGEN Nem elfogadó állapotban áll meg = NEM = a Q \ F -be tartozó állapotokat elutasító állapotoknak is nevezik. : A : Q × T k - Q × (T × {jobb, bal, helyben})k egy parciálisan értelmezett függvény, a gép átmenetfüggvénye.

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F : F Q az elfogadó állapotok halmaza. Elfogadó állapotban áll meg = IGEN Nem elfogadó állapotban áll meg = NEM = a Q \ F -be tartozó állapotokat elutasító állapotoknak is nevezik. : A : Q × T k - Q × (T × {jobb, bal, helyben})k egy parciálisan értelmezett függvény, a gép átmenetfüggvénye. Az átmenetfüggvény tekintheto a gép programjának.

A LGORITMUSELMÉLET 12.

EL OADÁS

3

F : F Q az elfogadó állapotok halmaza. Elfogadó állapotban áll meg = IGEN Nem elfogadó állapotban áll meg = NEM = a Q \ F -be tartozó állapotokat elutasító állapotoknak is nevezik. : A : Q × T k - Q × (T × {jobb, bal, helyben})k egy parciálisan értelmezett függvény, a gép átmenetfüggvénye. Az átmenetfüggvény tekintheto a gép programjának. Ha a (q; a1, a2, . . . , ak) nincs értelmezve, = megállás

A LGORITMUSELMÉLET 12.

EL OADÁS

4

Példa

q0

0

1

0

1

0

0

1

A LGORITMUSELMÉLET 12.

EL OADÁS

4

Példa

q0q0

1 01 10 0

1 10 00 01 1

A LGORITMUSELMÉLET 12.

EL OADÁS

4

Példa

q0q0q0

1 1101010 0

0 1010000101 1

A LGORITMUSELMÉLET 12.

EL OADÁS

4

Példa

q0q0q0q0

1 111101010 0

0

0 001010000101 1 0 1

A LGORITMUSELMÉLET 12.

EL OADÁS

4

Példa

q0q0q0q0q0

0 1 11111101010 0

00 00001010000101 1 0 01 1

A LGORITMUSELMÉLET 12.

EL OADÁS

4

Példa

q0q0q0q0q0

0 1 11111101010 0

00 00001010000101 1 0 01 1

animáció: Turing gép

A LGORITMUSELMÉLET 12.

EL OADÁS

5

Turing-gép muködése
· Kezdetben a q0 állapotban van, az s I bemenet az elso szalag elejére van írva, az összes többi mezon ü

A LGORITMUSELMÉLET 12.

EL OADÁS

5

Turing-gép muködése
· Kezdetben a q0 állapotban van, az s I bemenet az elso szalag elejére van írva, az összes többi mezon ü · A függvénynek megfeleloen lépeget = új állapot, írás, fej lépése

A LGORITMUSELMÉLET 12.

EL OADÁS

5

Turing-gép muködése
· Kezdetben a q0 állapotban van, az s I bemenet az elso szalag elejére van írva, az összes többi mezon ü · A függvénynek megfeleloen lépeget = új állapot, írás, fej lépése · Ha nincs értelmezve, akkor megáll (akár elfogadó állapotban van, akár nem)

A LGORITMUSELMÉLET 12.

EL OADÁS

5

Turing-gép muködése
· Kezdetben a q0 állapotban van, az s I bemenet az elso szalag elejére van írva, az összes többi mezon ü · A függvénynek megfeleloen lépeget = új állapot, írás, fej lépése · Ha nincs értelmezve, akkor megáll (akár elfogadó állapotban van, akár nem) Két felhasználás: · Függvények kiszámolása

A LGORITMUSELMÉLET 12.

EL OADÁS

5

Turing-gép muködése
· Kezdetben a q0 állapotban van, az s I bemenet az elso szalag elejére van írva, az összes többi mezon ü · A függvénynek megfeleloen lépeget = új állapot, írás, fej lépése · Ha nincs értelmezve, akkor megáll (akár elfogadó állapotban van, akár nem) Két felhasználás: · Függvények kiszámolása · Kérdések eldöntése (0 - 1 értéku függvény) Definíció. Az M Turing-gép által felismert LM nyelv azokból az s I szavakból áll, amelyekkel mint bemenetekkel elindítva az M megáll, mégpedig elfogadó (azaz F -beli) állapotban.

A LGORITMUSELMÉLET 12.

EL OADÁS

5

Turing-gép muködése
· Kezdetben a q0 állapotban van, az s I bemenet az elso szalag elejére van írva, az összes többi mezon ü · A függvénynek megfeleloen lépeget = új állapot, írás, fej lépése · Ha nincs értelmezve, akkor megáll (akár elfogadó állapotban van, akár nem) Két felhasználás: · Függvények kiszámolása · Kérdések eldöntése (0 - 1 értéku függvény) Definíció. Az M Turing-gép által felismert LM nyelv azokból az s I szavakból áll, amelyekkel mint bemenetekkel elindítva az M megáll, mégpedig elfogadó (azaz F -beli) állapotban. Ha M az LM nyelvet ismeri fel, akkor a nyelvbe nem tartozó szavakra vagy megáll elutasító állapotban, vagy végtelen ciklusba kerül.

A LGORITMUSELMÉLET 12.

EL OADÁS

6

Definíció. Legyen M egy kitüntetett output szalaggal rendelkezo Turing-gép. Az M által kiszámított fM : I I parciális függvényt így értelmezzük: fM (s) = w, ha M az s I inputtal indulva megáll, és megállás után az output szalagon a w I szó szerepel az üresjelek óceánja elott.

A LGORITMUSELMÉLET 12.

EL OADÁS

6

Definíció. Legyen M egy kitüntetett output szalaggal rendelkezo Turing-gép. Az M által kiszámított fM : I I parciális függvényt így értelmezzük: fM (s) = w, ha M az s I inputtal indulva megáll, és megállás után az output szalagon a w I szó szerepel az üresjelek óceánja elott. Az fM függvény tehát csak azokra az s I szavakra értelmezett, amelyekkel mint bemenetekkel az M gép véges sok lépés megtétele után megáll. Mindegy, hogy a megállás elfogadó vagy elutasító állapotban történt-e.

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve.

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve. Ha 0-t olvas = elutasít

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve. Ha 0-t olvas = elutasít Ha ü üresjelet olvas és nem q0-ban van = elutasít

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve. Ha 0-t olvas = elutasít Ha ü üresjelet olvas és nem q0-ban van = elutasít Ha ü üresjelet olvas és q0-ban van = elfogad

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve. Ha 0-t olvas = elutasít Ha ü üresjelet olvas és nem q0-ban van = elutasít Ha ü üresjelet olvas és q0-ban van = elfogad Ha 1-et olvas és qi-ben van = jobbra lép, és átmegy a qi+1 állapotba;

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve. Ha 0-t olvas = elutasít Ha ü üresjelet olvas és nem q0-ban van = elutasít Ha ü üresjelet olvas és q0-ban van = elfogad Ha 1-et olvas és qi-ben van = jobbra lép, és átmegy a qi+1 állapotba; = M pontosan azokat a szavakat fogadja el, amelyek csupa egyesekbol állnak, és a hosszuk osztható hárommal.

A LGORITMUSELMÉLET 12.

EL OADÁS

7

Példa Turing-gépre

Q = {q0, q1, q2, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv }. (q0, 1) = (q1, 1, jobb), (q0, ü) = (qv , ü, helyben), (q1, 1) = (q2, 1, jobb), (q2, 1) = (q0, 1, jobb). Más párokra nincs értelmezve. Ha 0-t olvas = elutasít Ha ü üresjelet olvas és nem q0-ban van = elutasít Ha ü üresjelet olvas és q0-ban van = elfogad Ha 1-et olvas és qi-ben van = jobbra lép, és átmegy a qi+1 állapotba; = M pontosan azokat a szavakat fogadja el, amelyek csupa egyesekbol állnak, és a hosszuk osztható hárommal. = Az M által felismert LM nyelv tehát LM = {1n : n hárommal osztható természetes szám}.

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált.

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is.

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál.

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál. 0 = végtelen ciklus

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál. 0 = végtelen ciklus ü = még egy 1-est ír az input után, majd elfogad

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál. 0 = végtelen ciklus ü = még egy 1-est ír az input után, majd elfogad = LM = {1n; n 0 egész}

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál. 0 = végtelen ciklus ü = még egy 1-est ír az input után, majd elfogad = LM = {1n; n 0 egész} = A gép az 1n bemeneten az 1n+1 eredményt adja, vagyis fM (1n) = 1n+1.

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál. 0 = végtelen ciklus ü = még egy 1-est ír az input után, majd elfogad = LM = {1n; n 0 egész} = A gép az 1n bemeneten az 1n+1 eredményt adja, vagyis fM (1n) = 1n+1. Turing-gép igazi számítógép

A LGORITMUSELMÉLET 12.

EL OADÁS

8

Példa Turing-gépre

Q = {q0, qv }, T = {0, 1, ü}, I = {0, 1}, F = {qv } (q0, 0) = (q0, 0, helyben), (q0, 1) = (q0, 1, jobb), (q0, ü) = (qv , 1, helyben). Másutt nem definiált. Meghatározzuk az LM nyelvet és az fM függvényt is. Az M a q0 belso állapotban maradva lépdel jobbra a szalag mentén, amíg 0 vagy ü jelet nem talál. 0 = végtelen ciklus ü = még egy 1-est ír az input után, majd elfogad = LM = {1n; n 0 egész} = A gép az 1n bemeneten az 1n+1 eredményt adja, vagyis fM (1n) = 1n+1. Turing-gép igazi számítógép Turing-gép többet tud, mint a véges automata.

A LGORITMUSELMÉLET 12.

EL OADÁS

9

A kiszámíthatóság alapfogalmai
Algoritmus: ami Turing-géppel kiszámítható

A LGORITMUSELMÉLET 12.

EL OADÁS

9

A kiszámíthatóság alapfogalmai
Algoritmus: ami Turing-géppel kiszámítható Definíció. Az L I nyelvet rekurzíve felsorolhatónak nevezzük, ha van olyan M Turing-gép, melyre L = LM , azaz a gép által felismert nyelv éppen L.

A LGORITMUSELMÉLET 12.

EL OADÁS

9

A kiszámíthatóság alapfogalmai
Algoritmus: ami Turing-géppel kiszámítható Definíció. Az L I nyelvet rekurzíve felsorolhatónak nevezzük, ha van olyan M Turing-gép, melyre L = LM , azaz a gép által felismert nyelv éppen L. Definíció. Az L I nyelv rekurzív, ha van olyan M Turing-gép, melyre L = LM , és M minden s I szóra megáll.

A LGORITMUSELMÉLET 12.

EL OADÁS

9

A kiszámíthatóság alapfogalmai
Algoritmus: ami Turing-géppel kiszámítható Definíció. Az L I nyelvet rekurzíve felsorolhatónak nevezzük, ha van olyan M Turing-gép, melyre L = LM , azaz a gép által felismert nyelv éppen L. Definíció. Az L I nyelv rekurzív, ha van olyan M Turing-gép, melyre L = LM , és M minden s I szóra megáll. RE = {L I : L rekurzíve felsorolható}. R = {L I : L rekurzív}.

A LGORITMUSELMÉLET 12.

EL OADÁS

9

A kiszámíthatóság alapfogalmai
Algoritmus: ami Turing-géppel kiszámítható Definíció. Az L I nyelvet rekurzíve felsorolhatónak nevezzük, ha van olyan M Turing-gép, melyre L = LM , azaz a gép által felismert nyelv éppen L. Definíció. Az L I nyelv rekurzív, ha van olyan M Turing-gép, melyre L = LM , és M minden s I szóra megáll. RE = {L I : L rekurzíve felsorolható}. R = {L I : L rekurzív}.

= R RE

A LGORITMUSELMÉLET 12.

EL OADÁS

9

A kiszámíthatóság alapfogalmai
Algoritmus: ami Turing-géppel kiszámítható Definíció. Az L I nyelvet rekurzíve felsorolhatónak nevezzük, ha van olyan M Turing-gép, melyre L = LM , azaz a gép által felismert nyelv éppen L. Definíció. Az L I nyelv rekurzív, ha van olyan M Turing-gép, melyre L = LM , és M minden s I szóra megáll. RE = {L I : L rekurzíve felsorolható}. R = {L I : L rekurzív}.

= R RE Definíció. Az f : I I parciális függvény parciálisan rekurzív függvény, ha létezik olyan M Turing-gép, hogy f = fM . Ha ezen túl még f minden s I inputra értelmezve van, akkor f egy rekurzív függvény.

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . .

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . .

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . . = a rekurzíve felsorolható nyelvek halmaza megszámlálható

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . . = a rekurzíve felsorolható nyelvek halmaza megszámlálható Belátjuk, hogy az összes nyelv halmaza nem megszámlálható (egyébként kontinuum).

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . . = a rekurzíve felsorolható nyelvek halmaza megszámlálható Belátjuk, hogy az összes nyelv halmaza nem megszámlálható (egyébként kontinuum). Az I elemei, a véges hosszúságú I-beli jelekbol képzett szavak is megszámlálhatóak = felsorolhatóak: w0, w1, w2, . . .

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . . = a rekurzíve felsorolható nyelvek halmaza megszámlálható Belátjuk, hogy az összes nyelv halmaza nem megszámlálható (egyébként kontinuum). Az I elemei, a véges hosszúságú I-beli jelekbol képzett szavak is megszámlálhatóak = felsorolhatóak: w0, w1, w2, . . . Tegyük fel, hogy az összes nyelvek halmaza megszámlálható, megmutatjuk, hogy van olyan L I nyelv, amely nem lehet benne az összes nyelvek LM0 , LM1 , LM2 , . . . sorozatában.

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . . = a rekurzíve felsorolható nyelvek halmaza megszámlálható Belátjuk, hogy az összes nyelv halmaza nem megszámlálható (egyébként kontinuum). Az I elemei, a véges hosszúságú I-beli jelekbol képzett szavak is megszámlálhatóak = felsorolhatóak: w0, w1, w2, . . . Tegyük fel, hogy az összes nyelvek halmaza megszámlálható, megmutatjuk, hogy van olyan L I nyelv, amely nem lehet benne az összes nyelvek LM0 , LM1 , LM2 , . . . sorozatában. Az L nyelvnek a wi szó pontosan akkor legyen eleme, ha wi LMi , i = 1, 2, . . ..

A LGORITMUSELMÉLET 12.

EL OADÁS

10

Tétel. Van olyan L I nyelv, amely nem rekurzíve felsorolható. Bizonyítás: Egy Turing-gép leírható véges jelsorozattal = az összes gép számossága megszámlálható = felsorolható: M0, M1, M2, . . . = a rekurzíve felsorolható nyelvek is felsorolhatók: LM0 , LM1 , LM2 , . . . = a rekurzíve felsorolható nyelvek halmaza megszámlálható Belátjuk, hogy az összes nyelv halmaza nem megszámlálható (egyébként kontinuum). Az I elemei, a véges hosszúságú I-beli jelekbol képzett szavak is megszámlálhatóak = felsorolhatóak: w0, w1, w2, . . . Tegyük fel, hogy az összes nyelvek halmaza megszámlálható, megmutatjuk, hogy van olyan L I nyelv, amely nem lehet benne az összes nyelvek LM0 , LM1 , LM2 , . . . sorozatában. Az L nyelvnek a wi szó pontosan akkor legyen eleme, ha wi LMi , i = 1, 2, . . .. L = LMi , hiszen a wi L és wi LMi Cantor-féle átlós módszer

A LGORITMUSELMÉLET 12.

EL OADÁS

11

LM0 LM1 . . LMi LMi+1 . . L

w0 nem igen nem igen igen

w1 nem nem igen nem igen

... ... ... ... ... ...

wi nem nem igen nem nem

wi+1 nem nem nem nem igen

... ... ... ... ... ...

A LGORITMUSELMÉLET 12.

EL OADÁS

11

LM0 LM1 . . LMi LMi+1 . . L

w0 nem igen nem igen igen

w1 nem nem igen nem igen

... ... ... ... ... ...

wi nem nem igen nem nem

wi+1 nem nem nem nem igen

... ... ... ... ... ...

Tétel. Létezik olyan f : I I parciális függvény, amely nem parciálisan rekurzív.

A LGORITMUSELMÉLET 12.

EL OADÁS

12

Church­Turing-tézis
A rekurzív nyelveket és a rekurzív függvényeket fogjuk algoritmussal kezelheto nyelveknek és függvényeknek tekinteni.

A LGORITMUSELMÉLET 12.

EL OADÁS

12

Church­Turing-tézis
A rekurzív nyelveket és a rekurzív függvényeket fogjuk algoritmussal kezelheto nyelveknek és függvényeknek tekinteni. Church­Turing-tézis: Ami algoritmussal ­ azaz véges eljárással ­ kiszámítható (eldöntheto), az Turing értelmében kiszámítható (eldöntheto). Nevezetesen: · Egy f : I I parciális függvény kiszámítható f parciálisan rekurzív.

A LGORITMUSELMÉLET 12.

EL OADÁS

12

Church­Turing-tézis
A rekurzív nyelveket és a rekurzív függvényeket fogjuk algoritmussal kezelheto nyelveknek és függvényeknek tekinteni. Church­Turing-tézis: Ami algoritmussal ­ azaz véges eljárással ­ kiszámítható (eldöntheto), az Turing értelmében kiszámítható (eldöntheto). Nevezetesen: · Egy f : I I parciális függvény kiszámítható f parciálisan rekurzív. · Egy f : I I (teljes) függvény kiszámítható f rekurzív.

A LGORITMUSELMÉLET 12.

EL OADÁS

12

Church­Turing-tézis
A rekurzív nyelveket és a rekurzív függvényeket fogjuk algoritmussal kezelheto nyelveknek és függvényeknek tekinteni. Church­Turing-tézis: Ami algoritmussal ­ azaz véges eljárással ­ kiszámítható (eldöntheto), az Turing értelmében kiszámítható (eldöntheto). Nevezetesen: · Egy f : I I parciális függvény kiszámítható f parciálisan rekurzív. · Egy f : I I (teljes) függvény kiszámítható f rekurzív. · Egy L I nyelvre a nyelvbe tartozás problémája algoritmussal eldöntheto L rekurzív.

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma.

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma. A tárigénybe nem feltétlenül számítjuk bele az inputot és outputot.

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma. A tárigénybe nem feltétlenül számítjuk bele az inputot és outputot. Definíció. Jelölje TM (n) az M gép maximális számolási idejét az n jelbol álló bemeneteken. Az n hosszú szavakon a maximális tárigényt SM (n)-nel jelöljük.

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma. A tárigénybe nem feltétlenül számítjuk bele az inputot és outputot. Definíció. Jelölje TM (n) az M gép maximális számolási idejét az n jelbol álló bemeneteken. Az n hosszú szavakon a maximális tárigényt SM (n)-nel jelöljük. Ha van olyan n jelbol álló s I szó, amellyel elindítva M nem áll meg véges sok lépés után = TM (n) =

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma. A tárigénybe nem feltétlenül számítjuk bele az inputot és outputot. Definíció. Jelölje TM (n) az M gép maximális számolási idejét az n jelbol álló bemeneteken. Az n hosszú szavakon a maximális tárigényt SM (n)-nel jelöljük. Ha van olyan n jelbol álló s I szó, amellyel elindítva M nem áll meg véges sok lépés után = TM (n) = Pl. a hárommal oszthatóságot vizsgáló M TG-re: TM (n) = n + 1, SM (n) = n + 1, ha beleszámítjuk az inputot, SM (n) = 0, ha nem.

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma. A tárigénybe nem feltétlenül számítjuk bele az inputot és outputot. Definíció. Jelölje TM (n) az M gép maximális számolási idejét az n jelbol álló bemeneteken. Az n hosszú szavakon a maximális tárigényt SM (n)-nel jelöljük. Ha van olyan n jelbol álló s I szó, amellyel elindítva M nem áll meg véges sok lépés után = TM (n) = Pl. a hárommal oszthatóságot vizsgáló M TG-re: TM (n) = n + 1, SM (n) = n + 1, ha beleszámítjuk az inputot, SM (n) = 0, ha nem. Ha M és N két Turing-gép, melyekre TM (n) < TN (n) teljesül minden elég nagy n-re, akkor az M algoritmust gyorsabbnak mondhatjuk az N algoritmusnál.

A LGORITMUSELMÉLET 12.

EL OADÁS

13

Ido- és tárigény
Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma. A tárigénybe nem feltétlenül számítjuk bele az inputot és outputot. Definíció. Jelölje TM (n) az M gép maximális számolási idejét az n jelbol álló bemeneteken. Az n hosszú szavakon a maximális tárigényt SM (n)-nel jelöljük. Ha van olyan n jelbol álló s I szó, amellyel elindítva M nem áll meg véges sok lépés után = TM (n) = Pl. a hárommal oszthatóságot vizsgáló M TG-re: TM (n) = n + 1, SM (n) = n + 1, ha beleszámítjuk az inputot, SM (n) = 0, ha nem. Ha M és N két Turing-gép, melyekre TM (n) < TN (n) teljesül minden elég nagy n-re, akkor az M algoritmust gyorsabbnak mondhatjuk az N algoritmusnál. Van-e legjobb TG minden L nyelvhez?

A LGORITMUSELMÉLET 12.

EL OADÁS

14

Tétel. [gyorsítási tétel] Van olyan L nyelv, amelyre igazak az alábbiak: 1. Az L felismerheto egy olyan M Turing-géppel, melyre TM (n) véges minden n-re. 2. Tetszoleges, az L-et felismero N Turing-géphez van olyan N Turing-gép, amelyre L = LN szintén teljesül, továbbá TN (n) = O(log TN (n)).

A LGORITMUSELMÉLET 12.

EL OADÁS

15

k-szalagos TG szimulációja 1-szalagossal
Tétel. Legyen M egy k-szalagos Turing-gép. Van olyan egyszalagos M Turing-gép, melyre LM = LM (vagy fM = fM ),

A LGORITMUSELMÉLET 12.

EL OADÁS

15

k-szalagos TG szimulációja 1-szalagossal
Tétel. Legyen M egy k-szalagos Turing-gép. Van olyan egyszalagos M Turing-gép, melyre LM = LM (vagy fM = fM ), továbbá
2 TM (n) 2TM (n),

A LGORITMUSELMÉLET 12.

EL OADÁS

15

k-szalagos TG szimulációja 1-szalagossal
Tétel. Legyen M egy k-szalagos Turing-gép. Van olyan egyszalagos M Turing-gép, melyre LM = LM (vagy fM = fM ), továbbá
2 TM (n) 2TM (n), SM (n) SM (n) + n.

A LGORITMUSELMÉLET 12.

EL OADÁS

15

k-szalagos TG szimulációja 1-szalagossal
Tétel. Legyen M egy k-szalagos Turing-gép. Van olyan egyszalagos M Turing-gép, melyre LM = LM (vagy fM = fM ), továbbá
2 TM (n) 2TM (n), SM (n) SM (n) + n.

Bizonyítás: M építésekor az M -hez képest alaposan felfújjuk a szalag abc-t, és megnöveljük a belso állapotok számát is. Az M egyetlen szalagján 2k csík lesz. Egy cellája egy oszlop.

A LGORITMUSELMÉLET 12.

EL OADÁS

15

k-szalagos TG szimulációja 1-szalagossal
Tétel. Legyen M egy k-szalagos Turing-gép. Van olyan egyszalagos M Turing-gép, melyre LM = LM (vagy fM = fM ), továbbá
2 TM (n) 2TM (n), SM (n) SM (n) + n.

Bizonyítás: M építésekor az M -hez képest alaposan felfújjuk a szalag abc-t, és megnöveljük a belso állapotok számát is. Az M egyetlen szalagján 2k csík lesz. Egy cellája egy oszlop. 1. szalag 1. fej . . . k. szalag k. fej D ü ··· ··· A x ··· ··· B ü ··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

A LGORITMUSELMÉLET 12.

EL OADÁS

15

k-szalagos TG szimulációja 1-szalagossal
Tétel. Legyen M egy k-szalagos Turing-gép. Van olyan egyszalagos M Turing-gép, melyre LM = LM (vagy fM = fM ), továbbá
2 TM (n) 2TM (n), SM (n) SM (n) + n.

Bizonyítás: M építésekor az M -hez képest alaposan felfújjuk a szalag abc-t, és megnöveljük a belso állapotok számát is. Az M egyetlen szalagján 2k csík lesz. Egy cellája egy oszlop. 1. szalag 1. fej . . . k. szalag k. fej D ü ··· ··· A x ··· ··· B ü ··· ··· = szalagjelek száma: (2t)k D ü ··· ··· D ü ··· ··· B x ··· ···

A LGORITMUSELMÉLET 12.

EL OADÁS

16

1. szalag 1. fej . . . k. szalag k. fej

D ü

··· ···

A x

··· ···

B ü

··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

M az M gép egy lépését egy legfeljebb 2TM (n) lépésbol álló menetben utánozza.

A LGORITMUSELMÉLET 12.

EL OADÁS

16

1. szalag 1. fej . . . k. szalag k. fej

D ü

··· ···

A x

··· ···

B ü

··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

M az M gép egy lépését egy legfeljebb 2TM (n) lépésbol álló menetben utánozza. Jobbra elmegy a legmesszebb levo x jelig, és közben leolvassa az x-ek felett található eredeti szalagjeleket. Ezeket a belso állapotaiban tárolja.

A LGORITMUSELMÉLET 12.

EL OADÁS

16

1. szalag 1. fej . . . k. szalag k. fej

D ü

··· ···

A x

··· ···

B ü

··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

M az M gép egy lépését egy legfeljebb 2TM (n) lépésbol álló menetben utánozza. Jobbra elmegy a legmesszebb levo x jelig, és közben leolvassa az x-ek felett található eredeti szalagjeleket. Ezeket a belso állapotaiban tárolja. Közben egy hellyel jobbra mozdítja az x-eket, kivéve az utolsó oszlopban levo(ke)t.

A LGORITMUSELMÉLET 12.

EL OADÁS

16

1. szalag 1. fej . . . k. szalag k. fej

D ü

··· ···

A x

··· ···

B ü

··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

M az M gép egy lépését egy legfeljebb 2TM (n) lépésbol álló menetben utánozza. Jobbra elmegy a legmesszebb levo x jelig, és közben leolvassa az x-ek felett található eredeti szalagjeleket. Ezeket a belso állapotaiban tárolja. Közben egy hellyel jobbra mozdítja az x-eket, kivéve az utolsó oszlopban levo(ke)t. Most a gép ismeri M állapotát és a fejei alatti jeleket, így meghatározhatja a M következo állapotát és a kiírandó jeleket.

A LGORITMUSELMÉLET 12.

EL OADÁS

16

1. szalag 1. fej . . . k. szalag k. fej

D ü

··· ···

A x

··· ···

B ü

··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

M az M gép egy lépését egy legfeljebb 2TM (n) lépésbol álló menetben utánozza. Jobbra elmegy a legmesszebb levo x jelig, és közben leolvassa az x-ek felett található eredeti szalagjeleket. Ezeket a belso állapotaiban tárolja. Közben egy hellyel jobbra mozdítja az x-eket, kivéve az utolsó oszlopban levo(ke)t. Most a gép ismeri M állapotát és a fejei alatti jeleket, így meghatározhatja a M következo állapotát és a kiírandó jeleket. M visszamegy a szalag elejére, közben kiírja az M fejeinek régi helyére a k darab jelet, amiket M írt volna,

A LGORITMUSELMÉLET 12.

EL OADÁS

16

1. szalag 1. fej . . . k. szalag k. fej

D ü

··· ···

A x

··· ···

B ü

··· ···

D ü

··· ···

D ü

··· ···

B x

··· ···

M az M gép egy lépését egy legfeljebb 2TM (n) lépésbol álló menetben utánozza. Jobbra elmegy a legmesszebb levo x jelig, és közben leolvassa az x-ek felett található eredeti szalagjeleket. Ezeket a belso állapotaiban tárolja. Közben egy hellyel jobbra mozdítja az x-eket, kivéve az utolsó oszlopban levo(ke)t. Most a gép ismeri M állapotát és a fejei alatti jeleket, így meghatározhatja a M következo állapotát és a kiírandó jeleket. M visszamegy a szalag elejére, közben kiírja az M fejeinek régi helyére a k darab jelet, amiket M írt volna, és az M fejmozgásainak megfeleloen áthelyezi az x-eket.

A LGORITMUSELMÉLET 12.

EL OADÁS

17

Ha n jelbol álló bemenettel kezdjük a munkát, akkor egy meneteben az M feje legfeljebb TM (n) lépést tesz jobbra = legfeljebb ugyanennyit mehet balra.

A LGORITMUSELMÉLET 12.

EL OADÁS

17

Ha n jelbol álló bemenettel kezdjük a munkát, akkor egy meneteben az M feje legfeljebb TM (n) lépést tesz jobbra = legfeljebb ugyanennyit mehet balra. Az M pontosan akkor álljon meg (fogadja el a bemenetet), ha M ezt teszi.

A LGORITMUSELMÉLET 12.

EL OADÁS

17

Ha n jelbol álló bemenettel kezdjük a munkát, akkor egy meneteben az M feje legfeljebb TM (n) lépést tesz jobbra = legfeljebb ugyanennyit mehet balra. Az M pontosan akkor álljon meg (fogadja el a bemenetet), ha M ezt teszi. 2 = TM (n) 2TM (n)TM (n) = 2TM (n)

A LGORITMUSELMÉLET 12.

EL OADÁS

17

Ha n jelbol álló bemenettel kezdjük a munkát, akkor egy meneteben az M feje legfeljebb TM (n) lépést tesz jobbra = legfeljebb ugyanennyit mehet balra. Az M pontosan akkor álljon meg (fogadja el a bemenetet), ha M ezt teszi. 2 = TM (n) 2TM (n)TM (n) = 2TM (n) Ha függvényt számítunk, a végén a felesleget letöröljük.

A LGORITMUSELMÉLET 12.

EL OADÁS

17

Ha n jelbol álló bemenettel kezdjük a munkát, akkor egy meneteben az M feje legfeljebb TM (n) lépést tesz jobbra = legfeljebb ugyanennyit mehet balra. Az M pontosan akkor álljon meg (fogadja el a bemenetet), ha M ezt teszi. 2 = TM (n) 2TM (n)TM (n) = 2TM (n) Ha függvényt számítunk, a végén a felesleget letöröljük. Ha M -nek kitüntetett input szalagja volt, akkor a bemenet hosszát, ami n, nem számítottuk bele SM (n)-be = SM (n) SM (n) + n.

A LGORITMUSELMÉLET 12.

EL OADÁS

17

Ha n jelbol álló bemenettel kezdjük a munkát, akkor egy meneteben az M feje legfeljebb TM (n) lépést tesz jobbra = legfeljebb ugyanennyit mehet balra. Az M pontosan akkor álljon meg (fogadja el a bemenetet), ha M ezt teszi. 2 = TM (n) 2TM (n)TM (n) = 2TM (n) Ha függvényt számítunk, a végén a felesleget letöröljük. Ha M -nek kitüntetett input szalagja volt, akkor a bemenet hosszát, ami n, nem számítottuk bele SM (n)-be = SM (n) SM (n) + n. Tétel. Az M k-szalagos Turing-géphez megadható olyan 2-szalagos M Turing-gép, amely az elobbi értelemben szimulálja M -et, TM (n) O(TM (n) log TM (n)), és SM (n) SM (n) + n.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi. Osszuk fel az M szalagjait m egymás utáni mezobol álló blokkokra = egy új szalagjel = az új gép tm betut használ.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi. Osszuk fel az M szalagjait m egymás utáni mezobol álló blokkokra = egy új szalagjel = az új gép tm betut használ. Az M -nek eggyel több szalagja lesz, mint M -nek. Az elso input szalag, ezt eloször átkódolja egy másik szalagra.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi. Osszuk fel az M szalagjait m egymás utáni mezobol álló blokkokra = egy új szalagjel = az új gép tm betut használ. Az M -nek eggyel több szalagja lesz, mint M -nek. Az elso input szalag, ezt eloször átkódolja egy másik szalagra. Mi történik a szalagokkal az M gép m egymást követo lépése során?

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi. Osszuk fel az M szalagjait m egymás utáni mezobol álló blokkokra = egy új szalagjel = az új gép tm betut használ. Az M -nek eggyel több szalagja lesz, mint M -nek. Az elso input szalag, ezt eloször átkódolja egy másik szalagra. Mi történik a szalagokkal az M gép m egymást követo lépése során? Ami ezalatt végbemegy, az csak a fejeket tartalmazó blokkoktól és azok közvetlen szomszédaitól függ.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi. Osszuk fel az M szalagjait m egymás utáni mezobol álló blokkokra = egy új szalagjel = az új gép tm betut használ. Az M -nek eggyel több szalagja lesz, mint M -nek. Az elso input szalag, ezt eloször átkódolja egy másik szalagra. Mi történik a szalagokkal az M gép m egymást követo lépése során? Ami ezalatt végbemegy, az csak a fejeket tartalmazó blokkoktól és azok közvetlen szomszédaitól függ. M : szalagonként három szomszédos jel megvizsgálása után a ,,memóriájában" meglépi M következo m lépését.

A LGORITMUSELMÉLET 12.

EL OADÁS

18

Tétel. Tegyük fel, hogy az M Turing-gép az L nyelvet ismeri fel, és TM (n) cn teljesül egy c > 0 állandóval. Ekkor tetszoleges > 0-ra van olyan L-et felismero M Turing-gép is, hogy alkalmas n0 N számmal TM (n) n(1 + ), ha n n0. Bizonyítás: Az M gépet úgy tervezzük, hogy az M gép m lépését az új legfeljebb 7 lépésben elvégzi. Osszuk fel az M szalagjait m egymás utáni mezobol álló blokkokra = egy új szalagjel = az új gép tm betut használ. Az M -nek eggyel több szalagja lesz, mint M -nek. Az elso input szalag, ezt eloször átkódolja egy másik szalagra. Mi történik a szalagokkal az M gép m egymást követo lépése során? Ami ezalatt végbemegy, az csak a fejeket tartalmazó blokkoktól és azok közvetlen szomszédaitól függ. M : szalagonként három szomszédos jel megvizsgálása után a ,,memóriájában" meglépi M következo m lépését.

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket.

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket. = szimuláció elvégezheto egy bal­jobb­jobb­bal­bal lépéssorozatban

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket. = szimuláció elvégezheto egy bal­jobb­jobb­bal­bal lépéssorozatban esetleg további 2 jobbralépés szükséges lehet = M feleinek mozgatása = 7 lépés

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket. = szimuláció elvégezheto egy bal­jobb­jobb­bal­bal lépéssorozatban esetleg további 2 jobbralépés szükséges lehet = M feleinek mozgatása = 7 lépés A bemenet átkódolása, majd a kódolt szalagon a fejnek a szalag elejére n mozgatása = n + m lépés

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket. = szimuláció elvégezheto egy bal­jobb­jobb­bal­bal lépéssorozatban esetleg további 2 jobbralépés szükséges lehet = M feleinek mozgatása = 7 lépés A bemenet átkódolása, majd a kódolt szalagon a fejnek a szalag elejére n mozgatása = n + m lépés m m m n 7cn 8n 1 7c 8 + + n 1+ + + n+ m m n m m n 1 7c 8 ha m és n olyan nagyok, hogy m + m + n < . TM (n) n + n +7 TM (n) n+ n + 7T (n) m +8

n(1 + ),

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket. = szimuláció elvégezheto egy bal­jobb­jobb­bal­bal lépéssorozatban esetleg további 2 jobbralépés szükséges lehet = M feleinek mozgatása = 7 lépés A bemenet átkódolása, majd a kódolt szalagon a fejnek a szalag elejére n mozgatása = n + m lépés m m m n 7cn 8n 1 7c 8 + + n 1+ + + n+ m m n m m n 1 7c 8 ha m és n olyan nagyok, hogy m + m + n < . Komolyabb, ,,hardverrel" könnyebb. TM (n) n + n +7 TM (n) n+ n + 7T (n) m +8

n(1 + ),

A LGORITMUSELMÉLET 12.

EL OADÁS

19

= felülírja a szomszédos mezohármasokat, helyükre teszi a fejeket. = szimuláció elvégezheto egy bal­jobb­jobb­bal­bal lépéssorozatban esetleg további 2 jobbralépés szükséges lehet = M feleinek mozgatása = 7 lépés A bemenet átkódolása, majd a kódolt szalagon a fejnek a szalag elejére n mozgatása = n + m lépés m m m n 7cn 8n 1 7c 8 + + n 1+ + + n+ m m n m m n 1 7c 8 ha m és n olyan nagyok, hogy m + m + n < . Komolyabb, ,,hardverrel" könnyebb. A Turing-gépmodellben a feladatok idoigénye függ a jelkészlet méretétol TM (n) n + n +7 TM (n) n+ n + 7T (n) m +8

n(1 + ),

Algoritmuselmélet 13. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Április 15.

A LGORITMUSELMÉLET 13.

EL OADÁS

1

Univerzális Turing gép
Turing-gép program

A LGORITMUSELMÉLET 13.

EL OADÁS

1

Univerzális Turing gép
Turing-gép program Univerzális Turing-gép fordító program (interperter)

A LGORITMUSELMÉLET 13.

EL OADÁS

1

Univerzális Turing gép
Turing-gép program Univerzális Turing-gép fordító program (interperter) M TG leírása és s I bemenete = Univerzális TG = szimulálja M -et s bemenettel

A LGORITMUSELMÉLET 13.

EL OADÁS

1

Univerzális Turing gép
Turing-gép program Univerzális Turing-gép fordító program (interperter) M TG leírása és s I bemenete = Univerzális TG = szimulálja M -et s bemenettel Hogyan írjuk le az M TG-et?

A LGORITMUSELMÉLET 13.

EL OADÁS

1

Univerzális Turing gép
Turing-gép program Univerzális Turing-gép fordító program (interperter) M TG leírása és s I bemenete = Univerzális TG = szimulálja M -et s bemenettel Hogyan írjuk le az M TG-et? Tegyük fel, hogy k = 1, M = (Q, T, I, ü, , q0, F ), I = {0, 1} és |F | = 1. Pl. · I = {0, 1}, T = {0, 1, . . . , t}, ü = t, · Q = {0, 1, . . . , q}, q0 = 0, F = {q}, · balra = 0, jobbra = 1, helyben = 2

A LGORITMUSELMÉLET 13.

EL OADÁS

2

Ekkor az M Turing-gép leírása, kódja = q#t#q1#x1#q1#x1#m1# . . . #qr #xr #qr #xr #mr ##, ahol a megfelelo számokat binárisan írjuk le, továbbá értékeit a következoképpen soroljuk fel (ahol értelmezett): a (qi, xi) = (qi, xi, mi) tény kódja qi#xi#qi#xi#mi.

A LGORITMUSELMÉLET 13.

EL OADÁS

2

Ekkor az M Turing-gép leírása, kódja = q#t#q1#x1#q1#x1#m1# . . . #qr #xr #qr #xr #mr ##, ahol a megfelelo számokat binárisan írjuk le, továbbá értékeit a következoképpen soroljuk fel (ahol értelmezett): a (qi, xi) = (qi, xi, mi) tény kódja qi#xi#qi#xi#mi.

Minden szóba jövo M gépet egy w I szóval írunk le.

A LGORITMUSELMÉLET 13.

EL OADÁS

2

Ekkor az M Turing-gép leírása, kódja = q#t#q1#x1#q1#x1#m1# . . . #qr #xr #qr #xr #mr ##, ahol a megfelelo számokat binárisan írjuk le, továbbá értékeit a következoképpen soroljuk fel (ahol értelmezett): a (qi, xi) = (qi, xi, mi) tény kódja qi#xi#qi#xi#mi.

Minden szóba jövo M gépet egy w I szóval írunk le. Tetszoleges w I szóhoz legfeljebb egy gép van, amelynek a kódja w = Mw

A LGORITMUSELMÉLET 13.

EL OADÁS

2

Ekkor az M Turing-gép leírása, kódja = q#t#q1#x1#q1#x1#m1# . . . #qr #xr #qr #xr #mr ##, ahol a megfelelo számokat binárisan írjuk le, továbbá értékeit a következoképpen soroljuk fel (ahol értelmezett): a (qi, xi) = (qi, xi, mi) tény kódja qi#xi#qi#xi#mi.

Minden szóba jövo M gépet egy w I szóval írunk le. Tetszoleges w I szóhoz legfeljebb egy gép van, amelynek a kódja w = Mw Egymásból kiszámolható M és Mw .

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele).

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg.

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg. Harmadik szalag = az Mw belso állapota

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg. Harmadik szalag = az Mw belso állapota Elokészítés = ellenorzi, hogy Mw létezik-e.

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg. Harmadik szalag = az Mw belso állapota Elokészítés = ellenorzi, hogy Mw létezik-e. = NEM megáll elutasító állapotban

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg. Harmadik szalag = az Mw belso állapota Elokészítés = ellenorzi, hogy Mw létezik-e. = NEM megáll elutasító állapotban = IGEN átmásolja az s inputot a második szalagjára, és a harmadik szalagra a kezdoállapot kódját jegyzi fel.

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg. Harmadik szalag = az Mw belso állapota Elokészítés = ellenorzi, hogy Mw létezik-e. = NEM megáll elutasító állapotban = IGEN átmásolja az s inputot a második szalagjára, és a harmadik szalagra a kezdoállapot kódját jegyzi fel. w#s s q0

A LGORITMUSELMÉLET 13.

EL OADÁS

3

Tétel. Van olyan 3-szalagos U Turing-gép, amelyre teljesül a következo: ha w, s I , és Mw létezik, akkor az U gép a w#s bemenetet pontosan akkor fogadja el (utasítja el, kerül vele végtelen ciklusba), ha Mw az s bemenetet elfogadja (elutasítja, végtelen ciklusba kerül vele). Bizonyítás: (vázlat) Elso szalag = w#s input, w értelmezgetése Második szalag = Mw egyetlen szalagjának felel meg. Harmadik szalag = az Mw belso állapota Elokészítés = ellenorzi, hogy Mw létezik-e. = NEM megáll elutasító állapotban = IGEN átmásolja az s inputot a második szalagjára, és a harmadik szalagra a kezdoállapot kódját jegyzi fel. w#s s q0 Az U az Mw gép egy lépését több lépésben szimulálja =

A LGORITMUSELMÉLET 13.

EL OADÁS

4

w#s Mw szalagja az i-edik lépés után Mw belso állapota az i-edik lépés után

A LGORITMUSELMÉLET 13.

EL OADÁS

4

w#s Mw szalagja az i-edik lépés után Mw belso állapota az i-edik lépés után U akkor áll meg, ha Mw megáll,

A LGORITMUSELMÉLET 13.

EL OADÁS

4

w#s Mw szalagja az i-edik lépés után Mw belso állapota az i-edik lépés után U akkor áll meg, ha Mw megáll, pontosan akkor fogadja el a w#s bemenetét, ha a megállás után az Mw elfogadó állapotának kódja van az utolsó szalagon.

A LGORITMUSELMÉLET 13.

EL OADÁS

5

Alapveto kiszámíthatatlansági tételek
Be fogjuk látni, hogy R RE

2I .



A LGORITMUSELMÉLET 13.

EL OADÁS

5

Alapveto kiszámíthatatlansági tételek
Be fogjuk látni, hogy R RE

2I .



Definíció. Azon gépek kódjainak Ld nyelve, amik nem fogadják el saját kódjukat a diagonális nyelv: Ld = {w I ; az Mw gép létezik, és w LMw }.

A LGORITMUSELMÉLET 13.

EL OADÁS

5

Alapveto kiszámíthatatlansági tételek
Be fogjuk látni, hogy R RE

2I .



Definíció. Azon gépek kódjainak Ld nyelve, amik nem fogadják el saját kódjukat a diagonális nyelv: Ld = {w I ; az Mw gép létezik, és w LMw }. Tétel. Ld nem rekurzíve felsorolható.

A LGORITMUSELMÉLET 13.

EL OADÁS

5

Alapveto kiszámíthatatlansági tételek
Be fogjuk látni, hogy R RE

2I .



Definíció. Azon gépek kódjainak Ld nyelve, amik nem fogadják el saját kódjukat a diagonális nyelv: Ld = {w I ; az Mw gép létezik, és w LMw }. Tétel. Ld nem rekurzíve felsorolható. Bizonyítás: Indirekt, tegyük fel hogy rekurzíve felsorolható = M TG amire Ld = LM , ennek kódja legyen w

A LGORITMUSELMÉLET 13.

EL OADÁS

5

Alapveto kiszámíthatatlansági tételek
Be fogjuk látni, hogy R RE

2I .



Definíció. Azon gépek kódjainak Ld nyelve, amik nem fogadják el saját kódjukat a diagonális nyelv: Ld = {w I ; az Mw gép létezik, és w LMw }. Tétel. Ld nem rekurzíve felsorolható. Bizonyítás: Indirekt, tegyük fel hogy rekurzíve felsorolható = M TG amire Ld = LM , ennek kódja legyen w · w Ld = Ld definíciója szerint w LMw = Ld

A LGORITMUSELMÉLET 13.

EL OADÁS

5

Alapveto kiszámíthatatlansági tételek
Be fogjuk látni, hogy R RE

2I .



Definíció. Azon gépek kódjainak Ld nyelve, amik nem fogadják el saját kódjukat a diagonális nyelv: Ld = {w I ; az Mw gép létezik, és w LMw }. Tétel. Ld nem rekurzíve felsorolható. Bizonyítás: Indirekt, tegyük fel hogy rekurzíve felsorolható = M TG amire Ld = LM , ennek kódja legyen w · w Ld = Ld definíciója szerint w LMw = Ld · w Ld = Ld definíciója szerint w Ld = LMw

A LGORITMUSELMÉLET 13.

EL OADÁS

6

Az univerzális nyelv
Definíció. Az olyan (TG kód, input szó) párok Lu nyelve, amelyekre a gép elfogadja az inputot az univerzális nyelv: Lu = {w#s I ; az Mw gép létezik, és s LMw }.

A LGORITMUSELMÉLET 13.

EL OADÁS

6

Az univerzális nyelv
Definíció. Az olyan (TG kód, input szó) párok Lu nyelve, amelyekre a gép elfogadja az inputot az univerzális nyelv: Lu = {w#s I ; az Mw gép létezik, és s LMw }. Tétel. [A. Turing, 1936] Lu egy rekurzíve felsorolható, de nem rekurzív nyelv.

A LGORITMUSELMÉLET 13.

EL OADÁS

6

Az univerzális nyelv
Definíció. Az olyan (TG kód, input szó) párok Lu nyelve, amelyekre a gép elfogadja az inputot az univerzális nyelv: Lu = {w#s I ; az Mw gép létezik, és s LMw }. Tétel. [A. Turing, 1936] Lu egy rekurzíve felsorolható, de nem rekurzív nyelv. Bizonyítás: Lu-t éppen az univerzális Turing-gépek ismerik fel = Lu rekurzíve felsorolható.

A LGORITMUSELMÉLET 13.

EL OADÁS

6

Az univerzális nyelv
Definíció. Az olyan (TG kód, input szó) párok Lu nyelve, amelyekre a gép elfogadja az inputot az univerzális nyelv: Lu = {w#s I ; az Mw gép létezik, és s LMw }. Tétel. [A. Turing, 1936] Lu egy rekurzíve felsorolható, de nem rekurzív nyelv. Bizonyítás: Lu-t éppen az univerzális Turing-gépek ismerik fel = Lu rekurzíve felsorolható. Tegyük fel indirekt, hogy Lu rekurzív; legyen M egy mindig megálló TG, ami felismeri Lu-t.

A LGORITMUSELMÉLET 13.

EL OADÁS

6

Az univerzális nyelv
Definíció. Az olyan (TG kód, input szó) párok Lu nyelve, amelyekre a gép elfogadja az inputot az univerzális nyelv: Lu = {w#s I ; az Mw gép létezik, és s LMw }. Tétel. [A. Turing, 1936] Lu egy rekurzíve felsorolható, de nem rekurzív nyelv. Bizonyítás: Lu-t éppen az univerzális Turing-gépek ismerik fel = Lu rekurzíve felsorolható. Tegyük fel indirekt, hogy Lu rekurzív; legyen M egy mindig megálló TG, ami felismeri Lu-t. Konstruáljuk meg az M TG-et:

A LGORITMUSELMÉLET 13.

EL OADÁS

7

nem nem

w

Mw létezik?

igen w#w

igen
M

nem

nem igen

A LGORITMUSELMÉLET 13.

EL OADÁS

7

nem nem

w

Mw létezik?

igen w#w

igen
M

nem

nem igen

Az M gép mindig megáll, mert M mindig megáll.

A LGORITMUSELMÉLET 13.

EL OADÁS

7

nem nem

w

Mw létezik?

igen w#w

igen
M

nem

nem igen

Az M gép mindig megáll, mert M mindig megáll. M pontosan akkor fogadja el w-t, ha Mw létezik és w LMw .

A LGORITMUSELMÉLET 13.

EL OADÁS

7

nem nem

w

Mw létezik?

igen w#w

igen
M

nem

nem igen

Az M gép mindig megáll, mert M mindig megáll. M pontosan akkor fogadja el w-t, ha Mw létezik és w LMw . = M éppen az Ld nyelvet fogadja el

A LGORITMUSELMÉLET 13.

EL OADÁS

7

nem nem

w

Mw létezik?

igen w#w

igen
M

nem

nem igen

Az M gép mindig megáll, mert M mindig megáll. M pontosan akkor fogadja el w-t, ha Mw létezik és w LMw . = M éppen az Ld nyelvet fogadja el hiszen Ld nem rekurzíve felsorolható

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is.

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is. Ha csak olyan ,,fél" algoritmusunk van, ami nem mindig áll meg, ezt nem lehet megtenni.

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is. Ha csak olyan ,,fél" algoritmusunk van, ami nem mindig áll meg, ezt nem lehet megtenni. Ha van fél algoritmus L-re és I \ L-re is, akkor ebbol összejön egy egész algoritmus

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is. Ha csak olyan ,,fél" algoritmusunk van, ami nem mindig áll meg, ezt nem lehet megtenni. Ha van fél algoritmus L-re és I \ L-re is, akkor ebbol összejön egy egész algoritmus I Definíció. A nyelvekbol álló halmazokat (2 részhalmazait) nyelvosztályoknak nevezzük. (Pl. R, RE, 2I .)

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is. Ha csak olyan ,,fél" algoritmusunk van, ami nem mindig áll meg, ezt nem lehet megtenni. Ha van fél algoritmus L-re és I \ L-re is, akkor ebbol összejön egy egész algoritmus I Definíció. A nyelvekbol álló halmazokat (2 részhalmazait) nyelvosztályoknak nevezzük. (Pl. R, RE, 2I .) Legyen X 2I egy nyelvosztály. Ekkor a komplementer nyelvosztály, coX az X-beli nyelvek komplementereibol áll: coX = {L I : I \ L X}.

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is. Ha csak olyan ,,fél" algoritmusunk van, ami nem mindig áll meg, ezt nem lehet megtenni. Ha van fél algoritmus L-re és I \ L-re is, akkor ebbol összejön egy egész algoritmus I Definíció. A nyelvekbol álló halmazokat (2 részhalmazait) nyelvosztályoknak nevezzük. (Pl. R, RE, 2I .) Legyen X 2I egy nyelvosztály. Ekkor a komplementer nyelvosztály, coX az X-beli nyelvek komplementereibol áll: coX = {L I : I \ L X}. = X Y 2I



= coX coY.

A LGORITMUSELMÉLET 13.

EL OADÁS

8

Összefüggések a kiszámíthatósági fogalmak között
Ha van egy mindig megálló M algoritmusunk L felismerésére, akkor van algoritmus az I \ L nyelv felismerésére is. Ha csak olyan ,,fél" algoritmusunk van, ami nem mindig áll meg, ezt nem lehet megtenni. Ha van fél algoritmus L-re és I \ L-re is, akkor ebbol összejön egy egész algoritmus I Definíció. A nyelvekbol álló halmazokat (2 részhalmazait) nyelvosztályoknak nevezzük. (Pl. R, RE, 2I .) Legyen X 2I egy nyelvosztály. Ekkor a komplementer nyelvosztály, coX az X-beli nyelvek komplementereibol áll: coX = {L I : I \ L X}. = X Y 2I



= coX coY.

co(coX) = X

A LGORITMUSELMÉLET 13.

EL OADÁS

9

Tétel. R = coR Bizonyítás: Ha L R = M TG, mely minden inputon megáll és az L nyelvet fogadja el.

A LGORITMUSELMÉLET 13.

EL OADÁS

9

Tétel. R = coR Bizonyítás: Ha L R = M TG, mely minden inputon megáll és az L nyelvet fogadja el. Cseréljük fel M elfogadó és elutasítva megálló állapotait = coR R.

A LGORITMUSELMÉLET 13.

EL OADÁS

9

Tétel. R = coR Bizonyítás: Ha L R = M TG, mely minden inputon megáll és az L nyelvet fogadja el. Cseréljük fel M elfogadó és elutasítva megálló állapotait = coR R. Másik irány: R = co(coR) coR.

A LGORITMUSELMÉLET 13.

EL OADÁS

9

Tétel. R = coR Bizonyítás: Ha L R = M TG, mely minden inputon megáll és az L nyelvet fogadja el. Cseréljük fel M elfogadó és elutasítva megálló állapotait = coR R. Másik irány: R = co(coR) coR. Tétel. R = RE coRE Bizonyítás: R RE = R = coR coRE = R RE coRE

A LGORITMUSELMÉLET 13.

EL OADÁS

9

Tétel. R = coR Bizonyítás: Ha L R = M TG, mely minden inputon megáll és az L nyelvet fogadja el. Cseréljük fel M elfogadó és elutasítva megálló állapotait = coR R. Másik irány: R = co(coR) coR. Tétel. R = RE coRE Bizonyítás: R RE = R = coR coRE = R RE coRE Másik irány: Tegyük fel, hogy L RE coRE = legyen M1, illetve M2 két TG, melyek az L, illetve az I \ L nyelvet ismerik fel.

A LGORITMUSELMÉLET 13.

EL OADÁS

9

Tétel. R = coR Bizonyítás: Ha L R = M TG, mely minden inputon megáll és az L nyelvet fogadja el. Cseréljük fel M elfogadó és elutasítva megálló állapotait = coR R. Másik irány: R = co(coR) coR. Tétel. R = RE coRE Bizonyítás: R RE = R = coR coRE = R RE coRE Másik irány: Tegyük fel, hogy L RE coRE = legyen M1, illetve M2 két TG, melyek az L, illetve az I \ L nyelvet ismerik fel. Egy mindig megálló M3 TG-et szerkesztünk, melyre L = LM3 :

A LGORITMUSELMÉLET 13.

EL OADÁS

10

igen
M1 s M2 M3

nem igen nem

igen nem

nem igen

Az M3 pontosan akkor álljon meg, ha M1 és M2 valamelyike megáll.

A LGORITMUSELMÉLET 13.

EL OADÁS

10

igen
M1 s M2 M3

nem igen nem

igen nem

nem igen

Az M3 pontosan akkor álljon meg, ha M1 és M2 valamelyike megáll. M3 akkor fogad el, ha a megállás M1 elfogadó, vagy pedig M2 elutasító állapotában történt.

A LGORITMUSELMÉLET 13.

EL OADÁS

10

igen
M1 s M2 M3

nem igen nem

igen nem

nem igen

Az M3 pontosan akkor álljon meg, ha M1 és M2 valamelyike megáll. M3 akkor fogad el, ha a megállás M1 elfogadó, vagy pedig M2 elutasító állapotában történt. = M3 az L nyelvet ismeri fel és mindig megáll

A LGORITMUSELMÉLET 13.

EL OADÁS

10

igen
M1 s M2 M3

nem igen nem

igen nem

nem igen

Az M3 pontosan akkor álljon meg, ha M1 és M2 valamelyike megáll. M3 akkor fogad el, ha a megállás M1 elfogadó, vagy pedig M2 elutasító állapotában történt. = M3 az L nyelvet ismeri fel és mindig megáll M3 megvalósítható párhuzamosság nélkül is = M3 felváltva lépteti M1-et és M2-t.

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L).

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM .

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet.

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik.

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik. = M gép csak az s L szavakra áll meg; megálláskor s lesz az output szalagon. =

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik. = M gép csak az s L szavakra áll meg; megálláskor s lesz az output szalagon. = Az M által kiszámított fM függvény értékkészlete L.

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik. = M gép csak az s L szavakra áll meg; megálláskor s lesz az output szalagon. = Az M által kiszámított fM függvény értékkészlete L. : Tegyük fel, hogy f egy parciálisan rekurzív függvény, f = fM , ahol M egy TG.

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik. = M gép csak az s L szavakra áll meg; megálláskor s lesz az output szalagon. = Az M által kiszámított fM függvény értékkészlete L. : Tegyük fel, hogy f egy parciálisan rekurzív függvény, f = fM , ahol M egy TG. Tekintsük az I szavainak w0, . . . , wn . . . kanonikus felsorolását.

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik. = M gép csak az s L szavakra áll meg; megálláskor s lesz az output szalagon. = Az M által kiszámított fM függvény értékkészlete L. : Tegyük fel, hogy f egy parciálisan rekurzív függvény, f = fM , ahol M egy TG. Tekintsük az I szavainak w0, . . . , wn . . . kanonikus felsorolását. Ki kellene próbálni minden wi inputtal, hogy hátha pont s-et a keresett szót számolja ki M .

A LGORITMUSELMÉLET 13.

EL OADÁS

11

Függvények és halmazok
Tétel. Az L I nyelv akkor és csak akkor rekurzíve felsorolható, ha van olyan f : I I parciálisan rekurzív függvény, melynek értékkészlete éppen az L nyelv (szokásos jelöléssel Im(f ) = L). Bizonyítás: : Tegyük fel, hogy L rekurzíve felsorolható = M TG, melyre L = LM . = Legyen M olyan TG, mely kezdetben az s I bemeno szót felmásolja az output szalagjára, azután szimulálja az M gépet. Kivétel: = ha M elutasító állapotban áll meg, akkor M végtelen ciklusba esik. = M gép csak az s L szavakra áll meg; megálláskor s lesz az output szalagon. = Az M által kiszámított fM függvény értékkészlete L. : Tegyük fel, hogy f egy parciálisan rekurzív függvény, f = fM , ahol M egy TG. Tekintsük az I szavainak w0, . . . , wn . . . kanonikus felsorolását. Ki kellene próbálni minden wi inputtal, hogy hátha pont s-et a keresett szót számolja ki M .

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül.

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

Az M TG az (i, j) párok sorozata szerint megy sorba. Tegyük fel, hogy s I az M bemenete.

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

Az M TG az (i, j) párok sorozata szerint megy sorba. Tegyük fel, hogy s I az M bemenete. = M szimulálja az M elso i lépését a wj szón.

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

Az M TG az (i, j) párok sorozata szerint megy sorba. Tegyük fel, hogy s I az M bemenete. = M szimulálja az M elso i lépését a wj szón. Ha M megáll és o outputot produkál, akkor ellenorzi, hogy s = o teljesül-e.

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

Az M TG az (i, j) párok sorozata szerint megy sorba. Tegyük fel, hogy s I az M bemenete. = M szimulálja az M elso i lépését a wj szón. Ha M megáll és o outputot produkál, akkor ellenorzi, hogy s = o teljesül-e. IGEN M megáll és elfogadja s-et.

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

Az M TG az (i, j) párok sorozata szerint megy sorba. Tegyük fel, hogy s I az M bemenete. = M szimulálja az M elso i lépését a wj szón. Ha M megáll és o outputot produkál, akkor ellenorzi, hogy s = o teljesül-e. IGEN M megáll és elfogadja s-et. NEM (nem áll meg i lépésen belül, vagy az eredmény nem s) =

A LGORITMUSELMÉLET 13.

EL OADÁS

12

Baj van, ha valamelyik szóra végtelen ciklusba kerül. A természetes számokból álló párok is felsorolhatók: 0 1 2 3 4 5 6 7 8 0 d d d d d d d d d d d d © © © © d © © © © 1 d d d d d d © © © © d © © © 2 d d d d © © © © d © 3 d d d d d © © © © 4 d d d d d © © © 5 d d d d © © 6 d d d © 7 d d 8d

Az M TG az (i, j) párok sorozata szerint megy sorba. Tegyük fel, hogy s I az M bemenete. = M szimulálja az M elso i lépését a wj szón. Ha M megáll és o outputot produkál, akkor ellenorzi, hogy s = o teljesül-e. IGEN M megáll és elfogadja s-et. NEM (nem áll meg i lépésen belül, vagy az eredmény nem s) = következo pár

A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve?

A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve? LM Im(f )

A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve? LM Im(f ) Ha s Im(f ) = j, hogy s = fM (wj )

A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve? LM Im(f ) Ha s Im(f ) = j, hogy s = fM (wj ) = ha M a wj bemeneten i lépésben kapja meg az s eredményt = M az (i, j) pár feldolgozásakor elfogadja s-et

A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve? LM Im(f ) Ha s Im(f ) = j, hogy s = fM (wj ) = ha M a wj bemeneten i lépésben kapja meg az s eredményt = M az (i, j) pár feldolgozásakor elfogadja s-et = LM Im(f )

A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve? LM Im(f ) Ha s Im(f ) = j, hogy s = fM (wj ) = ha M a wj bemeneten i lépésben kapja meg az s eredményt = M az (i, j) pár feldolgozásakor elfogadja s-et = LM Im(f ) Definíció. Egy L I nyelv karakterisztikus függvénye, L a következo: L(s) = 1 I , 0 I , ha s L ha s L

Tétel. Az L I nyelv pontosan akkor rekurzív, ha L egy rekurzív függvény. Bizonyítás: : M írojon ki a végén 0-t vagy 1-et



A LGORITMUSELMÉLET 13.

EL OADÁS

13

Mi lesz az M gép LM nyelve? LM Im(f ) Ha s Im(f ) = j, hogy s = fM (wj ) = ha M a wj bemeneten i lépésben kapja meg az s eredményt = M az (i, j) pár feldolgozásakor elfogadja s-et = LM Im(f ) Definíció. Egy L I nyelv karakterisztikus függvénye, L a következo: L(s) = 1 I , 0 I , ha s L ha s L

Tétel. Az L I nyelv pontosan akkor rekurzív, ha L egy rekurzív függvény. Bizonyítás: : M írojon ki a végén 0-t vagy 1-et : Ha 1-et ír ki menjen elfogadóba, ha 0-t elutasítóba



A LGORITMUSELMÉLET 13.

EL OADÁS

14

Eldönthetetlen problémák
Definíció. Az L I nyelvet eldönthetetlen nyelvnek nevezzük, ha L nem rekurzív.

A LGORITMUSELMÉLET 13.

EL OADÁS

14

Eldönthetetlen problémák
Definíció. Az L I nyelvet eldönthetetlen nyelvnek nevezzük, ha L nem rekurzív. Definíció. Megállási probléma: Megáll-e egy TG egy adott inputon? Lh = w#s I az Mw gép létezik, és az s bemenettel elindítva véges sok lépésben megáll .

A LGORITMUSELMÉLET 13.

EL OADÁS

14

Eldönthetetlen problémák
Definíció. Az L I nyelvet eldönthetetlen nyelvnek nevezzük, ha L nem rekurzív. Definíció. Megállási probléma: Megáll-e egy TG egy adott inputon? Lh = w#s I az Mw gép létezik, és az s bemenettel elindítva véges sok lépésben megáll .

Tétel. Lh RE \ R.

A LGORITMUSELMÉLET 13.

EL OADÁS

14

Eldönthetetlen problémák
Definíció. Az L I nyelvet eldönthetetlen nyelvnek nevezzük, ha L nem rekurzív. Definíció. Megállási probléma: Megáll-e egy TG egy adott inputon? Lh = w#s I az Mw gép létezik, és az s bemenettel elindítva véges sok lépésben megáll .

Tétel. Lh RE \ R. Bizonyítás: Lh RE: Vegyünk egy univerzális Turing-gépet, amit kicsit módosítunk: ha megáll menjen át elfogadóba

A LGORITMUSELMÉLET 13.

EL OADÁS

14

Eldönthetetlen problémák
Definíció. Az L I nyelvet eldönthetetlen nyelvnek nevezzük, ha L nem rekurzív. Definíció. Megállási probléma: Megáll-e egy TG egy adott inputon? Lh = w#s I az Mw gép létezik, és az s bemenettel elindítva véges sok lépésben megáll .

Tétel. Lh RE \ R. Bizonyítás: Lh RE: Vegyünk egy univerzális Turing-gépet, amit kicsit módosítunk: ha megáll menjen át elfogadóba Lh R: Indikekt, tegyük fel, hogy rekurzív = M TG, ami felismeri és mindig megáll.

A LGORITMUSELMÉLET 13.

EL OADÁS

15

nem nem
w#s M

nem

igen w#s

U

igen

A LGORITMUSELMÉLET 13.

EL OADÁS

15

nem nem
w#s M

nem

igen w#s

U

igen

Ez gép Lu-t felismeri és mindig megáll

A LGORITMUSELMÉLET 13.

EL OADÁS

15

nem nem
w#s M

nem

igen w#s

U

igen

Ez gép Lu-t felismeri és mindig megáll Tétel. [A. Church, 1936] Legyen L = {w I : Mw létezik és az (üres) inputon megáll}.

L RE \ R.

A LGORITMUSELMÉLET 13.

EL OADÁS

15

nem nem
w#s M

nem

igen w#s

U

igen

Ez gép Lu-t felismeri és mindig megáll Tétel. [A. Church, 1936] Legyen L = {w I : Mw létezik és az (üres) inputon megáll}.

L RE \ R. Bizonyítás: L RE: Az üres inputtal futassuk az Lh-t felismero gépet



A LGORITMUSELMÉLET 13.

EL OADÁS

15

nem nem
w#s M

nem

igen w#s

U

igen

Ez gép Lu-t felismeri és mindig megáll Tétel. [A. Church, 1936] Legyen L = {w I : Mw létezik és az (üres) inputon megáll}.

L RE \ R.

Bizonyítás: L RE: Az üres inputtal futassuk az Lh-t felismero gépet L R: Belátjuk, hogy ha L rekurzív (M , ami felismeri és mindig megáll), akkor Lh is.



A LGORITMUSELMÉLET 13.

EL OADÁS

15

nem nem
w#s M

nem

igen w#s

U

igen

Ez gép Lu-t felismeri és mindig megáll Tétel. [A. Church, 1936] Legyen L = {w I : Mw létezik és az (üres) inputon megáll}.

L RE \ R.

Bizonyítás: L RE: Az üres inputtal futassuk az Lh-t felismero gépet L R: Belátjuk, hogy ha L rekurzív (M , ami felismeri és mindig megáll), akkor Lh is. Ha Lh bemenete w#s, akkor olyan M -t konstruálunk, aminek belso állapotaiba kódoljuk az s inputot.



A LGORITMUSELMÉLET 13.

EL OADÁS

16

Hilbert 10. problémája
Legyen f (x1, . . . , xm) egész együtthatós m változós polinom:
n1 nm

f (x1, . . . , xm) =
i1 =0

···
im =0

ai1...im x1i1 · · · xmim

A LGORITMUSELMÉLET 13.

EL OADÁS

16

Hilbert 10. problémája
Legyen f (x1, . . . , xm) egész együtthatós m változós polinom:
n1 nm

f (x1, . . . , xm) =
i1 =0

···
im =0

ai1...im x1i1 · · · xmim

Az f polinom foka az elozo felírásban eloforduló legnagyobb kitevoösszeg: deg f = max{i1 + . . . + im | ai1...im = 0}.

A LGORITMUSELMÉLET 13.

EL OADÁS

16

Hilbert 10. problémája
Legyen f (x1, . . . , xm) egész együtthatós m változós polinom:
n1 nm

f (x1, . . . , xm) =
i1 =0

···
im =0

ai1...im x1i1 · · · xmim

Az f polinom foka az elozo felírásban eloforduló legnagyobb kitevoösszeg: deg f = max{i1 + . . . + im | ai1...im = 0}. Az () f (x1, . . . , xm) = 0

alakú egyenleteket diofantikus egyenleteknek nevezzük.

A LGORITMUSELMÉLET 13.

EL OADÁS

16

Hilbert 10. problémája
Legyen f (x1, . . . , xm) egész együtthatós m változós polinom:
n1 nm

f (x1, . . . , xm) =
i1 =0

···
im =0

ai1...im x1i1 · · · xmim

Az f polinom foka az elozo felírásban eloforduló legnagyobb kitevoösszeg: deg f = max{i1 + . . . + im | ai1...im = 0}. Az () f (x1, . . . , xm) = 0

alakú egyenleteket diofantikus egyenleteknek nevezzük. A () diofantikus egyenlet megoldásán egy olyan (u1, . . . , um) Zm egészekbol álló m-est értünk, melyre f (u1, . . . , um) = 0.

A LGORITMUSELMÉLET 13.

EL OADÁS

17

Van-e megoldása egy adott diofantoszi egyenletnek?

A LGORITMUSELMÉLET 13.

EL OADÁS

17

Van-e megoldása egy adott diofantoszi egyenletnek? Tétel. [Matijaszevics, 1970] Ez eldönthetetlen probléma.

A LGORITMUSELMÉLET 13.

EL OADÁS

18

A Dominóprobléma
Dominó: a d b c

A LGORITMUSELMÉLET 13.

EL OADÁS

18

A Dominóprobléma
Dominó: a d b c
q q q

Egymásmellé rakás: q
q q

e d bb f g c g c d hh b g c
q q q

a

q

q

q

A LGORITMUSELMÉLET 13.

EL OADÁS

18

A Dominóprobléma
Dominó: a d b c
q q q

Egymásmellé rakás: q
q q

e d bb f g c g c d hh b g c
q q q

a

q

q

q

Forgatni nem szabad! Dominóprobléma: Adott dominó-típusok egy véges F halmaza; eldöntendo, hogy a sík lefedheto-e hézagtalanul szabályosan illeszkedo F -beli típusú dominókkal.

A LGORITMUSELMÉLET 13.

EL OADÁS

18

A Dominóprobléma
Dominó: a d b c
q q q

Egymásmellé rakás: q
q q

e d bb f g c g c d hh b g c
q q q

a

q

q

q

Forgatni nem szabad! Dominóprobléma: Adott dominó-típusok egy véges F halmaza; eldöntendo, hogy a sík lefedheto-e hézagtalanul szabályosan illeszkedo F -beli típusú dominókkal. = D nyelv Tétel. D R és D coRE.

A LGORITMUSELMÉLET 13.

EL OADÁS

18

A Dominóprobléma
Dominó: a d b c
q q q

Egymásmellé rakás: q
q q

e d bb f g c g c d hh b g c
q q q

a

q

q

q

Forgatni nem szabad! Dominóprobléma: Adott dominó-típusok egy véges F halmaza; eldöntendo, hogy a sík lefedheto-e hézagtalanul szabályosan illeszkedo F -beli típusú dominókkal. = D nyelv Tétel. D R és D coRE.

A LGORITMUSELMÉLET 13.

EL OADÁS

19

Post megfeleltetési problémája
Emil Post

A LGORITMUSELMÉLET 13.

EL OADÁS

19

Post megfeleltetési problémája
Emil Post Legyen egy véges abc. Post megfeleltetési problémájának egy bemenete egy (s, t) (s, t ) alakú rendezett párokból álló véges P halmaz.

A LGORITMUSELMÉLET 13.

EL OADÁS

19

Post megfeleltetési problémája
Emil Post Legyen egy véges abc. Post megfeleltetési problémájának egy bemenete egy (s, t) (s, t ) alakú rendezett párokból álló véges P halmaz. A megfeleltetési feladat P bemenetét megoldhatónak nevezzük, ha vannak olyan (nem feltétlenül különbözo) P-beli (s1, t1), (s2, t2), . . . , (sn, tn) párok úgy, hogy s1 s2 · · · sn = t1 t2 · · · tn .

A LGORITMUSELMÉLET 13.

EL OADÁS

19

Post megfeleltetési problémája
Emil Post Legyen egy véges abc. Post megfeleltetési problémájának egy bemenete egy (s, t) (s, t ) alakú rendezett párokból álló véges P halmaz. A megfeleltetési feladat P bemenetét megoldhatónak nevezzük, ha vannak olyan (nem feltétlenül különbözo) P-beli (s1, t1), (s2, t2), . . . , (sn, tn) párok úgy, hogy s1 s2 · · · sn = t1 t2 · · · tn . Ilyenkor az s1s2 · · · sn, vagy ami ugyanaz, a t1t2 · · · tn szót a P megoldásának nevezzük.

A LGORITMUSELMÉLET 13.

EL OADÁS

19

Post megfeleltetési problémája
Emil Post Legyen egy véges abc. Post megfeleltetési problémájának egy bemenete egy (s, t) (s, t ) alakú rendezett párokból álló véges P halmaz. A megfeleltetési feladat P bemenetét megoldhatónak nevezzük, ha vannak olyan (nem feltétlenül különbözo) P-beli (s1, t1), (s2, t2), . . . , (sn, tn) párok úgy, hogy s1 s2 · · · sn = t1 t2 · · · tn . Ilyenkor az s1s2 · · · sn, vagy ami ugyanaz, a t1t2 · · · tn szót a P megoldásának nevezzük. Például a P = {(iz, riz), (kar, ka), (ma, ma)} rendszer megoldható. Egy lehetséges megoldás a karizma szó. Tétel. Ez a probléma eldönthetetlen.

Algoritmuselmélet 14. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Április 22.

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)).

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény Példa: hárommal való oszthatóságot ellenorzo Turing-gép = n + 1 idokorlátos

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény Példa: hárommal való oszthatóságot ellenorzo Turing-gép = n + 1 idokorlátos Definíció. L felismerheto egy O(t(n)) idokorlátos T IM E(t(n)) := L I M Turing-géppel

.

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény Példa: hárommal való oszthatóságot ellenorzo Turing-gép = n + 1 idokorlátos Definíció. L felismerheto egy O(t(n)) idokorlátos T IM E(t(n)) := L I M Turing-géppel T IM E(t(n)) = létezik ct(n) idokorlátos TG

.

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény Példa: hárommal való oszthatóságot ellenorzo Turing-gép = n + 1 idokorlátos Definíció. L felismerheto egy O(t(n)) idokorlátos T IM E(t(n)) := L I M Turing-géppel T IM E(t(n)) = létezik ct(n) idokorlátos TG n hosszú x inputokon a számítás mindig befejezodik legfeljebb ct(n) lépésben, tekintet nélkül arra, hogy x L igaz-e

.

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény Példa: hárommal való oszthatóságot ellenorzo Turing-gép = n + 1 idokorlátos Definíció. L felismerheto egy O(t(n)) idokorlátos T IM E(t(n)) := L I M Turing-géppel T IM E(t(n)) = létezik ct(n) idokorlátos TG n hosszú x inputokon a számítás mindig befejezodik legfeljebb ct(n) lépésben, tekintet nélkül arra, hogy x L igaz-e = T IM E(t(n)) R Példa: T IM E(n) = {az O(n), azaz lineáris idoben felismerheto nyelvek}.

.

A LGORITMUSELMÉLET 14.

EL OADÁS

1

Ido- és tárkorlátok
Definíció. Legyen t : Z+ Z+ egy függvény, melyre minden n Z+ esetén t(n) n teljesül. Az M Turing-gép t(n) idokorlátos, ha n hosszú inputokon legfeljebb t(n) lépést tesz (más szóval TM (n) t(n)). t(n) n = a gép legalább végigolvashatja az inputot M gyors = t(n) lassan növekedo függvény Példa: hárommal való oszthatóságot ellenorzo Turing-gép = n + 1 idokorlátos Definíció. L felismerheto egy O(t(n)) idokorlátos T IM E(t(n)) := L I M Turing-géppel T IM E(t(n)) = létezik ct(n) idokorlátos TG n hosszú x inputokon a számítás mindig befejezodik legfeljebb ct(n) lépésben, tekintet nélkül arra, hogy x L igaz-e = T IM E(t(n)) R Példa: T IM E(n) = {az O(n), azaz lineáris idoben felismerheto nyelvek}.

.

A LGORITMUSELMÉLET 14.

EL OADÁS

2

A P nyelvosztály
Definíció. P = k1T IM E(nk), a polinom idoben felismerheto nyelvek osztálya.

A LGORITMUSELMÉLET 14.

EL OADÁS

2

A P nyelvosztály
Definíció. P = k1T IM E(nk), a polinom idoben felismerheto nyelvek osztálya. Tétel. Ha az L nyelv nlog n-nél rövidebb idoben nem ismerheto fel, akkor L P.

A LGORITMUSELMÉLET 14.

EL OADÁS

2

A P nyelvosztály
Definíció. P = k1T IM E(nk), a polinom idoben felismerheto nyelvek osztálya. Tétel. Ha az L nyelv nlog n-nél rövidebb idoben nem ismerheto fel, akkor L P. Bizonyítás: Indirekt tegyük fel, hogy L P. = van olyan k > 0, melyre L T IM E(nk) = nlog n cnk teljesülne végtelen sok n-re

A LGORITMUSELMÉLET 14.

EL OADÁS

2

A P nyelvosztály
Definíció. P = k1T IM E(nk), a polinom idoben felismerheto nyelvek osztálya. Tétel. Ha az L nyelv nlog n-nél rövidebb idoben nem ismerheto fel, akkor L P. Bizonyítás: Indirekt tegyük fel, hogy L P. = van olyan k > 0, melyre L T IM E(nk) = nlog n cnk teljesülne végtelen sok n-re

A LGORITMUSELMÉLET 14.

EL OADÁS

3

Tárkorlát
Definíció. Legyen s : Z+ Z+ olyan függvény, melyre minden n Z+ számmal igaz, hogy s(n) log2 n. Az M Turing-gép s(n) tárkorlátos, ha n hosszú inputokon legfeljebb s(n) tárcellát használ a munkaszalagokon (azaz SM (n) s(n)).

A LGORITMUSELMÉLET 14.

EL OADÁS

3

Tárkorlát
Definíció. Legyen s : Z+ Z+ olyan függvény, melyre minden n Z+ számmal igaz, hogy s(n) log2 n. Az M Turing-gép s(n) tárkorlátos, ha n hosszú inputokon legfeljebb s(n) tárcellát használ a munkaszalagokon (azaz SM (n) s(n)). s(n) log2 n = Ennyi hely kell ahhoz, hogy egy n cellából álló szalagrészt címezni tudjunk.

A LGORITMUSELMÉLET 14.

EL OADÁS

3

Tárkorlát
Definíció. Legyen s : Z+ Z+ olyan függvény, melyre minden n Z+ számmal igaz, hogy s(n) log2 n. Az M Turing-gép s(n) tárkorlátos, ha n hosszú inputokon legfeljebb s(n) tárcellát használ a munkaszalagokon (azaz SM (n) s(n)). s(n) log2 n = Ennyi hely kell ahhoz, hogy egy n cellából álló szalagrészt címezni tudjunk. Definíció. SP ACE(s(n)) := L I az L felismerheto egy O(s(n)) tárkorlátos M Turing-géppel .

A LGORITMUSELMÉLET 14.

EL OADÁS

3

Tárkorlát
Definíció. Legyen s : Z+ Z+ olyan függvény, melyre minden n Z+ számmal igaz, hogy s(n) log2 n. Az M Turing-gép s(n) tárkorlátos, ha n hosszú inputokon legfeljebb s(n) tárcellát használ a munkaszalagokon (azaz SM (n) s(n)). s(n) log2 n = Ennyi hely kell ahhoz, hogy egy n cellából álló szalagrészt címezni tudjunk. Definíció. SP ACE(s(n)) := L I az L felismerheto egy O(s(n)) tárkorlátos M Turing-géppel .

Ez nem biztos, hogy egyátalán megáll!

A LGORITMUSELMÉLET 14.

EL OADÁS

3

Tárkorlát
Definíció. Legyen s : Z+ Z+ olyan függvény, melyre minden n Z+ számmal igaz, hogy s(n) log2 n. Az M Turing-gép s(n) tárkorlátos, ha n hosszú inputokon legfeljebb s(n) tárcellát használ a munkaszalagokon (azaz SM (n) s(n)). s(n) log2 n = Ennyi hely kell ahhoz, hogy egy n cellából álló szalagrészt címezni tudjunk. Definíció. SP ACE(s(n)) := L I az L felismerheto egy O(s(n)) tárkorlátos M Turing-géppel .

Ez nem biztos, hogy egyátalán megáll! Példa: SP ACE(log n) a logaritmikus tárban felismerheto nyelvek osztálya.

A LGORITMUSELMÉLET 14.

EL OADÁS

4

Függvényosztályok
Definíció. F T IM E(t(n) := az O(t(n)) idokorlátos TG-k által kiszámítható f : I I függvények osztálya. Definíció. F SP ACE(s(n)) := az O(s(n)) tárkorlátos TG-k által kiszámítható f : I I (parciális) függvények osztálya. Definíció. FP := k1F T IM E(nk).

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül.

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L.

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete = PHL

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete = PHL kétszer ugyanaz a PHL = utána ugyanaz fog történni = végtelen ciklus

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete = PHL kétszer ugyanaz a PHL = utána ugyanaz fog történni = végtelen ciklus Belátjuk, hogy ha M tárkortátos = véges sok PHL lehet = biztos végtelen ciklusba fog kerülni (ha nem áll meg)

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete = PHL kétszer ugyanaz a PHL = utána ugyanaz fog történni = végtelen ciklus Belátjuk, hogy ha M tárkortátos = véges sok PHL lehet = biztos végtelen ciklusba fog kerülni (ha nem áll meg) Ezt kellene felismerni O(cS (n)) ido alatt.

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete = PHL kétszer ugyanaz a PHL = utána ugyanaz fog történni = végtelen ciklus Belátjuk, hogy ha M tárkortátos = véges sok PHL lehet = biztos végtelen ciklusba fog kerülni (ha nem áll meg) Ezt kellene felismerni O(cS (n)) ido alatt. Hány darab PHL lehetséges összesen, ha a gépet n hosszú inputtal indítjuk?

A LGORITMUSELMÉLET 14.

EL OADÁS

5

Tár­ido-tétel
Tétel. [tár­id -tétel] Ha L SP ACE(s(n)), akkor van olyan L-tol függo c o konstans, mellyel L T IM E(cs(n)) teljesül. Bizonyítás: Legyen M egy S(n) = c1s(n) tárkorlátos (c1 1) k-szalagos TG, mely felismeri L-et = konstruálunk olyan O(cS (n))-idokorlátos N TG-t, melynek a nyelve szintén L. a gép egy pillanatnyi helyzete = az input, a munkaszalagok tartalma, a gép aktuális belso állapota, valamint a fejek helyzete = PHL kétszer ugyanaz a PHL = utána ugyanaz fog történni = végtelen ciklus Belátjuk, hogy ha M tárkortátos = véges sok PHL lehet = biztos végtelen ciklusba fog kerülni (ha nem áll meg) Ezt kellene felismerni O(cS (n)) ido alatt. Hány darab PHL lehetséges összesen, ha a gépet n hosszú inputtal indítjuk? #P HL |Q||T |S (n)(n + 1)S(n)k konstans · c2
S (n)

=: t,

(az (n + 1) tényezo az input fej lehetséges helyzeteinek a száma, az S(n)k tényezo pedig a többi fej lehetséges helyzeteinek a száma)

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal.

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal. Minden egyes lépése után ideiglenesen megállítjuk ekkor M2-t elindítjuk x inputtal a kezdo állapotból, és muködtetjük legfeljebb addig a lépésig, ahol M1 tart ( ennek sorszáma l, amit O(S(n)) extra cellán tárolunk és léptetünk.)

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal. Minden egyes lépése után ideiglenesen megállítjuk ekkor M2-t elindítjuk x inputtal a kezdo állapotból, és muködtetjük legfeljebb addig a lépésig, ahol M1 tart ( ennek sorszáma l, amit O(S(n)) extra cellán tárolunk és léptetünk.) Ha valamely j < l-re az M2 gép j-edik lépés utáni PHL-je megegyezik M1-ével = végtelen ciklus = x L = N megáll elutasítva x-et

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal. Minden egyes lépése után ideiglenesen megállítjuk ekkor M2-t elindítjuk x inputtal a kezdo állapotból, és muködtetjük legfeljebb addig a lépésig, ahol M1 tart ( ennek sorszáma l, amit O(S(n)) extra cellán tárolunk és léptetünk.) Ha valamely j < l-re az M2 gép j-edik lépés utáni PHL-je megegyezik M1-ével = végtelen ciklus = x L = N megáll elutasítva x-et Ha ilyen ismétlodés nem fordult elo, akkor meglépjük M1 következo, l + 1-edik lépését, stb.

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal. Minden egyes lépése után ideiglenesen megállítjuk ekkor M2-t elindítjuk x inputtal a kezdo állapotból, és muködtetjük legfeljebb addig a lépésig, ahol M1 tart ( ennek sorszáma l, amit O(S(n)) extra cellán tárolunk és léptetünk.) Ha valamely j < l-re az M2 gép j-edik lépés utáni PHL-je megegyezik M1-ével = végtelen ciklus = x L = N megáll elutasítva x-et Ha ilyen ismétlodés nem fordult elo, akkor meglépjük M1 következo, l + 1-edik lépését, stb. ha M1 megáll elfogadva (elutasítva) x-et = N is megáll elfogadva (elutasítva) x-et. = felismerjük a végtelen ciklusokat

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal. Minden egyes lépése után ideiglenesen megállítjuk ekkor M2-t elindítjuk x inputtal a kezdo állapotból, és muködtetjük legfeljebb addig a lépésig, ahol M1 tart ( ennek sorszáma l, amit O(S(n)) extra cellán tárolunk és léptetünk.) Ha valamely j < l-re az M2 gép j-edik lépés utáni PHL-je megegyezik M1-ével = végtelen ciklus = x L = N megáll elutasítva x-et Ha ilyen ismétlodés nem fordult elo, akkor meglépjük M1 következo, l + 1-edik lépését, stb. ha M1 megáll elfogadva (elutasítva) x-et = N is megáll elfogadva (elutasítva) x-et. = felismerjük a végtelen ciklusokat mindig teljesül l t = a maximális futási ido legfeljebb S (n) 2 2c 1 2 2 c1 s(n) O(t ) = O((c2 ) ) = O((c2) ) = c = c2

A LGORITMUSELMÉLET 14.

EL OADÁS

Ha t lépés után lelojük



6

de lehet, hogy t nem rekurzív

N konstrukciója: megduplázzuk M -et M1 és M2 M1-et elindítjuk az x inputtal. Minden egyes lépése után ideiglenesen megállítjuk ekkor M2-t elindítjuk x inputtal a kezdo állapotból, és muködtetjük legfeljebb addig a lépésig, ahol M1 tart ( ennek sorszáma l, amit O(S(n)) extra cellán tárolunk és léptetünk.) Ha valamely j < l-re az M2 gép j-edik lépés utáni PHL-je megegyezik M1-ével = végtelen ciklus = x L = N megáll elutasítva x-et Ha ilyen ismétlodés nem fordult elo, akkor meglépjük M1 következo, l + 1-edik lépését, stb. ha M1 megáll elfogadva (elutasítva) x-et = N is megáll elfogadva (elutasítva) x-et. = felismerjük a végtelen ciklusokat mindig teljesül l t = a maximális futási ido legfeljebb S (n) 2 2c 1 2 2 c1 s(n) O(t ) = O((c2 ) ) = O((c2) ) = c = c2 a tárfelhasználás közben nem nott lényegesen

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)).

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)).

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait Tétel. SP ACE(s(n)) = coSP ACE(s(n)).

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait Tétel. SP ACE(s(n)) = coSP ACE(s(n)). Bizonyítás: Alkalmazzuk a tár­ido-tétel szimulációját. Az adódó N TG szintén O(s(n)) tárkorlátos, és minden inputra megáll.

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait Tétel. SP ACE(s(n)) = coSP ACE(s(n)). Bizonyítás: Alkalmazzuk a tár­ido-tétel szimulációját. Az adódó N TG szintén O(s(n)) tárkorlátos, és minden inputra megáll. Most cseréljük fel az elfogadó és az elutasító állapotokat.

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait Tétel. SP ACE(s(n)) = coSP ACE(s(n)). Bizonyítás: Alkalmazzuk a tár­ido-tétel szimulációját. Az adódó N TG szintén O(s(n)) tárkorlátos, és minden inputra megáll. Most cseréljük fel az elfogadó és az elutasító állapotokat. Definíció. EXPTIME := k1T IM E(2
nk

).

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait Tétel. SP ACE(s(n)) = coSP ACE(s(n)). Bizonyítás: Alkalmazzuk a tár­ido-tétel szimulációját. Az adódó N TG szintén O(s(n)) tárkorlátos, és minden inputra megáll. Most cseréljük fel az elfogadó és az elutasító állapotokat. Definíció. EXPTIME := k1T IM E(2 ). Definíció. PSPACE := k1SP ACE(nk).
nk

A LGORITMUSELMÉLET 14.

EL OADÁS

7

Tétel. Ha f F SP ACE(s(n)), akkor van olyan f -tol függo c konstans, mellyel f F T IM E(cs(n)). Tétel. T IM E(t(n)) = coT IM E(t(n)). Bizonyítás: Megcseréljük M elfogadó és elutasító (azaz nem elfogadó) állapotait Tétel. SP ACE(s(n)) = coSP ACE(s(n)). Bizonyítás: Alkalmazzuk a tár­ido-tétel szimulációját. Az adódó N TG szintén O(s(n)) tárkorlátos, és minden inputra megáll. Most cseréljük fel az elfogadó és az elutasító állapotokat. Definíció. EXPTIME := k1T IM E(2 ). Definíció. PSPACE := k1SP ACE(nk).
nk

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos =

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME.

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R.

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön
|w|

L = {w I ; az Mw TG létezik, és legfeljebb 22

lépésben elutasítja w-t}.

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön
|w|

L = {w I ; az Mw TG létezik, és legfeljebb 22

lépésben elutasítja w-t}.

Ez rekurzív, mert mindig megálló univerzális TG felismeri.

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön
|w|

L = {w I ; az Mw TG létezik, és legfeljebb 22

lépésben elutasítja w-t}.

Ez rekurzív, mert mindig megálló univerzális TG felismeri. Belátjuk, hogy L T IM E(22
n-1

)

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön
|w|

L = {w I ; az Mw TG létezik, és legfeljebb 22

lépésben elutasítja w-t}.

Ez rekurzív, mert mindig megálló univerzális TG felismeri. Belátjuk, hogy L T IM E(22 ) n-1 Indirekt, tegyük fel, hogy L felismerheto egy c22 idokorlátos M TG-vel.
n-1

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön
|w|

L = {w I ; az Mw TG létezik, és legfeljebb 22

lépésben elutasítja w-t}.

Ez rekurzív, mert mindig megálló univerzális TG felismeri. Belátjuk, hogy L T IM E(22 ) n-1 Indirekt, tegyük fel, hogy L felismerheto egy c22 idokorlátos M TG-vel. n-1 n Legyen n0 olyan nagy, hogy c22 < 22 teljesüljön, ha n > n0.
n-1

A LGORITMUSELMÉLET 14.

EL OADÁS

8

Tétel. P PSPACE EXPTIME Bizonyítás: Ha M egy t(n) idokorlátos TG = ct(n) tárkorlátos = k k = T IM E(n ) SP ACE(n ) = P PSPACE Legyen L PSPACE = L SP ACE(nk), valamely k-ra tár­ido-tétel = van olyan c > 0, hogy nk c nk nk+1 L T IM E(c ) T IM E(2 ) T IM E(2 ) EXPTIME. Tétel. T IM E(t(n)) R, SP ACE(s(n)) R és EXPTIME R. Bizonyítás: Csak azt látjuk be, hogy L rekurzív nyelv, hogy L EXPTIME, a többi állítás hasonlóan kijön
|w|

L = {w I ; az Mw TG létezik, és legfeljebb 22

lépésben elutasítja w-t}.

Ez rekurzív, mert mindig megálló univerzális TG felismeri. Belátjuk, hogy L T IM E(22 ) n-1 Indirekt, tegyük fel, hogy L felismerheto egy c22 idokorlátos M TG-vel. n-1 n Legyen n0 olyan nagy, hogy c22 < 22 teljesüljön, ha n > n0.
n-1

A LGORITMUSELMÉLET 14.

EL OADÁS

9

Legyen w egy n0-nál hosszabb szó, melyre Mw létezik, és ugyanúgy viselkedik mint M (ilyen van).

A LGORITMUSELMÉLET 14.

EL OADÁS

9

Legyen w egy n0-nál hosszabb szó, melyre Mw létezik, és ugyanúgy viselkedik mint M (ilyen van). 2|w|-1 2|w| = ha w L, akkor Mw elfogadja w-t c2 <2 lépésben = w L

A LGORITMUSELMÉLET 14.

EL OADÁS

9

Legyen w egy n0-nál hosszabb szó, melyre Mw létezik, és ugyanúgy viselkedik mint M (ilyen van). 2|w|-1 2|w| = ha w L, akkor Mw elfogadja w-t c2 <2 lépésben = w L fordítva is

A LGORITMUSELMÉLET 14.

EL OADÁS

10

Nemdeterminisztikus Turing-gépek
Olyan TG, ahol az átmenetfüggvény nem igazi függvény, több lehetoség van: (q, a) Q × T × {jobb, bal, helyben}. Gép futása, számítási út: Mint a TG, csak ha több lehetoség van, választ egyet, ha nincs értelmezve, akkor megáll.

A LGORITMUSELMÉLET 14.

EL OADÁS

10

Nemdeterminisztikus Turing-gépek
Olyan TG, ahol az átmenetfüggvény nem igazi függvény, több lehetoség van: (q, a) Q × T × {jobb, bal, helyben}. Gép futása, számítási út: Mint a TG, csak ha több lehetoség van, választ egyet, ha nincs értelmezve, akkor megáll. Definíció. Az M NTG elfogadja az x I inputot, ha az M -et x bemenettel a kiinduló helyzetbol indítva van legalább egy elfogadó (egy elfogadó állapotban véget éro) számítási út.

A LGORITMUSELMÉLET 14.

EL OADÁS

10

Nemdeterminisztikus Turing-gépek
Olyan TG, ahol az átmenetfüggvény nem igazi függvény, több lehetoség van: (q, a) Q × T × {jobb, bal, helyben}. Gép futása, számítási út: Mint a TG, csak ha több lehetoség van, választ egyet, ha nincs értelmezve, akkor megáll. Definíció. Az M NTG elfogadja az x I inputot, ha az M -et x bemenettel a kiinduló helyzetbol indítva van legalább egy elfogadó (egy elfogadó állapotban véget éro) számítási út. Tétel. Az x I input szó pontosan akkor nincs LM -ben, ha az M gépet x inputtal indítva nincs elfogadó számítási út.

A LGORITMUSELMÉLET 14.

EL OADÁS

10

Nemdeterminisztikus Turing-gépek
Olyan TG, ahol az átmenetfüggvény nem igazi függvény, több lehetoség van: (q, a) Q × T × {jobb, bal, helyben}. Gép futása, számítási út: Mint a TG, csak ha több lehetoség van, választ egyet, ha nincs értelmezve, akkor megáll. Definíció. Az M NTG elfogadja az x I inputot, ha az M -et x bemenettel a kiinduló helyzetbol indítva van legalább egy elfogadó (egy elfogadó állapotban véget éro) számítási út. Tétel. Az x I input szó pontosan akkor nincs LM -ben, ha az M gépet x inputtal indítva nincs elfogadó számítási út. NTG számítási = gyökeres fa = csúcsok PHL

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll.

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll. Senki nem tud egy t(n) idokorlátos NTG-t O(t(n)) idoben szimulálni.

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll. Senki nem tud egy t(n) idokorlátos NTG-t O(t(n)) idoben szimulálni. Definíció. N T IM E(t(n)) := {az O(t(n)) idokorlátos NTG-k által elfogadott nyelvek}.

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll. Senki nem tud egy t(n) idokorlátos NTG-t O(t(n)) idoben szimulálni. Definíció. N T IM E(t(n)) := {az O(t(n)) idokorlátos NTG-k által elfogadott nyelvek}. Definíció. NP := k1N T IM E(nk).

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll. Senki nem tud egy t(n) idokorlátos NTG-t O(t(n)) idoben szimulálni. Definíció. N T IM E(t(n)) := {az O(t(n)) idokorlátos NTG-k által elfogadott nyelvek}. Definíció. NP := k1N T IM E(nk). Tétel. P NP.

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll. Senki nem tud egy t(n) idokorlátos NTG-t O(t(n)) idoben szimulálni. Definíció. N T IM E(t(n)) := {az O(t(n)) idokorlátos NTG-k által elfogadott nyelvek}. Definíció. NP := k1N T IM E(nk). Tétel. P NP. Bizonyítás: A NTG egyben TG is ugyanolyan idokorláttal = T IM E(nk) N T IM E(nk) =

A LGORITMUSELMÉLET 14.

EL OADÁS

11

Idokorlátos NTG
Definíció. Egy M nemdeterminisztikus Turing-gép t(n) idokorlátos, ha n hosszúságú inputokon M minden számítási út mentén legfeljebb t(n) lépést téve megáll. Senki nem tud egy t(n) idokorlátos NTG-t O(t(n)) idoben szimulálni. Definíció. N T IM E(t(n)) := {az O(t(n)) idokorlátos NTG-k által elfogadott nyelvek}. Definíció. NP := k1N T IM E(nk). Tétel. P NP. Bizonyítás: A NTG egyben TG is ugyanolyan idokorláttal = T IM E(nk) N T IM E(nk) =

A LGORITMUSELMÉLET 14.

EL OADÁS

12

A legfontosabb megoldatlan probléma

P=NP

?

A LGORITMUSELMÉLET 14.

EL OADÁS

13

Tétel. P NP coNP. Bizonyítás: P NP = coP coNP.

A LGORITMUSELMÉLET 14.

EL OADÁS

13

Tétel. P NP coNP. Bizonyítás: P = coP coNP. NP P = coP =

A LGORITMUSELMÉLET 14.

EL OADÁS

13

Tétel. P NP coNP. Bizonyítás: P = coP coNP. NP P = coP = Szintén megoldatlan problémák:

P = NP coNP.

?

A LGORITMUSELMÉLET 14.

EL OADÁS

13

Tétel. P NP coNP. Bizonyítás: P = coP coNP. NP P = coP = Szintén megoldatlan problémák:

P = NP coNP. NP = coNP.
?

?

A LGORITMUSELMÉLET 14.

EL OADÁS

13

Tétel. P NP coNP. Bizonyítás: P = coP coNP. NP P = coP = Szintén megoldatlan problémák:

P = NP coNP. NP = coNP.
?

?

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP?

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP? Legyen M kétszalagos determinisztikus TG, inputja két részbol áll, egyik része x I az elso szalagon van, a másik része y I a másikon = ez csak olvasható

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP? Legyen M kétszalagos determinisztikus TG, inputja két részbol áll, egyik része x I az elso szalagon van, a másik része y I a másikon = ez csak olvasható = az M súgásszalagja

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP? Legyen M kétszalagos determinisztikus TG, inputja két részbol áll, egyik része x I az elso szalagon van, a másik része y I a másikon = ez csak olvasható = az M súgásszalagja Az M által felismert L1 nyelv = azon (x, y) szópárok halmaza (x, y I ), melyeket M elfogad

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP? Legyen M kétszalagos determinisztikus TG, inputja két részbol áll, egyik része x I az elso szalagon van, a másik része y I a másikon = ez csak olvasható = az M súgásszalagja Az M által felismert L1 nyelv = azon (x, y) szópárok halmaza (x, y I ), melyeket M elfogad Definíció. Az M által nemdeterminisztikusan felismert L nyelv a következo: x L akkor, és csak akkor, ha van olyan y súgás, hogy (x, y) L1.

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP? Legyen M kétszalagos determinisztikus TG, inputja két részbol áll, egyik része x I az elso szalagon van, a másik része y I a másikon = ez csak olvasható = az M súgásszalagja Az M által felismert L1 nyelv = azon (x, y) szópárok halmaza (x, y I ), melyeket M elfogad Definíció. Az M által nemdeterminisztikusan felismert L nyelv a következo: x L akkor, és csak akkor, ha van olyan y súgás, hogy (x, y) L1.

Nem tudunk semmit arról, hogyan lehet jó súgást találni.

A LGORITMUSELMÉLET 14.

EL OADÁS

14

Nemdeterminisztikus felismerés
Hogyan tudjuk belátni, hogy L NP? Legyen M kétszalagos determinisztikus TG, inputja két részbol áll, egyik része x I az elso szalagon van, a másik része y I a másikon = ez csak olvasható = az M súgásszalagja Az M által felismert L1 nyelv = azon (x, y) szópárok halmaza (x, y I ), melyeket M elfogad Definíció. Az M által nemdeterminisztikusan felismert L nyelv a következo: x L akkor, és csak akkor, ha van olyan y súgás, hogy (x, y) L1.

Nem tudunk semmit arról, hogyan lehet jó súgást találni.

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1.

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) :

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja = |y| nc1 log2(d + 1) nc

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja = |y| nc1 log2(d + 1) nc Az M TG szimulálja N -et, úgy hogy mindig a kijelölt úton megy tovább

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja = |y| nc1 log2(d + 1) nc Az M TG szimulálja N -et, úgy hogy mindig a kijelölt úton megy tovább N egy lépését konstans idoben szimulálja.

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja = |y| nc1 log2(d + 1) nc Az M TG szimulálja N -et, úgy hogy mindig a kijelölt úton megy tovább N egy lépését konstans idoben szimulálja. N futási ideje éppen c2|y| = M futása az inputhoz képest lineáris

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja = |y| nc1 log2(d + 1) nc Az M TG szimulálja N -et, úgy hogy mindig a kijelölt úton megy tovább N egy lépését konstans idoben szimulálja. N futási ideje éppen c2|y| = M futása az inputhoz képest lineáris Ha viszont x L = (x, y) L1 = LM tetszoleges y I -ra

A LGORITMUSELMÉLET 14.

EL OADÁS

15

Tanú­tétel
Tétel. [tanú-tétel] Egy L I nyelvre a következo két állítás egyenértéku: (a) L NP. (b) Van olyan c > 0 állandó, továbbá egy L1 P nyelv, mely olyan (x, y) (I )2 párokból áll, hogy |y| |x|c és x I esetén x L pontosan akkor, ha van y I úgy, hogy (x, y) L1. Bizonyítás: (a) (b) : L NP = nc1 idokorlátos N NTG, mely felismeri L-et Tegyük fel, hogy N -nek egy lépésnél legfeljebb d elágazási lehetosége van Adunk egy M -et és egy megfelelo súgást x L, |x| = n = y = y1y2 · · · ym legyen az x elfogadását leíró számítási útja = |y| nc1 log2(d + 1) nc Az M TG szimulálja N -et, úgy hogy mindig a kijelölt úton megy tovább N egy lépését konstans idoben szimulálja. N futási ideje éppen c2|y| = M futása az inputhoz képest lineáris Ha viszont x L = (x, y) L1 = LM tetszoleges y I -ra

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1.

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1. Legyen N olyan mint M , de amikor M y-ból olvasna 0-t vagy 1-et = N -ben -ra két lehetoség

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1. Legyen N olyan mint M , de amikor M y-ból olvasna 0-t vagy 1-et = N -ben -ra két lehetoség Az N NTG nc2 idokorlátos

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1. Legyen N olyan mint M , de amikor M y-ból olvasna 0-t vagy 1-et = N -ben -ra két lehetoség Az N NTG nc2 idokorlátos Tétel. NP PSPACE

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1. Legyen N olyan mint M , de amikor M y-ból olvasna 0-t vagy 1-et = N -ben -ra két lehetoség Az N NTG nc2 idokorlátos Tétel. NP PSPACE Bizonyítás: Ha L NP = súgás

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1. Legyen N olyan mint M , de amikor M y-ból olvasna 0-t vagy 1-et = N -ben -ra két lehetoség Az N NTG nc2 idokorlátos Tétel. NP PSPACE Bizonyítás: Ha L NP = súgás Adott x L-re végigpróbáljuk az összes nc szóbajövo súgást

A LGORITMUSELMÉLET 14.

EL OADÁS

16

(b) (a) : Egy x L inputhoz a feltétel szerint van legfeljebb nc1 hosszúságú y, hogy (x, y) L1. Legyen N olyan mint M , de amikor M y-ból olvasna 0-t vagy 1-et = N -ben -ra két lehetoség Az N NTG nc2 idokorlátos Tétel. NP PSPACE Bizonyítás: Ha L NP = súgás Adott x L-re végigpróbáljuk az összes nc szóbajövo súgást c Ez nagyon sokáig tart, de csak log2 2n = nc tár kell hozzá

A LGORITMUSELMÉLET 14.

EL OADÁS

17

R EXPTIME PSPACE

coNP P

NP

A LGORITMUSELMÉLET 14.

EL OADÁS

17

R EXPTIME PSPACE

coNP P

NP

Sejtés: P = PSPACE

A LGORITMUSELMÉLET 14.

EL OADÁS

17

R EXPTIME PSPACE

coNP P

NP

Sejtés: P = PSPACE NP = coNPP = NPPSPACE = P

Algoritmuselmélet 15. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Április 23.

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli.

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni.

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve x 3-SZÍN = ha az x szónak megfelelo gráf 3 színnel színezheto.

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve x 3-SZÍN = ha az x szónak megfelelo gráf 3 színnel színezheto. Tétel. 3-SZÍN NP. Bizonyítás: Alkalmas tanú G egy jó színezése

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve x 3-SZÍN = ha az x szónak megfelelo gráf 3 színnel színezheto. Tétel. 3-SZÍN NP. Bizonyítás: Alkalmas tanú G egy jó színezése Ez leírható 2n bittel = (pl.legyen 01=piros, 10=sárga, 11=zöld)

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve x 3-SZÍN = ha az x szónak megfelelo gráf 3 színnel színezheto. Tétel. 3-SZÍN NP. Bizonyítás: Alkalmas tanú G egy jó színezése Ez leírható 2n bittel = (pl.legyen 01=piros, 10=sárga, 11=zöld) G, színezés bíró = jó színezés-e

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve x 3-SZÍN = ha az x szónak megfelelo gráf 3 színnel színezheto. Tétel. 3-SZÍN NP. Bizonyítás: Alkalmas tanú G egy jó színezése Ez leírható 2n bittel = (pl.legyen 01=piros, 10=sárga, 11=zöld) G, színezés bíró = jó színezés-e Ez polinom idoben megteheto TG-vel.

A LGORITMUSELMÉLET 15.

EL OADÁS

1

NP-beli nyelvek
A tanú tétel segítségével könnyu belátni, hogy egy nyelv NP-beli. Csak azt kell belátni, hogy létezik tanú, megkeresni nem kell tudni. A mi szerepünk a bíró szerepe, nem a nyomozóé.

3 színnel színezheto gráfok
G pl. adjacencia mátrix sorai egymásután fuzve x 3-SZÍN = ha az x szónak megfelelo gráf 3 színnel színezheto. Tétel. 3-SZÍN NP. Bizonyítás: Alkalmas tanú G egy jó színezése Ez leírható 2n bittel = (pl.legyen 01=piros, 10=sárga, 11=zöld) G, színezés bíró = jó színezés-e Ez polinom idoben megteheto TG-vel. Ha G nem 3-színezheto, akkor nem lehet tanúja.

A LGORITMUSELMÉLET 15.

EL OADÁS

2

Hamilton-körrel rendelkezo gráfok
H = Azon gráfok szavai, amik tartalmaznak Hamilton-kört.

A LGORITMUSELMÉLET 15.

EL OADÁS

2

Hamilton-körrel rendelkezo gráfok
H = Azon gráfok szavai, amik tartalmaznak Hamilton-kört. Tétel. H NP. Bizonyítás: A G H állításnak rövid tanúja egy Hamilton-kör.

A LGORITMUSELMÉLET 15.

EL OADÁS

2

Hamilton-körrel rendelkezo gráfok
H = Azon gráfok szavai, amik tartalmaznak Hamilton-kört. Tétel. H NP. Bizonyítás: A G H állításnak rövid tanúja egy Hamilton-kör. csúcsok sorrendje = O(n log n) bit

A LGORITMUSELMÉLET 15.

EL OADÁS

2

Hamilton-körrel rendelkezo gráfok
H = Azon gráfok szavai, amik tartalmaznak Hamilton-kört. Tétel. H NP. Bizonyítás: A G H állításnak rövid tanúja egy Hamilton-kör. csúcsok sorrendje = O(n log n) bit a bíró ellenorzi, hogy van-e él a következo csúcsba G-ben.

A LGORITMUSELMÉLET 15.

EL OADÁS

2

Hamilton-körrel rendelkezo gráfok
H = Azon gráfok szavai, amik tartalmaznak Hamilton-kört. Tétel. H NP. Bizonyítás: A G H állításnak rövid tanúja egy Hamilton-kör. csúcsok sorrendje = O(n log n) bit a bíró ellenorzi, hogy van-e él a következo csúcsba G-ben.

Hasonlóan Hamilton-útra, irányított Hamilton-körre, -útra Legyen N H a Hamilton-kört nem tartalmazó gráfok nyelve. Tétel. NH coNP.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái. A bíró ellenorzi, hogy az élek nem metszik egymást.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái. A bíró ellenorzi, hogy az élek nem metszik egymást. Tétel. L coNP ( = L NP coNP: jól karakterizált) Bizonyítás: Van tanú a G L állításra is.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái. A bíró ellenorzi, hogy az élek nem metszik egymást. Tétel. L coNP ( = L NP coNP: jól karakterizált) Bizonyítás: Van tanú a G L állításra is. Vagy nem gráf vagy Kuratowski = van benne vagy K5-tel vagy K3,3-mal topologikusan izomorf részgráf.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái. A bíró ellenorzi, hogy az élek nem metszik egymást. Tétel. L coNP ( = L NP coNP: jól karakterizált) Bizonyítás: Van tanú a G L állításra is. Vagy nem gráf vagy Kuratowski = van benne vagy K5-tel vagy K3,3-mal topologikusan izomorf részgráf. Tanú egy ilyen leírása, ezt a bíró könnyen ellenorizheti.

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái. A bíró ellenorzi, hogy az élek nem metszik egymást. Tétel. L coNP ( = L NP coNP: jól karakterizált) Bizonyítás: Van tanú a G L állításra is. Vagy nem gráf vagy Kuratowski = van benne vagy K5-tel vagy K3,3-mal topologikusan izomorf részgráf. Tanú egy ilyen leírása, ezt a bíró könnyen ellenorizheti. Tétel. L P

A LGORITMUSELMÉLET 15.

EL OADÁS

3

Síkba rajzolható gráfok
Legyen L a síkba rajzolható gráfok nyelve Tétel. L NP Bizonyítás: G tanúja egy síkbarajzolása. Fáry-Wágner = van olyan is, ami egyenes szakaszokat használ. Sot olyan is van, hogy a koordináták nem túl nagyok. = Tanú a csúcsok koordinátái. A bíró ellenorzi, hogy az élek nem metszik egymást. Tétel. L coNP ( = L NP coNP: jól karakterizált) Bizonyítás: Van tanú a G L állításra is. Vagy nem gráf vagy Kuratowski = van benne vagy K5-tel vagy K3,3-mal topologikusan izomorf részgráf. Tanú egy ilyen leírása, ezt a bíró könnyen ellenorizheti. Tétel. L P Sejtés: H coNP és 3-SZÍN coNP

A LGORITMUSELMÉLET 15.

EL OADÁS

4

A prímszámok nyelve
Jelölje a (binárisan ábrázolt) prímszámok nyelvét.

A LGORITMUSELMÉLET 15.

EL OADÁS

4

A prímszámok nyelve
Jelölje a (binárisan ábrázolt) prímszámok nyelvét. Tétel. [V. R. Pratt, 1975] NP coNP.

A LGORITMUSELMÉLET 15.

EL OADÁS

4

A prímszámok nyelve
Jelölje a (binárisan ábrázolt) prímszámok nyelvét. Tétel. [V. R. Pratt, 1975] NP coNP. Bizonyítás: coNP: Ha egy szám nem prím, arra tanú egy osztója, pl. 6 nem prím, mert 2|6.

A LGORITMUSELMÉLET 15.

EL OADÁS

4

A prímszámok nyelve
Jelölje a (binárisan ábrázolt) prímszámok nyelvét. Tétel. [V. R. Pratt, 1975] NP coNP. Bizonyítás: coNP: Ha egy szám nem prím, arra tanú egy osztója, pl. 6 nem prím, mert 2|6. NP: Lemma. Legyen p 2 egy egész szám. A p pontosan akkor prímszám, ha van olyan 1 g < p egész, melyre teljesülnek az alábbiak: 1. g p-1 1 2. g
p-1 r

(mod p), (mod p) minden r prímszámra, melyre r|p - 1.

1

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható.

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}.

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg.

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg.

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói a bíró gyors hatványozással ellenorizheti, hogy a Lemma feltételei teljesülnek.

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói a bíró gyors hatványozással ellenorizheti, hogy a Lemma feltételei teljesülnek. Azt is tanúsítani kell, hogy r1, . , rk éppen a p - 1 prímosztói (más nincs) .. = prímtényezos felbontás

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói a bíró gyors hatványozással ellenorizheti, hogy a Lemma feltételei teljesülnek. Azt is tanúsítani kell, hogy r1, . , rk éppen a p - 1 prímosztói (más nincs) .. = prímtényezos felbontás és azt is, hogy r1, . . . , rk prímek

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói a bíró gyors hatványozással ellenorizheti, hogy a Lemma feltételei teljesülnek. Azt is tanúsítani kell, hogy r1, . , rk éppen a p - 1 prímosztói (más nincs) .. = prímtényezos felbontás és azt is, hogy r1, . . . , rk prímek = rekurzívan

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói a bíró gyors hatványozással ellenorizheti, hogy a Lemma feltételei teljesülnek. Azt is tanúsítani kell, hogy r1, . , rk éppen a p - 1 prímosztói (más nincs) .. = prímtényezos felbontás és azt is, hogy r1, . . . , rk prímek = rekurzívan Belátható, hogy a tanú össz mérete O(n2).

A LGORITMUSELMÉLET 15.

EL OADÁS

5

Gyors hatványozás: am alakú hatvány legfeljebb 2 log2 m szorzással kiszámítható. m = e0 + e121 + e222 + · · · + ek2k, k log2 m és ej {0, 1}. 2j Ismételt négyzetre emelésekkel = a = ez k szorzás 2j szorozzuk össze az a hatványokat azokra a j értékekre, melyekre ej = 1 1 2 k 1 2 k = am = ae0+e12 +e22 +···+ek2 = ae0 ae12 ae22 · · · aek2 = k szorzás am mérete m + a méretében exponenciális = exponenciális alg. am (mod n) mérete legfeljebb log2 n = ha mindig a maradékot vesszük = polinomiális alg. A p prím állításra tanú: g és p - 1 egész r1, . . . , rk prímosztói a bíró gyors hatványozással ellenorizheti, hogy a Lemma feltételei teljesülnek. Azt is tanúsítani kell, hogy r1, . , rk éppen a p - 1 prímosztói (más nincs) .. = prímtényezos felbontás és azt is, hogy r1, . . . , rk prímek = rekurzívan Belátható, hogy a tanú össz mérete O(n2). Sejtés: P

A LGORITMUSELMÉLET 15.

EL OADÁS

6

Felismerés és keresés
Prím-e legkisebb prím osztója

A LGORITMUSELMÉLET 15.

EL OADÁS

6

Felismerés és keresés
Prím-e legkisebb prím osztója

F =

(a, c)

1 < c a egészek és van olyan 1 < b c egész, melyre b osztója a-nak

.

Tétel. F NP coNP.

A LGORITMUSELMÉLET 15.

EL OADÁS

6

Felismerés és keresés
Prím-e legkisebb prím osztója

F =

(a, c)

1 < c a egészek és van olyan 1 < b c egész, melyre b osztója a-nak

.

Tétel. F NP coNP. Bizonyítás: (a, c) F = tanú egy jó b érték

A LGORITMUSELMÉLET 15.

EL OADÁS

6

Felismerés és keresés
Prím-e legkisebb prím osztója

F =

(a, c)

1 < c a egészek és van olyan 1 < b c egész, melyre b osztója a-nak

.

Tétel. F NP coNP. Bizonyítás: (a, c) F = tanú egy jó b érték (a, c) F = tanú az a = p1 p2 · · · pk k és a pi számok 1 2 prím-tulajdonságának tanúi

A LGORITMUSELMÉLET 15.

EL OADÁS

6

Felismerés és keresés
Prím-e legkisebb prím osztója

F =

(a, c)

1 < c a egészek és van olyan 1 < b c egész, melyre b osztója a-nak

.

Tétel. F NP coNP. Bizonyítás: (a, c) F = tanú egy jó b érték (a, c) F = tanú az a = p1 p2 · · · pk k és a pi számok 1 2 prím-tulajdonságának tanúi Legjobb ismert algoritmus a prím-felbontásra: D. Shanks = n bites inputon c2n/4.

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ?

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím ha igen = bináris kereséssel megkeressük a legkisebb olyan c-t amire (a, c) F

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím ha igen = bináris kereséssel megkeressük a legkisebb olyan c-t amire (a, c) F = log2 a hívás

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím ha igen = bináris kereséssel megkeressük a legkisebb olyan c-t amire (a, c) F = log2 a hívás Utána a/c-re folytatjuk . . .

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím ha igen = bináris kereséssel megkeressük a legkisebb olyan c-t amire (a, c) F = log2 a hívás Utána a/c-re folytatjuk . . . = egy prím-osztó megtalálása: O( log a)d

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím ha igen = bináris kereséssel megkeressük a legkisebb olyan c-t amire (a, c) F = log2 a hívás Utána a/c-re folytatjuk . . . = egy prím-osztó megtalálása: O( log a)d prím-osztók száma log a = összköltség O (log a)d+1

A LGORITMUSELMÉLET 15.

EL OADÁS

7

Tétel. Ha F P igaz lenne, akkor {prímtényezos felbontás} FP is igaz lenne. Bizonyítás: Legyen E egy gyors alg. F felismerésére (a, a - 1) F ? ha nem a prím ha igen = bináris kereséssel megkeressük a legkisebb olyan c-t amire (a, c) F = log2 a hívás Utána a/c-re folytatjuk . . . = egy prím-osztó megtalálása: O( log a)d prím-osztók száma log a = összköltség O (log a)d+1
v

F coNP P NP

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál?

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is.

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára.

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható.

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére =

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére = x L1-re kiszámítjuk f (x)-et

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére = x L1-re kiszámítjuk f (x)-et eldöntjük f (x) L2?

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére = x L1-re kiszámítjuk f (x)-et eldöntjük f (x) L2? = tudjuk, hogy x L1 igaz-e

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére = x L1-re kiszámítjuk f (x)-et eldöntjük f (x) L2? = tudjuk, hogy x L1 igaz-e Ha tudnánk, hogy L nehéz és tudjuk, hogy L L

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére = x L1-re kiszámítjuk f (x)-et eldöntjük f (x) L2? = tudjuk, hogy x L1 igaz-e Ha tudnánk, hogy L nehéz és tudjuk, hogy L L = L is nehéz lenne

A LGORITMUSELMÉLET 15.

EL OADÁS

8

Karp-redukció
Mikor nem lényegesen nehezebb egy L1 probléma egy L2 problémánál? = Ha L2 felhasználásával meg lehet oldani L1-et is. = L1 visszavezetheto a L2 problémára. Definíció. Az f : I I leképezés az L1 I nyelv Karp-redukciója az L2 I nyelvre, ha 1. Tetszoleges x I szóra x L1 pontosan akkor teljesül, ha f (x) L2; 2. f F P , azaz f polinom idoben számítható. Jelölés: L1 L2 ha L1-nek van Karp-redukciója L2-re.

Ha tehát van algoritmusunk L2 eldöntésére = x L1-re kiszámítjuk f (x)-et eldöntjük f (x) L2? = tudjuk, hogy x L1 igaz-e Ha tudnánk, hogy L nehéz és tudjuk, hogy L L = L is nehéz lenne Ha L könnyu lenne, és L nem lényegesen nehezebb nála, akkor L is könnyu.

A LGORITMUSELMÉLET 15.

EL OADÁS

9

Irányított Hamilton-kör probléma
Tétel. IH H.

Bizonyítás: G = (V, E) egy irányított gráf G = (V , E ) irányítatlan gráf

A LGORITMUSELMÉLET 15.

EL OADÁS

9

Irányított Hamilton-kör probléma
Tétel. IH H.

Bizonyítás: G = (V, E) egy irányított gráf G = (V , E ) irányítatlan gráf hogy G gyorsan megépítheto és

A LGORITMUSELMÉLET 15.

EL OADÁS

9

Irányított Hamilton-kör probléma
Tétel. IH H.

Bizonyítás: G = (V, E) egy irányított gráf G = (V , E ) irányítatlan gráf hogy G gyorsan megépítheto és G-ben irányított Hamilton-kör G -ben irányítatlan Hamilton-kör.

A LGORITMUSELMÉLET 15.

EL OADÁS

9

Irányított Hamilton-kör probléma
Tétel. IH H.

Bizonyítás: G = (V, E) egy irányított gráf G = (V , E ) irányítatlan gráf hogy G gyorsan megépítheto és G-ben irányított Hamilton-kör G -ben irányítatlan Hamilton-kör.

V E

= {vbe, v, vki | v V }, = {(vbe, v), (v, vki) | v V } {(uki, vbe) | u v E}.

u

v

A LGORITMUSELMÉLET 15.

EL OADÁS

9

Irányított Hamilton-kör probléma
Tétel. IH H.

Bizonyítás: G = (V, E) egy irányított gráf G = (V , E ) irányítatlan gráf hogy G gyorsan megépítheto és G-ben irányított Hamilton-kör G -ben irányítatlan Hamilton-kör.

V E

= {vbe, v, vki | v V }, = {(vbe, v), (v, vki) | v V } {(uki, vbe) | u v E}.

u

v

ube u uki

vbe v vki

v(G) = n, e(G) = e = v(G ) = 3n, e(G ) = 2n + e = (n + e)c lépésben megkapható.

A LGORITMUSELMÉLET 15.

EL OADÁS

9

Irányított Hamilton-kör probléma
Tétel. IH H.

Bizonyítás: G = (V, E) egy irányított gráf G = (V , E ) irányítatlan gráf hogy G gyorsan megépítheto és G-ben irányított Hamilton-kör G -ben irányítatlan Hamilton-kör.

V E

= {vbe, v, vki | v V }, = {(vbe, v), (v, vki) | v V } {(uki, vbe) | u v E}.

u

v

ube u uki

vbe v vki

v(G) = n, e(G) = e = v(G ) = 3n, e(G ) = 2n + e = (n + e)c lépésben megkapható. G-beli F irányított Hamilton-körének = G egy F Hamilton-köre

A LGORITMUSELMÉLET 15.

EL OADÁS

10

u

v

ube u uki

vbe v vki

Az F egy u v éle = az F -ben az u - uki - vbe - v út

A LGORITMUSELMÉLET 15.

EL OADÁS

10

u

v

ube u uki

vbe v vki

Az F egy u v éle = az F -ben az u - uki - vbe - v út = G IH = G H

A LGORITMUSELMÉLET 15.

EL OADÁS

10

u

v

ube u uki

vbe v vki

Az F egy u v éle = az F -ben az u - uki - vbe - v út = G IH = G H Ha G -ben van egy F E Hamilton-kör = egy u-ból indulva egy uki felé lépjünk eloször

A LGORITMUSELMÉLET 15.

EL OADÁS

10

u

v

ube u uki

vbe v vki

Az F egy u v éle = az F -ben az u - uki - vbe - v út = G IH = G H Ha G -ben van egy F E Hamilton-kör = egy u-ból indulva egy uki felé lépjünk eloször = csak u - uki - vbe - v alakú lehet utána = stb. = Ha G H akkor G IH.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. 1. Kiszámítjuk f (x)-et L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. 1. Kiszámítjuk f (x)-et = idoigénye c1nk = |f (x)| c1nk L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. 1. Kiszámítjuk f (x)-et = idoigénye c1nk = |f (x)| c1nk L2 felismero algoritmusával eldöntjük, hogy f (x) L2 igaz-e L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. 1. Kiszámítjuk f (x)-et = idoigénye c1nk = |f (x)| c1nk L2 felismero algoritmusával eldöntjük, hogy f (x) L2 igaz-e = idoigénye c2(c1nk)l L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. 1. Kiszámítjuk f (x)-et = idoigénye c1nk = |f (x)| c1nk L2 felismero algoritmusával eldöntjük, hogy f (x) L2 igaz-e = idoigénye c2(c1nk)l kl x L1 f (x) L2 = összido O(n ) L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

11

A Karp-redukció felhasználása
Tétel. 1. Ha L1 2. Ha L1 3. Ha L1 4. Ha L1 5. Ha L1 6. Ha L1 Bizonyítás: Legyen f : I I az L1 Karp-redukciója L2-re, f F T IM E(nk). x I egy input szót, melyre szeretnénk eldönteni, hogy x L1 teljesül-e, n az x hossza. 1. Kiszámítjuk f (x)-et = idoigénye c1nk = |f (x)| c1nk L2 felismero algoritmusával eldöntjük, hogy f (x) L2 igaz-e = idoigénye c2(c1nk)l kl x L1 f (x) L2 = összido O(n ) L2 és L2 P, akkor L1 P. L2 és L2 NP akkor L1 NP. L2, akkor L1 L2, ahol Li = I \ Li. L2 és L2 coNP, akkor L1 coNP. L2 és L2 NP coNP, akkor L1 NP coNP. L2 és L2 L3, akkor L1 L3.

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának L1 bírója pontosan akkor fogadja el az (x, y) párt L2 bírója elfogadja az (f (x), y) párt

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának L1 bírója pontosan akkor fogadja el az (x, y) párt L2 bírója elfogadja az (f (x), y) párt 3.: Ha L1 L2, akkor L1 f (x) L2. L2: Mint 1. hiszen x I szóra x L1

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának L1 bírója pontosan akkor fogadja el az (x, y) párt L2 bírója elfogadja az (f (x), y) párt 3.: Ha L1 L2, akkor L1 f (x) L2. 4.: Ha L1 L2: Mint 1. hiszen x I szóra x L1

L2 és L2 coNP, akkor L1 coNP: = 2.,3.

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának L1 bírója pontosan akkor fogadja el az (x, y) párt L2 bírója elfogadja az (f (x), y) párt 3.: Ha L1 L2, akkor L1 f (x) L2. 4.: Ha L1 5.: Ha L1 L2: Mint 1. hiszen x I szóra x L1

L2 és L2 coNP, akkor L1 coNP: = 2.,3. L2 és L2 NP coNP, akkor L1 NP coNP.: = 2.,4.

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának L1 bírója pontosan akkor fogadja el az (x, y) párt L2 bírója elfogadja az (f (x), y) párt 3.: Ha L1 L2, akkor L1 f (x) L2. 4.: Ha L1 5.: Ha L1 L2: Mint 1. hiszen x I szóra x L1

L2 és L2 coNP, akkor L1 coNP: = 2.,3. L2 és L2 NP coNP, akkor L1 NP coNP.: = 2.,4. L2

6.: Ha L1 L2 és L2 L3, akkor L1 L3: Legyen f az L1 függvénye, ami O(xk) idoben számolható és g az L2 L3 függvénye, ami O(xl) idoben számolható

A LGORITMUSELMÉLET 15.

EL OADÁS

12

2.: Ha L1 L2 és L2 NP akkor L1 NP: Az f (x) L2 tény egy y tanúja jó x L1 tanújának is, és az L2-höz tartozó bíró egy kis módosítással jó lesz az L1 bírójának is |y| |f (x)|c = |y| cc|x|kc 1 Az L1 bírója az (x, y) f (x) = (f (x), y) L2 bírájának L1 bírója pontosan akkor fogadja el az (x, y) párt L2 bírója elfogadja az (f (x), y) párt 3.: Ha L1 L2, akkor L1 f (x) L2. 4.: Ha L1 5.: Ha L1 L2: Mint 1. hiszen x I szóra x L1

L2 és L2 coNP, akkor L1 coNP: = 2.,3. L2 és L2 NP coNP, akkor L1 NP coNP.: = 2.,4.

6.: Ha L1 L2 és L2 L3, akkor L1 L3: Legyen f az L1 L2 függvénye, ami O(xk) idoben számolható és g az L2 L3 függvénye, ami O(xl) idoben számolható Az L1 L3 függvénye g(f (x)) lesz, ami O((xk)l) = O(xkl) idoben számolható

A LGORITMUSELMÉLET 15.

EL OADÁS

13

NP-teljes nyelvek
Definíció. Az L I nyelv NP-teljes, ha 1. L NP, 2. tetszoleges (azaz minden) L NP nyelv esetén létezik L Karp-redukció. L

Egy NP-teljes nyelv tehát legalább olyan nehéz, mint bármely más NP-beli nyelv.

A LGORITMUSELMÉLET 15.

EL OADÁS

13

NP-teljes nyelvek
Definíció. Az L I nyelv NP-teljes, ha 1. L NP, 2. tetszoleges (azaz minden) L NP nyelv esetén létezik L Karp-redukció. L

Egy NP-teljes nyelv tehát legalább olyan nehéz, mint bármely más NP-beli nyelv. Ha egy ilyen nyelvrol kiderülne, hogy P-beli (coNP-beli), akkor ugyanez igaz lenne minden NP-beli nyelvre.

Van-e NP-teljes nyelv?

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6)

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6) Definíció. SAT nyelv: a kielégítheto Boole-formulák nyelve.

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6) Definíció. SAT nyelv: a kielégítheto Boole-formulák nyelve. Tétel. [S. A. Cook, L. Levin, 1971] A SAT nyelv NP-teljes.

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6) Definíció. SAT nyelv: a kielégítheto Boole-formulák nyelve. Tétel. [S. A. Cook, L. Levin, 1971] A SAT nyelv NP-teljes. Bizonyítás: SAT N P , mert egy kielégítés (értékadás a változóknak) megfelelo tanú

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6) Definíció. SAT nyelv: a kielégítheto Boole-formulák nyelve. Tétel. [S. A. Cook, L. Levin, 1971] A SAT nyelv NP-teljes. Bizonyítás: SAT N P , mert egy kielégítés (értékadás a változóknak) megfelelo tanú Be kell látni, hogy L NP nyelvre létezik egy L

SAT Karp-redukció

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6) Definíció. SAT nyelv: a kielégítheto Boole-formulák nyelve. Tétel. [S. A. Cook, L. Levin, 1971] A SAT nyelv NP-teljes. Bizonyítás: SAT N P , mert egy kielégítés (értékadás a változóknak) megfelelo tanú Be kell látni, hogy L NP nyelvre létezik egy L SAT Karp-redukció = (x L?) kérdés tetszoleges x I inputjához meg kell adnunk egy Boole-formulát, mely pontosan akkor kielégítheto, ha x L.

A LGORITMUSELMÉLET 15.

EL OADÁS

14

Cook­Levin-tétel
Boole-formula: pl. (x1 x2 x5) (x3 x2 x6 x1) (x5 x6) Definíció. SAT nyelv: a kielégítheto Boole-formulák nyelve. Tétel. [S. A. Cook, L. Levin, 1971] A SAT nyelv NP-teljes. Bizonyítás: SAT N P , mert egy kielégítés (értékadás a változóknak) megfelelo tanú Be kell látni, hogy L NP nyelvre létezik egy L SAT Karp-redukció = (x L?) kérdés tetszoleges x I inputjához meg kell adnunk egy Boole-formulát, mely pontosan akkor kielégítheto, ha x L. = tanú-tétel miatt elég leírni Boole-formulával az (x, y)-t felismero TG-t

A LGORITMUSELMÉLET 15.

EL OADÁS

15

0x[i, j] =

1 0 1 0 1 0 1 0 1 0

ha az i-edik lépés után a j-edik cella tartalma 0 különben ha az i-edik lépés után a j-edik cella tartalma 1 különben ha az i-edik lépés után a j-edik cella tartalma ü különben ha az i-edik lépés után a fej j-edik cellán áll különben ha az i-edik lépés után M belso állapota qs különben.

1x[i, j] =

üx[i, j] =

f [i, j] =

q[i, s] =

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van.

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]).

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]). Összesen (nc + 1)nc ilyen formula

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]). Összesen (nc + 1)nc ilyen formula Átmenet függvény leírása: pl. (qs, 1) = (qk, 0, bal) =

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]). Összesen (nc + 1)nc ilyen formula Átmenet függvény leírása: pl. (qs, 1) = (qk, 0, bal) = (q[i, s] 1x[i, l] f [i, l]) - (q[i + 1, k] 0x[i + 1, l] f [i + 1, l - 1])

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]). Összesen (nc + 1)nc ilyen formula Átmenet függvény leírása: pl. (qs, 1) = (qk, 0, bal) = (q[i, s] 1x[i, l] f [i, l]) - (q[i + 1, k] 0x[i + 1, l] f [i + 1, l - 1]) O(n2c) ilyen formula

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]). Összesen (nc + 1)nc ilyen formula Átmenet függvény leírása: pl. (qs, 1) = (qk, 0, bal) = (q[i, s] 1x[i, l] f [i, l]) - (q[i + 1, k] 0x[i + 1, l] f [i + 1, l - 1]) O(n2c) ilyen formula Ahol nincs fej, nincs változás: f [i, l] - (0x[i, l] 0x[i + 1, l])

A LGORITMUSELMÉLET 15.

EL OADÁS

16

Le kell írni = a szalag egy mezojén minden idopontban éppen egy szalagjel van; a fej minden idopontban a szalag egyetlen celláján van; a gép minden idopontban egyetlen állapotban van. pl. az elso: (0 i nc, 1 j nc) párra (0x[i, j] 1x[i, j] üx[i, j]) (0x[i, j] 1x[i, j]) (0x[i, j] üx[i, j]) (1x[i, j] üx[i, j]). Összesen (nc + 1)nc ilyen formula Átmenet függvény leírása: pl. (qs, 1) = (qk, 0, bal) = (q[i, s] 1x[i, l] f [i, l]) - (q[i + 1, k] 0x[i + 1, l] f [i + 1, l - 1]) O(n2c) ilyen formula Ahol nincs fej, nincs változás: f [i, l] - (0x[i, l] 0x[i + 1, l]) O(n2c) ilyen formula (1-re és ü-re is)

A LGORITMUSELMÉLET 15.

EL OADÁS

17

Kezdo helyzet: q[0, 0] f [0, 1]

A LGORITMUSELMÉLET 15.

EL OADÁS

17

Kezdo helyzet: q[0, 0] f [0, 1] Input leírása: 0x[0, 1] 1x[0, 2] 0x[0, 3] . . .

A LGORITMUSELMÉLET 15.

EL OADÁS

17

Kezdo helyzet: q[0, 0] f [0, 1] Input leírása: 0x[0, 1] 1x[0, 2] 0x[0, 3] . . . Elfogadó állapot: 1x[nc, 1]

A LGORITMUSELMÉLET 15.

EL OADÁS

17

Kezdo helyzet: q[0, 0] f [0, 1] Input leírása: 0x[0, 1] 1x[0, 2] 0x[0, 3] . . . Elfogadó állapot: 1x[nc, 1] Minden ilyen i = 0, 1, 2, . . . , nc-re ÉS-sel

A LGORITMUSELMÉLET 15.

EL OADÁS

17

Kezdo helyzet: q[0, 0] f [0, 1] Input leírása: 0x[0, 1] 1x[0, 2] 0x[0, 3] . . . Elfogadó állapot: 1x[nc, 1] Minden ilyen i = 0, 1, 2, . . . , nc-re ÉS-sel Szabadsági fok: a súgás helyén nincs megkötve semmi

A LGORITMUSELMÉLET 15.

EL OADÁS

17

Kezdo helyzet: q[0, 0] f [0, 1] Input leírása: 0x[0, 1] 1x[0, 2] 0x[0, 3] . . . Elfogadó állapot: 1x[nc, 1] Minden ilyen i = 0, 1, 2, . . . , nc-re ÉS-sel Szabadsági fok: a súgás helyén nincs megkötve semmi Ez a Boole formula akkor és csak akkor kielégítheto, ha van megfelelo súgás x-hez.

A LGORITMUSELMÉLET 15.

EL OADÁS

18

További NP-teljes feladatok
Tétel. Ha az L1 nyelv NP-teljes, L2 NP és L1 Bizonyítás: Láttuk, hogy a Karp-redukció tranzitív L2, akkor L2 is NP-teljes.

A LGORITMUSELMÉLET 15.

EL OADÁS

18

További NP-teljes feladatok
Tétel. Ha az L1 nyelv NP-teljes, L2 NP és L1 Bizonyítás: Láttuk, hogy a Karp-redukció tranzitív Ha L1 L2 és L L1 L NP-teljes L2, akkor L2 is NP-teljes.

A LGORITMUSELMÉLET 15.

EL OADÁS

18

További NP-teljes feladatok
Tétel. Ha az L1 nyelv NP-teljes, L2 NP és L1 Bizonyítás: Láttuk, hogy a Karp-redukció tranzitív Ha L1 L2 és L L1 L NP-teljes = L L2 L NP-teljes L2, akkor L2 is NP-teljes.

A LGORITMUSELMÉLET 15.

EL OADÁS

18

További NP-teljes feladatok
Tétel. Ha az L1 nyelv NP-teljes, L2 NP és L1 Bizonyítás: Láttuk, hogy a Karp-redukció tranzitív Ha L1 L2 és L L1 L NP-teljes = L L2 L NP-teljes Nem kell már minden NP-beli nyelvet az L2-re redukálni; elég ezt megtenni egyetlen NP-teljes L1 nyelvvel. L2, akkor L2 is NP-teljes.

A LGORITMUSELMÉLET 15.

EL OADÁS

18

További NP-teljes feladatok
Tétel. Ha az L1 nyelv NP-teljes, L2 NP és L1 Bizonyítás: Láttuk, hogy a Karp-redukció tranzitív Ha L1 L2 és L L1 L NP-teljes = L L2 L NP-teljes Nem kell már minden NP-beli nyelvet az L2-re redukálni; elég ezt megtenni egyetlen NP-teljes L1 nyelvvel. Definíció. Ha az L2 nyelvrol csak azt tudjuk, hogy van olyan NP-teljes L1 nyelv, melyre L1 L2, akkor L2-t NP-nehéz nyelvnek nevezzük. Az elozo állítás szerint L2 pontosan akkor NP-teljes, ha NP-beli és ugyanakkor NP-nehéz is. L2, akkor L2 is NP-teljes.

Algoritmuselmélet 16. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Április 29.

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . .

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . . Tétel. Minden Boole-formulának létezik konjuktív normál formája.

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . . Tétel. Minden Boole-formulának létezik konjuktív normál formája. k-konjunktív normál forma: ha = 1 · · · n, akkor minden i-ben legfeljebb k literál szerepel. Pl.: 4-CNF: (x1 x2 x3 x4) (x4 x7 x18) (x9 x10 x13).

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . . Tétel. Minden Boole-formulának létezik konjuktív normál formája. k-konjunktív normál forma: ha = 1 · · · n, akkor minden i-ben legfeljebb k literál szerepel. Pl.: 4-CNF: (x1 x2 x3 x4) (x4 x7 x18) (x9 x10 x13). Definíció. Jelölje k-SAT a kielégítheto k-CNF-ekbol álló nyelvet.

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . . Tétel. Minden Boole-formulának létezik konjuktív normál formája. k-konjunktív normál forma: ha = 1 · · · n, akkor minden i-ben legfeljebb k literál szerepel. Pl.: 4-CNF: (x1 x2 x3 x4) (x4 x7 x18) (x9 x10 x13). Definíció. Jelölje k-SAT a kielégítheto k-CNF-ekbol álló nyelvet. k-SAT NP = tanú egy kielégítés

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . . Tétel. Minden Boole-formulának létezik konjuktív normál formája. k-konjunktív normál forma: ha = 1 · · · n, akkor minden i-ben legfeljebb k literál szerepel. Pl.: 4-CNF: (x1 x2 x3 x4) (x4 x7 x18) (x9 x10 x13). Definíció. Jelölje k-SAT a kielégítheto k-CNF-ekbol álló nyelvet. k-SAT NP = tanú egy kielégítés Tétel. 2-SAT P.

A LGORITMUSELMÉLET 16.

EL OADÁS

1

Konjunktív normálforma
Konjunktív normál forma: (x1 x2 x3) (x3 x4 x7 x18) (x9 x10 x13) . . . Tétel. Minden Boole-formulának létezik konjuktív normál formája. k-konjunktív normál forma: ha = 1 · · · n, akkor minden i-ben legfeljebb k literál szerepel. Pl.: 4-CNF: (x1 x2 x3 x4) (x4 x7 x18) (x9 x10 x13). Definíció. Jelölje k-SAT a kielégítheto k-CNF-ekbol álló nyelvet. k-SAT NP = tanú egy kielégítés Tétel. 2-SAT P. Tétel. 3-SAT NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

2

Tétel. 3-SAT NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

2

Tétel. 3-SAT NP-teljes. Bizonyítás: Belátjuk, hogy SAT 3-SAT.

A LGORITMUSELMÉLET 16.

EL OADÁS

2

Tétel. 3-SAT NP-teljes. Bizonyítás: Belátjuk, hogy SAT 3-SAT. Tetszoleges formulához kell adni egy -t ami 3-CNF, ekvivalens -vel és polinom idoben számolható.

A LGORITMUSELMÉLET 16.

EL OADÁS

2

Tétel. 3-SAT NP-teljes. Bizonyítás: Belátjuk, hogy SAT 3-SAT. Tetszoleges formulához kell adni egy -t ami 3-CNF, ekvivalens -vel és polinom idoben számolható. Kifejezésfa: (x1 x2 x3 x4) (x2 x3 x4)

x1

x2

x3

x4

x2

x3

x4





A LGORITMUSELMÉLET 16.

EL OADÁS

3

A kifejezésfa minden csúcsához rendeljünk egy új változót: zi és egy i Boole-formulát, ami megadja zi értékét:

A LGORITMUSELMÉLET 16.

EL OADÁS

3

A kifejezésfa minden csúcsához rendeljünk egy új változót: zi és egy i Boole-formulát, ami megadja zi értékét: u v = (u v) (u v)

A LGORITMUSELMÉLET 16.

EL OADÁS

3

A kifejezésfa minden csúcsához rendeljünk egy új változót: zi és egy i Boole-formulát, ami megadja zi értékét: u v = (u v) (u v) zi = zj zk = zi (zj zk) = = (zi (zj zk)) (zi (zj zk)) = = (zi zj zk) (zi zj ) (zi zk)

A LGORITMUSELMÉLET 16.

EL OADÁS

3

A kifejezésfa minden csúcsához rendeljünk egy új változót: zi és egy i Boole-formulát, ami megadja zi értékét: u v = (u v) (u v) zi = zj zk = zi (zj zk) = = (zi (zj zk)) (zi (zj zk)) = = (zi zj zk) (zi zj ) (zi zk) zi = zj zk = zi (zj zk) = = (zi (zj zk)) (zi (zj zk)) = = (zi zj ) (zi zk) (zi zj zk)

= (i) zm Ez ekvivalens -vel, és polinom idoben számolható.



A LGORITMUSELMÉLET 16.

EL OADÁS

4

3-SZÍN
Tétel. A 3-SZÍN nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

4

3-SZÍN
Tétel. A 3-SZÍN nyelv NP-teljes. Bizonyítás: Már láttuk, hogy NP, belátjuk, hogy 3-SAT 3-SZÍN.

A LGORITMUSELMÉLET 16.

EL OADÁS

4

3-SZÍN
Tétel. A 3-SZÍN nyelv NP-teljes. Bizonyítás: Már láttuk, hogy NP, belátjuk, hogy 3-SAT 3-SZÍN. Tetszoleges 3-CNF-hez építenünk kell egy G gráfot úgy, hogy 3-SAT pont akkor igaz, ha G 3-SZÍN.

A LGORITMUSELMÉLET 16.

EL OADÁS

4

3-SZÍN
Tétel. A 3-SZÍN nyelv NP-teljes. Bizonyítás: Már láttuk, hogy NP, belátjuk, hogy 3-SAT 3-SZÍN. Tetszoleges 3-CNF-hez építenünk kell egy G gráfot úgy, hogy 3-SAT pont akkor igaz, ha G 3-SZÍN.

x1 v x1 u

x2

x3 ...

xm

x2 1

x3 ... z

xm

A LGORITMUSELMÉLET 16.

EL OADÁS

4

3-SZÍN
Tétel. A 3-SZÍN nyelv NP-teljes. Bizonyítás: Már láttuk, hogy NP, belátjuk, hogy 3-SAT 3-SZÍN. Tetszoleges 3-CNF-hez építenünk kell egy G gráfot úgy, hogy 3-SAT pont akkor igaz, ha G 3-SZÍN.

x1 v x1 u

x2

x3 ...

xm

x2 1

x3 ... z

xm

Zöld igen

A LGORITMUSELMÉLET 16.

EL OADÁS

4

3-SZÍN
Tétel. A 3-SZÍN nyelv NP-teljes. Bizonyítás: Már láttuk, hogy NP, belátjuk, hogy 3-SAT 3-SZÍN. Tetszoleges 3-CNF-hez építenünk kell egy G gráfot úgy, hogy 3-SAT pont akkor igaz, ha G 3-SZÍN.

x1 v x1 u

x2

x3 ...

xm

x2 1

x3 ... z

xm

Zöld igen = minden i-ben van zöld.

A LGORITMUSELMÉLET 16.

EL OADÁS

5

Maximális méretu független pontrendszer gráfokban

MAXFTLEN =

(G, k)

G egy gráf, k Z+, és G-nek van k elemu független csúcshalmaza

.

A LGORITMUSELMÉLET 16.

EL OADÁS

5

Maximális méretu független pontrendszer gráfokban

MAXFTLEN =

(G, k)

G egy gráf, k Z+, és G-nek van k elemu független csúcshalmaza

.

Tétel. A MAXFTLEN nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

5

Maximális méretu független pontrendszer gráfokban

MAXFTLEN =

(G, k)

G egy gráf, k Z+, és G-nek van k elemu független csúcshalmaza

.

Tétel. A MAXFTLEN nyelv NP-teljes. Bizonyítás: MAXFTLEN NP: tanú egy k-elemu S V (G) független csúcshalmaz. Megadunk egy 3-SZÍN MAXFTLEN Karp-redukciót, G G1 ()

G 3-SZÍN pontosan akkor, ha (G1, k) MAXFTLEN.

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1)

G(2)

G(2)

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1) G(2) G(2) |V (G1)| = 3|V (G)| és |E(G1)| = 3|V (G)| + 3|E(G)|, legyen k = |V (G)|.

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1) G(2) G(2) |V (G1)| = 3|V (G)| és |E(G1)| = 3|V (G)| + 3|E(G)|, legyen k = |V (G)|. Ha G színezheto 3 színnel = legyen H a piros pontok halmaza G1-ben.

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1) G(2) G(2) |V (G1)| = 3|V (G)| és |E(G1)| = 3|V (G)| + 3|E(G)|, legyen k = |V (G)|. Ha G színezheto 3 színnel = legyen H a piros pontok halmaza G1-ben. Ha G1-ben van |V (G)| független = legyen egy pont színe olyan, hogy (i) melyik G -ben van.

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1) G(2) G(2) |V (G1)| = 3|V (G)| és |E(G1)| = 3|V (G)| + 3|E(G)|, legyen k = |V (G)|. Ha G színezheto 3 színnel = legyen H a piros pontok halmaza G1-ben. Ha G1-ben van |V (G)| független = legyen egy pont színe olyan, hogy (i) melyik G -ben van. MAXKLIKK = {(G, k)| G-ben van k pontú teljes részgráf}.

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1) G(2) G(2) |V (G1)| = 3|V (G)| és |E(G1)| = 3|V (G)| + 3|E(G)|, legyen k = |V (G)|. Ha G színezheto 3 színnel = legyen H a piros pontok halmaza G1-ben. Ha G1-ben van |V (G)| független = legyen egy pont színe olyan, hogy (i) melyik G -ben van. MAXKLIKK = {(G, k)| G-ben van k pontú teljes részgráf}. Tétel. A MAXKLIKK nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

6

G(1) G(2) G(2) |V (G1)| = 3|V (G)| és |E(G1)| = 3|V (G)| + 3|E(G)|, legyen k = |V (G)|. Ha G színezheto 3 színnel = legyen H a piros pontok halmaza G1-ben. Ha G1-ben van |V (G)| független = legyen egy pont színe olyan, hogy (i) melyik G -ben van. MAXKLIKK = {(G, k)| G-ben van k pontú teljes részgráf}. Tétel. A MAXKLIKK nyelv NP-teljes. Bizonyítás: G G



A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t.

A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t. Adott még U1 × U2 × U3 valamely S részhalmaza = (u1, u2, u3) alakú hármasok

A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t. Adott még U1 × U2 × U3 valamely S részhalmaza = (u1, u2, u3) alakú hármasok Kiválasztható-e S-bol egy 3 dimenziós házasítás?

A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t. Adott még U1 × U2 × U3 valamely S részhalmaza = (u1, u2, u3) alakú hármasok Kiválasztható-e S-bol egy 3 dimenziós házasítás? = olyan t-elemu S S részhalmaz, mely minden Ui-beli pontot lefed.

U1

U2

U3

A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t. Adott még U1 × U2 × U3 valamely S részhalmaza = (u1, u2, u3) alakú hármasok Kiválasztható-e S-bol egy 3 dimenziós házasítás? = olyan t-elemu S S részhalmaz, mely minden Ui-beli pontot lefed.

U1

U2

U3

3-DH: olyan U1, U2, U3; S U1 × U2 × U3 rendszerek, melyeknél S-bol kiválasztható egy 3 dimenziós házasítás.

A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t. Adott még U1 × U2 × U3 valamely S részhalmaza = (u1, u2, u3) alakú hármasok Kiválasztható-e S-bol egy 3 dimenziós házasítás? = olyan t-elemu S S részhalmaz, mely minden Ui-beli pontot lefed.

U1

U2

U3

3-DH: olyan U1, U2, U3; S U1 × U2 × U3 rendszerek, melyeknél S-bol kiválasztható egy 3 dimenziós házasítás. Tétel. A 3-DH feladat NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

7

A 3 dimenziós házasítás
Párosítási feladat általánosítása: Legyenek U1, U2, U3 azonos méretu véges halmazok = |Ui| = t. Adott még U1 × U2 × U3 valamely S részhalmaza = (u1, u2, u3) alakú hármasok Kiválasztható-e S-bol egy 3 dimenziós házasítás? = olyan t-elemu S S részhalmaz, mely minden Ui-beli pontot lefed.

U1

U2

U3

3-DH: olyan U1, U2, U3; S U1 × U2 × U3 rendszerek, melyeknél S-bol kiválasztható egy 3 dimenziós házasítás. Tétel. A 3-DH feladat NP-teljes. Bizonyítás: 3-DH NP



3-SAT

3-DH

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja.

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja. Eldöntendo, hogy az F -bol kiválaszthatók-e páronként diszjunkt halmazok, melyek együttesen lefedik U -t.

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja. Eldöntendo, hogy az F -bol kiválaszthatók-e páronként diszjunkt halmazok, melyek együttesen lefedik U -t. Jelölje X3C azokat az (U, F ) párokat, melyekre igen.

Tétel. Az X3C nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja. Eldöntendo, hogy az F -bol kiválaszthatók-e páronként diszjunkt halmazok, melyek együttesen lefedik U -t. Jelölje X3C azokat az (U, F ) párokat, melyekre igen.

Tétel. Az X3C nyelv NP-teljes. Bizonyítás: X3C NP teljesül = tanú egy pontos fedés.

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja. Eldöntendo, hogy az F -bol kiválaszthatók-e páronként diszjunkt halmazok, melyek együttesen lefedik U -t. Jelölje X3C azokat az (U, F ) párokat, melyekre igen.

Tétel. Az X3C nyelv NP-teljes. Bizonyítás: X3C NP teljesül = tanú egy pontos fedés. Megmutatjuk, hogy 3-DH X3C.

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja. Eldöntendo, hogy az F -bol kiválaszthatók-e páronként diszjunkt halmazok, melyek együttesen lefedik U -t. Jelölje X3C azokat az (U, F ) párokat, melyekre igen.

Tétel. Az X3C nyelv NP-teljes. Bizonyítás: X3C NP teljesül = tanú egy pontos fedés. Megmutatjuk, hogy 3-DH X3C. X3C általánosabb probléma, mint 3-DH. Ha van algoritmus az általánosra, akkor avval a speciális is megoldható.

A LGORITMUSELMÉLET 16.

EL OADÁS

8

X3C
Pontos fedés hármasokkal: adott egy U véges halmaz, és U háromelemu részhalmazainak egy F = {X1, X2, . . . , Xk} családja. Eldöntendo, hogy az F -bol kiválaszthatók-e páronként diszjunkt halmazok, melyek együttesen lefedik U -t. Jelölje X3C azokat az (U, F ) párokat, melyekre igen.

Tétel. Az X3C nyelv NP-teljes. Bizonyítás: X3C NP teljesül = tanú egy pontos fedés. Megmutatjuk, hogy 3-DH X3C. X3C általánosabb probléma, mint 3-DH. Ha van algoritmus az általánosra, akkor avval a speciális is megoldható. Ha L NP-teljes és L általánosítása L-nek, akkor L is NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes. Bizonyítás: Már láttuk, hogy H NP



A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes. Bizonyítás: Már láttuk, hogy H NP és láttuk, hogy IH H



A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes. Bizonyítás: Már láttuk, hogy H NP és láttuk, hogy IH H



Utazó ügynök feladat: Adott egy G irányítatlan gráf pozitív egészekkel súlyozott élekkel.

A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes. Bizonyítás: Már láttuk, hogy H NP és láttuk, hogy IH H



Utazó ügynök feladat: Adott egy G irányítatlan gráf pozitív egészekkel súlyozott élekkel. A cél minél rövidebb összsúlyú Hamilton-kört találni G-ben.

A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes. Bizonyítás: Már láttuk, hogy H NP és láttuk, hogy IH H



Utazó ügynök feladat: Adott egy G irányítatlan gráf pozitív egészekkel súlyozott élekkel. A cél minél rövidebb összsúlyú Hamilton-kört találni G-ben. = U t nyelv = olyan (G, k) párokból áll, melyekben G egy súlyozott élu irányítatlan gráf, k egy nemnegatív egész, és G-ben van k-nál nem nagyobb súlyú Hamilton-kör. Tétel. Az U t nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

9

Utazó ügynök probléma
Tétel. Az IH nyelv NP-teljes. Tétel. Az H nyelv NP-teljes. Bizonyítás: Már láttuk, hogy H NP és láttuk, hogy IH H



Utazó ügynök feladat: Adott egy G irányítatlan gráf pozitív egészekkel súlyozott élekkel. A cél minél rövidebb összsúlyú Hamilton-kört találni G-ben. = U t nyelv = olyan (G, k) párokból áll, melyekben G egy súlyozott élu irányítatlan gráf, k egy nemnegatív egész, és G-ben van k-nál nem nagyobb súlyú Hamilton-kör. Tétel. Az U t nyelv NP-teljes. Bizonyítás: H általánosítása = minden él súlya 1 és k = |V (G)|



A LGORITMUSELMÉLET 16.

EL OADÁS

10

A Hátizsák feladat
Hátizsák feladat: adottak az s1, . . . , sm > 0 súlyok, ezek v1, . . . , vm > 0 értékei, valamint a b megengedett maximális összsúly.

A LGORITMUSELMÉLET 16.

EL OADÁS

10

A Hátizsák feladat
Hátizsák feladat: adottak az s1, . . . , sm > 0 súlyok, ezek v1, . . . , vm > 0 értékei, valamint a b megengedett maximális összsúly. Tegyük fel, hogy az si, vi, b számok egészek.

A LGORITMUSELMÉLET 16.

EL OADÁS

10

A Hátizsák feladat
Hátizsák feladat: adottak az s1, . . . , sm > 0 súlyok, ezek v1, . . . , vm > 0 értékei, valamint a b megengedett maximális összsúly. Tegyük fel, hogy az si, vi, b számok egészek. A feladat az, hogy találjunk egy olyan I {1, .., m} részhalmazt, melyre iI si b, és ugyanakkor iI vi a leheto legnagyobb.

A LGORITMUSELMÉLET 16.

EL OADÁS

10

A Hátizsák feladat
Hátizsák feladat: adottak az s1, . . . , sm > 0 súlyok, ezek v1, . . . , vm > 0 értékei, valamint a b megengedett maximális összsúly. Tegyük fel, hogy az si, vi, b számok egészek. A feladat az, hogy találjunk egy olyan I {1, .., m} részhalmazt, melyre iI si b, és ugyanakkor iI vi a leheto legnagyobb. = Input: s1, . . . , sm; v1 . . . , vm; b; k Hát = {(s1, s2, . . . , sm; v1, v2, . . . , vm; b; k)|si, b, k > 0 egészek, és van olyan I {1, . . . , m} melyre
iI

si b és
iI

vi k}.

A LGORITMUSELMÉLET 16.

EL OADÁS

10

A Hátizsák feladat
Hátizsák feladat: adottak az s1, . . . , sm > 0 súlyok, ezek v1, . . . , vm > 0 értékei, valamint a b megengedett maximális összsúly. Tegyük fel, hogy az si, vi, b számok egészek. A feladat az, hogy találjunk egy olyan I {1, .., m} részhalmazt, melyre iI si b, és ugyanakkor iI vi a leheto legnagyobb. = Input: s1, . . . , sm; v1 . . . , vm; b; k Hát = {(s1, s2, . . . , sm; v1, v2, . . . , vm; b; k)|si, b, k > 0 egészek, és van olyan I {1, . . . , m} melyre
iI

si b és
iI

vi k}.

Vegyük azt a speciális esetet, amikor si = vi és b = k: Részhalmazösszeg probléma: RH = (s1, . . . , sm; b) si, b > 0 egészek, és van olyan I {1, . . . , m} hogy .

iI si = b

A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP



A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes.

A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes. Bizonyítás: Partíció NP



A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes. Bizonyítás: Partíció NP Belátjuk, hogy RH Partíció


RH általánosabb!

A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes. Bizonyítás: Partíció NP Belátjuk, hogy RH Partíció RH általánosabb! Vegyük az RH egy x = (s1, . . . , sm; b) inputját.



A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes. Bizonyítás: Partíció NP Belátjuk, hogy RH Partíció RH általánosabb! Vegyük az RH egy x = (s1, . . . , sm; b) inputját. m = Felteheto, hogy b s = i=1 si.



A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes. Bizonyítás: Partíció NP Belátjuk, hogy RH Partíció RH általánosabb! Vegyük az RH egy x = (s1, . . . , sm; b) inputját. m = Felteheto, hogy b s = i=1 si. x Partíció inputját: (s1, . . . , sm, s + 1 - b, b + 1).



A LGORITMUSELMÉLET 16.

EL OADÁS

11

Tétel. Az RH nyelv NP-teljes. Bizonyítás: RH NP X3C RH



Speciális eset = Partíció feladat: ahol a b =

1 2

si

Partíció =

(s1, . . . , sm)

si > 0 egészek, és van olyan I {1, . . . , m}, hogy iI si =

1 2

m i=1

si

.

Tétel. A Partíció nyelv NP-teljes. Bizonyítás: Partíció NP Belátjuk, hogy RH Partíció RH általánosabb! Vegyük az RH egy x = (s1, . . . , sm; b) inputját. m = Felteheto, hogy b s = i=1 si. x Partíció inputját: (s1, . . . , sm, s + 1 - b, b + 1). A számok összege 2s + 2, az utolsó két szám nem lehet egy partíció 1 ugyanazon osztályában, mert az összegük túl nagy: s + 2 > 2 (2s + 2).



Algoritmuselmélet 17. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Május 6.

A LGORITMUSELMÉLET 17.

EL OADÁS

1

A közvetlen elérésu gép (RAM)
Random Access Machine

A LGORITMUSELMÉLET 17.

EL OADÁS

1

A közvetlen elérésu gép (RAM)
Random Access Machine = Memória minden cellája egy lépésben elérheto.
input szalag
T

utasításszámláló

r0 r1
E

akkumulátor

program

r2
s t s

tár

c

output szalag

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op op = = i: az i számot jelenti Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

op = = i: az i számot jelenti = i: i sorszámú cella tartalma

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

op = = i: az i számot jelenti = i: i sorszámú cella tartalma = i: az i sorszámú cellában levo sorszámú cella tartalma, pl. r[0] = -4 és r[1] = 0 = a 1 operandus jelentése -4

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

op = = i: az i számot jelenti = i: i sorszámú cella tartalma = i: az i sorszámú cellában levo sorszámú cella tartalma, pl. r[0] = -4 és r[1] = 0 = a 1 operandus jelentése -4 Az aritmetikai muveleteknél az elso argumentum az akkumulátor, a második az op

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

op = = i: az i számot jelenti = i: i sorszámú cella tartalma = i: az i sorszámú cellában levo sorszámú cella tartalma, pl. r[0] = -4 és r[1] = 0 = a 1 operandus jelentése -4 Az aritmetikai muveleteknél az elso argumentum az akkumulátor, a második az op = eredménye akkumulátor

A LGORITMUSELMÉLET 17.

EL OADÁS

2

Utasítások = Aritmetika ADD op SUB op MULT op DIV op Adatmozgatás LOAD op STORE op READ op WRITE op Vezérlés JUMP címke JGTZ címke JZERO címke HALT

op = = i: az i számot jelenti = i: i sorszámú cella tartalma = i: az i sorszámú cellában levo sorszámú cella tartalma, pl. r[0] = -4 és r[1] = 0 = a 1 operandus jelentése -4 Az aritmetikai muveleteknél az elso argumentum az akkumulátor, a második az op = eredménye akkumulátor Például ha r[0] = 17 és r[1] = 2, akkor DIV 1 hatására a 8 = 17/2 érték kerül az akkumulátorba.

A LGORITMUSELMÉLET 17.

EL OADÁS

3

Aritmetika ADD op SUB op MULT op DIV op

Adatmozgatás LOAD op STORE op READ op WRITE op

Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A READ beolvassa az input cella tartalmát op-ba és lép

A LGORITMUSELMÉLET 17.

EL OADÁS

3

Aritmetika ADD op SUB op MULT op DIV op

Adatmozgatás LOAD op STORE op READ op WRITE op

Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A READ beolvassa az input cella tartalmát op-ba és lép A WRITE kiírja az op-ot az output cellába és lép

A LGORITMUSELMÉLET 17.

EL OADÁS

3

Aritmetika ADD op SUB op MULT op DIV op

Adatmozgatás LOAD op STORE op READ op WRITE op

Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A READ beolvassa az input cella tartalmát op-ba és lép A WRITE kiírja az op-ot az output cellába és lép A STORE op = akkumulátor tartalma op LOAD fordítva.

A LGORITMUSELMÉLET 17.

EL OADÁS

3

Aritmetika ADD op SUB op MULT op DIV op

Adatmozgatás LOAD op STORE op READ op WRITE op

Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A READ beolvassa az input cella tartalmát op-ba és lép A WRITE kiírja az op-ot az output cellába és lép A STORE op = akkumulátor tartalma op LOAD fordítva. HALT = megáll.

A LGORITMUSELMÉLET 17.

EL OADÁS

3

Aritmetika ADD op SUB op MULT op DIV op

Adatmozgatás LOAD op STORE op READ op WRITE op

Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A READ beolvassa az input cella tartalmát op-ba és lép A WRITE kiírja az op-ot az output cellába és lép A STORE op = akkumulátor tartalma op LOAD fordítva. HALT = megáll. JZERO: Ha r[0] = 0, akkor ugrik

A LGORITMUSELMÉLET 17.

EL OADÁS

3

Aritmetika ADD op SUB op MULT op DIV op

Adatmozgatás LOAD op STORE op READ op WRITE op

Vezérlés JUMP címke JGTZ címke JZERO címke HALT

A READ beolvassa az input cella tartalmát op-ba és lép A WRITE kiírja az op-ot az output cellába és lép A STORE op = akkumulátor tartalma op LOAD fordítva. HALT = megáll. JZERO: Ha r[0] = 0, akkor ugrik JGTZ: Ha r[0] 0, akkor ugrik.

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel:

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2.

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2. De a k-adik iterációs lépésben két 2k-jegyu számot szorzunk össze.

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2. De a k-adik iterációs lépésben két 2k-jegyu számot szorzunk össze. = Az eredménynek tehát 2n+1 jegye lesz.

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2. De a k-adik iterációs lépésben két 2k-jegyu számot szorzunk össze. = Az eredménynek tehát 2n+1 jegye lesz. Logaritmikus költség: egy utasítás költsége a benne szereplo adatok összhossza. Egy program logaritmikus költsége a végrehajtott utasítások költségeinek az összege.

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2. De a k-adik iterációs lépésben két 2k-jegyu számot szorzunk össze. = Az eredménynek tehát 2n+1 jegye lesz. Logaritmikus költség: egy utasítás költsége a benne szereplo adatok összhossza. Egy program logaritmikus költsége a végrehajtott utasítások költségeinek az összege. Példa: ADD 1 uniform költsége 1. A logaritmikus költsége viszont hossz(r[0]) + hossz(r[1]) + hossz(r[r[1]]) + hossz(1), ahol r[i] a belso tár i-edik cellájának a tartalmát jelöli. Ha nincs MULT és DIV akkor a logaritmikus költség valós költség

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2. De a k-adik iterációs lépésben két 2k-jegyu számot szorzunk össze. = Az eredménynek tehát 2n+1 jegye lesz. Logaritmikus költség: egy utasítás költsége a benne szereplo adatok összhossza. Egy program logaritmikus költsége a végrehajtott utasítások költségeinek az összege. Példa: ADD 1 uniform költsége 1. A logaritmikus költsége viszont hossz(r[0]) + hossz(r[1]) + hossz(r[r[1]]) + hossz(1), ahol r[i] a belso tár i-edik cellájának a tartalmát jelöli. Ha nincs MULT és DIV akkor a logaritmikus költség valós költség Legjobb ismert algoritmus O(n log n log log n)

A LGORITMUSELMÉLET 17.

EL OADÁS

4

Költségszámítás
Uniform költség: végrehajtott utasítások száma 2n Pl. az f (n) = 3 függvény kiszámítható O(n) uniform költséggel: = legyen x := 3, majd n-szer iterálva x := x2. De a k-adik iterációs lépésben két 2k-jegyu számot szorzunk össze. = Az eredménynek tehát 2n+1 jegye lesz. Logaritmikus költség: egy utasítás költsége a benne szereplo adatok összhossza. Egy program logaritmikus költsége a végrehajtott utasítások költségeinek az összege. Példa: ADD 1 uniform költsége 1. A logaritmikus költsége viszont hossz(r[0]) + hossz(r[1]) + hossz(r[r[1]]) + hossz(1), ahol r[i] a belso tár i-edik cellájának a tartalmát jelöli. Ha nincs MULT és DIV akkor a logaritmikus költség valós költség Legjobb ismert algoritmus O(n log n log log n) Ha tudjuk, hogy a RAM-program végig l hosszú szavakkal dolgozik = m uniform költség O(lm) logaritmikus

A LGORITMUSELMÉLET 17.

EL OADÁS

5

Szimulációk
Tétel. [Turing-gépRAM szimulációk] (1) Tetszoleges M Turing-gép szimulálható O(TM (n) log TM (n)) logaritmikus költségu RAM programmal. A szimuláció uniform költsége O(TM (n)). (2) Egy t(n) logaritmikus költségu, MULT és DIV utasításokat nem tartalmazó RAM-program szimulálható olyan N Turing-géppel, melynek az idoigényére TN (n) = O(t2(n)) teljesül.

A LGORITMUSELMÉLET 17.

EL OADÁS

5

Szimulációk
Tétel. [Turing-gépRAM szimulációk] (1) Tetszoleges M Turing-gép szimulálható O(TM (n) log TM (n)) logaritmikus költségu RAM programmal. A szimuláció uniform költsége O(TM (n)). (2) Egy t(n) logaritmikus költségu, MULT és DIV utasításokat nem tartalmazó RAM-program szimulálható olyan N Turing-géppel, melynek az idoigényére TN (n) = O(t2(n)) teljesül. Bizonyítás: (1) M egy k-szalagos Turing-gép.

A LGORITMUSELMÉLET 17.

EL OADÁS

5

Szimulációk
Tétel. [Turing-gépRAM szimulációk] (1) Tetszoleges M Turing-gép szimulálható O(TM (n) log TM (n)) logaritmikus költségu RAM programmal. A szimuláció uniform költsége O(TM (n)). (2) Egy t(n) logaritmikus költségu, MULT és DIV utasításokat nem tartalmazó RAM-program szimulálható olyan N Turing-géppel, melynek az idoigényére TN (n) = O(t2(n)) teljesül. Bizonyítás: (1) M egy k-szalagos Turing-gép. M bemenete = RAM input szalag

A LGORITMUSELMÉLET 17.

EL OADÁS

5

Szimulációk
Tétel. [Turing-gépRAM szimulációk] (1) Tetszoleges M Turing-gép szimulálható O(TM (n) log TM (n)) logaritmikus költségu RAM programmal. A szimuláció uniform költsége O(TM (n)). (2) Egy t(n) logaritmikus költségu, MULT és DIV utasításokat nem tartalmazó RAM-program szimulálható olyan N Turing-géppel, melynek az idoigényére TN (n) = O(t2(n)) teljesül. Bizonyítás: (1) M egy k-szalagos Turing-gép. M bemenete = RAM input szalag A RAM belso tárának elso c celláját munkaterületként használjuk = M belso állapota, és itt kap helyet az a k cella is, amelyekben a M fejeinek helyzete van

A LGORITMUSELMÉLET 17.

EL OADÁS

5

Szimulációk
Tétel. [Turing-gépRAM szimulációk] (1) Tetszoleges M Turing-gép szimulálható O(TM (n) log TM (n)) logaritmikus költségu RAM programmal. A szimuláció uniform költsége O(TM (n)). (2) Egy t(n) logaritmikus költségu, MULT és DIV utasításokat nem tartalmazó RAM-program szimulálható olyan N Turing-géppel, melynek az idoigényére TN (n) = O(t2(n)) teljesül. Bizonyítás: (1) M egy k-szalagos Turing-gép. M bemenete = RAM input szalag A RAM belso tárának elso c celláját munkaterületként használjuk = M belso állapota, és itt kap helyet az a k cella is, amelyekben a M fejeinek helyzete van = összefésülve az M szalagjainak tartalmát

A LGORITMUSELMÉLET 17.

EL OADÁS

5

Szimulációk
Tétel. [Turing-gépRAM szimulációk] (1) Tetszoleges M Turing-gép szimulálható O(TM (n) log TM (n)) logaritmikus költségu RAM programmal. A szimuláció uniform költsége O(TM (n)). (2) Egy t(n) logaritmikus költségu, MULT és DIV utasításokat nem tartalmazó RAM-program szimulálható olyan N Turing-géppel, melynek az idoigényére TN (n) = O(t2(n)) teljesül. Bizonyítás: (1) M egy k-szalagos Turing-gép. M bemenete = RAM input szalag A RAM belso tárának elso c celláját munkaterületként használjuk = M belso állapota, és itt kap helyet az a k cella is, amelyekben a M fejeinek helyzete van = összefésülve az M szalagjainak tartalmát A RAM programja = M átmeneteinek leírása = megvalósítható if...then... utasításokkal (indirekt címzés)

A LGORITMUSELMÉLET 17.

EL OADÁS

6

uniform költség: O(TM (n))

A LGORITMUSELMÉLET 17.

EL OADÁS

6

uniform költség: O(TM (n)) logaritmikus költség: az M szalagjelei és belso állapotai (M -tol függo) konstans hosszúságúak

A LGORITMUSELMÉLET 17.

EL OADÁS

6

uniform költség: O(TM (n)) logaritmikus költség: az M szalagjelei és belso állapotai (M -tol függo) konstans hosszúságúak a fejek helyét leíró mutatók pedig O(log TM (n)) bittel ábrázolhatók

A LGORITMUSELMÉLET 17.

EL OADÁS

6

uniform költség: O(TM (n)) logaritmikus költség: az M szalagjelei és belso állapotai (M -tol függo) konstans hosszúságúak a fejek helyét leíró mutatók pedig O(log TM (n)) bittel ábrázolhatók = O(TM (n) log TM (n))

A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

Elso szalag:
##cím1 #adat1 ##cím2 #adat2 ##cím3 #adat3 ##cím1 #új-adat1 ##cím3 #új-adat3 ##cím2 #új-adat2 . . . . . .

A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

Elso szalag:
##cím1 #adat1 ##cím2 #adat2 ##cím3 #adat3 ##cím1 #új-adat1 ##cím3 #új-adat3 ##cím2 #új-adat2 . . . . . .

Belso tár olvasása



írása (végére)



A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

Elso szalag:
##cím1 #adat1 ##cím2 #adat2 ##cím3 #adat3 ##cím1 #új-adat1 ##cím3 #új-adat3 ##cím2 #új-adat2 . . . . . .

Belso tár olvasása írása (végére) RAM alaputasítások = N állapotcsoportjai = ezek között átmenet





A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

Elso szalag:
##cím1 #adat1 ##cím2 #adat2 ##cím3 #adat3 ##cím1 #új-adat1 ##cím3 #új-adat3 ##cím2 #új-adat2 . . . . . .

Belso tár olvasása írása (végére) RAM alaputasítások = N állapotcsoportjai = ezek között átmenet Lépésszám: az alaputasítások ­ a MULT és DIV kivételével ­ megvalósíthatók úgy, hogy N lépésszáma az utasításban szereplo adatok hosszával plusz az elso szalag érdemi részének hosszával arányos legyen.





A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

Elso szalag:
##cím1 #adat1 ##cím2 #adat2 ##cím3 #adat3 ##cím1 #új-adat1 ##cím3 #új-adat3 ##cím2 #új-adat2 . . . . . .

Belso tár olvasása írása (végére) RAM alaputasítások = N állapotcsoportjai = ezek között átmenet Lépésszám: az alaputasítások ­ a MULT és DIV kivételével ­ megvalósíthatók úgy, hogy N lépésszáma az utasításban szereplo adatok hosszával plusz az elso szalag érdemi részének hosszával arányos legyen. = egy lépés szimulációjának a költsége O(t(n))





A LGORITMUSELMÉLET 17.

EL OADÁS

7

(2) A RAM-programot szimuláló N gép szalagjelei = {0, 1, +, -, #, ü}.
A RAM belso tára Az akkumulátor tartalma Munkaszalag A RAM input szalagja A RAM output szalagja

Elso szalag:
##cím1 #adat1 ##cím2 #adat2 ##cím3 #adat3 ##cím1 #új-adat1 ##cím3 #új-adat3 ##cím2 #új-adat2 . . . . . .

Belso tár olvasása írása (végére) RAM alaputasítások = N állapotcsoportjai = ezek között átmenet Lépésszám: az alaputasítások ­ a MULT és DIV kivételével ­ megvalósíthatók úgy, hogy N lépésszáma az utasításban szereplo adatok hosszával plusz az elso szalag érdemi részének hosszával arányos legyen. = egy lépés szimulációjának a költsége O(t(n)) összköltség: t(n)O(t(n)) = O(t2(n)) Ha MULT és DIV is van benne: O(t3(n))





A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes?

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c.

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azt alesetekre, . . . = fa

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azt alesetekre, . . . = fa Értékeljük az eseteket = bizonyos irányokban nem kell továbbmenni. = (korlátozó heurisztika)

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azt alesetekre, . . . = fa Értékeljük az eseteket = bizonyos irányokban nem kell továbbmenni. = (korlátozó heurisztika) Pl. sakkállások

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azt alesetekre, . . . = fa Értékeljük az eseteket = bizonyos irányokban nem kell továbbmenni. = (korlátozó heurisztika) Pl. sakkállások Feladat: Keressünk maximális méretu független ponthalmazt egy adott G gráfban.

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azt alesetekre, . . . = fa Értékeljük az eseteket = bizonyos irányokban nem kell továbbmenni. = (korlátozó heurisztika) Pl. sakkállások Feladat: Keressünk maximális méretu független ponthalmazt egy adott G gráfban. NP-teljes

A LGORITMUSELMÉLET 17.

EL OADÁS

8

Elágazás és korlátozás
Mit tegyünk ha kiderül, hogy a megoldandó probléma NP-teljes? Legtöbbször van cn-es algoritmus, de nem mindegy mekkora c. Bontsunk esetekre, azt alesetekre, . . . = fa Értékeljük az eseteket = bizonyos irányokban nem kell továbbmenni. = (korlátozó heurisztika) Pl. sakkállások Feladat: Keressünk maximális méretu független ponthalmazt egy adott G gráfban. NP-teljes Minden részhalmazt végignézünk = O(2n) lépés

A LGORITMUSELMÉLET 17.

EL OADÁS

9

Jobb algoritmus
Észrevétel: Ha G-ben minden pont foka legfeljebb ketto, akkor a feladat lineáris idoben megoldható = G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden ,,második" pontot bevesszük a halmazba. (izolált pontok) v
d d v v v d dv v ¢ f ¢ f ¢ f v v v v ¢ f ¢ fv v

A LGORITMUSELMÉLET 17.

EL OADÁS

9

Jobb algoritmus
Észrevétel: Ha G-ben minden pont foka legfeljebb ketto, akkor a feladat lineáris idoben megoldható = G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden ,,második" pontot bevesszük a halmazba. (izolált pontok) v
d d v v v d dv v ¢ f ¢ f ¢ f v v v v ¢ f ¢ fv v

MF(G) 1. Ha G-ben minden pont foka 2, akkor MF(G) az elobbi eljárás által adott maximális független halmaz, és a munkát befejeztük.

A LGORITMUSELMÉLET 17.

EL OADÁS

9

Jobb algoritmus
Észrevétel: Ha G-ben minden pont foka legfeljebb ketto, akkor a feladat lineáris idoben megoldható = G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden ,,második" pontot bevesszük a halmazba. (izolált pontok) v
d d v v v d dv v ¢ f ¢ f ¢ f v v v v ¢ f ¢ fv v

MF(G) 1. Ha G-ben minden pont foka 2, akkor MF(G) az elobbi eljárás által adott maximális független halmaz, és a munkát befejeztük. 2. Legyen x G, f ok(x) 3. S1 := MF(G \ {x})

A LGORITMUSELMÉLET 17.

EL OADÁS

9

Jobb algoritmus
Észrevétel: Ha G-ben minden pont foka legfeljebb ketto, akkor a feladat lineáris idoben megoldható = G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden ,,második" pontot bevesszük a halmazba. (izolált pontok) v
d d v v v d dv v ¢ f ¢ f ¢ f v v v v ¢ f ¢ fv v

MF(G) 1. Ha G-ben minden pont foka 2, akkor MF(G) az elobbi eljárás által adott maximális független halmaz, és a munkát befejeztük. 2. Legyen x G, f ok(x) 3. S1 := MF(G \ {x}) S2 := {x} MF(G \ {x és szomszédai}).

A LGORITMUSELMÉLET 17.

EL OADÁS

9

Jobb algoritmus
Észrevétel: Ha G-ben minden pont foka legfeljebb ketto, akkor a feladat lineáris idoben megoldható = G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden ,,második" pontot bevesszük a halmazba. (izolált pontok) v
d d v v v d dv v ¢ f ¢ f ¢ f v v v v ¢ f ¢ fv v

MF(G) 1. Ha G-ben minden pont foka 2, akkor MF(G) az elobbi eljárás által adott maximális független halmaz, és a munkát befejeztük. 2. Legyen x G, f ok(x) 3. S1 := MF(G \ {x}) S2 := {x} MF(G \ {x és szomszédai}). 3. Legyen S az S1 és S2 közül a nagyobb méretu, illetve akármelyik, ha |S1| = |S2|.

A LGORITMUSELMÉLET 17.

EL OADÁS

9

Jobb algoritmus
Észrevétel: Ha G-ben minden pont foka legfeljebb ketto, akkor a feladat lineáris idoben megoldható = G izolált pontok, utak és körök diszjunkt uniója. = komponensenként minden ,,második" pontot bevesszük a halmazba. (izolált pontok) v
d d v v v d dv v ¢ f ¢ f ¢ f v v v v ¢ f ¢ fv v

MF(G) 1. Ha G-ben minden pont foka 2, akkor MF(G) az elobbi eljárás által adott maximális független halmaz, és a munkát befejeztük. 2. Legyen x G, f ok(x) 3. S1 := MF(G \ {x}) S2 := {x} MF(G \ {x és szomszédai}). 3. Legyen S az S1 és S2 közül a nagyobb méretu, illetve akármelyik, ha |S1| = |S2|. 4. MF(G) := S.

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is.

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381).

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1.

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1. T (n) T (n - 1) + T (n - 4) + 1, ha n > 4.

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1. T (n) T (n - 1) + T (n - 4) + 1, ha n > 4. = t(n) t(n - 1) + t(n - 4), ha n > 4.

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1. T (n) T (n - 1) + T (n - 4) + 1, ha n > 4. = t(n) t(n - 1) + t(n - 4), ha n > 4. Indukcióval: t(n) c n

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1. T (n) T (n - 1) + T (n - 4) + 1, ha n > 4. = t(n) t(n - 1) + t(n - 4), ha n > 4. Indukcióval: t(n) c n n < 5-re elég nagy c-vel

A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1. T (n) T (n - 1) + T (n - 4) + 1, ha n > 4. = t(n) t(n - 1) + t(n - 4), ha n > 4. Indukcióval: t(n) c n n < 5-re elég nagy c-vel = Ezután, ha n 5, indukciós feltevésbol: t(n) t(n - 1) + t(n - 4) c n-1 + c n-4 = = c n-4( 3 + 1) = c n-4 4 = c n.



A LGORITMUSELMÉLET 17.

EL OADÁS

10

Legyen T (n) az MF(G)-n (| V (G) | n) belüli MF hívások maximális száma, beleértve MF(G)-t magát is. Tétel. Van olyan c állandó, hogy T (n) c n, tetszoleges n természetes számra, ahol a 4 - 3 - 1 = 0 egyenlet pozitív gyöke ( 1, 381). Bizonyítás: Legyen t(n) := T (n) + 1. T (n) T (n - 1) + T (n - 4) + 1, ha n > 4. = t(n) t(n - 1) + t(n - 4), ha n > 4. Indukcióval: t(n) c n n < 5-re elég nagy c-vel = Ezután, ha n 5, indukciós feltevésbol: t(n) t(n - 1) + t(n - 4) c n-1 + c n-4 = = c n-4( 3 + 1) = c n-4 4 = c n.


Összköltség: O(ndT (n)) = O(nd n) = O(1, 381n).

A LGORITMUSELMÉLET 17.

EL OADÁS

11

3-színezés keresése
Feladat: Adott G, keressünk egy 3-színezést.

A LGORITMUSELMÉLET 17.

EL OADÁS

11

3-színezés keresése
Feladat: Adott G, keressünk egy 3-színezést. NP-teljes

A LGORITMUSELMÉLET 17.

EL OADÁS

11

3-színezés keresése
Feladat: Adott G, keressünk egy 3-színezést. NP-teljes Minden lehetséges színezést végignézünk = O(3n) lépés

A LGORITMUSELMÉLET 17.

EL OADÁS

11

3-színezés keresése
Feladat: Adott G, keressünk egy 3-színezést. NP-teljes Minden lehetséges színezést végignézünk = O(3n) lépés Ötlet: Bizonyos csúcsokat kiszínezünk pirosra, a többirol polinom idoben el tudjuk dönteni, hogy kiszínezhetok-e kékkel és sárgával.

A LGORITMUSELMÉLET 17.

EL OADÁS

11

3-színezés keresése
Feladat: Adott G, keressünk egy 3-színezést. NP-teljes Minden lehetséges színezést végignézünk = O(3n) lépés Ötlet: Bizonyos csúcsokat kiszínezünk pirosra, a többirol polinom idoben el tudjuk dönteni, hogy kiszínezhetok-e kékkel és sárgával. Összköltség: O(2nnc).

A LGORITMUSELMÉLET 17.

EL OADÁS

12

Dinamikus programozás
Táblázat kitöltése soronként, rekurziót használva.

A LGORITMUSELMÉLET 17.

EL OADÁS

12

Dinamikus programozás
Táblázat kitöltése soronként, rekurziót használva. Pascal háromszög, Bellman-Ford, Floyd

A LGORITMUSELMÉLET 17.

EL OADÁS

12

Dinamikus programozás
Táblázat kitöltése soronként, rekurziót használva. Pascal háromszög, Bellman-Ford, Floyd A Hátizsák probléma: Adottak az s1, . . . , sm súlyok, a b súlykorlát, a v1, . . . , vm értékek és a k értékkorlát. A kérdés, hogy van-e olyan I {1, . . . , m} részhalmaz, melyre teljesül, hogy iI si b és iI vi k.

A LGORITMUSELMÉLET 17.

EL OADÁS

12

Dinamikus programozás
Táblázat kitöltése soronként, rekurziót használva. Pascal háromszög, Bellman-Ford, Floyd A Hátizsák probléma: Adottak az s1, . . . , sm súlyok, a b súlykorlát, a v1, . . . , vm értékek és a k értékkorlát. A kérdés, hogy van-e olyan I {1, . . . , m} részhalmaz, melyre teljesül, hogy iI si b és iI vi k. NP-teljes

A LGORITMUSELMÉLET 17.

EL OADÁS

12

Dinamikus programozás
Táblázat kitöltése soronként, rekurziót használva. Pascal háromszög, Bellman-Ford, Floyd A Hátizsák probléma: Adottak az s1, . . . , sm súlyok, a b súlykorlát, a v1, . . . , vm értékek és a k értékkorlát. A kérdés, hogy van-e olyan I {1, . . . , m} részhalmaz, melyre teljesül, hogy iI si b és iI vi k. NP-teljes

A LGORITMUSELMÉLET 17.

EL OADÁS

13

Eloször kisebb problémára oldjuk meg: v(i, a) a maximális elérheto érték az s1, . . . , si súlyokkal, v1, . . . , vi értékekkel és a súlykorláttal megadott feladatra (mivel a maximális értéket keressük, nincs szükség értékkorlátokra).

A LGORITMUSELMÉLET 17.

EL OADÁS

13

Eloször kisebb problémára oldjuk meg: v(i, a) a maximális elérheto érték az s1, . . . , si súlyokkal, v1, . . . , vi értékekkel és a súlykorláttal megadott feladatra (mivel a maximális értéket keressük, nincs szükség értékkorlátokra). Ekkor v(0, a) = v(i, 0) = 0 a, i-re

A LGORITMUSELMÉLET 17.

EL OADÁS

13

Eloször kisebb problémára oldjuk meg: v(i, a) a maximális elérheto érték az s1, . . . , si súlyokkal, v1, . . . , vi értékekkel és a súlykorláttal megadott feladatra (mivel a maximális értéket keressük, nincs szükség értékkorlátokra). Ekkor v(0, a) = v(i, 0) = 0 a, i-re cél v(m, b) 0 0 a q
q aq aq q q q q q q q q q q q

bE q
q q q q q q q q q q

i

v(i, a)

mq
c

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

keresett érték

A LGORITMUSELMÉLET 17.

EL OADÁS

13

Eloször kisebb problémára oldjuk meg: v(i, a) a maximális elérheto érték az s1, . . . , si súlyokkal, v1, . . . , vi értékekkel és a súlykorláttal megadott feladatra (mivel a maximális értéket keressük, nincs szükség értékkorlátokra). Ekkor v(0, a) = v(i, 0) = 0 a, i-re cél v(m, b) 0 0 a q
q aq aq q q q q q q q q q q q

bE q
q q q q q q q q q q

i

v(i, a)

mq
c

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

keresett érték

v(i, a) = max{v(i - 1, a); vi + v(i - 1, a - si)}

A LGORITMUSELMÉLET 17.

EL OADÁS

13

Eloször kisebb problémára oldjuk meg: v(i, a) a maximális elérheto érték az s1, . . . , si súlyokkal, v1, . . . , vi értékekkel és a súlykorláttal megadott feladatra (mivel a maximális értéket keressük, nincs szükség értékkorlátokra). Ekkor v(0, a) = v(i, 0) = 0 a, i-re cél v(m, b) 0 0 a q
q aq aq q q q q q q q q q q q

bE q
q q q q q q q q q q

i

v(i, a)

mq
c

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

q

keresett érték

v(i, a) = max{v(i - 1, a); vi + v(i - 1, a - si)} = Soronként kitöltheto = minden érték két felette levobol számolható.

A LGORITMUSELMÉLET 17.

EL OADÁS

14

Összköltség: O(bL)

nem polinomiális, mert b-tol függ, nem log b-tol!

A LGORITMUSELMÉLET 17.

EL OADÁS

14

Összköltség: O(bL)

nem polinomiális, mert b-tol függ, nem log b-tol!

Definíció. A b egész unáris ábrázolása: 0b := 0 · · · 0 (összesen b darab 0 egymás után).

A LGORITMUSELMÉLET 17.

EL OADÁS

14

Összköltség: O(bL)

nem polinomiális, mert b-tol függ, nem log b-tol!

Definíció. A b egész unáris ábrázolása: 0b := 0 · · · 0 (összesen b darab 0 egymás után). Definíció. Egy feladat egy egész input paramétere apró, ha unárisan számítjuk bele az input hosszába.

A LGORITMUSELMÉLET 17.

EL OADÁS

14

Összköltség: O(bL)

nem polinomiális, mert b-tol függ, nem log b-tol!

Definíció. A b egész unáris ábrázolása: 0b := 0 · · · 0 (összesen b darab 0 egymás után). Definíció. Egy feladat egy egész input paramétere apró, ha unárisan számítjuk bele az input hosszába. Tétel. A Hátizsák probléma apró súlykorlát esetén megoldható polinom idoben.

Algoritmuselmélet 18. eloadás
Katona Gyula Y. Budapesti Muszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b

kiskat@cs.bme.hu
2002 Május 7.

A LGORITMUSELMÉLET 18.

EL OADÁS

1

Közelíto algoritmusok
Hátha nem szükséges pontos megoldás, elég az optimumtól nem túl messze levo is.

A LGORITMUSELMÉLET 18.

EL OADÁS

1

Közelíto algoritmusok
Hátha nem szükséges pontos megoldás, elég az optimumtól nem túl messze levo is. Ládapakolás: Adottak az s1, . . . , sm (racionális) súlyok, 0 si 1. A cél a súlyok elhelyezése minél kevesebb 1 súlykapacitású ládába.

A LGORITMUSELMÉLET 18.

EL OADÁS

1

Közelíto algoritmusok
Hátha nem szükséges pontos megoldás, elég az optimumtól nem túl messze levo is. Ládapakolás: Adottak az s1, . . . , sm (racionális) súlyok, 0 si 1. A cél a súlyok elhelyezése minél kevesebb 1 súlykapacitású ládába. NP-teljes

A LGORITMUSELMÉLET 18.

EL OADÁS

1

Közelíto algoritmusok
Hátha nem szükséges pontos megoldás, elég az optimumtól nem túl messze levo is. Ládapakolás: Adottak az s1, . . . , sm (racionális) súlyok, 0 si 1. A cél a súlyok elhelyezése minél kevesebb 1 súlykapacitású ládába. NP-teljes F F -módszer (first fit): Vegyünk eloször üres ládákat, és számozzuk meg oket az 1, 2, . . . , m egészekkel.

A LGORITMUSELMÉLET 18.

EL OADÁS

1

Közelíto algoritmusok
Hátha nem szükséges pontos megoldás, elég az optimumtól nem túl messze levo is. Ládapakolás: Adottak az s1, . . . , sm (racionális) súlyok, 0 si 1. A cél a súlyok elhelyezése minél kevesebb 1 súlykapacitású ládába. NP-teljes F F -módszer (first fit): Vegyünk eloször üres ládákat, és számozzuk meg oket az 1, 2, . . . , m egészekkel. Tegyük fel, hogy az s1, . . . , si-1 súlyokat már elhelyeztük. Ekkor si kerüljön az elso (legkisebb sorszámú) olyan ládába, amelybe még befér.

A LGORITMUSELMÉLET 18.

EL OADÁS

1

Közelíto algoritmusok
Hátha nem szükséges pontos megoldás, elég az optimumtól nem túl messze levo is. Ládapakolás: Adottak az s1, . . . , sm (racionális) súlyok, 0 si 1. A cél a súlyok elhelyezése minél kevesebb 1 súlykapacitású ládába. NP-teljes F F -módszer (first fit): Vegyünk eloször üres ládákat, és számozzuk meg oket az 1, 2, . . . , m egészekkel. Tegyük fel, hogy az s1, . . . , si-1 súlyokat már elhelyeztük. Ekkor si kerüljön az elso (legkisebb sorszámú) olyan ládába, amelybe még befér.

2. 1.
¨ § ¨

3. 4.
§ ¨ § ¨

5. 6.
§ ¨

7.
§ ¨

8.
§

6. 4. 1.

2.

3.

5.

7.

8.

A LGORITMUSELMÉLET 18.

EL OADÁS

2

Tétel. Jelölje a Ládapakolás probléma egy I inputjára OP T (I) az optimális (minimálisan elegendo), F F (I) pedig az F F -módszer által eredményezett ládaszámot. A probléma tetszoleges I inputjára teljesül, hogy F F (I) 2OP T (I).

A LGORITMUSELMÉLET 18.

EL OADÁS

2

Tétel. Jelölje a Ládapakolás probléma egy I inputjára OP T (I) az optimális (minimálisan elegendo), F F (I) pedig az F F -módszer által eredményezett ládaszámot. A probléma tetszoleges I inputjára teljesül, hogy F F (I) 2OP T (I). Bizonyítás:
m i=1

si OP T (I)

A LGORITMUSELMÉLET 18.

EL OADÁS

2

Tétel. Jelölje a Ládapakolás probléma egy I inputjára OP T (I) az optimális (minimálisan elegendo), F F (I) pedig az F F -módszer által eredményezett ládaszámot. A probléma tetszoleges I inputjára teljesül, hogy F F (I) 2OP T (I). Bizonyítás: F F (I) 2
m i=1 si m i=1 si

OP T (I) = nincs két olyan láda, ami nincs félig kitöltve.

A LGORITMUSELMÉLET 18.

EL OADÁS

2

Tétel. Jelölje a Ládapakolás probléma egy I inputjára OP T (I) az optimális (minimálisan elegendo), F F (I) pedig az F F -módszer által eredményezett ládaszámot. A probléma tetszoleges I inputjára teljesül, hogy F F (I) 2OP T (I). Bizonyítás: i=1 si OP T (I) m F F (I) 2 i=1 si = nincs két olyan láda, ami nincs félig kitöltve. Felhasználjuk, hogy 2x 2 x
m m m

F F (I) 2

si 2
i=1 i=1

si 2OP T (I)



A LGORITMUSELMÉLET 18.

EL OADÁS

2

Tétel. Jelölje a Ládapakolás probléma egy I inputjára OP T (I) az optimális (minimálisan elegendo), F F (I) pedig az F F -módszer által eredményezett ládaszámot. A probléma tetszoleges I inputjára teljesül, hogy F F (I) 2OP T (I). Bizonyítás: i=1 si OP T (I) m F F (I) 2 i=1 si = nincs két olyan láda, ami nincs félig kitöltve. Felhasználjuk, hogy 2x 2 x
m m m

F F (I) 2

si 2
i=1 i=1

si 2OP T (I)



Tétel. [D. S. Johnson és munkatársai, 1976] A probléma tetszoleges I inputjára teljesül, hogy F F (I) 1.7OP T (I) . Továbbá vannak tetszolegesen nagy méretu I inputok, melyekre F F (I) 1.7(OP T (I) - 1).

A LGORITMUSELMÉLET 18.

EL OADÁS

3

F F D-módszer (first fit decreasing): eloször rendezzük a súlyokat nem növo sorrendbe, utána alkalmazzuk az F F -módszert.

A LGORITMUSELMÉLET 18.

EL OADÁS

3

F F D-módszer (first fit decreasing): eloször rendezzük a súlyokat nem növo sorrendbe, utána alkalmazzuk az F F -módszert.

1.

2.
¨

3.
¨

4.
¨

5.


6.
¨

7.


8.

¨

8. 1. 2. 3.

7. 4.

6. 5.

A LGORITMUSELMÉLET 18.

EL OADÁS

3

F F D-módszer (first fit decreasing): eloször rendezzük a súlyokat nem növo sorrendbe, utána alkalmazzuk az F F -módszert.

1.

2.
¨

3.
¨

4.
¨

5.


6.
¨

7.


8.

¨

8. 1. 2. 3.

7. 4.

6. 5.

Tétel. [D. S. Johnson, 1973] Tetszoleges I inputra teljesül, hogy F F D(I) 11 OP T (I) + 4, és 9 tetszolegesen nagy méretu I inputok vannak, melyekre F F D(I) 11 OP T (I). ( 11 = 1.222 . . .) 9 9

A LGORITMUSELMÉLET 18.

EL OADÁS

3

F F D-módszer (first fit decreasing): eloször rendezzük a súlyokat nem növo sorrendbe, utána alkalmazzuk az F F -módszert.

1.

2.
¨

3.
¨

4.
¨

5.


6.
¨

7.


8.

¨

8. 1. 2. 3.

7. 4.

6. 5.

Tétel. [D. S. Johnson, 1973] Tetszoleges I inputra teljesül, hogy F F D(I) 11 OP T (I) + 4, és 9 tetszolegesen nagy méretu I inputok vannak, melyekre F F D(I) 11 OP T (I). ( 11 = 1.222 . . .) 9 9 Tétel. [F. de la Vega, G. S. Lueker] Tetszoleges > 0-hoz van olyan P lineáris algoritmus, amire P (I) (1 + )OP T (I).

A LGORITMUSELMÉLET 18.

EL OADÁS

4

Euklideszi utazó ügynök probléma
Az n pontú Kn teljes gráf élein adott a nemnegatív értéku d súlyfüggvény. Erre teljesül a háromszög-egyenlotlenség: tetszoleges különbözo u, v, w csúcsokra érvényes a d(u, w) d(u, v) + d(v, w) egyenlotlenség (az euklideszi feltétel).

A LGORITMUSELMÉLET 18.

EL OADÁS

4

Euklideszi utazó ügynök probléma
Az n pontú Kn teljes gráf élein adott a nemnegatív értéku d súlyfüggvény. Erre teljesül a háromszög-egyenlotlenség: tetszoleges különbözo u, v, w csúcsokra érvényes a d(u, w) d(u, v) + d(v, w) egyenlotlenség (az euklideszi feltétel). A cél egy minimális összsúlyú Hamilton-kör keresése. Keresünk egy minimális összsúlyú feszítofát (pl. Kruskal). =

A LGORITMUSELMÉLET 18.

EL OADÁS

4

Euklideszi utazó ügynök probléma
Az n pontú Kn teljes gráf élein adott a nemnegatív értéku d súlyfüggvény. Erre teljesül a háromszög-egyenlotlenség: tetszoleges különbözo u, v, w csúcsokra érvényes a d(u, w) d(u, v) + d(v, w) egyenlotlenség (az euklideszi feltétel). A cél egy minimális összsúlyú Hamilton-kör keresése. Keresünk egy minimális összsúlyú feszítofát (pl. Kruskal). =

Ennek összsúlya legyen s = Euler séta hossza 2s.

A LGORITMUSELMÉLET 18.

EL OADÁS

5

Ez nem Hamilton-kör = levágjuk a fölösleges részeket, közben rövidítünk is.

A LGORITMUSELMÉLET 18.

EL OADÁS

5

Ez nem Hamilton-kör = levágjuk a fölösleges részeket, közben rövidítünk is.

Ha az optimális Hamilton-körbol elhagyunk egy élet = egy legalább s súlyú feszítofa

A LGORITMUSELMÉLET 18.

EL OADÁS

5

Ez nem Hamilton-kör = levágjuk a fölösleges részeket, közben rövidítünk is.

Ha az optimális Hamilton-körbol elhagyunk egy élet = egy legalább s súlyú feszítofa A módszer legfeljebb 2-szer akkora utat ad, mint az optimális.

A LGORITMUSELMÉLET 18.

EL OADÁS

5

Ez nem Hamilton-kör = levágjuk a fölösleges részeket, közben rövidítünk is.

Ha az optimális Hamilton-körbol elhagyunk egy élet = egy legalább s súlyú feszítofa A módszer legfeljebb 2-szer akkora utat ad, mint az optimális. JAVA animáció: TSP

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet.

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet. Hátrány: Kis valószínoséggel hibás választ kapunk.

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet. Hátrány: Kis valószínoséggel hibás választ kapunk. Probléma: Adott behelyettesítéssel (fekete dobozzal) egy n-változós f Z[x1, . . . , xn] egész együtthatós polinom. Tudjuk, hogy deg f d. El akarjuk dönteni, hogy f azonosan nulla-e.

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet. Hátrány: Kis valószínoséggel hibás választ kapunk. Probléma: Adott behelyettesítéssel (fekete dobozzal) egy n-változós f Z[x1, . . . , xn] egész együtthatós polinom. Tudjuk, hogy deg f d. El akarjuk dönteni, hogy f azonosan nulla-e. Példa: f (x1, x2, . . . , x2n) = (x1 + x2)(x3 + x4) · · · (x2n-1 + x2n)

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet. Hátrány: Kis valószínoséggel hibás választ kapunk. Probléma: Adott behelyettesítéssel (fekete dobozzal) egy n-változós f Z[x1, . . . , xn] egész együtthatós polinom. Tudjuk, hogy deg f d. El akarjuk dönteni, hogy f azonosan nulla-e. Példa: f (x1, x2, . . . , x2n) = (x1 + x2)(x3 + x4) · · · (x2n-1 + x2n) x11 . . . x1n . . . D = det . xn1 . . . xnn

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet. Hátrány: Kis valószínoséggel hibás választ kapunk. Probléma: Adott behelyettesítéssel (fekete dobozzal) egy n-változós f Z[x1, . . . , xn] egész együtthatós polinom. Tudjuk, hogy deg f d. El akarjuk dönteni, hogy f azonosan nulla-e. Példa: f (x1, x2, . . . , x2n) = (x1 + x2)(x3 + x4) · · · (x2n-1 + x2n) x11 . . . x1n . . . D = det . xn1 . . . xnn Mminél hamarabb szeretnénk találni egy = (1, . . . , n)-t, amire f () = 0.

A LGORITMUSELMÉLET 18.

EL OADÁS

6

Véletlent használó módszerek
Elony: Gyorsabb lehet. Hátrány: Kis valószínoséggel hibás választ kapunk. Probléma: Adott behelyettesítéssel (fekete dobozzal) egy n-változós f Z[x1, . . . , xn] egész együtthatós polinom. Tudjuk, hogy deg f d. El akarjuk dönteni, hogy f azonosan nulla-e. Példa: f (x1, x2, . . . , x2n) = (x1 + x2)(x3 + x4) · · · (x2n-1 + x2n) x11 . . . x1n . . . D = det . xn1 . . . xnn Mminél hamarabb szeretnénk találni egy = (1, . . . , n)-t, amire f () = 0. Pl. egy változóra jól látszik

A LGORITMUSELMÉLET 18.

EL OADÁS

7

A LGORITMUSELMÉLET 18.

EL OADÁS

7

Tétel. [J. Schwartz lemmája] Ha deg f d, és 1, . . . , n egyenletes eloszlású, egymástól független véletlen elemei az {1, . . . , N } d számhalmaznak, akkor f 0 esetén P rob(f () = 0) N .

A LGORITMUSELMÉLET 18.

EL OADÁS

7

Tétel. [J. Schwartz lemmája] Ha deg f d, és 1, . . . , n egyenletes eloszlású, egymástól független véletlen elemei az {1, . . . , N } d számhalmaznak, akkor f 0 esetén P rob(f () = 0) N . Tétel. Az {1, 2, . . . , 2d} halmazból vett véletlen n-komponensu vektor esetén P rob(f () = 0) 1/2, ha f 0. Ekkora halmazból választva tehát legalább 1/2 valószínuséggel adódik tanú. Ha t-szer függetlenül választunk 1 ilyen helyettesítést, akkor legalább 1 - 2t valószínuséggel kapunk tanút.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n)

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n) Ha nem 0 = (li, u(i)) E, i = 1, . . . , n, = teljes párosítás

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n) Ha nem 0 = (li, u(i)) E, i = 1, . . . , n, = teljes párosítás Ha tehát G-ben nincs teljes párosítás, = det M = 0.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n) Ha nem 0 = (li, u(i)) E, i = 1, . . . , n, = teljes párosítás Ha tehát G-ben nincs teljes párosítás, = det M = 0. Ha viszont van G-ben teljes párosítás = nem 0 kifejtési tag

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n) Ha nem 0 = (li, u(i)) E, i = 1, . . . , n, = teljes párosítás Ha tehát G-ben nincs teljes párosítás, = det M = 0. Ha viszont van G-ben teljes párosítás = nem 0 kifejtési tag nem ejthetik ki egymást, mert bármely kettoben van két különbözo változó.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n) Ha nem 0 = (li, u(i)) E, i = 1, . . . , n, = teljes párosítás Ha tehát G-ben nincs teljes párosítás, = det M = 0. Ha viszont van G-ben teljes párosítás = nem 0 kifejtési tag nem ejthetik ki egymást, mert bármely kettoben van két különbözo változó. Az elozo módszerrel eldönthetjük, hogy det M = 0 igaz-e.

A LGORITMUSELMÉLET 18.

EL OADÁS

8

Alkalmazás
Randomizált módszer teljes párosítás keresésére páros gráfban. Legyen G = (L, U ; E) páros gráf, L = {l1, . . . , ln} és U = {u1, . . . , un} M = (mij ) n-szer n-es mátrix = mij = xij 0 ha (li, uj ) E, különben.

Tétel. G-ben akkor és csak akkor van teljes párosítás ha det M = 0. Bizonyítás: A determináns egy tagja = ±m1(1)m2(2) · · · mn(n) Ha nem 0 = (li, u(i)) E, i = 1, . . . , n, = teljes párosítás Ha tehát G-ben nincs teljes párosítás, = det M = 0. Ha viszont van G-ben teljes párosítás = nem 0 kifejtési tag nem ejthetik ki egymást, mert bármely kettoben van két különbözo változó. Az elozo módszerrel eldönthetjük, hogy det M = 0 igaz-e. Hasonlóan megy nem páros gráfokra is.

A LGORITMUSELMÉLET 18.

EL OADÁS

9

Prímtesztelés
Bemeno adatként adott (binárisan) egy m páratlan egész; szeretnénk eldönteni, hogy m prímszám-e.

A LGORITMUSELMÉLET 18.

EL OADÁS

9

Prímtesztelés
Bemeno adatként adott (binárisan) egy m páratlan egész; szeretnénk eldönteni, hogy m prímszám-e. Fermat-teszt (m) 1. Válasszunk egy véletlen a egészet az [1, m) intervallumból. 2. Ha am-1 1 (mod m), akkor a válasz ,,m valószínuleg prím", különben a válasz ,,m összetett".

A LGORITMUSELMÉLET 18.

EL OADÁS

9

Prímtesztelés
Bemeno adatként adott (binárisan) egy m páratlan egész; szeretnénk eldönteni, hogy m prímszám-e. Fermat-teszt (m) 1. Válasszunk egy véletlen a egészet az [1, m) intervallumból. 2. Ha am-1 1 (mod m), akkor a válasz ,,m valószínuleg prím", különben a válasz ,,m összetett". gyors hatványozással ez gyorsan végrehajtható

A LGORITMUSELMÉLET 18.

EL OADÁS

9

Prímtesztelés
Bemeno adatként adott (binárisan) egy m páratlan egész; szeretnénk eldönteni, hogy m prímszám-e. Fermat-teszt (m) 1. Válasszunk egy véletlen a egészet az [1, m) intervallumból. 2. Ha am-1 1 (mod m), akkor a válasz ,,m valószínuleg prím", különben a válasz ,,m összetett". gyors hatványozással ez gyorsan végrehajtható Ha azt kapjuk, hogy ,,m összetett" = ez biztos igaz

A LGORITMUSELMÉLET 18.

EL OADÁS

9

Prímtesztelés
Bemeno adatként adott (binárisan) egy m páratlan egész; szeretnénk eldönteni, hogy m prímszám-e. Fermat-teszt (m) 1. Válasszunk egy véletlen a egészet az [1, m) intervallumból. 2. Ha am-1 1 (mod m), akkor a válasz ,,m valószínuleg prím", különben a válasz ,,m összetett". gyors hatványozással ez gyorsan végrehajtható Ha azt kapjuk, hogy ,,m összetett" = ez biztos igaz Pl.: m = 21 = 7 · 3 és a = 2 = a az m Fermat-tanúja, hiszen 220 4 (mod 21).

A LGORITMUSELMÉLET 18.

EL OADÁS

9

Prímtesztelés
Bemeno adatként adott (binárisan) egy m páratlan egész; szeretnénk eldönteni, hogy m prímszám-e. Fermat-teszt (m) 1. Válasszunk egy véletlen a egészet az [1, m) intervallumból. 2. Ha am-1 1 (mod m), akkor a válasz ,,m valószínuleg prím", különben a válasz ,,m összetett". gyors hatványozással ez gyorsan végrehajtható Ha azt kapjuk, hogy ,,m összetett" = ez biztos igaz Pl.: m = 21 = 7 · 3 és a = 2 = a az m Fermat-tanúja, hiszen 220 4 (mod 21).

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú.

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i Feltehetjük, hogy a, ci relatív prímek m-hez.

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i Feltehetjük, hogy a, ci relatív prímek m-hez. = (aci)m-1 am-1cm-1 am-1 1 (mod m) = aci tanú i

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i Feltehetjük, hogy a, ci relatív prímek m-hez. = (aci)m-1 am-1cm-1 am-1 1 (mod m) = aci tanú i aci mind különbözoek lesznek = legalább annyi tanú, mint nem tanú

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i Feltehetjük, hogy a, ci relatív prímek m-hez. = (aci)m-1 am-1cm-1 am-1 1 (mod m) = aci tanú i aci mind különbözoek lesznek = legalább annyi tanú, mint nem tanú Vannak olyan számok, amiknek nincs tanújuk = Carmichael-számok

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i Feltehetjük, hogy a, ci relatív prímek m-hez. = (aci)m-1 am-1cm-1 am-1 1 (mod m) = aci tanú i aci mind különbözoek lesznek = legalább annyi tanú, mint nem tanú Vannak olyan számok, amiknek nincs tanújuk = Carmichael-számok Pl. 561 = 3 · 11 · 17

A LGORITMUSELMÉLET 18.

EL OADÁS

10

Tétel. Ha m-nek van olyan a Fermat-tanúja (1 a < m és am-1 1 (mod m)), melyre lnko(a, m) = 1, akkor az [1, m) intervallum egészeinek legalább a fele Fermat-tanú. Bizonyítás: Legyen a tanú = am-1 1 (mod m) és c1, c2, . . . , cs nem tanúk = cm-1 1 (mod m) i Feltehetjük, hogy a, ci relatív prímek m-hez. = (aci)m-1 am-1cm-1 am-1 1 (mod m) = aci tanú i aci mind különbözoek lesznek = legalább annyi tanú, mint nem tanú Vannak olyan számok, amiknek nincs tanújuk = Carmichael-számok Pl. 561 = 3 · 11 · 17 Alford, Granville, Pomerance, 1992 = végtelen sok ilyen szám van

A LGORITMUSELMÉLET 18.

EL OADÁS

11

Rabin-Miller teszt
Definíció. Legyen m egy páratlan természetes szám. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. Az 1 a < m egész Rabin­Miller-tanú (m összetettségére), ha az a - 1, a + 1, a
n n
2n

+ 1, . . . , a

2k-1 n

+1

számok egyike sem osztható m-mel.

A LGORITMUSELMÉLET 18.

EL OADÁS

11

Rabin-Miller teszt
Definíció. Legyen m egy páratlan természetes szám. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. Az 1 a < m egész Rabin­Miller-tanú (m összetettségére), ha az a - 1, a + 1, a
n n
2n

+ 1, . . . , a

2k-1 n

+1

számok egyike sem osztható m-mel. Tétel. Ha m prím, akkor m-hez nincs Rabin­Miller-tanú.

A LGORITMUSELMÉLET 18.

EL OADÁS

11

Rabin-Miller teszt
Definíció. Legyen m egy páratlan természetes szám. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. Az 1 a < m egész Rabin­Miller-tanú (m összetettségére), ha az a - 1, a + 1, a
n n
2n

+ 1, . . . , a

2k-1 n

+1

számok egyike sem osztható m-mel. Tétel. Ha m prím, akkor m-hez nincs Rabin­Miller-tanú. Bizonyítás: a
m-1

- 1 = (a - 1)(a + 1)(a

n

n

2n

+ 1) · · · (a

2k-1 n

+ 1)

A LGORITMUSELMÉLET 18.

EL OADÁS

11

Rabin-Miller teszt
Definíció. Legyen m egy páratlan természetes szám. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. Az 1 a < m egész Rabin­Miller-tanú (m összetettségére), ha az a - 1, a + 1, a
n n
2n

+ 1, . . . , a

2k-1 n

+1

számok egyike sem osztható m-mel. Tétel. Ha m prím, akkor m-hez nincs Rabin­Miller-tanú. Bizonyítás: a
m-1

- 1 = (a - 1)(a + 1)(a

n

n

2n

+ 1) · · · (a

2k-1 n

+ 1)

m prím = a kis Fermat-tétel szerint m osztja a bal oldalt.

A LGORITMUSELMÉLET 18.

EL OADÁS

11

Rabin-Miller teszt
Definíció. Legyen m egy páratlan természetes szám. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. Az 1 a < m egész Rabin­Miller-tanú (m összetettségére), ha az a - 1, a + 1, a
n n
2n

+ 1, . . . , a

2k-1 n

+1

számok egyike sem osztható m-mel. Tétel. Ha m prím, akkor m-hez nincs Rabin­Miller-tanú. Bizonyítás: a
m-1

- 1 = (a - 1)(a + 1)(a

n

n

2n

+ 1) · · · (a

2k-1 n

+ 1)

m prím = a kis Fermat-tétel szerint m osztja a bal oldalt. = m osztja a jobb oldal valamelyik tényezojét = a nem Rabin­Miller-tanú.

A LGORITMUSELMÉLET 18.

EL OADÁS

11

Rabin-Miller teszt
Definíció. Legyen m egy páratlan természetes szám. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. Az 1 a < m egész Rabin­Miller-tanú (m összetettségére), ha az a - 1, a + 1, a
n n
2n

+ 1, . . . , a

2k-1 n

+1

számok egyike sem osztható m-mel. Tétel. Ha m prím, akkor m-hez nincs Rabin­Miller-tanú. Bizonyítás: a
m-1

- 1 = (a - 1)(a + 1)(a

n

n

2n

+ 1) · · · (a

2k-1 n

+ 1)

m prím = a kis Fermat-tétel szerint m osztja a bal oldalt. = m osztja a jobb oldal valamelyik tényezojét = a nem Rabin­Miller-tanú. Tétel. Ha m összetett, akkor az 1 a < m feltételt teljesíto a egészeknek legalább a fele Rabin­Miller-tanú.

A LGORITMUSELMÉLET 18.

EL OADÁS

12

Rabin-Miller teszt
RM (m) 1. Írjuk fel m - 1-et m - 1 = 2kn alakban, ahol n páratlan. 2. Válasszunk egy véletlen a egészet az [1, m) intervallumból. k-1 3. Ha az an - 1, an + 1, a2n + 1, . . . , a2 n + 1 számok egyike sem osztható m-mel, akkor megállunk azzal a válasszal, hogy ,,m összetett", különben megállunk azzal a válasszal, hogy ,,m valószínuleg prím".

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit?

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet.

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon.

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel = egy száznál rövidebb jelsorozat

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel = egy száznál rövidebb jelsorozat írógép-paradoxon

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel = egy száznál rövidebb jelsorozat írógép-paradoxon n = 2k - 10 alakú számok bináris kódja k = log2 n hosszú

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel = egy száznál rövidebb jelsorozat írógép-paradoxon n = 2k - 10 alakú számok bináris kódja k = log2 n hosszú Viszont a 2k - 10 kifejezés hossza csak log2 log2 n+ konstans.

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel = egy száznál rövidebb jelsorozat írógép-paradoxon n = 2k - 10 alakú számok bináris kódja k = log2 n hosszú Viszont a 2k - 10 kifejezés hossza csak log2 log2 n+ konstans. Rögzítsünk egy U univerzális Turing-gépet, és értelmezzük az x I szó bonyolultságát mint a legrövidebb y#z input szó hosszát, melyre U az x szót számítja ki.

A LGORITMUSELMÉLET 18.

EL OADÁS

13

Kolmogorov-bonyolultság
Milyen röviden lehet leírni valamit? Tekintsük azokat a természetes számokat, amelyeket magyar nyelven legfeljebb 100 billentyu-leütéssel definiálni lehet. A billentyuk száma véges = ezen számok halmaza is véges = Van tehát egy legkisebb természetes szám, amit nem lehet definiálni a fenti módon. = az a legkisebb szám, amely nem definiálható magyar nyelven legfeljebb száz billentyu-leütéssel = egy száznál rövidebb jelsorozat írógép-paradoxon n = 2k - 10 alakú számok bináris kódja k = log2 n hosszú Viszont a 2k - 10 kifejezés hossza csak log2 log2 n+ konstans. Rögzítsünk egy U univerzális Turing-gépet, és értelmezzük az x I szó bonyolultságát mint a legrövidebb y#z input szó hosszát, melyre U az x szót számítja ki. Az U gép választásától nagy mértékben független, és aszimptotikus értelemben jó közelítését adja az ,,optimumnak".

A LGORITMUSELMÉLET 18.

EL OADÁS

14

Definíció. Legyen M egy TG ami az fM : I I parciális függvényt számolja ki. Jelöljük CM (x)-szel annak a legrövidebb bemeno szónak a hosszát, mellyel elindítva M az x szót adja eredményül: CM (x) = min{|y| : y I , fM (y) = x} ha ilyen y létezik, különben.

A LGORITMUSELMÉLET 18.

EL OADÁS

14

Definíció. Legyen M egy TG ami az fM : I I parciális függvényt számolja ki. Jelöljük CM (x)-szel annak a legrövidebb bemeno szónak a hosszát, mellyel elindítva M az x szót adja eredményül: CM (x) = min{|y| : y I , fM (y) = x} ha ilyen y létezik, különben.

A CM (x) szám méri, hogy x mennyire nyomható össze akkor, ha a kibontást, vagyis az összenyomott szó visszafejtését az M algoritmus végzi.

A LGORITMUSELMÉLET 18.

EL OADÁS

14

Definíció. Legyen M egy TG ami az fM : I I parciális függvényt számolja ki. Jelöljük CM (x)-szel annak a legrövidebb bemeno szónak a hosszát, mellyel elindítva M az x szót adja eredményül: CM (x) = min{|y| : y I , fM (y) = x} ha ilyen y létezik, különben.

A CM (x) szám méri, hogy x mennyire nyomható össze akkor, ha a kibontást, vagyis az összenyomott szó visszafejtését az M algoritmus végzi. konkrét x-re = M1 gép, hogy CM1 (x) = 0

A LGORITMUSELMÉLET 18.

EL OADÁS

14

Definíció. Legyen M egy TG ami az fM : I I parciális függvényt számolja ki. Jelöljük CM (x)-szel annak a legrövidebb bemeno szónak a hosszát, mellyel elindítva M az x szót adja eredményül: CM (x) = min{|y| : y I , fM (y) = x} ha ilyen y létezik, különben.

A CM (x) szám méri, hogy x mennyire nyomható össze akkor, ha a kibontást, vagyis az összenyomott szó visszafejtését az M algoritmus végzi. konkrét x-re = M1 gép, hogy CM1 (x) = 0 és M2 gép, hogy CM2 (x) = .

A LGORITMUSELMÉLET 18.

EL OADÁS

14

Definíció. Legyen M egy TG ami az fM : I I parciális függvényt számolja ki. Jelöljük CM (x)-szel annak a legrövidebb bemeno szónak a hosszát, mellyel elindítva M az x szót adja eredményül: CM (x) = min{|y| : y I , fM (y) = x} ha ilyen y létezik, különben.

A CM (x) szám méri, hogy x mennyire nyomható össze akkor, ha a kibontást, vagyis az összenyomott szó visszafejtését az M algoritmus végzi. konkrét x-re = M1 gép, hogy CM1 (x) = 0 és M2 gép, hogy CM2 (x) = . Tétel. [invariancia-tétel] Legyen U egy univerzális Turing-gép. Ekkor tetszoleges M Turing-gépre létezik egy (csak M -tol függo) cM Z+ állandó, mellyel minden x I szóra teljesül a következo egyenlotlenség: CU (x) CM (x) + cM .

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki:

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x)

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül = CU (x) |w#y| = |w#| + |y| = |w#| + CM (x)

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül = CU (x) |w#y| = |w#| + |y| = |w#| + CM (x) = cM = |w#|



A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül = CU (x) |w#y| = |w#| + |y| = |w#| + CM (x) = cM = |w#|



Tétel. Legyenek U1 és U2 univerzális Turing-gépek, melyek input abc-je I = {0, 1}. Ekkor van olyan c = cU1,U2 állandó, hogy minden x I szóra |CU1 (x) - CU2 (x)| c.

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül = CU (x) |w#y| = |w#| + |y| = |w#| + CM (x) = cM = |w#|



Tétel. Legyenek U1 és U2 univerzális Turing-gépek, melyek input abc-je I = {0, 1}. Ekkor van olyan c = cU1,U2 állandó, hogy minden x I szóra |CU1 (x) - CU2 (x)| c. Bizonyítás: CU1 (x) CU2 (x) + cU2 és CU2 (x) CU1 (x) + cU1



A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül = CU (x) |w#y| = |w#| + |y| = |w#| + CM (x) = cM = |w#|



Tétel. Legyenek U1 és U2 univerzális Turing-gépek, melyek input abc-je I = {0, 1}. Ekkor van olyan c = cU1,U2 állandó, hogy minden x I szóra |CU1 (x) - CU2 (x)| c. Bizonyítás: CU1 (x) CU2 (x) + cU2 és CU2 (x) CU1 (x) + cU1



Definíció. Rögzítsünk egy U univerzális Turing gépet. Legyen x I . A C(x) := CU (x) mennyiség az x szó Kolmogorov-bonyolultsága.

A LGORITMUSELMÉLET 18.

EL OADÁS

15

Bizonyítás: M gép leírása = w I legyen y egy legrövidebb szó, amibol M az x-et bontja ki: = y I , fM (y) = x, és |y| = CM (x) = U a w#y bemeneten x-et adja eredményül = CU (x) |w#y| = |w#| + |y| = |w#| + CM (x) = cM = |w#|



Tétel. Legyenek U1 és U2 univerzális Turing-gépek, melyek input abc-je I = {0, 1}. Ekkor van olyan c = cU1,U2 állandó, hogy minden x I szóra |CU1 (x) - CU2 (x)| c. Bizonyítás: CU1 (x) CU2 (x) + cU2 és CU2 (x) CU1 (x) + cU1



Definíció. Rögzítsünk egy U univerzális Turing gépet. Legyen x I . A C(x) := CU (x) mennyiség az x szó Kolmogorov-bonyolultsága.

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =?

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =? = C függvény nem rekurzív

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =? = C függvény nem rekurzív Vizsgálhatjuk a C(xn) alakú sorozatok növekedési rendjét, ahol x1, x2, . . . növekvo hosszúságú I -beli szavak sorozata.

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =? = C függvény nem rekurzív Vizsgálhatjuk a C(xn) alakú sorozatok növekedési rendjét, ahol x1, x2, . . . növekvo hosszúságú I -beli szavak sorozata. Pl. az n = 2k - 10 alakú számokra C(n) log2 log2 n + c teljesül alkalmas c állandóval.

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =? = C függvény nem rekurzív Vizsgálhatjuk a C(xn) alakú sorozatok növekedési rendjét, ahol x1, x2, . . . növekvo hosszúságú I -beli szavak sorozata. Pl. az n = 2k - 10 alakú számokra C(n) log2 log2 n + c teljesül alkalmas c állandóval. Tétel. Legyen x I . Ekkor C(x) |x| + k, ahol k egy x-tol független állandó.

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =? = C függvény nem rekurzív Vizsgálhatjuk a C(xn) alakú sorozatok növekedési rendjét, ahol x1, x2, . . . növekvo hosszúságú I -beli szavak sorozata. Pl. az n = 2k - 10 alakú számokra C(n) log2 log2 n + c teljesül alkalmas c állandóval. Tétel. Legyen x I . Ekkor C(x) |x| + k, ahol k egy x-tol független állandó. Bizonyítás: x-hez hozzá kell írni egy semmit nem csináló TG kódját.

A LGORITMUSELMÉLET 18.

EL OADÁS

16

C(0010) =? = C függvény nem rekurzív Vizsgálhatjuk a C(xn) alakú sorozatok növekedési rendjét, ahol x1, x2, . . . növekvo hosszúságú I -beli szavak sorozata. Pl. az n = 2k - 10 alakú számokra C(n) log2 log2 n + c teljesül alkalmas c állandóval. Tétel. Legyen x I . Ekkor C(x) |x| + k, ahol k egy x-tol független állandó. Bizonyítás: x-hez hozzá kell írni egy semmit nem csináló TG kódját. Definíció. Az x I szó összenyomhatatlan, ha C(x) |x|.

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó.

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8.

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is.

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van:

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van: 1 + 2 + · · · + 2k-1 + 2k = 2k+1 - 1

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van: 1 + 2 + · · · + 2k-1 + 2k = 2k+1 - 1 Hk = {x I : C(x) k}

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van: 1 + 2 + · · · + 2k-1 + 2k = 2k+1 - 1 Hk = {x I : C(x) k} k = n - 1 = n hosszú szavak száma 2n = Hn-1-ben legfeljebb 2n - 1 szó van

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van: 1 + 2 + · · · + 2k-1 + 2k = 2k+1 - 1 Hk = {x I : C(x) k} k = n - 1 = n hosszú szavak száma 2n = Hn-1-ben legfeljebb 2n - 1 szó van = Van legalább n hosszú kódú szó.

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van: 1 + 2 + · · · + 2k-1 + 2k = 2k+1 - 1 Hk = {x I : C(x) k} k = n - 1 = n hosszú szavak száma 2n = Hn-1-ben legfeljebb 2n - 1 szó van = Van legalább n hosszú kódú szó. A Hn-8 halmaznak legfeljebb 2n-7 - 1 < 2n-7 eleme van.

A LGORITMUSELMÉLET 18.

EL OADÁS

17

Tétel. Legyen k Z+. Legfeljebb 2k+1 - 1 x I szó van, melyre C(x) k. Következésképpen minden n 1 egészre létezik n hosszúságú összenyomhatatlan szó. Ha n > 8, akkor az n hosszú I -beli szavak több, mint 99 százalékának a Kolmogorov-bonyolultsága nagyobb, mint n - 8. Bizonyítás: Egyforma y-okra egyforma lesz fU (y) = x is. = legfeljebb annyi k-nál nem hosszabb kódú x lehet, amennyi k-nál nem hosszabb szó van: 1 + 2 + · · · + 2k-1 + 2k = 2k+1 - 1 Hk = {x I : C(x) k} k = n - 1 = n hosszú szavak száma 2n = Hn-1-ben legfeljebb 2n - 1 szó van = Van legalább n hosszú kódú szó. A Hn-8 halmaznak legfeljebb 2n-7 - 1 < 2n-7 eleme van. = A kedvezotlen esetek aránya az n hosszú szavak között legfeljebb n-7 n 2 /2 = 1/128 < 1/100.

Hasonló témájú dokumentumok
A mások által feltöltött dokumentumokat értékelheted. Ha úgy ítéled meg, hogy a vizsgára való felkészülés szempontjából hasznos volt egy dokumentum, akkor adj rá sokcsillagos értékelést.
Ha hibákat tartalmaz, vagy egyéb probléma van vele, akkor keveset.
A dokumentumok sorrendje az értékelések alapján adódik. Ami fentebb van a listában, azt hasznosabbnak ítélték társaid. Az új dokumentumok pedig (értékelések hiányában) szintén a lista tetején kezdenek.

Hozzászólások

Ha észrevételed van egy dokumentummal kapcsolatban (például hibát találtál benne), akkor a Hozzászólások részben jelezheted. Az olyan jellegű kérdéseket mint pl.: A 2. feladat 4. sorából milyen átalakítással jutottunk az 5. sorban szereplő képlethez? - szintén ide érdemes írni
Egy tipp az oldalhoz! - Küldj üzenetet a szakod vagy évfolyamod összes hallgatója számára. Hasznos lehet ha választ keresel egy kérdésre, vagy mindenkivel tudatni akarsz egy információt. Ehhez használd az Üzeneteken belül a baloldali dobozban az Üzenet írását.

Cimkefelhő

10.16-2 2008 tavasz acélgyártás államháztartás általános kémia alternatív energiaforrások analízis bikém diák egészségszociológia elte épszerk épszerk 3 épülettervezés 4 fehérje filozófia tételek fogalomtár fogyasztás forma gazdjog gótika iii gyakorlatok házi hull integrálás ítéletlogika jog középérték közoktatási rendszer magyar barok makroökonómia matek 1 matek házi 1 megoldások 1 matrix médiakutatás minden ami valszám mindennapok kémiája műanyag őstörténet parazitológia rendszerek sejtbiosz szerves kémia tájékoztató török tőzsde vallás vállpénzügy világirodalom 2. vizsgakérdés