ALGORYTMY I STRUKTURY DANYCH

20
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 11 Kolejki priorytetowe i słowniki Grażyna Mirkowska PJWSTK, 2002

description

ALGORYTMY I STRUKTURY DANYCH. WYKŁAD 11 Kolejki priorytetowe i słowniki Grażyna Mirkowska PJWSTK, 2002. Plan wykładu. Kolejki priorytetowe Specyfikacja Zastosowania Słowniki Specyfikacja Implementacja - Tablice hash. Kolejki priorytetowe. - PowerPoint PPT Presentation

Transcript of ALGORYTMY I STRUKTURY DANYCH

Page 1: ALGORYTMY I STRUKTURY  DANYCH

ALGORYTMY I STRUKTURY DANYCH

WYKŁAD 11 Kolejki priorytetowe i słowniki

Grażyna MirkowskaPJWSTK, 2002

Page 2: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 2

Plan wykładu

Kolejki priorytetowe – Specyfikacja– Zastosowania

Słowniki– Specyfikacja– Implementacja - Tablice hash

Page 3: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 3

Kolejki priorytetowe

Strukturę danych nazywamy kolejką priorytetową wttw jej uniwersum składa się z dwóch rozłącznych zbiorów Et i Q oraz określone są następujące relacje i operacje

insert : Et Q Qdelmin : Q Qmin : Q Etmember : E Q B0

empty : Q B0

: Et Et B0

spełniające następujące postulaty :1. < Et, > jest zbiorem liniowo uporządkowanym.

Sygnatura struktury

Page 4: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 4

Specyfikacja kolejek priorytetowych 1

2. empty(q) ((e) member(e,q) min(q) e)

3.member(e, insert(e,q))

e e’ member(e’, q) member(e’,insert(e,q))

4. member(min(q),q)

member(min(q), delmin(q))

e min(q) member(e, q) member(e, delmin(q))

insert(e,q) powoduje umieszczenieelementu e w kolejce q

o ile go tam nie było

insert(e,q) powoduje usunięcie

tylko elementuminimalnego

Page 5: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 5

Specyfikacja kolejek priorytetowych 2

6.member(e,q) P bool

P : {bool := false; while(not empty(q) and not bool ) do bool := (min(q)=e); q:=delmin(q) od}

Każda kolejka jest skończona

5. while (not empty(q)) do q := delmin(q) od true

Jeśli element e należy do kolejki q, to

po skończonej liczbie usunięć kolejnych elementów minimalnych

dotrę do tego elementu

Page 6: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 6

Model standardowy

PQ(E) = E Fin(E), insert, delmin, min, member, empty,

gdzie

insert(e, q) =df q {e}delmin (q) =df q \ {min(q)}

min(q) = df minimum{e: e q}

member(e,q) df e q

jest relacją liniowego porządku w zbiorze etykiet E.

Zbiór możliwych elementów

kolejek

Zbiór możliwych zawartości kolejek, tzn. zbiór skończonych

podzbiorów zbioru E

ax

Page 7: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 7

Twierdzenie o reprezentacji

Każdy model specyfikacji Kolejek Każdy model specyfikacji Kolejek Priorytetowych jest izomorficzny Priorytetowych jest izomorficzny

z pewnym modelem standardowym.z pewnym modelem standardowym.

Zbiór modelidla specyfikacji

kolejek prio-rytetowych

Modele standardowe

E E

izomorfizm

Page 8: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 8

Przykład 1: sortowanie

Dany jest zbiór X, podzbiór pewnej liniowo uporządkowanej przestrzeni E, <E, >. Uporządkować elementy zbioru X rosnąco.

1. Utworzyć kolejkę priorytetową pq, której elementami są elementy zbioru X i 2. wykonać algorytm

{i:=1; While not empty(pq) do e[i] := min(pq); pq := delmin(pq); i := i+1; od;}

RozwiązanieRozwiązanie

Page 9: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 9

Poprawność algorytmu

{i:=1; While (not empty(pq) ) do

e[i] := min(pq);

pq := delmin(pq);

i := i+1;

od;

}

e[1] e[2]... e[i-1]

Min(pq) jest najmniejszym elementem w pq, czyli min(pq) jest najmniejszym elementem w X-{e[1],...,e[i-1]}

e[j] e[i] dla j=1,2,...i-1

e[1] e[2]... e[i-1] e[i]

e[1] e[2]... e[i-1] ax1 ax2

NiezmiennikNiezmiennik

Page 10: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 10

Przykład 2 : podział zbioru

Dane są zbiory A, B i C w pewnej przestrzeni liniowo uporządkowanej <E, > takie, żecard(A) = n, card(B) = m, A B= C, A B = .

Znaleźć podział zbioru C na podzbiory A’ i B’ takie, że card(A’) = n card(B’) = m i (aA’)(bB’) a b.

A: 3, 15, 1, 9, 10, 23, 8, 17 B: 24, 5, 18, 12, 4 4, 23,17, 5,PrzykładPrzykład

max(A) min(B)

Page 11: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 11

Algorytm- podział zbioru

while (not min(A) min(B)) do

a := min(A); b := min(B);

A := insert(b,delmin(A)); B := insert(a, delmin(B))

od

A kolejka priorytetowa z porządkiem -1

B - kolejka priorytetowa z porządkiem

Card(A)=n card(B)=m, A B= C, A B = .

NiezmiennikNiezmiennik

min(A) min(B)

Page 12: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 12

Słowniki

Strukturę danych nazywamy słownikiem wttw jej uniwersum składa się z dwóch rozłącznych zbiorów Et i S oraz określone są następujące relacje i operacje

insert : Et S Sdelete : Et S Smember : Et S B0

amb : S Etempty : S B0

spełniające następujące postulaty :

1. empty(s) (e) member(e,s)

2. empty(s) member(amb(s),s)

Page 13: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 13

Specyfikacja słowników

3. member(e, insert(e,s))

e e’ member(e’, s) member(e’,insert(e,s))

4. member(e, delete(e,s))

e e’ member(e, s) member(e, delete(e’,s))

5. while (not empty(s)) do s := delete(amb(s),s) od empty(s)

6. member(e,s) P bool

P : {bool := false; while(not empty(s) and not bool ) do e’ := amb(s); bool := (e’=e); s:=delete(e’, s) od }

Jeśli e włożymy do słownika s, to member stwierdzi należenie tego elementu do s.

Delete usuwa tylko wskazany

element

Każdy słownik

jest skończony

Page 14: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 14

Model standardowy

SŁ(E) = E Fin(E), insert, delete, amb, member, empty

gdzie insert(e, s) =df s {e}delete (e, s) =df s \ {e}

amb(s) dowolna funkcja określona na elementach s

member(e,s) df e s

Możliwe modele:Możliwe modele:

A jakie są koszty operacji słownikowych w tych modelach?

Page 15: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 15

Najprostszy model - adresowanie bezpośrednie

U

Zbiór aktualnie używanych kluczy.

2 5 7

2 e1

tablica

5 e2

7 e3

1

n-11. Dobry koszt czasowy ale...2. Zbyt wiele „dziur”.

Card (U) = n

Page 16: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 16

Tablice mieszające (hash-table)

h : U {0,1,..., m-1}

przy czym card(U) > m

Funkcja mieszająca

k1k2

k3

U

m

Element k1

Element k2

Element k3

ZaletaZaleta: zamiast używać tablicy o rozmiarze U, używamy tablicy o rozmiarze m

Wada Wada : kolizje np.: h(k1) = h(k2)

h(k1)

h(k2)

h(k3)

Page 17: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 17

Rozwiązywanie kolizji

k1k2

k3

UTablica kolejek

m-1

0h(k1) = h(k2

Algorytmy dla operacji słownikowychAlgorytmy dla operacji słownikowych

insert(x,s) : Włóż x do kolejki Tab(h(k(x)) T(insert,s)=O(1)

delete(x,s) : usuń x z kolejki Tab(h(k(x)) T(delete,s)=O(dłKol)member(x,s) : przeszukaj kolejkę Tab(h(k(x)) T(member,s)=O(dłKol)

Element k1

Element k3

Element k2

Page 18: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 18

Szacowanie kosztów

Jaka jest długość kolejki? W najgorszym razie n , czyli card (U)

Średnio n/m = n/m

współczynnik charakterystyczny funkcji mieszającej

TwierdzenieTwierdzenieW tablicy hash w przypadku, gdy kolizje zostały rozwiązane przez kolejki, koszt nieudanego poszukiwania wynosi (1+), o ile koszt obliczenia funkcji mieszającej jest stały.

TwierdzenieTwierdzenieKoszt skutecznego poszukiwania w tablicy hash wynosi średnio (1+).

uzasadnienie

Page 19: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 19

Przykłady funkcji mieszających

Przykład 1Uniwersum kluczy składa się z liczb naturalnych.h(k) = k mod m

Przy takiej funkcji mieszającej trzeba unikać pewnych wartości m!

Np. gdyby m = 2 p, to wartość h(k) zależałaby tylko od p ostatnich bitów rozwinięcia dwójkowego liczby k.

Dobra liczba m, to liczba pierwsza niezbyt bliska potędze 2.

Przykład 2h(k) = m *(k *a –k * a ), gdzie a (0,1)

Typowo jako m wybiera się potęgi 2, bo wtedy łatwiejsza jest implementacja funkcji h.

Page 20: ALGORYTMY I STRUKTURY  DANYCH

grudzień 2002 G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki 20

Uzasadnienie

k=1...n(1/n ( średni koszt znalezienia klucza k) =

k=1..n (1/n ( 1+ i=1..m(1/m (koszt znalezienia klucza k w itej kolejce) =

k=1..nni=1...mmj=1.. j(1+).

Jeden z n kluczyKoszt wyliczenia funkcji hash

Prawdopodobieństwo, że klucz k trafi do itej kolejki

Prawdopodobieństwo, że klucz k znajdzie się w itej kolejce na j-tej pozycji