Algoritmuselmélet
Papp László <www.cs.bme.hu/ ∼ lazsa>
2015. tavasz 8. gyakorlat
1. Nyitott címzéssel hasheltünk egy 11 elem¶ táblába ah(k) = k(mod 11)hash-függvény és(a) lineáris
(d) kvadratikus maradék
próba segítségével. A következ® kulcsok érkeztek (a megadott sorrendben): 6,5,7,17, 16,3,2,14. Add meg a tábla végs® állapotát mindkét esetben!
Ezután töröljük ki mindkét táblából a 16 és a 2 kulcsokat, majd az így kapott táblákhoz adjuk hozzá a 4 és 12 kulcsokat ebben a sorrendben!
2. Mi a baja azf(K) =K2 (mod 7) hash-függvénynek, ahol 7 a táblaméret?
3. A T[0 : M] táblában 2n elemet helyeztünk el az els® 3n helyen (3n < M) egy isme- retlen hash-függvény segítségével. A táblában minden 3i index¶ hely üresen maradt (0≤i < n). Legfeljebb hány ütközés lehetett, ha az ütközések feloldására
(a) lineáris próbálást
(b) kvadratikus maradék próbálást használtunk?
4. Egy m méret¶ hash-táblában már van néhány elem. Adjon O(m) lépésszámú algorit- must, amely meghatározza, hogy egy újabb elem lineáris próbával történ® beszúrásakor maximum hány ütközés történhet.
5. Kett®s hashalést használva szúrja be egy kezdetben üres, M = 11 méret¶ táblába a következ® kulcsokat: 26,3,48,14,15,7. A használt hash függvény legyen h(k) = k (mod M), a próbasorozat hash függvénye pedig h0(k) = 1 + (k (mod M −5))
6. Ab0...bnalakún+1hosszú bitsorozatokat akarjuk tárolni. Tudjuk, hogy ab0 paritásbit, ami a sorozatban az egyesek számát párosra egészíti ki. Ha nyitott címzés¶ hash-elést használunk h(x)≡x (mod M)hash-függvénnyel és lineáris próbával, akkor M = 2n vagy M = 2n+ 1 méret¶ hash-tábla esetén lesz kevesebb ütközés?
7. AT[0 :M −1]táblában rekordokat tárolunk nyitott címzés¶ hashelt szervezéssel. Az ütközések feloldására lineáris próbát alkalmazunk. Tehát ha a h(K) sorszámú cella foglalt, akkor a K kulcsú rekordot a h(K)−1, h(K)−2, . . . sorszámú cellák közül az els® üresbe tesszük. Tegyük fel, hogy a tábla használata során egy hibás törlés történt:
egy cellából kitöröltünk egy rekordot a törlés-bit beállítása nélkül.
(a) Igaz-e, hogy a hibás törlés helye mindig megtalálható?
(b) Adjunk hatékony (lineáris id®igény¶) algoritmust a tábla megjavítására. (Módo- sítsuk úgy a táblát, hogy megsz¶njenek a hibás törlés negatív következményei.)
8. A kezdetben üresM méret¶ hash-táblába sorban beraktuk ak1, k2, . . . , kn kulcsokat a h(x)≡x(mod M)hash-függvénnyel, lineáris próbával. Jelöljet1 a keletkezett táblában az egymás melletti foglalt mez®k maximális számát. (Ciklikusan értve, azazt1 a követ- kez® beszúráskori leghosszabb próbasorozat hossza.) Amikor ugyanezt a k1, k2, . . . , kn sorozatot ugyanabban a sorrendben egy üres 2M méret¶ táblába rakjuk be a h(x)≡x (mod 2M) hash-függvénnyel, lineáris próbával, akkor a kapott táblában legyen t2 az egymás melletti foglalt mez®k maximális száma.
(a) Igazolja, hogy t2 ≤t1 (b) Igaz-e, hogy t1 ≤2t2 ?
2