ALGORYTMY I STRUKTURY DANYCH

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Materiały pomocnicze do wykładu
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
ALGORYTMY GRAFOWE.
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
S – student, P – przedmiot, W – wykładowca
Wykład 06 Metody Analizy Programów System Hoare
Badania operacyjne. Wykład 2
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
ANALITYCZNE MODELE SYSTEMÓW KOLEJKOWYCH
Model danych oparty na listach
Metody Sztucznej Inteligencji w Sterowaniu 2009/2010Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz,
Materiały pomocnicze do wykładu
Elementy kombinatoryki
Elementy Rachunku Prawdopodobieństwa c.d.
Matematyka Dyskretna, Struktury algebraiczne G.Mirkowska, PJWSTK
Elementy Rachunku Prawdopodobieństwa c.d.
Elementy Kombinatoryki (c.d.)
Analiza kosztu zamortyzowanego
Zapis informacji Dr Anna Kwiatkowska.
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska PJWSTK
Algorytmy i struktury danych Funkcje haszujące, wyszukiwanie wzorca
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
O relacjach i algorytmach
Algorytmy i struktury danych
Przegląd podstawowych algorytmów
Semantyczna poprawność algorytmów – dowodzenie za pomocą niezmienników
Algorytmy i struktury danych
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Modelowanie i identyfikacja 2010/2011Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz, Katedra.
Dynamiczne struktury danych
Algorytmy i Struktury Danych
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 04 k-ty co do wielkości. Stosy Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.
Algorytmy i Struktury Danych Struktury Danych
Teoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAiIS UJ – 2006/ /11/2006Prof. dr hab. Elżbieta Richter-Wąs Wykład 6 Model danych oparty.
ALGORYTMY I STRUKTURY DANYCH
Temat: Tworzenie bazy danych
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Listy.
Kolejka priorytetowa.
Zbiory rozłączne.
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

ALGORYTMY I STRUKTURY DANYCH WYKŁAD 10 Kolejki priorytetowe i słowniki Grażyna Mirkowska PJWSTK, 2004

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki Plan wykładu Kolejki priorytetowe Specyfikacja Zastosowania Słowniki Implementacja - Tablice hash Wiele zastosowań wymaga tworzenia i przechowywania dynamicznego na którym wykonuje się operacje typowe dla slowników: insert, search, delete. Tablice hash jest efektywną stukturą danych do implementacji słownika:przy rozsądnych założeniach operacje wykonuje sie z kosztem stałym. 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki Strukturę danych nazywamy kolejką priorytetową wttw jej uniwersum składa się z dwóch rozłącznych zbiorów E i Q oraz określone są następujące relacje i operacje insert : E Q  Q delmin : Q  Q min : Q  E member : E  Q  B0 empty : Q B0  : E  EtB0 spełniające następujące postulaty : Definicja Sygnatura struktury 1. < Et,  > jest zbiorem liniowo uporządkowanym. 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

Specyfikacja kolejek priorytetowych 1 2.  empty(q)  ((e) member(e,q)  min(q)  e) insert(e,q) powoduje umieszczenie elementu e w kolejce q o 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 elementu minimalnego 4. member(min(q),q)  member(min(q), delmin(q)) e  min(q)  member(e, q)  member(e, delmin(q)) 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

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, to po skończonej liczbie usunięć kolejnych elementów minimalnych dotrę 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 } 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

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 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

Twierdzenie o reprezentacji Każdy model specyfikacji Kolejek Priorytetowych jest izomorficzny z pewnym modelem standardowym. Zbiór modeli dla specyfikacji kolejek prio- rytetowych Modele standardowe E E izomorfizm 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki 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 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki 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 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

Przykład 2 : podział zbioru Dane są zbiory A, B i C w pewnej przestrzeni liniowo uporządkowanej <E,  > takie, że card(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 Na tym przykładzie chciałabym pokazać, jak stosuje się postulaty KolejekPriorytetowych do dowodzenia poprawności programów. 4, 5, B: 24, 5, 18, 12, 4 17, 23, metoda max(A)  min(B) 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

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) 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki Strukturę danych nazywamy słownikiem wttw jej uniwersum składa się z dwóch rozłącznych zbiorów E i S oraz określone są następujące relacje i operacje insert : E  S  S delete : E  S  S member : E  S B0 amb : S  E empty : S  B0 spełniające następujące postulaty : Definicja 1. empty(s)  (e) member(e,s) 2.  empty(s)  member(amb(s),s) 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

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 } 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki 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? 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

Najprostszy model - adresowanie bezpośrednie 2 e1 tablica 5 e2 7 e3 1 n-1 Card (U) = n U 2 5 7 Zbiór aktualnie używanych kluczy. Przypuśćmy, że zastosowanie wymaga zbioru dynamicznego, w którym wykonywac bedziemy operacje słownikowe : insert, delete, memeber. Przypuśćmy ponadto, że każdy element zbioru jest scharakteryzowany przez klucz, który należy do zbioru U={0,1,2...,n-1}. Uwaga! 1. Dobry koszt czasowy ale... 2. Zbyt wiele „dziur”. 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

Tablice mieszające (hash-table) Funkcja mieszająca h : U  {0,1,..., m-1} przy czym card(U) > m h(k1) Zaleta: zamiast używać tablicy o rozmiarze U, używamy tablicy o rozmiarze m m Element k1 k1 k2 k3 U h(k2) Element k2 Hash-table jest strukturą uogólniającą pojecie tablicy. Każdy element zamiast być bezpośrednio zapisany w tablicy pod adresem wskazanym przez klucz k, jest zapisywany pod adresem h(k), gdzie h jest pewną funkcją mieszającą. Element k3 h(k3) Wada : kolizje np.: h(k1) = h(k2) 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

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

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. Twierdzenie Koszt skutecznego poszukiwania w tablicy hash wynosi średnio (1+a). uzasadnienie 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

Przykłady funkcji mieszających Przykład 1 Uniwersum 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 2 h(k) = m *(k *a –k * a ), gdzie a (0,1) 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki

G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki Uzasadnienie S k=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 2019-02-22 G. Mirkowska, ASD_10 Kolejki priorytetowe i słowniki