• Nem Talált Eredményt

Algoritmuselmélet Keresés, minimumkeresés Katona Gyula Y.

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Algoritmuselmélet Keresés, minimumkeresés Katona Gyula Y."

Copied!
173
0
0

Teljes szövegt

(1)

Algoritmuselmélet

Keresés, minimumkeresés

Katona Gyula Y.

Számítástudományi és Információelméleti Tanszék Budapesti M ˝uszaki és Gazdaságtudományi Egyetem

5. el ˝oadás

(2)

Rendezési reláció

LegyenU egy halmaz, és<egy kétváltozós relációU-n. Haa,b∈U ésa<b, akkor azt mondjuk, hogyakisebb, mintb.

A<reláció egyrendezés, ha teljesülnek a következ ˝ok: 1. a6<amindena∈Uelemre (<irreflexív);

2. Haa,b,c ∈U,a<b, ésb<c, akkora<c(<tranzitív);

3. Tetsz ˝olegesa6=b∈Uelemekre vagya<b, vagyb<afennáll (< teljes).

Ha<egy rendezésU-n, akkor az(U, <)pártrendezett halmaznak nevezzük.

(3)

Rendezési reláció

LegyenU egy halmaz, és<egy kétváltozós relációU-n. Haa,b∈U ésa<b, akkor azt mondjuk, hogyakisebb, mintb.

A<reláció egyrendezés, ha teljesülnek a következ ˝ok:

1. a6<amindena∈Uelemre (<irreflexív);

2. Haa,b,c ∈U,a<b, ésb<c, akkora<c(<tranzitív);

3. Tetsz ˝olegesa6=b∈Uelemekre vagya<b, vagyb<afennáll (<

teljes).

Ha<egy rendezésU-n, akkor az(U, <)pártrendezett halmaznak nevezzük.

(4)

Rendezési reláció

LegyenU egy halmaz, és<egy kétváltozós relációU-n. Haa,b∈U ésa<b, akkor azt mondjuk, hogyakisebb, mintb.

A<reláció egyrendezés, ha teljesülnek a következ ˝ok:

1. a6<amindena∈Uelemre (<irreflexív);

2. Haa,b,c ∈U,a<b, ésb<c, akkora<c(<tranzitív);

3. Tetsz ˝olegesa6=b∈Uelemekre vagya<b, vagyb<afennáll (<

teljes).

Ha<egy rendezésU-n, akkor az(U, <)pártrendezett halmaznak nevezzük.

(5)

Rendezési reláció

Példák:

Zaz egész számok halmaza. A<rendezés a nagyság szerinti rendezés.

Azabcbet ˝uinekΣhalmaza; a<rendezést azabc-sorrendadja. Azx bet ˝u kisebb, mint azy bet ˝u, hax el ˝obb szerepel az

abc-sorrendben, minty.

AΣbet ˝uib ˝ol alkotott szavakΣ halmaza a szótárszer ˝u vagy lexikografikusrendezéssel.⇒legyenX =x1x2· · ·xk és Y =y1y2· · ·yl két szó.

AzX kisebb mintY, ha vagyl >k ésxi =yi ha minden i =1,2, . . . ,k esetén;

vagy pedigxj <yj teljesül a legkisebb olyanjindexre, melyre xj 6=yj.Tehát példáulkar <karikaésbor <bot.

(6)

Rendezési reláció

Példák:

Zaz egész számok halmaza. A<rendezés a nagyság szerinti rendezés.

Azabcbet ˝uinekΣhalmaza; a<rendezést azabc-sorrendadja.

Azx bet ˝u kisebb, mint azy bet ˝u, hax el ˝obb szerepel az abc-sorrendben, minty.

AΣbet ˝uib ˝ol alkotott szavakΣ halmaza a szótárszer ˝u vagy lexikografikusrendezéssel.⇒legyenX =x1x2· · ·xk és Y =y1y2· · ·yl két szó.

AzX kisebb mintY, ha vagyl >k ésxi =yi ha minden i =1,2, . . . ,k esetén;

vagy pedigxj <yj teljesül a legkisebb olyanjindexre, melyre xj 6=yj.Tehát példáulkar <karikaésbor <bot.

(7)

Rendezési reláció

Példák:

Zaz egész számok halmaza. A<rendezés a nagyság szerinti rendezés.

Azabcbet ˝uinekΣhalmaza; a<rendezést azabc-sorrendadja.

Azx bet ˝u kisebb, mint azy bet ˝u, hax el ˝obb szerepel az abc-sorrendben, minty.

AΣbet ˝uib ˝ol alkotott szavakΣ halmaza a szótárszer ˝u vagy lexikografikusrendezéssel.⇒legyenX =x1x2· · ·xk és Y =y1y2· · ·yl két szó.

AzX kisebb mintY, ha vagyl >k ésxi =yi ha minden i =1,2, . . . ,k esetén;

vagy pedigxj <yj teljesül a legkisebb olyanjindexre, melyre xj 6=yj.Tehát példáulkar <karikaésbor <bot.

(8)

Keresés rendezetlen halmazban

Feladat

Adott az U halmaz véges S={s1,s2, . . . ,sn−1,sn}részhalmaza és s∈U.

El akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Igaz-e, hogysi =s? Válasz: Igenvagynem.

Legrosszabb esetben minden elemet végig kell nézni =⇒ nösszehasonlítás kell legrosszabb esetben.

n/2 összehasonlítás kell átlagosan.

(9)

Keresés rendezetlen halmazban

Feladat

Adott az U halmaz véges S={s1,s2, . . . ,sn−1,sn}részhalmaza és s∈U.

El akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Igaz-e, hogysi =s?

Válasz: Igenvagynem.

Legrosszabb esetben minden elemet végig kell nézni =⇒ nösszehasonlítás kell legrosszabb esetben.

n/2 összehasonlítás kell átlagosan.

(10)

Keresés rendezetlen halmazban

Feladat

Adott az U halmaz véges S={s1,s2, . . . ,sn−1,sn}részhalmaza és s∈U.

El akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Igaz-e, hogysi =s?

Válasz: Igenvagynem.

Legrosszabb esetben minden elemet végig kell nézni =⇒ nösszehasonlítás kell legrosszabb esetben.

n/2 összehasonlítás kell átlagosan.

(11)

Keresés rendezetlen halmazban

Feladat

Adott az U halmaz véges S={s1,s2, . . . ,sn−1,sn}részhalmaza és s∈U.

El akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Igaz-e, hogysi =s?

Válasz: Igenvagynem.

Legrosszabb esetben minden elemet végig kell nézni

=⇒ nösszehasonlítás kell legrosszabb esetben.

n/2 összehasonlítás kell átlagosan.

(12)

Keresés rendezetlen halmazban

Feladat

Adott az U halmaz véges S={s1,s2, . . . ,sn−1,sn}részhalmaza és s∈U.

El akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Igaz-e, hogysi =s?

Válasz: Igenvagynem.

Legrosszabb esetben minden elemet végig kell nézni =⇒ nösszehasonlítás kell legrosszabb esetben.

n/2 összehasonlítás kell átlagosan.

(13)

Keresés rendezetlen halmazban

Feladat

Adott az U halmaz véges S={s1,s2, . . . ,sn−1,sn}részhalmaza és s∈U.

El akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Igaz-e, hogysi =s?

Válasz: Igenvagynem.

Legrosszabb esetben minden elemet végig kell nézni =⇒ nösszehasonlítás kell legrosszabb esetben.

n/2 összehasonlítás kell átlagosan.

(14)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S ={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek? Válasz: si =svagysi <s vagysi >s.

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.

(15)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek? Válasz: si =svagysi <s vagysi >s.

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.

(16)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek? Válasz: si =svagysi <s vagysi >s.

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.

(17)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek?

Válasz: si =svagysi <s vagysi >s.

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.

(18)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek?

Válasz: si =svagysi <svagysi >s.

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.

(19)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek?

Válasz: si =svagysi <svagysi >s.

Lineáris keresés

Költség a legrosszabb esetben: n, mert lehet, hogy pont az utolsó volt. Költség átlagos esetben esetben: (n/2) +1.

(20)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek?

Válasz: si =svagysi <svagysi >s.

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.

(21)

Keresés rendezett halmazban

Barkochba játék: gondolok egy számot 1 és 100 között, hány eldöntend ˝o kérdésb ˝ol lehet kitalálni?

Feladat

Adott az(U, <)rendezett halmaz véges

S={s1<s2< . . . <sn−1<sn}részhalmaza és s ∈U.

Összehasonlításokkal akarjuk eldönteni, hogy igaz-e s∈S, és ha igen, akkor melyik i-re teljesül si =s.

Hány összehasonlítás kell?

Itt összehasonlítás: Mi a viszonyas-nek éssi-nek?

Válasz: si =svagysi <svagysi >s.

Lineáris keresés

(22)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(23)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(24)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(25)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(26)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(27)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(28)

Bináris keresés

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

Hasonló feladatot kapunk egyS1halmazra, 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)

(29)

Bináris keresés

Addig kell csinálni, amíg|Sk|=1 lesz. Innen 1=|Sk| ≤ n

2k.

=⇒2k ≤n =⇒k ≤ blog2nc

Ezk+1 összehasonlítás volt. =⇒k+1≤ blog2nc+1=dlog2(n+1)e Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)ekérdést használ.

(30)

Bináris keresés

Addig kell csinálni, amíg|Sk|=1 lesz. Innen 1=|Sk| ≤ n

2k.

=⇒2k ≤n =⇒k ≤ blog2nc

Ezk+1 összehasonlítás volt. =⇒k+1≤ blog2nc+1=dlog2(n+1)e Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)ekérdést használ.

(31)

Bináris keresés

Addig kell csinálni, amíg|Sk|=1 lesz. Innen 1=|Sk| ≤ n

2k.

=⇒2k ≤n =⇒k ≤ blog2nc

Ezk+1 összehasonlítás volt. =⇒k+1≤ blog2nc+1=dlog2(n+1)e

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)ekérdést használ.

(32)

Bináris keresés

Addig kell csinálni, amíg|Sk|=1 lesz. Innen 1=|Sk| ≤ n

2k.

=⇒2k ≤n =⇒k ≤ blog2nc

Ezk+1 összehasonlítás volt. =⇒k+1≤ blog2nc+1=dlog2(n+1)e Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)ekérdést használ.

(33)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van). Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség. Tehát teljesülnie kell 2nk12− · · · − 1

2k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(34)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség. Tehát teljesülnie kell 2nk12− · · · − 1

2k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(35)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség. Tehát teljesülnie kell 2nk12− · · · − 1

2k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(36)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség. Tehát teljesülnie kell 2nk12− · · · − 1

2k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(37)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség.

Tehát teljesülnie kell 2nk12− · · · − 1

2k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(38)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség.

Tehát teljesülnie kell 2nk12− · · · −21k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(39)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség.

n 1 1

=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(40)

Bináris keresés

Tétel

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mintdlog2(n+1)eké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 azigen válasz után mondjuk szóba jönx lehet ˝oség, akkor anemesetén szóba jön mégn−x −1 lehet ˝oség. (A „−1” azs=si válasz miatt van).

Az ellenség úgy válaszol, hogy minél több lehet ˝oség maradjon, így el tudja érni, hogy legalább n−12 marad.

=⇒2 kérdés után legalább

n−1

2 −1

2 = 2n2121

22 marad.

=⇒k kérdés után is marad még 2nk12− · · · − 1

2k lehet ˝oség.

Tehát teljesülnie kell 2nk12− · · · −21k ≤1-nek.

Vagyisn≤2k +2k−1+. . .+1=2k+1−1.=⇒ dlog2(n+1)e −1≤k. Ha még van egy lehetséges elem, akkor még +1 egy kérdés.

(41)

Minimumkeresés

Feladat

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

Összehasonlításokkal keressük meg az S minimális elemét, azaz egy olyan si elemet, hogy minden i 6=j esetén si <sj.

Hány összehasonlítás kell a legrosszabb esetben?

(42)

Minimumkeresés

Feladat

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

Összehasonlításokkal keressük meg az S minimális elemét, azaz egy olyan si elemet, hogy minden i 6=j esetén si <sj.

Hány összehasonlítás kell a legrosszabb esetben?

(43)

Minimumkeresés

Tétel

n elem közül a minimális kiválasztásához legrosszabb esetben n−1 összehasonlítás kell.

Bizonyítás.

n−1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után. Mivel

„mindenki pontosan egyszer kap ki a gy ˝oztest kivéve”, ezn−1 összehasonlítást igényel.

n−1 összehasonlításnál kevesebb nem mindig elég:Legyenek az elemek egy gráf pontjai, ha kett ˝ot összehasonlítottunk, húzzunk közöttük élet. Amíg a gráf nem összefügg ˝o, bármely komponensében lehet a minimális elem.

Ha a gráf már összefügg ˝o, akkor legalábbn−1 éle van, tehát kell ennyi összehasonlítás.

(44)

Minimumkeresés

Tétel

n elem közül a minimális kiválasztásához legrosszabb esetben n−1 összehasonlítás kell.

Bizonyítás.

n−1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után.

Mivel

„mindenki pontosan egyszer kap ki a gy ˝oztest kivéve”, ezn−1 összehasonlítást igényel.

n−1 összehasonlításnál kevesebb nem mindig elég:Legyenek az elemek egy gráf pontjai, ha kett ˝ot összehasonlítottunk, húzzunk közöttük élet. Amíg a gráf nem összefügg ˝o, bármely komponensében lehet a minimális elem.

Ha a gráf már összefügg ˝o, akkor legalábbn−1 éle van, tehát kell ennyi összehasonlítás.

(45)

Minimumkeresés

Tétel

n elem közül a minimális kiválasztásához legrosszabb esetben n−1 összehasonlítás kell.

Bizonyítás.

n−1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után. Mivel

„mindenki pontosan egyszer kap ki a gy ˝oztest kivéve”, ezn−1 összehasonlítást igényel.

n−1 összehasonlításnál kevesebb nem mindig elég:Legyenek az elemek egy gráf pontjai, ha kett ˝ot összehasonlítottunk, húzzunk közöttük élet. Amíg a gráf nem összefügg ˝o, bármely komponensében lehet a minimális elem.

Ha a gráf már összefügg ˝o, akkor legalábbn−1 éle van, tehát kell ennyi összehasonlítás.

(46)

Minimumkeresés

Tétel

n elem közül a minimális kiválasztásához legrosszabb esetben n−1 összehasonlítás kell.

Bizonyítás.

n−1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után. Mivel

„mindenki pontosan egyszer kap ki a gy ˝oztest kivéve”, ezn−1 összehasonlítást igényel.

n−1 összehasonlításnál kevesebb nem mindig elég:Legyenek az elemek egy gráf pontjai, ha kett ˝ot összehasonlítottunk, húzzunk közöttük élet.

Amíg a gráf nem összefügg ˝o, bármely komponensében lehet a minimális elem.

Ha a gráf már összefügg ˝o, akkor legalábbn−1 éle van, tehát kell ennyi összehasonlítás.

(47)

Minimumkeresés

Tétel

n elem közül a minimális kiválasztásához legrosszabb esetben n−1 összehasonlítás kell.

Bizonyítás.

n−1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után. Mivel

„mindenki pontosan egyszer kap ki a gy ˝oztest kivéve”, ezn−1 összehasonlítást igényel.

n−1 összehasonlításnál kevesebb nem mindig elég:Legyenek az elemek egy gráf pontjai, ha kett ˝ot összehasonlítottunk, húzzunk közöttük élet. Amíg a gráf nem összefügg ˝o, bármely komponensében lehet a minimális elem.

Ha a gráf már összefügg ˝o, akkor legalábbn−1 éle van, tehát kell ennyi összehasonlítás.

(48)

Minimumkeresés

Tétel

n elem közül a minimális kiválasztásához legrosszabb esetben n−1 összehasonlítás kell.

Bizonyítás.

n−1 összehasonlítás mindig elég: Rendezzünk kiesés versenyt, mindig a kisebb elemet megtartva egy-egy összehasonlítás után. Mivel

„mindenki pontosan egyszer kap ki a gy ˝oztest kivéve”, ezn−1 összehasonlítást igényel.

n−1 összehasonlításnál kevesebb nem mindig elég:Legyenek az elemek egy gráf pontjai, ha kett ˝ot összehasonlítottunk, húzzunk közöttük élet. Amíg a gráf nem összefügg ˝o, bármely komponensében lehet a minimális elem.

Ha a gráf már összefügg ˝o, akkor legalábbn−1 éle van, tehát kell ennyi összehasonlítás.

(49)

Algoritmuselmélet

Rendezés, buborék, beszúrásos, összefésüléses, kupacos, láda, radix

Katona Gyula Y.

Számítástudományi és Információelméleti Tanszék Budapesti M ˝uszaki és Gazdaságtudományi Egyetem

6. el ˝oadás

(50)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben? Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(51)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben? Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(52)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben? Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(53)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben? Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(54)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben? Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(55)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben?

Hány összehasonlítás kell átlagos esetben? Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(56)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben?

Hány összehasonlítás kell átlagos esetben?

Hány csere kell a legrosszabb esetben? Mennyi plusz tárhely szükséges?

(57)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben?

Mennyi plusz tárhely szükséges?

(58)

Rendezés

Feladat

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

Összehasonlításokkal rendezzük az S elemeit a rendezés szerint növekv ˝o sorrendbe, azaz keressünk olyanσ permutációt, hogy sσ(1)<sσ(2)<· · ·<sσ(n).

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

Hány összehasonlítás kell a legrosszabb esetben?

Hány összehasonlítás kell átlagos esetben?

Hány csere kell a legrosszabb esetben?

Mennyi plusz tárhely szükséges?

(59)

Buborék-rendezés

Input: A[1:n](rendezetlen) tömb

Ha valamelyi-reA[i]>A[i+1], akkor a két cella tartalmát kicseréljük.

A tömb elejér ˝ol indulva, közben cserélgetve eljutunk a tömb végéig.

Ekkor a legnagyobb elemA[n]-ben van. Ismételjük ezt azA[1:n−1] tömbre, majd azA[1:n−2]tömbre, stb.

procedurebuborék

(* az A[1:n]tömböt növekv ˝oen (nem csökken ˝oen) rendezi *) for(j=n−1,j >0,j:=j−1)do

for(i=1,i ≤j,i :=i+1)do

{haA[i+1]<A[i], akkor cseréljük ki ˝oket.}

összehasonlítások száma: n−1+n−2+. . .+1= n(n−1)2 cserék száma: ≤ n(n−1)2

(60)

Buborék-rendezés

Input: A[1:n](rendezetlen) tömb

Ha valamelyi-reA[i]>A[i+1], akkor a két cella tartalmát kicseréljük.

A tömb elejér ˝ol indulva, közben cserélgetve eljutunk a tömb végéig.

Ekkor a legnagyobb elemA[n]-ben van.

Ismételjük ezt azA[1:n−1] tömbre, majd azA[1:n−2]tömbre, stb.

procedurebuborék

(* az A[1:n]tömböt növekv ˝oen (nem csökken ˝oen) rendezi *) for(j=n−1,j >0,j:=j−1)do

for(i=1,i ≤j,i :=i+1)do

{haA[i+1]<A[i], akkor cseréljük ki ˝oket.}

összehasonlítások száma: n−1+n−2+. . .+1= n(n−1)2 cserék száma: ≤ n(n−1)2

(61)

Buborék-rendezés

Input: A[1:n](rendezetlen) tömb

Ha valamelyi-reA[i]>A[i+1], akkor a két cella tartalmát kicseréljük.

A tömb elejér ˝ol indulva, közben cserélgetve eljutunk a tömb végéig.

Ekkor a legnagyobb elemA[n]-ben van. Ismételjük ezt azA[1:n−1]

tömbre, majd azA[1:n−2]tömbre, stb.

procedurebuborék

(* az A[1:n]tömböt növekv ˝oen (nem csökken ˝oen) rendezi *) for(j=n−1,j >0,j:=j−1)do

for(i=1,i ≤j,i :=i+1)do

{haA[i+1]<A[i], akkor cseréljük ki ˝oket.}

összehasonlítások száma: n−1+n−2+. . .+1= n(n−1)2 cserék száma: ≤ n(n−1)2

(62)

Buborék-rendezés

Input: A[1:n](rendezetlen) tömb

Ha valamelyi-reA[i]>A[i+1], akkor a két cella tartalmát kicseréljük.

A tömb elejér ˝ol indulva, közben cserélgetve eljutunk a tömb végéig.

Ekkor a legnagyobb elemA[n]-ben van. Ismételjük ezt azA[1:n−1]

tömbre, majd azA[1:n−2]tömbre, stb.

procedurebuborék

(* az A[1:n]tömböt növekv ˝oen (nem csökken ˝oen) rendezi *) for(j=n−1,j >0,j :=j−1)do

for(i=1,i≤j,i :=i+1)do

{haA[i+1]<A[i], akkor cseréljük ki ˝oket.}

összehasonlítások száma: n−1+n−2+. . .+1= n(n−1)2 cserék száma: ≤ n(n−1)2

(63)

Buborék-rendezés

Input: A[1:n](rendezetlen) tömb

Ha valamelyi-reA[i]>A[i+1], akkor a két cella tartalmát kicseréljük.

A tömb elejér ˝ol indulva, közben cserélgetve eljutunk a tömb végéig.

Ekkor a legnagyobb elemA[n]-ben van. Ismételjük ezt azA[1:n−1]

tömbre, majd azA[1:n−2]tömbre, stb.

procedurebuborék

(* az A[1:n]tömböt növekv ˝oen (nem csökken ˝oen) rendezi *) for(j=n−1,j >0,j :=j−1)do

for(i=1,i≤j,i :=i+1)do

{haA[i+1]<A[i], akkor cseréljük ki ˝oket.}

összehasonlítások száma: n−1+n−2+. . .+1= n(n−1)2 cserék száma: ≤ n(n−1)

(64)

Beszúrásos rendezés

Ha azA[1:k]résztömb már rendezett, akkor szúrjuk be a következ ˝o elemet,A[k+1]-et,lineárisvagybináriskereséssel, majd a következ ˝ot ebbe, stb.

lineáris bináris

összehasonlítás n(n−1)

2

n−1

X

k=1

dlog2(k+1)e

mozgatás (n+2)(n−1)

2

(n+2)(n−1) 2 átlagos összehasonlítás n(n−1)

4

n−1

X

k=1

dlog2(n+1)e

átlagos mozgatás n2

4

n2 4

(65)

Beszúrásos rendezés

Ha azA[1:k]résztömb már rendezett, akkor szúrjuk be a következ ˝o elemet,A[k+1]-et,lineárisvagybináriskereséssel, majd a következ ˝ot ebbe, stb.

lineáris bináris

összehasonlítás n(n−1)

2

n−1

X

k=1

dlog2(k+1)e

mozgatás (n+2)(n−1)

2

(n+2)(n−1) 2 átlagos összehasonlítás n(n−1)

4

n−1

X

k=1

dlog2(n+1)e

átlagos mozgatás n2

4

n2 4

(66)

Beszúrásos rendezés

Ha azA[1:k]résztömb már rendezett, akkor szúrjuk be a következ ˝o elemet,A[k+1]-et,lineárisvagybináriskereséssel, majd a következ ˝ot ebbe, stb.

lineáris bináris

összehasonlítás n(n−1)

2

n−1

X

k=1

dlog2(k+1)e

mozgatás (n+2)(n−1)

2

(n+2)(n−1) 2

átlagos összehasonlítás n(n−1) 4

n−1

X

k=1

dlog2(n+1)e

átlagos mozgatás n2

4

n2 4

(67)

Beszúrásos rendezés

Ha azA[1:k]résztömb már rendezett, akkor szúrjuk be a következ ˝o elemet,A[k+1]-et,lineárisvagybináriskereséssel, majd a következ ˝ot ebbe, stb.

lineáris bináris

összehasonlítás n(n−1)

2

n−1

X

k=1

dlog2(k+1)e

mozgatás (n+2)(n−1)

2

(n+2)(n−1) 2 átlagos összehasonlítás n(n−1)

4

n−1

X

k=1

dlog2(n+1)e

átlagos mozgatás n2

4

n2 4

(68)

Beszúrásos rendezés

Ha azA[1:k]résztömb már rendezett, akkor szúrjuk be a következ ˝o elemet,A[k+1]-et,lineárisvagybináriskereséssel, majd a következ ˝ot ebbe, stb.

lineáris bináris

összehasonlítás n(n−1)

2

n−1

X

k=1

dlog2(k+1)e

mozgatás (n+2)(n−1)

2

(n+2)(n−1) 2 átlagos összehasonlítás n(n−1)

4

n−1

X

k=1

dlog2(n+1)e

átlagos mozgatás n2

4

n2 4

(69)

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

K :=dlog22e+dlog23e+· · ·+dlog2ne ≤ndlog2ne

Jobb becslés: használjuk fel, hogydlog2ke ≤1+log2k K <n−1+log22+· · ·+log2n=n−1+log2(n!)

Felhasználva a Stirling formulát: n!∼(n/e)n

2πnkapjuk, hogy log2n!∼n(log2n−log2e) +1

2log2n+log2

2π ∼n(log2n−1,442)

EzértK ≤n(log2n−0,442)elég nagyn-re.

(70)

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

K :=dlog22e+dlog23e+· · ·+dlog2ne ≤ndlog2ne Jobb becslés: használjuk fel, hogydlog2ke ≤1+log2k

K <n−1+log22+· · ·+log2n=n−1+log2(n!)

Felhasználva a Stirling formulát: n!∼(n/e)n

2πnkapjuk, hogy log2n!∼n(log2n−log2e) +1

2log2n+log2

2π ∼n(log2n−1,442)

EzértK ≤n(log2n−0,442)elég nagyn-re.

(71)

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

K :=dlog22e+dlog23e+· · ·+dlog2ne ≤ndlog2ne Jobb becslés: használjuk fel, hogydlog2ke ≤1+log2k

K <n−1+log22+· · ·+log2n=n−1+log2(n!)

Felhasználva a Stirling formulát: n!∼(n/e)n

2πnkapjuk, hogy log2n!∼n(log2n−log2e) +1

2log2n+log2

2π∼n(log2n−1,442)

EzértK ≤n(log2n−0,442)elég nagyn-re.

(72)

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

K :=dlog22e+dlog23e+· · ·+dlog2ne ≤ndlog2ne Jobb becslés: használjuk fel, hogydlog2ke ≤1+log2k

K <n−1+log22+· · ·+log2n=n−1+log2(n!)

Felhasználva a Stirling formulát: n!∼(n/e)n

2πnkapjuk, hogy log2n!∼n(log2n−log2e) +1

2log2n+log2

2π∼n(log2n−1,442)

EzértK ≤n(log2n−0,442)elég nagyn-re.

(73)

Alsó becslés összehasonlítás alapú rendezésre

Ugyanaz, mintha barochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend.

Kezdetbenn!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, hogyx <y, akkor az olyan sorrendek, amelyekben x hátrébb vany-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, akkork kérdés után még szóba jön 2n!k sorrend.

Ha 2n!k >1, nem tudjuk megadni a rendezést. =⇒ Tétel

Minden összehasonlítás alapú rendez ˝o módszer n elem rendezésekor legalábblog2(n!)összehasonlítást használ.

(74)

Alsó becslés összehasonlítás alapú rendezésre

Ugyanaz, mintha barochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend.

Kezdetbenn!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, hogyx <y, akkor az olyan sorrendek, amelyekben x hátrébb vany-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, akkork kérdés után még szóba jön 2n!k sorrend.

Ha 2n!k >1, nem tudjuk megadni a rendezést. =⇒ Tétel

Minden összehasonlítás alapú rendez ˝o módszer n elem rendezésekor legalábblog2(n!)összehasonlítást használ.

(75)

Alsó becslés összehasonlítás alapú rendezésre

Ugyanaz, mintha barochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend.

Kezdetbenn!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, hogyx <y, akkor az olyan sorrendek, amelyekben x hátrébb vany-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, akkork kérdés után még szóba jön 2n!k sorrend.

Ha 2n!k >1, nem tudjuk megadni a rendezést. =⇒ Tétel

Minden összehasonlítás alapú rendez ˝o módszer n elem rendezésekor legalábblog2(n!)összehasonlítást használ.

(76)

Alsó becslés összehasonlítás alapú rendezésre

Ugyanaz, mintha barochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend.

Kezdetbenn!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, hogyx <y, akkor az olyan sorrendek, amelyekben x hátrébb vany-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, akkork kérdés után még szóba jön 2n!k sorrend.

Ha 2n!k >1, nem tudjuk megadni a rendezést. =⇒ Tétel

Minden összehasonlítás alapú rendez ˝o módszer n elem rendezésekor legalábblog2(n!)összehasonlítást használ.

(77)

Alsó becslés összehasonlítás alapú rendezésre

Ugyanaz, mintha barochba-ban kellene kitalálni, hogy az elemek melyik sorrendje (permutációja) az igazi sorrend.

Kezdetbenn!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, hogyx <y, akkor az olyan sorrendek, amelyekben x hátrébb vany-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, akkork kérdés után még szóba jön 2n!k sorrend.

Ha n!2k >1, nem tudjuk megadni a rendezést. =⇒ Tétel

Minden összehasonlítás alapú rendez ˝o módszer n elem rendezésekor legalábblog2(n!)összehasonlítást használ.

(78)

Ö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]ésB[1:l]rendezett tömbök−→C[1:k+l]rendezett tömb NyilvánC[1] =min{A[1],B[1]}, pl. A[1],

ezt rakjuk átC-be és töröljükA-ból. C[2] =min{A[2],B[1]}, stb.

(79)

Ö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]ésB[1:l]rendezett tömbök−→C[1:k+l]rendezett tömb

NyilvánC[1] =min{A[1],B[1]}, pl. A[1], ezt rakjuk átC-be és töröljükA-ból. C[2] =min{A[2],B[1]}, stb.

(80)

Ö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]ésB[1:l]rendezett tömbök−→C[1:k+l]rendezett tömb NyilvánC[1] =min{A[1],B[1]}, pl. A[1],

ezt rakjuk átC-be és töröljükA-ból. C[2] =min{A[2],B[1]}, stb.

(81)

Ö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]ésB[1:l]rendezett tömbök−→C[1:k+l]rendezett tömb NyilvánC[1] =min{A[1],B[1]}, pl. A[1],

ezt rakjuk átC-be és töröljükA-ból.

C[2] =min{A[2],B[1]}, stb.

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Egy párosítás akkor és csak akkor maximális, ha nincs hozzá tartozó

(2) Elkészítjük a G ford gráfot, melyet úgy kapunk G-b ˝ol, hogy minden él irányítását megfordítjuk. (4) Ha mindkét bejárás során minden pontot bejártunk, akkor

Ha az optimális Hamilton-körb ˝ol elhagyunk egy élet = ⇒ egy legalább s súlyú feszít ˝ofát kapunk.. A módszer legfeljebb 2-szer akkora utat ad, mint

Ha P = NP teljesülne, akkor minden olyan problémára, amelyre van hatékony tanúsítvány (azaz NP-beli), lenne polinomiális algoritmus is. Fogunk mutatni olyan problámákat,

Ha ismert, hogy mikor és mit akarnak írni és olvasni a tranzakciók és még az is ismert, hogy pontosan mit számolnak, akkor minden esetben el tudjuk dönteni, hogy egy

kész adatbázisba adatok beillesztése, módosítása magas szinten (az adatbázis fogalmi keretének feltöltése) pl.: új diák felvétele, tárgyfelvétel, jegybeírás, ehhez adott

A pótlási héten lesz még egy alkalom kizárólag azoknak, akik még nem szerezték meg az aláírást (anyaga ugyanaz, mint a

Ez a színezés takaros, ha van G-nek olyan minimális költség ˝u feszít ˝ofája, ami az összes kék élet tartalmazza, és egyetlen piros élet sem tartalmaz.... A