1 / 20

ALGORYTMY I STRUKTURY DANYCH

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.

ziva
Download Presentation

ALGORYTMY I STRUKTURY DANYCH

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Plan wykładu • Kolejki priorytetowe • Specyfikacja • Zastosowania • Słowniki • Specyfikacja • Implementacja - Tablice hash 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 B0empty : Q B0 : Et Et B0 • spełniające następujące postulaty : Definicja Sygnatura struktury 1. < Et,  > jest zbiorem liniowo uporządkowanym. G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  4. Specyfikacja kolejek priorytetowych 1 2.  empty(q)  ((e) member(e,q)  min(q)  e) insert(e,q) powoduje umieszczenieelementu e w kolejce qo ile go tam nie było 3.member(e, insert(e,q)) e  e’  member(e’, q)  member(e’,insert(e,q)) insert(e,q) powoduje usunięcie tylko elementuminimalnego 4. member(min(q),q)  member(min(q), delmin(q)) e  min(q)  member(e, q)  member(e, delmin(q)) G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  5. Specyfikacja kolejek priorytetowych 2 5. while (not empty(q)) do q := delmin(q) od true Każda kolejka jest skończona Jeśli element e należy do kolejki q, topo skończonej liczbie usunięć kolejnych elementów minimalnychdotrę do tego elementu • 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} G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  6. Zbiór możliwych elementów kolejek Model standardowy PQ(E) = E  Fin(E), insert, delmin, min, member, empty,   Zbiór możliwych zawartości kolejek, tzn. zbiór skończonych podzbiorów zbioru E 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. ax G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  7. Twierdzenie o reprezentacji Każdy model specyfikacji Kolejek Priorytetowych jest izomorficzny z pewnym modelem standardowym. Zbiór modeli dla specyfikacjikolejek prio-rytetowych Modele standardowe E E izomorfizm 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. Zadanie Rozwiązanie {i:=1; While not empty(pq) do e[i] := min(pq); pq := delmin(pq); i := i+1; od;} 1. Utworzyć kolejkę priorytetową pq, której elementami są elementy zbioru X i 2. wykonać algorytm G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  9. Poprawność algorytmu Niezmiennik {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 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 = . Zadanie Znaleźć podział zbioru C na podzbiory A’ i B’ takie, że card(A’) = n card(B’) = m i (aA’)(bB’) a b. Przykład A: 3, 15, 1, 9, 10, 23, 8, 17 4, 5, B: 24, 5, 18, 12, 4 17, 23, metoda max(A)  min(B) G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  11. Algorytm- podział zbioru B - kolejka priorytetowa z porządkiem  A kolejka priorytetowa z porządkiem -1 while (not min(A)  min(B)) do a := min(A); b := min(B); A := insert(b,delmin(A)); B := insert(a, delmin(B))od Card(A)=n card(B)=m, A  B= C, A  B = . Niezmiennik min(A)  min(B) 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 B0amb : S  Etempty : S  B0 • spełniające następujące postulaty : Definicja 1. empty(s) (e) member(e,s) 2. empty(s) member(amb(s),s) G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  13. Specyfikacja słowników Jeśli e włożymy do słownika s, to member stwierdzi należenie tego elementu do s. 3. member(e, insert(e,s)) e  e’  member(e’, s)  member(e’,insert(e,s)) Delete usuwa tylko wskazany element 4.  member(e, delete(e,s)) e  e’  member(e, s)  member(e, delete(e’,s)) Każdy słownik jest skończony 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 } G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  14. Model standardowy SŁ(E) = E  Fin(E), insert, delete, amb, member, empty  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 gdzie Możliwe modele: BST AVL A jakie są koszty operacji słownikowych w tych modelach? G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  15. tablica 1 2 e1 5 e2 7 e3 n-1 Najprostszy model - adresowanie bezpośrednie Card (U) = n U 2 5 7 Zbiór aktualnie używanych kluczy. Uwaga! 1. Dobry koszt czasowy ale...2. Zbyt wiele „dziur”. G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  16. h(k1) Element k1 h(k2) U Element k2 m k2 k1 k3 Element k3 h(k3) Tablice mieszające (hash-table) Funkcja mieszająca h : U  {0,1,..., m-1} przy czym card(U) > m Zaleta: zamiast używać tablicy o rozmiarze U, używamy tablicy o rozmiarze m Wada : kolizje np.: h(k1) = h(k2) G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  17. 0 Element k1 Element k2 U k2 m-1 Element k3 k1 k3 Rozwiązywanie kolizji Tablica kolejek h(k1) = h(k2 Algorytmy 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) G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  18. Szacowanie kosztów W najgorszym razie n , czyli card (U) Średnio n/m Jaka jest długość kolejki? a = n/m współczynnik charakterystyczny funkcji mieszającej Twierdzenie W tablicy hash w przypadku, gdy kolizje zostały rozwiązane przez kolejki, koszt nieudanego poszukiwania wynosi (1+a), o ile koszt obliczenia funkcji mieszającej jest stały. TwierdzenieKoszt skutecznego poszukiwania w tablicy hash wynosi średnio (1+a). uzasadnienie 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. Typowo jako m wybiera się potęgi 2, bo wtedy łatwiejsza jest implementacja funkcji h. Przykład 2h(k) = m *(k *a –k * a ), gdzie a (0,1) G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

  20. Uzasadnienie Sk=1...n(1/n ( średni koszt znalezienia klucza k) = Sk=1..n (1/n ( 1+ Si=1..m(1/m (koszt znalezienia klucza k w itej kolejce) = Sk=1..n(1/n ( 1+ Si=1...m( 1/m (Sj=1.. a (j * 1/a))) = (1+a). Prawdopodobieństwo, że klucz k znajdzie się w itej kolejce na j-tej pozycji Koszt wyliczenia funkcji hash Prawdopodobieństwo, że klucz k trafi do itej kolejki Jeden z n kluczy G. Mirkowska, ASD_11 Kolejki priorytetowe i słowniki

More Related