• Nem Talált Eredményt

Algoritmuselmélet 6. el ˝oadás

N/A
N/A
Protected

Academic year: 2022

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

Copied!
133
0
0

Teljes szövegt

(1)

kiskat@cs.bme.hu

2002 Március 4.

(2)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 1

Hash-elés álvéletlen próbával

A 0, h1(K), h2(K), . . . , hM1(K) próbasorozat a 0, 1, . . . , M − 1 számoknak egy a K kulcstól független álvéletlen permutációja.

(3)

A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie ⇐⇒

véletlen

(4)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 1

Hash-elés álvéletlen próbával

A 0, h1(K), h2(K), . . . , hM1(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

(5)

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.

(6)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 1

Hash-elés álvéletlen próbával

A 0, h1(K), h2(K), . . . , hM1(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 .

(7)

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

(8)

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

(9)
(10)

ALGORITMUSELMÉ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)M21 ≡ n2M21 ≡ nM1 ≡ 1 (mod M).

(11)

−1 ≡ (−1)M21 ≡ n2M21 ≡ nM1 ≡ 1 (mod M).

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

(12)

ALGORITMUSELMÉ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)M21 ≡ n2M21 ≡ nM1 ≡ 1 (mod M).

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

Ha 0 ≤ i < j ≤ M21, akkor i2 6≡ j2 (mod M).

⇐= j2 − i2 = (j − i)(j + i) felbontás egyik tényez ˝oje sem lehet osztható M-mel, tehát a szorzatuk sem

(13)

−1 ≡ (−1)M21 ≡ n2M21 ≡ nM1 ≡ 1 (mod M).

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

Ha 0 ≤ i < j ≤ M21, akkor i2 6≡ j2 (mod M).

⇐= j2 − i2 = (j − i)(j + i) felbontás egyik tényez ˝oje sem lehet osztható M-mel, tehát a szorzatuk sem

Ugyanígy =⇒ −i2 6≡ −j2 (mod M).

(14)

ALGORITMUSELMÉ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)M21 ≡ n2M21 ≡ nM1 ≡ 1 (mod M).

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

Ha 0 ≤ i < j ≤ M21, akkor i2 6≡ j2 (mod M).

⇐= j2 − i2 = (j − i)(j + i) felbontás egyik tényez ˝oje sem lehet osztható M-mel, tehát a szorzatuk sem

Ugyanígy =⇒ −i2 6≡ −j2 (mod M).

i2 6≡ −j2 (mod M) ⇐= (ij1)2 6≡ −1 (mod M)

(15)

CN0 ≈ 1

(1 − α) − α − log(1 − α)

(16)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 3

Sikeres keresés költsége:

CN ≈ 1 − log(1 − α) − α 2 Sikertelen keresés költsége:

CN0 ≈ 1

(1 − α) − α − log(1 − α)

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.

(17)
(18)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 4

Kett ˝ os hash-elés

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

Lényeg: h mellett egy másik h0 hash-függvényt is használunk

(19)

Lényeg: h mellett egy másik h0 hash-függvényt is használunk a h0(K) értékek relatív prímek legyenek az M táblamérethez

(20)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 4

Kett ˝ os hash-elés

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

Lényeg: h mellett egy másik h0 hash-függvényt is használunk a h0(K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := −ih0(K).

(21)

Lényeg: h mellett egy másik h0 hash-függvényt is használunk a h0(K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := −ih0(K).

Ha M és h0(K) relatív prímek

=⇒ 0, −h0(K),−2h0(K), . . . , −(M − 1)h0(K) sorozat elemei mind különböz ˝ok modulo M

(22)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 4

Kett ˝ os hash-elés

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

Lényeg: h mellett egy másik h0 hash-függvényt is használunk a h0(K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := −ih0(K).

Ha M és h0(K) relatív prímek

=⇒ 0, −h0(K),−2h0(K), . . . , −(M − 1)h0(K) sorozat elemei mind különböz ˝ok modulo M

Fontos sajátossága: különböz ˝o K és K0 kulcsok próbasorozatai jó eséllyel akkor is különböz ˝ok lesznek, ha h(K) = h(K0).

(23)

Lényeg: h mellett egy másik h0 hash-függvényt is használunk a h0(K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: hi(K) := −ih0(K).

Ha M és h0(K) relatív prímek

=⇒ 0, −h0(K),−2h0(K), . . . , −(M − 1)h0(K) sorozat elemei mind különböz ˝ok modulo M

Fontos sajátossága: különböz ˝o K és K0 kulcsok próbasorozatai jó eséllyel akkor is különböz ˝ok lesznek, ha h(K) = h(K0).

A legjobb ismert implementációk id ˝oigénye (empirikus adatok alapján)

CN ≈ 1

α log 1

(1 − α) és CN0 ≈ 1 1 − α.

(24)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 5

• A kett ˝os hash-elés kiküszöböli mindkét-féle csomósodást

(25)
(26)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 5

• A kett ˝os 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.

(27)
(28)

ALGORITMUSELMÉ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.

(29)

• és minél kevesebb ütközést okozzon.

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

(30)

ALGORITMUSELMÉ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 el ˝oforduló kulcshalmazok egyáltalán nem véletlenszer ˝uek.

hasznos tanácsok =⇒ h(K) értéke lehet ˝oleg a K kulcs minden bitjét ˝ol függjön

(31)

• és minél kevesebb ütközést okozzon.

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

hasznos tanácsok =⇒ h(K) értéke lehet ˝oleg a K kulcs minden bitjét ˝ol függjön és a h értékkészlete a teljes [0, M − 1] címtartomány legyen

(32)

ALGORITMUSELMÉ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.

(33)
(34)

ALGORITMUSELMÉ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 egyszer ˝u.

(35)

A h(K) számítása gyors és egyszer ˝u.

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ét ˝ol függ.

(36)

ALGORITMUSELMÉ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 egyszer ˝u.

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ét ˝ol függ.

A jó M értékeket illet ˝oen van egy széles körben elfogadott recept:

D. E. Knuth javaslata =⇒ M-et prímnek választjuk, úgy, hogy M nem osztja rk+a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k

„kicsi" egészek.

(37)

A h(K) számítása gyors és egyszer ˝u.

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ét ˝ol függ.

A jó M értékeket illet ˝oen van egy széles körben elfogadott recept:

D. E. Knuth javaslata =⇒ M-et prímnek választjuk, úgy, hogy M nem osztja rk+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.

(38)

ALGORITMUSELMÉ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 egyszer ˝u.

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ét ˝ol függ.

A jó M értékeket illet ˝oen van egy széles körben elfogadott recept:

D. E. Knuth javaslata =⇒ M-et prímnek választjuk, úgy, hogy M nem osztja rk+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önny ˝u hozzájuk relatív prím számot találni =⇒ kett ˝os hash-elés

(39)
(40)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 8

Szorzómódszer

β egy rögzített paraméter

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

(41)

h(K) := bM · {βK}c. {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életlenszer ˝uen"

bel ˝ojük a [0, 1) intervallumba =⇒ az eredményt felskálázzuk a címtartományba.

(42)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 8

Szorzómódszer

β egy rögzített paraméter

h(K) := bM · {βK}c. {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életlenszer ˝uen"

bel ˝ojü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 β = Aw választás mellett h(K) igen jól számolható.

A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni.

(43)
(44)

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

(45)
(46)

ALGORITMUSELMÉ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ít ˝oleg 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öz ˝o értéket vehetnek fel, és {(n + 1)β} a leghosszabbak egyikét fogja két részre vágni.

(47)

[0, 1)-ben. Ezek hosszai legfeljebb 3 különböz ˝o é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 =

51

2 = 0.618033988 . . . és a β = φ2 = 1 − φ1 értékek adják.

(48)

ALGORITMUSELMÉ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ít ˝oleg 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öz ˝o é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 =

51

2 = 0.618033988 . . . és a β = φ2 = 1 − φ1 értékek adják.

=⇒ érdemes a szorzómódszernél az A-t úgy választani, hogy Aw közel legyen φ1-hez. =⇒ Fibonacci-hash-elés

(49)
(50)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 10

A kett ˝ os hash-elés második függvénye

Olyan h0 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 =⇒

h0(K) := K (mod M − 1) + 1.

(51)

Ha M prím =⇒

h0(K) := K (mod M − 1) + 1.

=⇒ h0(K) és M relatív prímek

(52)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 10

A kett ˝ os hash-elés második függvénye

Olyan h0 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 =⇒

h0(K) := K (mod M − 1) + 1.

=⇒ h0(K) és M relatív prímek

=⇒ elég sok különböz ˝o próbasorozatot ad Java animáció: Hash-elés

(53)
(54)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 11

Szekvenciális keresés

Ha egy állomány (tömb, lista, stb.) szegényes szerkezet ˝u =⇒ nincs jobb , mint „elejét ˝ol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk.

Ha egyenl ˝o eséllyel kell keresni az elemeket =⇒ Sikeres keresés átlagos költsége:

1 + 2 + · · · + N

N = N + 1

2 .

(55)

Ha egyenl ˝o eséllyel kell keresni az elemeket =⇒ Sikeres keresés átlagos költsége:

1 + 2 + · · · + N

N = N + 1

2 . Sikertelen keresés költsége: N

(56)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 11

Szekvenciális keresés

Ha egy állomány (tömb, lista, stb.) szegényes szerkezet ˝u =⇒ nincs jobb , mint „elejét ˝ol a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk.

Ha egyenl ˝o eséllyel kell keresni az elemeket =⇒ Sikeres keresés átlagos költsége:

1 + 2 + · · · + N

N = N + 1

2 . Sikertelen keresés költsége: N

Ha az állományban az elemek nagyság szerint rendezettek =⇒ Sikeres keresés átlagos költsége: N2+1.

(57)

Ha egyenl ˝o eséllyel kell keresni az elemeket =⇒ Sikeres keresés átlagos költsége:

1 + 2 + · · · + N

N = N + 1

2 . Sikertelen keresés költsége: N

Ha az állományban az elemek nagyság szerint rendezettek =⇒ Sikeres keresés átlagos költsége: N2+1.

Sikertelen keresés költsége:

1 + 2 + · · · + N − 1 + N + N

N + 1 = N

2 + N

N + 1 < N

2 + 1.

(58)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 12

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

(59)

Hogy érdemes sorba rendezni az Ri rekordokat?

(60)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószín ˝usé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ökken ˝o sorrendben

(61)

Hogy érdemes sorba rendezni az Ri rekordokat? =⇒ csökken ˝o sorrendben

Különböz ˝o eloszlások esetén:

Egyenletes: pi = N1 =⇒ CN = N2+1

(62)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 12

Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen pi annak a valószín ˝usé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ökken ˝o sorrendben

Különböz ˝o eloszlások esetén:

Egyenletes: pi = N1 =⇒ CN = N2+1

Egy nagyon ferde eloszlás: pi = 21i =⇒ CN = 2 − 2N11

(63)

=⇒

CN =

N

X

i=1

ipi =

N

X

i=1

i 1

iHN = N

HN ≈ N log N

(64)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 13

Zipf eloszlás: pi = iH1

N, ahol HN = 1 + 1

2 + 1

3 + . . . + 1

n = log n + 0.55721 . . . + o(1)

=⇒

CN =

N

X

i=1

ipi =

N

X

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.

(65)

=⇒

CN =

N

X

i=1

ipi =

N

X

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 = c

i1ϑ, ahol ϑ = log 0, 8

log 0, 2 ≈ 1

7, c = 1 HN(1ϑ)

és HN(1ϑ) = 1 + 1

2(1ϑ) +· · ·+ 1 N(1ϑ)

(66)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 13

Zipf eloszlás: pi = iH1

N, ahol HN = 1 + 1

2 + 1

3 + . . . + 1

n = log n + 0.55721 . . . + o(1)

=⇒

CN =

N

X

i=1

ipi =

N

X

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 = c

i1ϑ, ahol ϑ = log 0, 8

log 0, 2 ≈ 1

7, c = 1 HN(1ϑ)

és HN(1ϑ) = 1 + 1

2(1ϑ) +· · ·+ 1 N(1ϑ)

=⇒ CN ≈ 0, 122N

(67)
(68)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 14

Önszervez ˝ o módszerek

Mit tehetünk abban az esetben, ha a pi keresési valószín ˝uségeket nem ismerjük, vagy esetleg azok id ˝ovel változnak?

• A keresett (és megtalált) Ri elemet a tábla elejére visszük. Az eredmény:

Ri R1 R2 . . . RN

(69)

• 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 megel ˝oz ˝ovel.

R1 . . . Ri Ri1 . . . RN

(70)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 14

Önszervez ˝ o módszerek

Mit tehetünk abban az esetben, ha a pi keresési valószín ˝uségeket nem ismerjük, vagy esetleg azok id ˝ovel 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 megel ˝oz ˝ovel.

R1 . . . Ri Ri1 . . . RN

Ha az eloszlás id ˝oben változik, akkor az els ˝o megoldás ajánlatos. Ha a {pi} eloszlás stabil, azaz id ˝oben nem változik, akkor a második heurisztika

eredményesebb.

(71)
(72)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 15

Információtömörítés

A b1, . . . , bn bet ˝ukb ˝ol álló szöveget szeretnénk bitsorozatként kódolni.

uniform kódolás =⇒ dlog2 ne a legrövidebb lehetséges kódhosszúság egy bet ˝ure

(73)

bet ˝ure

eltér ˝o hosszú kódszavak =⇒ dekódolás problémásabb

(74)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 15

Információtömörítés

A b1, . . . , bn bet ˝ukb ˝ol álló szöveget szeretnénk bitsorozatként kódolni.

uniform kódolás =⇒ dlog2 ne a legrövidebb lehetséges kódhosszúság egy bet ˝ure

eltér ˝o hosszú kódszavak =⇒ dekódolás problémásabb

Definíció. Egy bitsorozatokból álló kód prefix kód, ha egy bet ˝u kódja sem prefixe (kezd ˝oszelete) egy másik kódjának. Formálisan: ha x és y két különböz ˝o bet ˝u kódja, akkor nincs olyan z bitsorozat, melyre xz = y.

(75)

bet ˝ure

eltér ˝o hosszú kódszavak =⇒ dekódolás problémásabb

Definíció. Egy bitsorozatokból álló kód prefix kód, ha egy bet ˝u kódja sem prefixe (kezd ˝oszelete) egy másik kódjának. Formálisan: ha x és y két különböz ˝o bet ˝u kódja, akkor nincs olyan z bitsorozat, melyre xz = y.

Egy prefix-tulajdonságú kóddal leírt üzenet egyértelm ˝uen visszafejthet ˝o.

(76)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 16

1

1 1

1

1 0 0

0 0

0

C

E

B A

D

F

(77)

1 1

0 0

C

E

B A

D

F

Probléma: Adott egy szöveg, melyben a bi karakter qi-szer fordul el ˝o.

Keressünk olyan fát, amelyre a P

qih(bi) összeg minimális, ahol egy x csúcsra h(x) a gyökért ˝ol x-ig vezet ˝o úton bejárt élek száma.

(78)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 17

Huffman-kód

Optimális ilyen fa:

(79)

• Kezdetben n izolált csúcspontunk van. bi címkéje legyen qi.

(80)

ALGORITMUSELMÉ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.

(81)

• 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éj ˝u gyökeret (legyenek ezek xi és xj).

(82)

ALGORITMUSELMÉ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éj ˝u 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.

(83)

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

(84)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 18

1 2 4 5 5

6

B C

A D E F

(85)

1 2 4 5 5 6

B C

A D E F

3

(86)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 18

1 2 4 5 5

6

B C

A D E F

3

7

(87)

1 2 4 5 5 6

B C

A D E F

3

7

(88)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 18

1 2 4 5 5

6

B C

A D E F

3 7

10

13

(89)

1 2 4 5 5 6

B C

A D E F

3

7

(90)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 18

1 2 4 5 5

6

B C

A D E F

3 7

10 13

23

0

0 1 0

1

0 1

0 1

1

(91)
(92)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

(93)

2 5 5 N R D U M A K

1 1 1 1

2

(94)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

(95)

2 5 5 N R D U M A K

1 1 1 1

2 2

4

(96)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4

6

(97)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10

(98)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10

16

(99)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

(100)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001

(101)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11

K

(102)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110

KA

(103)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011

KAK

(104)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101

KAKU

(105)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111

KAKUK

(106)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111

KAKUKK

(107)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111011

KAKUKKM

(108)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110

KAKUKKMA

(109)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111011100100

KAKUKKMAD

(110)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010

KAKUKKMADA

(111)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001

KAKUKKMADAR

(112)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111110111001001000110

KAKUKKMADARA

(113)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111110111001001000110011

KAKUKKMADARAM

(114)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 111011010111110111001001000110011000

KAKUKKMADARAMN

(115)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 11101101011111011100100100011001100010

KAKUKKMADARAMNA

(116)

ALGORITMUSELMÉLET 6. EL ˝OADÁS 19

KAKUKKMADARAMNAK =⇒ 7 bet ˝u =⇒ uniform kódolással bet ˝unként 3 bit, összesen 48 bit.

2 5 5

N R D U M A K

1 1 1 1

2 2

4 6

10 16

0

0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001100110001011

KAKUKKMADARAMNAK

(117)

2 5 5 N R D U M A K

1 1 1 1

2 2

4 6

10 0

0

0 0

1 1

1

1 1 0 1

A bet ˝uk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001100110001011

KAKUKKMADARAMNAK összesen 40 bit

(118)

ALGORITMUSELMÉ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 = P

qih(bi) összeg minimális azon bináris fák között, amelyek levelei b1, . . . , bn.

(119)

Bizonyítás: A Huffman-fa által adott I érték legyen H(q1, q2, . . . , qn).

(120)

ALGORITMUSELMÉ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 = P

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

(121)

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érhet ˝o optimális I-értéket.

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az i-edik sor és i-edik oszlop minden elemét.... Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az

Mindig a legkisebb súlyú olyan élet színezzük kékre, ami még nem alkot kört az eddigi kék élekkel.. = ⇒ A kék élek végig egy erd ˝ot határoznak meg, akkor van kész,

Amikor a többágú kapcsolatot binárissá írtuk át, akkor olyan egyedhalmaz keletkezik (a kapcsolatból), aminek általában nincs is attribútuma, ezért ennek az egyedhalmaznak

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.... Id ˝ o-

Az adatbázis fogalmi keretének megadására jók, tervet lehet velük készíteni, amit aztán majd át kell alakítani az adatbáziskezel ˝o által használt formális megadási

On-line változatban is m ˝ukö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ú

Ez BCNF, de mégis redundáns, mert ha valamelyik tárgynál szerepel egy gyereknév, akkor az összes többinél is szerepelnie kell. beszúrni nehéz, mert amikor egy sort

• relációs algebra (LEAP, letölthet ˝o, SIGMOD-ról link), ISBL nehezen emészthet ˝obb, algebrai alapú; ez volt: láttuk, hogy relációs algebrával jól meg lehet