AISDI slajdy 2006 wyk 7 id 5352 Nieznany

background image

Algorytmy i struktury danych

wykład VII

„Tablice z haszowaniem, statystyki pozycyjne”

dr in . Andrzej Zalewski

www:

www.ia.pw.edu.pl/~azalews2

e-mail:

a.zalewski@ia.pw.edu.pl

konsultacje:

roda godz. 12:15 – 13:00.

background image

(c) Andrzej Zalewski (IAiIS PW)

Plan wykładu

Tablice z haszowaniem

Statystyki pozycyjne

background image

Tablice z mieszaniem

(haszowanie, pami

rozproszona)

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie – pomysł i problem

Zamiast porównywa wyszukiwany klucz, z kluczami w

tablicy /drzewie (itp.)/ znajdujemy pozycj w tablicy na

podstawie samej warto ci klucza, tzn.

– dana jest funkcja H(k): K –> I, gdzie:

K – zbiór kluczy,
I – zbiór indeksów

– zauwa my, e zwykle: |K| >> |I|

szansa: wyszukiwanie/wstawianie/usuwanie w czasie

stałym (!)

– je li wyznaczenie H(k) nie jest „czasochłonne” obliczeniowo

K – zwykle zbiór liczb naturalnych

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie – pomysł c.d.

Problem: kolizja

– prawdopodobie stwo, e H(k)=H(k’), dla k

k

/tzw. kolizja/ jest znacz ce

– paradoks dnia urodzin – prawd. braku kolizji

daty urodzin |I|=365, dla liczby ludzi |K|>= 23

jest wi ksze ni 50%!

background image

(c) Andrzej Zalewski (IAiIS PW)

Funkcje haszuj ce – wymagane wła ciwo ci

Równomierne rozrzucanie:

– dla losowo wybranego klucza ka da pozycja w indeksie

jest jednakowo prawdopodobna niezale nie od

odwzorowania innych kluczy

„Całkowite wypełnianie” zbioru I

W ogólno ci dobór funkcji haszuj cej zale y od

wła ciwo ci zbioru kluczy

– np. dla k

∈<0,1), H(k)= k m , gdzie, |I| = m, haszuje

równomiernie

Typowo: |I| = N

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie

Dla kluczy nie całkowitoliczbowych –

przekształcamy klucz w liczb naturaln

– dla ci gów znaków: H(k) = (h

1

(c

1

) + h

2

(c

2

) +

...) mod m, h

1

, h

2

... – pewna funkcja mieszaj ca

– dla ci gów składaj cych si z kilku liczb

sklejamy poszczególne fragmenty klucza

korzystaj c z operacji mod w lub xor

– traktujemy tekst lub jego fragment jako liczb

w okre lonym systemie pozycyjnym – np. ab –

w systemie 24-kowym...

background image

(c) Andrzej Zalewski (IAiIS PW)

Funkcje mieszaj ce – haszowanie modularne

H(k) = k mod m /k – klucz

całkowitoliczbowy/

– problem dobór m:

• dobre m – liczba pierwsza,
m parzyste zły wybór – miesza po połowie

przestrzeni 0...m (k – parzyste => H(k) – parzyste, k

– nie parzyste => H(k) nieparzyste)

m – 2

k

– obci cie klucza do k najmniej znacz cych

bitów klucza

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie przez mno enie

H(k) = m (k A mod 1)

x mod 1 – ułamkowa cz

x

A

∈(0,1),

m – mało istotne – działa dla dowolnego m,

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie uniwersalne

Rodzina uniwersalna funkcji haszuj cych

– rodzina R = { H: K->I} , e

• liczba ró nych funkcji H w R odwzorowuj cych

ró ne klucze k i l w ten sam indeks H(k)=H(l) jest

nie wi ksza ni |R|/m, m=|I|

Haszowanie uniwersalne

– losujemy funkcj haszuj c z rodziny

uniwersalnych funkcji haszuj cych

background image

(c) Andrzej Zalewski (IAiIS PW)

Rodzina uniwersalna funkcji haszuj cych

niech p – liczba pierwsza wi ksza od

najwi kszego „haszowanego” klucza

niech a

∈{0,1, … p – 1} , b∈{1, 2, …, p –

1}

h

a,b

(k)= ((a*k+b) mod p) mod m, p>m

ciekawe: m dowolna liczba, nie koniecznie

pierwsza (m – liczba indeksów w tablicy)

background image

(c) Andrzej Zalewski (IAiIS PW)

Rodzina uniwersalna funkcji haszuj cych

Rodzina funkcji H

a,b

(k) jest rodzin uniweraln

funkcji haszuj cych

Wyja nienie (szkic dowodu):

q=(a*k

1

+ b) mod p i r=(a*k

2

+ b) mod p s ró ne dla

k

1

<>k

2

/sprawdzi q r/

– prawdopodobie stwo kolizji – to prawdopod., e q mod

m = r mod m (q i r kongruentne)

– dla danego q z pozostałych p – 1 liczba mo liwych

warto ci prawd., e q i r kongruentne wynosi: p/m - 1

<= (p -1)/m

– co daje prawdopodobie stwo kolizji wynosz ce 1/m.

– dla |R| funkcji haszuj cych dwa ró ne klucze w to samo

miejsce wynosi zatem |R|/m.

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie –

rozwi zywanie kolizji

metoda ła cuchowa

– tablica jest de facto tablic wska ników – normalnie

wskazuje co zero lub jeden element, w przypadku

kolizji dodajemy nast pne elementy

adresowanie otwarte – stosujemy funkcj H(k, i),

gdzie i – numer próby wyszukania/wstawienia

– liniowe: próbkujemy kolejno: H(k), H(k) –1, H(k) – 2

itd. je li dotrzemy do pustego miejsca nie znalazłszy

wcze niej klucza – klucza nie ma w tablicy – mo emy

wstawi nowy klucz lub stwierdzi brak klucza

szukanego – H(k, i) = (H’(k) + i) mod m

– haszowanie kwadratowe H(k, i)=(H’(k)+c

1

i+c

2

i

2

) mod

m, i – numer próby, c

1

, c

2

– stałe całkowite;

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie otwarte, podwójne

Z podwójnym haszowaniem

H(k, i) = (h

1

(k)+ i*h

2

(k)) mod m; i – numer

próby

h

1

– modularna funkcja haszuj ca

h

2

– dobrana tak, by przegl da cał tablic

• m = 2

n

, h

2

– daje tylko warto ci nieparzyste

• m – liczba pierwsza, , h

2

– liczby dodatnie, mniejsze

ni m – np. 1 + (k mod m’), np.. m’=m-1

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie - efektywno

W haszowaniu met. ła cuchow

– czas prop. 1 + n / m /wypełnienie tablicy/

W adresowaniu otwartym:

– 1/(n/m) ln (1/(1-n/m)), n/m<1
– konkretnie: n/m=0,5 – rednia liczba porówna

< 1,385, n/m=0,9 – 2,559 /Cormen/

Wniosek:

– haszowanie dla n/m<100% działa ca. w czasie

liniowym

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie doskonałe

Cel:

– zdefiniowa sposób wyszukiwania kluczy w czasie

stałym w statycznym zbiorze danych.

Def. Haszowanie jest doskonałe, je li w

pesymistycznym przypadku wymaga stałej liczby

odwoła do tablicy

Rozwi zanie:

– analog do rozwi zywania kolizji ła cuchowo:

• zamiast tworzy list elementów odwzorowywanych na dany

indeks i tworzymy dodatkowe tablice z haszowaniem,

starannie dobieraj c funkcje H

j

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie doskonałe – konstrukcja rozwi zania

I poziom – haszowanie modularne

II poziom – n

j

– liczba kluczy k, dla których

H(k)=i;

– rozwi zanie:m

j

= n

i

2

, stos. f-cj H

p, mi

, p – l-ba pierwsza

wi ksza od ka dej warto ci klucza

• mo na pokaza , e wtedy prawd. kolizji jest mniejsze ni 0,5,

je li posługujemy si r.u.f.h. (prawd. kolizji mi dzy k i l - 1/n,

ró nych k, l jest newton(n

i

, 2))

– konkluzja: znalezienie funkcji haszuj cej bez kolizji

wymaga „kilku prób”

– ile powinno wynosi m (H(k)=k mod m) na pierwszym

poziomie haszowania

background image

(c) Andrzej Zalewski (IAiIS PW)

Haszowanie doskonałe

Co z pami ci ?

– okazuje si , e je li m=n, to wart. oczekiwana

sumy długo ci tablic drugiego poziomu nie jest

wi ksza ni 2n

– prawdopodobie stwo, e tablice 2 poziomu

zajm wi cej ni 4n<1/2

background image

Statystyki pozycyjne –

problem wyboru

background image

(c) Andrzej Zalewski (IAiIS PW)

Stat. pozycyjne – definicja zadania

Dany jest n-elementowy zbiór. Znale i-ty

najmniejszy element

– Przykłady:

• min – 1’szy
• max – n’ty
• rodkowy – mediana element (n+1)/2 ‘y lub

(n+1)/2 ‘y

Rozwi zanie intuicyjne:

– sortujemy zbiór, sprawdzenie statystyki

pozycyjnej (dowolnej!) w czasie stałym

background image

(c) Andrzej Zalewski (IAiIS PW)

Rozwi zanie efektywne

Modyfikujemy sort. szybkie

– proc. randomized-partition(A, p, r) mo na

nieco zmodyfikowa , tak by dzieliła tablic na

A[pq-1], A[q+1…r], odp <= i > od el.

rozdziel i A[q] – element rozdzielaj cy.

Tym samym mamy 3 przypadki:

A[q] – jest szukan i-t statystyk
i-ta statyst. jest w lewej podtablicy A[pq-1]
i-ta statyst. jest w prawej podtab. A[q+1…r]

background image

(c) Andrzej Zalewski (IAiIS PW)

Algorytm

rand-select(A, p, r, i)

– if p=r then return A[p] //znaleziono
q=rand.-partition(A, p, r)
– k=q – p + 1
– if i=k then return A[q] //znaleziono
– if i<k then rand-select(A, p, q – 1, i) /lewa podt.
– else rand-select(A, q+1, r, i k)

background image

(c) Andrzej Zalewski (IAiIS PW)

Algorytm - wła ciwo ci

Co ciekawe – redni czas działania –

liniowy!

– intuicja: badamy tylko 1 z dwóch 2 drzew

rekurencji

– mo emy jednak przeci rekurencj ju na

samym pocz tku:

• przyp. szukan statystyk element rozdzielaj cy

background image

(c) Andrzej Zalewski (IAiIS PW)

Wybór w pesym. czasie liniowym

Szkic pomysłu

– wyznaczamy median median dla n/5 -

sortuj c elementy w podtablicach

– wyznaczamy median median dla kolejnych

grup 5 elementowych /mediany tworz kolejn

tablic , któr sortujemy i wyzn. med./

– dzielimy tablic wzgl. mediany median x, k-

indeks el. rozdziel.

– szukamy rekurencyjnie w lewej lub prawej

podtablicy lub ko czymy rekur. i=k

background image

Appendix do wyszukiwania

wzg. klucza

background image

(c) Andrzej Zalewski (IAiIS PW)

Wyszukiwanie metod Fibbon.

Liczby Fibbonaciego F

0

=0, F

1

=1, F

2

=1, F

k+1

= F

k

+ F

k-1

, czyli F

3

=2, F

4

=3, F

5

=5, F

6

=8

Drzewo Fibbonaciego w tablicy:

– rz du k=0, 1 po prostu 0
– rz du k>=2 korzeniem jest element F

k

, lewym

poddrzewem drzewo rz du F

k-1

, prawym

poddrzewem drzewo rz du F

k-2

z elementami o

indeksach powi kszonych o F

K

background image

(c) Andrzej Zalewski (IAiIS PW)

Drzewo Fibbonacciego

k=6, F

6

=8

8

5

11

3

7

10

12

12

6

9

11

5

6

7

2

1

2

0

1

4

3

4

8

9

10

background image

(c) Andrzej Zalewski (IAiIS PW)

Poruszanie si po drzewie Fibb.

Niech i=F

k

, p=F

k-1

, q=F

k-2

(i – na pocz tku

wskazuje korze )

Przej cie do lewego poddrzewa

i = i q (F

k

=F

k-1

+F

k-2

= > F

k-1

=F

k

– F

k-2

)

(p,q) = (q, p – q) (F

k-2

, F

k-3

)

Przej cie do prawego poddrzewa

i = i + q (zgodnie z definicj drzewa)
p = p – q /F

k-3

/, q = q – p /F

k-4

= F

k-2

– F

k-3

/

background image

(c) Andrzej Zalewski (IAiIS PW)

Wskazówki do konstrukcji algorytmu

Od tego miejsca ju bardzo prosto:

– zatrzymujemy si znalazłszy wła ciwy klucz
– przy próbie przej cia w lewo zatrzymujemy si ,

gdy q=0 (osi gn li my F

0

)

– przy próbie przej cia w prawo zatrzymujemy

si , gdy p=1

background image

Koniec


Wyszukiwarka

Podobne podstrony:
Podstawy logistyki wyk 3 id 367 Nieznany
algebra 2006 wyklad id 57189 Nieznany (2)
Open LDAP wyk id 336186 Nieznany
7 1 2006 odblokowany id 45042 Nieznany (2)
bazy danych wyk id 81390 Nieznany (2)
BAZY danych wyk id 81710 Nieznany (2)
GG 2006 3 1 06 id 190132 Nieznany
2005 2006 wojewodzki id 245049 Nieznany (2)
Prawo cywilne wyk I id 386414 Nieznany
piel slajdy1 ukl odd id 357119 Nieznany
praktyczny 2006 odp id 384888 Nieznany
2005 2006 szkolny id 245048 Nieznany (2)
Podstawy logistyki wyk 3 id 367 Nieznany
algebra 2006 wyklad id 57189 Nieznany (2)
pawm recenzja ep03 2006 id 3516 Nieznany
Na wyk ad id 312279 Nieznany
Foto slajdy 1 id 180096 Nieznany

więcej podobnych podstron