• Nem Talált Eredményt

Algoritmuselmélet 1. el ˝oadás

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Algoritmuselmélet 1. el ˝oadás"

Copied!
93
0
0

Teljes szövegt

(1)

Katona Gyula Y.

Budapesti M ˝uszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz.

I. B. 137/b

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

(2)
(3)

• Rónyai Lajos–Ivanyos Gábor–Szabó Réka:

Algoritmusok, TYPOTEX, 1999

(4)

• Rónyai Lajos–Ivanyos Gábor–Szabó Réka:

Algoritmusok, TYPOTEX, 1999

• Feladatgy ˝ujtemény letölthet ˝o:

http://www.cs.bme.hu/˜kiskat/algel

(5)

• Rónyai Lajos–Ivanyos Gábor–Szabó Réka:

Algoritmusok, TYPOTEX, 1999

• Feladatgy ˝ujtemény letölthet ˝o:

http://www.cs.bme.hu/˜kiskat/algel

• Egyéb információk, hirdetmények ugyanitt.

(6)
(7)

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 lehet ˝osé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 id ˝opontjában lehet szóban felelni, amivel ±1 jegyet lehet változtatni.

(8)

• Egyel ˝ore nem definiáljuk rendesen az algoritmus fogalmát.

(9)

• Egyel ˝ore nem definiáljuk rendesen az algoritmus fogalmát.

• Eljárás, recept, módszer.

(10)

• Egyel ˝ore 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értelm ˝uen megfogalmazottak ahhoz, hogy gépiesen végrehajthatók legyenek.

(11)

Al Khvarizimi (Mohamed ibn Músza) bagdadi matematikus a IX. században könyvet írt az egészekkel való alapm ˝uveletek végzésér ˝ol.

(12)

Al Khvarizimi (Mohamed ibn Músza) bagdadi matematikus a IX. században könyvet írt az egészekkel való alapm ˝uveletek végzésér ˝ol.

algoritmus ↔ számítógép program

(13)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

(14)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

• Az input méretét legtöbbször n-nel jelöljük.

(15)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

• 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éret ˝u az input, akkor az algoritmus f(n) lépést végez.

(16)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

• 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éret ˝u az input, akkor az algoritmus f(n) lépést végez.

• Igazából az f függvény az érdekes.

(17)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

• 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éret ˝u 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

(18)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

• 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éret ˝u 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

(19)

• Legtöbbször csak a lépésszám nagyságrendje érdekes.

Hogyan függ a lépésszám az input méretét ˝ol?

• 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éret ˝u 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

(20)

Definíció. Ha f(x) és g(x) az R+ egy részhalmazán értelmezett valós

értékeket felvev ˝o 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.

(21)

Definíció. Ha f(x) és g(x) az R+ egy részhalmazán értelmezett valós

értékeket felvev ˝o 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

(22)

Definíció. Ha f(x) és g(x) az R+ egy részhalmazán értelmezett valós

értékeket felvev ˝o 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)

(23)

Definíció. Ha f(x) és g(x) az R+ egy részhalmazán értelmezett valós

értékeket felvev ˝o 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.

(24)

Definíció. Ha f(x) és g(x) az R+ egy részhalmazán értelmezett valós

értékeket felvev ˝o 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

(25)

Definíció. Ha f(x) és g(x) az R+ egy részhalmazán értelmezett valós

értékeket felvev ˝o 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)

(26)

Definíció. Ha f = O(g) és f = Ω(g) is teljesül, akkor f = Θ(g).

(27)

Definíció. Ha f = O(g) és f = Ω(g) is teljesül, akkor f = Θ(g).

Például:

• 100n − 300 = Θ(n)

(28)

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)

(29)

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

f(n)

g(n) → 0, ha n → ∞.

(30)

Definíció. Legyenek f(n) és g(n) a pozitív egészeken értelmezett valós érték ˝u 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+300n2 → 0 ha n → ∞

(31)

Definíció. Legyenek f(n) és g(n) a pozitív egészeken értelmezett valós érték ˝u 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+300n2 → 0 ha n → ∞

• 5n2 + 3n = o(n3)

• n4 + 5n3 = o(n4 log2 n)

• n1000 = o(2n)

(32)

Algoritmikus probléma −→

A

modell −→

B

program

(33)

Algoritmikus probléma −→

A

modell −→

B

program

A: pontosítás, egyszer ˝usítés, absztrakció, lényegtelen elemek kisz ˝urése, a lényeg kihámozása

(34)

Algoritmikus probléma −→

A

modell −→

B

program

A: pontosítás, egyszer ˝usítés, absztrakció, lényegtelen elemek kisz ˝urése, a lényeg kihámozása

Modell: sokféle lehet, elég tág, de elég egyszer ˝u, formalizált, pontos

(35)

Algoritmikus probléma −→

A

modell −→

B

program

A: pontosítás, egyszer ˝usítés, absztrakció, lényegtelen elemek kisz ˝urése, a lényeg kihámozása

Modell: sokféle lehet, elég tág, de elég egyszer ˝u, formalizált, pontos

B: hatékony algoritmus, bemen ˝o adatok → eredmény, érdemes foglalkozni a kapott algoritmus elemzésével, értékelésével, megvizsgálva, hogy a

módszer mennyire hatékony

(36)

Arthur király fényes udvarában 150 lovag és 150 udvarhölgy él.

A király, aki közismert civilizációs er ˝ofeszítéseir ˝ol, 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á?

(37)

Arthur király fényes udvarában 150 lovag és 150 udvarhölgy él.

A király, aki közismert civilizációs er ˝ofeszítéseir ˝ol, 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á?

(38)

ábrázolásáról van szó.

(39)

ábrázolásáról van szó.

Nagy darab pergament vesz el ˝o, és nekilát egy páros gráfot rajzolni.

(40)

ábrázolásáról van szó.

Nagy darab pergament vesz el ˝o, é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 éleib ˝ol, 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.

(41)

"

"

"

"

"

"

A A

A A

A A

AA A A A A A A A A AA

3

A A

AAU

a b

d c e

(42)

"

"

"

"

"

"

A A

A A

A A

AA A A A A A A A A AA

3

A A

AAU

a b

d c e

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

(43)

"

"

"

"

"

"

A A

A A

A A

AA A A A A A A A A AA

3

A A

AAU

a b

d c e

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?

(44)

"

"

"

"

"

"

A A

A A

A A

AA A A A A A A A A AA

3

A A

AAU

a b

d c e

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?

@

@

@

@

@

@

@

@@ , ,

, ,

, ,

, ,

, ,

!!

!!

!!

!!

!!

!!

!!

!!

!!

!!

!

ac bc ec

ad bd ed

I. II. III.

I. II. III.

(45)

"

"

"

"

"

"

A A

A A

A A

AA A A A A A A A A AA

3

A A

AAU

a b

d c e

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?

@

@

@

@

@

@

@

@@ , ,

, ,

, ,

, ,

, ,

!!

!!

!!

!!

!!

!!

!!

!!

!!

!!

!

ac bc ec

ad bd ed

I. II. III.

I. II. III.

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

(46)

Egy adott átjátszóhoz egy adott frenkvenciát rendelnek.

Egy telefon a közelben lev ˝o átjátszók közül választ.

„Közel lev ˝o” átjátszók frekvenciája különbözzön.

(47)

Egy adott átjátszóhoz egy adott frenkvenciát rendelnek.

Egy telefon a közelben lev ˝o átjátszók közül választ.

„Közel lev ˝o” átjátszók frekvenciája különbözzön.

B A

A

A

B

A C

C

(48)

Definíció. A G irányított gráf s ∈ V csúcsa szuperforrás, ha minden s-t ˝ol különböz ˝o y ∈ V csúcs esetén teljesül, hogy (s, y) ∈ E és (y, s) 6∈ E. A szuperforrás olyan s csúcs, amib ˝ol a gráf minden más csúcsába él vezet, az s-be pedig egyetlen más csúcsból sem megy él.

(49)

Definíció. A G irányított gráf s ∈ V csúcsa szuperforrás, ha minden s-t ˝ol különböz ˝o y ∈ V csúcs esetén teljesül, hogy (s, y) ∈ E és (y, s) 6∈ E. A szuperforrás olyan s csúcs, amib ˝ol 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övetkez ˝o: 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.

(50)

Definíció. A G irányított gráf s ∈ V csúcsa szuperforrás, ha minden s-t ˝ol különböz ˝o y ∈ V csúcs esetén teljesül, hogy (s, y) ∈ E és (y, s) 6∈ E. A szuperforrás olyan s csúcs, amib ˝ol 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övetkez ˝o: 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.

Els ˝o ötlet: Sorra vesszük az i ∈ V csúcsokat, mindegyikr ˝ol megnézve, hogy szuperforrás-e.

(51)

Definíció. A G irányított gráf s ∈ V csúcsa szuperforrás, ha minden s-t ˝ol különböz ˝o y ∈ V csúcs esetén teljesül, hogy (s, y) ∈ E és (y, s) 6∈ E. A szuperforrás olyan s csúcs, amib ˝ol 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övetkez ˝o: 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.

Els ˝o ötlet: Sorra vesszük az i ∈ V csúcsokat, mindegyikr ˝ol megnézve, hogy szuperforrás-e.

Ennek költsége: az A mátrix 2(n2 − n) elemét vizsgáljuk meg.

(52)

Definíció. A G irányított gráf s ∈ V csúcsa szuperforrás, ha minden s-t ˝ol különböz ˝o y ∈ V csúcs esetén teljesül, hogy (s, y) ∈ E és (y, s) 6∈ E. A szuperforrás olyan s csúcs, amib ˝ol 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övetkez ˝o: 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.

Els ˝o ötlet: Sorra vesszük az i ∈ V csúcsokat, mindegyikr ˝ol 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) 6∈ E akkor i nem lehet szuperforrás

(53)

i := 1, j := n;

while i 6= 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 ellen ˝orizzük a továbbiakban. *)

for k = 1 to n do

if k 6= i és (A[i, k] 6= 1 vagy A[k, i] 6= 0) then return(nincs szuperforrás) return(i szuperforrás).

(54)

i := 1, j := n;

while i 6= 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 ellen ˝orizzük a továbbiakban. *)

for k = 1 to n do

if k 6= i és (A[i, k] 6= 1 vagy A[k, i] 6= 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 ellen ˝ozésnél

(55)

i := 1, j := n;

while i 6= 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 ellen ˝orizzük a továbbiakban. *)

for k = 1 to n do

if k 6= i és (A[i, k] 6= 1 vagy A[k, i] 6= 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 ellen ˝ozésnél

Mennyire jó ez?

(56)

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.

(57)

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.

(58)

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 ellen ˝orizni, hogy szuperforrás-e.

(59)

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 ellen ˝orizni, hogy szuperforrás-e.

1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást.

(60)

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 ellen ˝orizni, hogy szuperforrás-e.

1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást.

Egy algoritmus els ˝o 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.

(61)

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 ellen ˝orizni, hogy szuperforrás-e.

1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást.

Egy algoritmus els ˝o 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 els ˝o 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.

(62)

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 ellen ˝orizni, hogy szuperforrás-e.

1 él megkérdezése legfeljebb 1 csúcsot zár ki mint lehetséges szuperforrást.

Egy algoritmus els ˝o 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 els ˝o 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

T(n) ≥ 2n − 2 − n − 2

2 + n − 2 = 3n − 4 − n − 2 2 .

Azaz a fenti algoritmus közel optimális.

(63)

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.

(64)

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övetkez ˝ok:

1. a 6< a minden a ∈ U elemre (< irreflexív);

2. Ha a, b, c ∈ U, a < b, és b < c, akkor a < c (< tranzitív);

3. Tetsz ˝oleges a 6= b ∈ U elemekre vagy a < b, vagy b < a fennáll (<

teljes).

(65)

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övetkez ˝ok:

1. a 6< a minden a ∈ U elemre (< irreflexív);

2. Ha a, b, c ∈ U, a < b, és b < c, akkor a < c (< tranzitív);

3. Tetsz ˝oleges a 6= 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.

(66)

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övetkez ˝ok:

1. a 6< a minden a ∈ U elemre (< irreflexív);

2. Ha a, b, c ∈ U, a < b, és b < c, akkor a < c (< tranzitív);

3. Tetsz ˝oleges a 6= 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 bet ˝uinek Σ halmaza; a < rendezést az abc-sorrend adja. Az x bet ˝u kisebb, mint az y bet ˝u, ha x el ˝obb szerepel az abc-sorrendben, mint y.

(67)

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övetkez ˝ok:

1. a 6< a minden a ∈ U elemre (< irreflexív);

2. Ha a, b, c ∈ U, a < b, és b < c, akkor a < c (< tranzitív);

3. Tetsz ˝oleges a 6= 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 bet ˝uinek Σ halmaza; a < rendezést az abc-sorrend adja. Az x bet ˝u kisebb, mint az y bet ˝u, ha x el ˝obb szerepel az abc-sorrendben, mint y.

(68)

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 6= yj. Tehát például kar < karika és bor < bot.

(69)

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 6= 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ökken ˝o

v1, v2, . . . , vn sorrendbe.

(70)

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 6= 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ökken ˝o

v1, v2, . . . , vn sorrendbe.

Input: tömb, láncolt lista, (vagy bármi)

(71)

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 6= 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ökken ˝o

v1, v2, . . . , vn sorrendbe.

Input: tömb, láncolt lista, (vagy bármi) Output: általában, mint az Input

(72)

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 6= 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ökken ˝o

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

(73)

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 6= 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ökken ˝o

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 el ˝oforduló feladat, de el ˝ojön, mint hasznos adatstruktúra is.

(74)

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 6= 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ökken ˝o

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 el ˝oforduló feladat, de el ˝ojön, mint hasznos adatstruktúra is.

Rendezett halmazban könnyebb keresni (pl. telefonkönyv).

(75)

Bar Kochba játék: gondolok egy számot 1 − 100-ig, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

(76)

Bar Kochba játék: gondolok egy számot 1 − 100-ig, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn1 < sn} és s ∈ U. részhalmaza.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s ∈ S. Hány összehasonlítás kell?

(77)

Bar Kochba játék: gondolok egy számot 1 − 100-ig, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn1 < 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.

(78)

Bar Kochba játék: gondolok egy számot 1 − 100-ig, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn1 < 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.

(79)

Bar Kochba játék: gondolok egy számot 1 − 100-ig, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Adott az (U, <) rendezett halmaz véges S = {s1 < s2 < . . . < sn1 < 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

(80)

Oszd meg és uralkodj: el ˝oször a középs ˝o si-vel hasonlítunk.

(81)

Oszd meg és uralkodj: el ˝oször a középs ˝o si-vel hasonlítunk.

Hasonló feladatot kapunk egy S1 halmazra, amire viszont |S1| ≤ |S|/2.

(82)

Oszd meg és uralkodj: el ˝oször a középs ˝o 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

(83)

Oszd meg és uralkodj: el ˝oször a középs ˝o 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)

(84)

Oszd meg és uralkodj: el ˝oször a középs ˝o 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) 15, 22, 25 , 37,48, 56, 70, 82 (2)

(85)

Oszd meg és uralkodj: el ˝oször a középs ˝o 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) 15, 22, 25 , 37,48, 56, 70, 82 (2) 15, 22 , 25, 37, 48, 56, 70, 82 (3)

(86)

Oszd meg és uralkodj: el ˝oször a középs ˝o 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) 15, 22, 25 , 37,48, 56, 70, 82 (2) 15, 22 , 25, 37, 48, 56, 70, 82 (3) 15 , 22, 25, 37, 48, 56, 70, 82 (4)

(87)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

(88)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

=⇒ 2k ≤ n =⇒ k ≤ blog2 nc

(89)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

=⇒ 2k ≤ n =⇒ k ≤ blog2 nc

Ez k + 1 összehasonlítás volt. =⇒ k + 1 ≤ blog2 nc + 1 ≤ dlog2(n + 1)e

(90)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

=⇒ 2k ≤ n =⇒ k ≤ blog2 nc

Ez k + 1 összehasonlítás volt. =⇒ k + 1 ≤ blog2 nc + 1 ≤ dlog2(n + 1)e Tétel. Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben

kevesebb mint dlog2(n + 1)e 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.

(91)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

=⇒ 2k ≤ n =⇒ k ≤ blog2 nc

Ez k + 1 összehasonlítás volt. =⇒ k + 1 ≤ blog2 nc + 1 ≤ dlog2(n + 1)e Tétel. Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben

kevesebb mint dlog2(n + 1)e 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 lehet ˝oség, akkor a nem esetén szóba jön még n − x lehet ˝oség.

(92)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

=⇒ 2k ≤ n =⇒ k ≤ blog2 nc

Ez k + 1 összehasonlítás volt. =⇒ k + 1 ≤ blog2 nc + 1 ≤ dlog2(n + 1)e Tétel. Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben

kevesebb mint dlog2(n + 1)e 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 lehet ˝oség, akkor a nem esetén szóba jön még n − x lehet ˝oség.

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n/2 marad. =⇒ k kérdés után is marad még 2nk

lehet ˝oség.

(93)

Addig kell csinálni, amig |Sk| ≥ 1, vagyis 1 ≤ 2nk.

=⇒ 2k ≤ n =⇒ k ≤ blog2 nc

Ez k + 1 összehasonlítás volt. =⇒ k + 1 ≤ blog2 nc + 1 ≤ dlog2(n + 1)e Tétel. Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben

kevesebb mint dlog2(n + 1)e 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 lehet ˝oség, akkor a nem esetén szóba jön még n − x lehet ˝oség.

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n/2 marad. =⇒ k kérdés után is marad még 2nk

lehet ˝oség.

Ha tehát n

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.

=⇒ 2nk > 1 =⇒ n > 2k =⇒ log2 n > k.

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

A szektor öt paraméterénél a i—edik gyártmány teljes tartalékának kiaknázásánál mutatkozó, vagyis a teljes tartalékok gépi összegével arányos fajlagos műszaki

A két koncentráció értéke változó lehet az i-edik komponens zónájában (többnyire az oszlop hossztengelye irányában Gauss-görbe szerinti eloszlást mutatnak),

Ezek felfoghatók úgy is, hogy az egyik játékos az adott A mátrix egy sorát, a másik pedig egy oszlopát választhatja, és ha ez az i-edik illetve j-edik, akkor az els˝o a i, j

Az atomenergiával kapcsolatban megkérdezett két csoport hasonló módon nem volt tisztában az erőműben zajló folyamatokkal. Azok, akik őszintén választották azt,

Hogy eljussunk az adatok feléig, az i-edik osztályköz adataiból még kell vennünk további adatokat, azaz annak valamekkora hányadát.. Az i-edik osztályközb ő l még (n/2 - f’

Tegyük fel, hogy az i-edik dallam éppen elfelejtett állapotban van – ekkor annak valószínűsé- ge, hogy dallamunk valamely éppen élő állapotban lévő j-edik dallam

In 2007, a question of the doctoral dissertation of author was that how the employees with family commitment were judged on the Hungarian labor mar- ket: there were positive

-Bihar County, how the revenue on city level, the CAGR of revenue (between 2012 and 2016) and the distance from highway system, Debrecen and the centre of the district.. Our