Algoritmuselmélet 6. előadás

Hasonló dokumentumok
Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

KÓDOLÁSTECHNIKA PZH december 18.

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Algoritmuselmélet 7. előadás

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

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

Algoritmuselmélet 18. előadás

Számelméleti alapfogalmak

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

Diszkrét matematika 2.C szakirány

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

Algoritmuselmélet 2. előadás

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

19. Hasításos technikák (hash-elés)

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

Mohó algoritmusok. Példa:

Algoritmusok és adatszerkezetek 2.

Diszkrét matematika 2.C szakirány

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

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

17. A 2-3 fák és B-fák. 2-3 fák

NULLADIK MATEMATIKA ZÁRTHELYI

Diszkrét matematika I.

Felvételi tematika INFORMATIKA

Algebra es sz amelm elet 3 el oad as Nevezetes sz amelm eleti probl em ak Waldhauser Tam as 2014 oszi f el ev

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

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

Informatikai Rendszerek Alapjai

Zárthelyi dolgozat feladatainak megoldása õsz

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

A számítástudomány alapjai

Waldhauser Tamás december 1.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Diszkrét matematika 2.C szakirány

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

SzA XIII. gyakorlat, december. 3/5.

Az Informatika Elméleti Alapjai

Tartalom. Algebrai és transzcendens számok

5. feladatsor megoldása

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

Algoritmuselmélet 11. előadás

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

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

4: Az IP Prefix Lookup Probléma Bináris keresés hosszosztályok alapján. HálózatokII, 2007

Diszkrét matematika I.

Shor kvantum-algoritmusa diszkrét logaritmusra

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

H=0 H=1. Legyen m pozitív egészre {a 1, a 2,, a m } különböző üzenetek halmaza. Ha az a i üzenetet k i -szer fordul elő az adásban,

Adatszerkezetek I. 6. előadás

Javítókulcs, Válogató Nov. 25.

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

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

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Rendezések. Összehasonlító rendezések

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

Adatbázisok elmélete 12. előadás

Algoritmuselmélet 1. előadás

illetve a n 3 illetve a 2n 5

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

32. A Knuth-Morris-Pratt algoritmus

Az Informatika Elméleti Alapjai

Titkosírás. Biztos, hogy titkos? Szabó István előadása. Az életben sok helyen használunk titkosítást (mobil, internet, jelszavak...

Haladók III. kategória 2. (dönt ) forduló

Véletlenszám generátorok és tesztelésük HORVÁTH BÁLINT

Diszkrét matematika 2.

Online migrációs ütemezési modellek

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Gyakorló feladatok. 2. Matematikai indukcióval bizonyítsuk be, hogy n N : 5 2 4n n (n + 1) 2 n (n + 1) (2n + 1) 6

Osztott algoritmusok

Arany Dániel Matematikai Tanulóverseny 2010/2011-es tanév 1. forduló haladók III. kategória

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

Adatszerkezetek 2. Dr. Iványi Péter

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

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Data Security: Public key

17. előadás: Vektorok a térben

Algoritmuselmélet 1. előadás

7. Számelmélet. 1. Lehet-e négyzetszám az a pozitív egész szám, amelynek tízes számrendszerbeli alakjában 510 darab 1-es és valahány 0 szerepel?

Következik, hogy B-nek minden prímosztója 4k + 1 alakú, de akkor B maga is 4k + 1 alakú, s ez ellentmondás.

Egészrészes feladatok

Számelmélet Megoldások

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

1. Részcsoportok (1) C + R + Q + Z +. (2) C R Q. (3) Q nem részcsoportja C + -nak, mert más a művelet!

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

Matematika pótvizsga témakörök 9. V

Arany Dániel Matematikai Tanulóverseny 2015/2016-os tanév 1. forduló Haladók III. kategória

Haladó rendezések. PPT 2007/2008 tavasz.

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Hibajavító kódok május 31. Hibajavító kódok 1. 1

biometria II. foglalkozás előadó: Prof. Dr. Rajkó Róbert Matematikai-statisztikai adatfeldolgozás

Hipotézis STATISZTIKA. Kétmintás hipotézisek. Munkahipotézis (H a ) Tematika. Tudományos hipotézis. 1. Előadás. Hipotézisvizsgálatok

Az értékelés a következők szerint történik: 0-4 elégtelen 5-6 elégséges 7 közepes 8 jó 9-10 jeles. A szóbeli vizsga várható időpontja

HHF0CX. k darab halmaz sorbarendezésének a lehetősége k! Így adódik az alábbi képlet:

Átírás:

Algoritmuselmélet 6. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 4.

ALGORITMUSELMÉLET 6. ELŐADÁS 1 Hash-elés álvéletlen próbával A 0, h 1 (K), h 2 (K),..., h M 1 (K) próbasorozat a 0, 1,..., M 1 számoknak egy a K kulcstól független álvéletlen permutációja. A sorozatnak gyorsan és hatékonyan reprodukálhatónak kell lennie véletlen Ha h(k) = h(l), akkor a K és L kulcsok teljes próbasorozata is megegyezik = másodlagos csomósodásnak Kvadratikus maradék próba Legyen M egy 4k + 3 alakú prímszám, ahol k egy egész. Ekkor a próbasorozat legyen ( ) M 1 2 ( ) M 1 2 0, 1 2, (1 2 ), 2 2, (2 2 ),...,,. 2 2 = Belátjuk, hogy ez tényleg permutáció.

ALGORITMUSELMÉLET 6. ELŐADÁS 2 Tétel. Ha M egy 4k + 3 alakú prímszám, akkor nincs olyan n egész, melyre n 2 1 (mod M). Bizonyítás: Indirekt tegyük fel, hogy n egy egész szám és n 2 1 (mod M). = 1 ( 1) M 1 2 n 2M 1 2 n M 1 1 (mod M). Az utolsó lépésnél a kis Fermat-tételt használtuk. Ha 0 i < j M 1 2, akkor i 2 j 2 (mod M). = j 2 i 2 = (j i)(j + i) felbontás egyik tényezője sem lehet osztható M-mel, tehát a szorzatuk sem Ugyanígy = i 2 j 2 (mod M). i 2 j 2 (mod M) = (ij 1 ) 2 1 (mod M)

ALGORITMUSELMÉLET 6. ELŐADÁS 3 Sikeres keresés költsége: C N 1 log(1 α) α 2 Sikertelen keresés költsége: C N 1 (1 α) α log(1 α) Ezek az összefüggések valamivel általánosabban érvényesek az olyan módszerekre, amelyekre h i (K) = f i (h(k)); vagyis ahol a h(k) érték már az egész próbasorozatot meghatározza.

ALGORITMUSELMÉLET 6. ELŐADÁS 4 Kettős hash-elés G. de Balbine, J. R. Bell, C. H. Kaman, 1970 körül. Lényeg: h mellett egy másik h hash-függvényt is használunk a h (K) értékek relatív prímek legyenek az M táblamérethez A K kulcs próbasorozata: h i (K) := ih (K). Ha M és h (K) relatív prímek = 0, h (K), 2h (K),..., (M 1)h (K) sorozat elemei mind különbözők modulo M Fontos sajátossága: különböző K és K kulcsok próbasorozatai jó eséllyel akkor is különbözők lesznek, ha h(k) = h(k ). A legjobb ismert implementációk időigénye (empirikus adatok alapján) C N 1 α log 1 (1 α) és C N 1 1 α.

ALGORITMUSELMÉLET 6. ELŐADÁS 5 A kettős 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.

ALGORITMUSELMÉLET 6. ELŐADÁ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őforduló kulcshalmazok egyáltalán nem véletlenszerűek. hasznos tanácsok = h(k) értéke lehetőleg a K kulcs minden bitjétől függjön és a h értékkészlete a teljes [0, M 1] címtartomány legyen

ALGORITMUSELMÉLET 6. ELŐADÁ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ű. 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ől függ. A jó M értékeket illetően van egy széles körben elfogadott recept: D. E. Knuth javaslata = M-et prímnek választjuk, úgy, hogy M nem osztja r k +a-t, ahol r a karakterkészlet elemszáma (pl. 128, vagy 256) és a, k kicsi" egészek. M prím = lényeges feltétel a kvadratikus maradék próbánál. Könnyű hozzájuk relatív prím számot találni = kettős hash-elés

ALGORITMUSELMÉLET 6. ELŐADÁS 8 Szorzómódszer β egy rögzített paraméter {x} jelöli az x valós szám törtrészét h(k) := M {βk}. Szemléletesen = {βk} kiszámításával a K kulcsot véletlenszerűen" belőjük a [0, 1) intervallumba = az eredményt felskálázzuk a címtartományba. Hatékonyan számítható speciális eset: M = 2 t, w = 2 32, és legyen A egy a w-hez relatív prím egész. Ekkor β = A választás mellett h(k) igen jól számolható. w A számok bináris ábrázolásával dolgozva lényegében egy szorzást és egy eltolást kell elvégezni.

ALGORITMUSELMÉLET 6. ELŐADÁ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őleg 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ő értéket vehetnek fel, és {(n + 1)β} a leghosszabbak egyikét fogja két részre vágni. a [0, 1)-beli számok közül a legegyenletesebb eloszlást a β = φ 1 = 5 1 = 0.618033988... és a β = φ 2 = 1 φ 1 értékek 2 adják. = érdemes a szorzómódszernél az A-t úgy választani, hogy A w közel legyen φ 1 -hez. = Fibonacci-hash-elés

ALGORITMUSELMÉLET 6. ELŐADÁS 10 A kettős hash-elés második függvénye Olyan h függvény kell, melynek értékei a [0, M 1] intervallumba esnek, és relatív prímek az M-hez Ha M prím = h (K) := K (mod M 1) + 1. = h (K) és M relatív prímek = elég sok különböző próbasorozatot ad Java animáció: Hash-elés

ALGORITMUSELMÉLET 6. ELŐADÁS 11 Szekvenciális keresés Ha egy állomány (tömb, lista, stb.) szegényes szerkezetű = nincs jobb, mint elejétől a végéig" bejárni, vagy legalábbis addig, amíg a keresett adatot meg nem találjuk. Ha egyenlő 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: N+1 2. Sikertelen keresés költsége: 1 + 2 + + N 1 + N + N N + 1 = N 2 + N N + 1 < N 2 + 1.

ALGORITMUSELMÉLET 6. ELŐADÁS 12 Tegyük fel, hogy csak sikeres keresésekkel van dolgunk, és legyen p i annak a valószínűsége, hogy az R i rekordot keressük. = Sikeres keresés átlagos költsége: C N = p 1 + 2p 2 + 3p 3 + + Np N. Hogy érdemes sorba rendezni az R i rekordokat? = csökkenő sorrendben Különböző eloszlások esetén: Egyenletes: p i = 1 N = C N = N+1 2 Egy nagyon ferde eloszlás: p i = 1 2 i = C N = 2 1 2 N 1

ALGORITMUSELMÉLET 6. ELŐADÁS 13 Zipf eloszlás: p i = 1 ih N, ahol H N = 1 + 1 2 + 1 3 +... + 1 n = log n + 0.55721... + o(1) = C N = N ip i = i=1 N 1 i = N N ih N H N log N i=1 80-20 szabály: Tapasztalat = Az adatelérési igények 80%-a a rekordoknak körülbelül csak 20%-át érinti. ϑ = log 0, 8 log 0, 2 1 7, c = 1 = C N 0, 122N p i = H (1 ϑ) N i c 1 ϑ, ahol és H (1 ϑ) N = 1 + 1 2 (1 ϑ) + + 1 N (1 ϑ)

ALGORITMUSELMÉLET 6. ELŐADÁS 14 Önszervező módszerek Mit tehetünk abban az esetben, ha a p i keresési valószínűségeket nem ismerjük, vagy esetleg azok idővel változnak? A keresett (és megtalált) R i elemet a tábla elejére visszük. Az eredmény: R i R 1 R 2... R N A keresett (és megtalált) R i elemet felcseréljük a megelőzővel. R 1... R i R i 1... R N Ha az eloszlás időben változik, akkor az első megoldás ajánlatos. Ha a {p i } eloszlás stabil, azaz időben nem változik, akkor a második heurisztika eredményesebb.

ALGORITMUSELMÉLET 6. ELŐADÁS 15 Információtömörítés A b 1,..., b n betűkből álló szöveget szeretnénk bitsorozatként kódolni. uniform kódolás = log 2 n a legrövidebb lehetséges kódhosszúság egy betűre eltérő hosszú kódszavak = dekódolás problémásabb Definíció. Egy bitsorozatokból álló kód prefix kód, ha egy betű kódja sem prefixe (kezdőszelete) egy másik kódjának. Formálisan: ha x és y két különböző betű kódja, akkor nincs olyan z bitsorozat, melyre xz = y. Egy prefix-tulajdonságú kóddal leírt üzenet egyértelműen visszafejthető.

ALGORITMUSELMÉLET 6. ELŐADÁS 16 0 1 0 1 0 1 A 0 1 E F 0 1 D B C Probléma: Adott egy szöveg, melyben a b i karakter q i -szer fordul elő. Keressünk olyan fát, amelyre a q i h(b i ) összeg minimális, ahol egy x csúcsra h(x) a gyökértől x-ig vezető úton bejárt élek száma.

ALGORITMUSELMÉLET 6. ELŐADÁS 17 Huffman-kód Optimális ilyen fa: Kezdetben n izolált csúcspontunk van. b i címkéje legyen q i. Tegyük fel, hogy már megépítettük az S 1,..., S k fákat, ezek gyökérpontjai x 1,..., x k, utóbbiak címkéi az r 1,..., r k számok. Ekkor vesszük a két minimális címkéjű gyökeret (legyenek ezek x i és x j ). Ezek fölé egy új y gyökérpontot teszünk, melynek fiai x i és x j. Az y címkéje r i + r j. 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.

ALGORITMUSELMÉLET 6. ELŐADÁS 18 23 0 1 13 10 1 0 7 0 0 1 1 3 0 1 A B C D E F 6 1 2 4 5 5

ALGORITMUSELMÉLET 6. ELŐADÁS 19 KAKUKKMADARAMNAK = 7 betű = uniform kódolással betűnként 3 bit, összesen 48 bit. 16 0 0 6 1 1 0 4 0 1 2 2 10 1 0 1 0 1 N R D U M A K 1 1 1 1 2 5 5 A betűk kódjai: K: 11, A: 10, M: 011, U: 0101, D: 0100, N: 000, R: 001 kódszó: 1110110101111101110010010001100110001011 KAKUKKMADARAMNAK összesen 40 bit

ALGORITMUSELMÉLET 6. ELŐADÁS 20 Optimális kód Tétel. A Huffman-fa optimális. Pontosabban fogalmazva, a Huffman-fa esetén az I = q i h(b i ) összeg minimális azon bináris fák között, amelyek levelei b 1,..., b n. Bizonyítás: A Huffman-fa által adott I érték legyen H(q 1, q 2,..., q n ). konstrukció = H(q 1,..., q n ) = H(q 1 + q 2, q 3,..., q n ) + q 1 + q 2 Jelölje Opt(q 1, q 2,..., q n ) a q i gyakoriságok esetén elérhető optimális I-értéket. Lemma. Legyen továbbra is q 1 q 2 a két legkisebb gyakoriság. Ekkor Opt(q 1, q 2,..., q n ) = Opt(q 1 + q 2, q 3,..., q n ) + q 1 + q 2.

ALGORITMUSELMÉLET 6. ELŐADÁS 21 Bizonyítás: Minden belső csúcsnak két fia van. Legyen most x egy levél az optimális fánkban, melyre h(x) a lehető legnagyobb, x-nek van a fában egy y testvére, címkéik q 1 és q 2. Töröljük az x és y csúcsokat, és írjuk az új levélbe a q 1 + q 2 címkét. A fa I-értéke legyen J. = Opt(q 1, q 2,..., q n ) = J (h(x) 1)(q 1 + q 2 ) + q 1 h(x) + q 2 h(x) = J + q 1 + q 2, = az új fának is optimálisnak kell lennie a q 1 + q 2, q 3,..., q n gyakoriságokra vonatkozóan, hiszen, ha J-n tudnánk javítani, akkor az eredeti fán is. Bizonyítás: (Tétel) Indukció, n = 2 Tegyük fel, hogy legfeljebb n 1 betű esetén igaz = Az indukciós feltevés szerint Opt(q 1 + q 2, q 3,..., q n ) = H(q 1 + q 2, q 3,..., q n ) = Opt(q 1, q 2, q 3,..., q n ) = H(q 1, q 2, q 3,..., q n ) Java animáció: Huffman-fa