struktury danych dla operacji słownikowych

Podobne dokumenty
Tablice z haszowaniem

Tablice z haszowaniem

Haszowanie. dr inż. Urszula Gałązka

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Wykład 4. Tablice z haszowaniem

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Algorytmy i Struktury Danych, 9. ćwiczenia

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Podstawy Informatyki Metody dostępu do danych

Techniki wyszukiwania danych haszowanie

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Lista, Stos, Kolejka, Tablica Asocjacyjna

Haszowanie (adresowanie rozpraszające, mieszające)

Podstawy Informatyki. Metody dostępu do danych

Podstawy Informatyki. Sprawność algorytmów

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Algorytmy i Struktury Danych. (c) Marcin Sydow. Słownik. Tablica mieszająca. Słowniki. Słownik uporządkowany. Drzewo BST.

Zazwyczaj rozmiar bloku jest większy od rozmiaru rekordu, tak więc. ich efektywna lokalizacja kiedy tylko zachodzi taka potrzeba.

Sortowanie bąbelkowe

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Porządek symetryczny: right(x)

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

Wykład 2. Drzewa poszukiwań binarnych (BST)

Wstęp do Programowania potok funkcyjny

Przykładowe B+ drzewo

Zadanie projektowe nr 1

Tadeusz Pankowski

Sortowanie przez scalanie

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

5. Podstawowe algorytmy i ich cechy.

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Wstęp do programowania

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Zaawansowane algorytmy i struktury danych

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Drzewa poszukiwań binarnych

Algorytmy i struktury danych

Drzewa poszukiwań binarnych

Algorytmy i Struktury Danych, 2. ćwiczenia

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Algorytmy w teorii liczb

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Zaawansowane algorytmy i struktury danych

Wstęp do programowania

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Złożoność algorytmów. Wstęp do Informatyki

Algorytmy i Struktury Danych.

Algorytmy i struktury danych. wykład 9

Złożoność Obliczeniowa Algorytmów

Temat: Algorytmy wyszukiwania wzorca w tekście

Algorytmy i Struktury Danych

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Jeszcze o algorytmach

Algorytm selekcji Hoare a. Łukasz Miemus

Struktury danych (I): kolejka, stos itp.

Wykład 6. Drzewa poszukiwań binarnych (BST)

Strategia "dziel i zwyciężaj"

PLAN WYKŁADU BAZY DANYCH HIERARCHIA MECHANIZMÓW SKŁADOWANIA PRZECHOWYWANIA BAZ DANYCH

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Dynamiczne struktury danych

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Sortowanie w czasie liniowym

Programowanie w VB Proste algorytmy sortowania

Wojna morska algorytmy przeszukiwania

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Drzewa wyszukiwań binarnych (BST)

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Wstęp do programowania

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Bazy danych. Andrzej Łachwa, UJ, /15

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Wykład 2. Poprawność algorytmów

Programowanie Proceduralne

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

Podstawowe struktury danych

INFORMATYKA SORTOWANIE DANYCH.

Algorytmy i Struktury Danych. (c) Marcin Sydow. Sortowanie Selection Sort Insertion Sort Merge Sort. Sortowanie 1. Listy dowiązaniowe.

Programowanie dynamiczne, a problemy optymalizacyjne

Efektywna metoda sortowania sortowanie przez scalanie

Wstęp do programowania

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

KOPCE KOLEJKI PRIORYTETOWE - PRZYPOMNIENIE KOPCE WYSOKOŚĆ KOPCA KOPCE I KOLEJKI PRIORYTETOWE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Wstęp do Programowania potok funkcyjny

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania

Algorytmy i Struktury Danych.

Analiza algorytmów zadania podstawowe

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

Transkrypt:

struktury danych dla operacji słownikowych tablica nieuporządkowana tablica uporządkowana lista dowiązaniowa drzewo poszukiwań binarnych drzewa zrównoważone z tablice haszowaniem

tablice z haszowaniem (tablice mieszań) (hash table)

tablica z haszowaniem T[0..m-1] wstawiamy zbiór kluczy K pochodzących ze zbioru możliwych kluczy U (z każdym kluczem związana jest pewna informacja) pseudolosowa funkcja haszująca h: U {0,1,..,m-1} idea: klucz k zapiszemy na pozycji h(k) w tablcy T k T[h(k)]

problem kolizji: k1 k2 ale f(k1) = f(k2) czyli dwa różne klucze przypadają na tę samą pozycję w tablicy są różne metody rozwiązywania problemu kolizji

funkcje haszujące - klucz jest liczbą haszowanie modularne h(k)= k%m - klucz nie jest liczbą generujemy liczbę na podstawie klucza i postępujemy jak poprzednio, np. k jest datą (d m r): h(d m r)=(d+m+r)%m k jest napisem abcde : h(abcde) = ( a + B( b + B( c +B( d + B e )))) % m gdzie B to pewna stała całkowita

Metoda łańcuchowa rozwiązywania kolizji W każdej pozycji tablicy T[i] jest początek listy tych kluczy k dla których h(k)=i 0 1 18 36 9 10 2 3 4 5 12 41 14 6 7 8 8

Metoda łańcuchowa rozwiązywania kolizji W każdej pozycji tablicy T[i] jest początek listy tych kluczy k dla których h(k)=i wstaw klucz k do tablicy T: wstaw k do listy T[h(k)] szukaj klucza k w tablicy T: szukaj k na liście T[h(k)] usuń klucz k z tablicy T: usuń k z listy T[h(k)]

Metoda łańcuchowa rozwiązywania kolizji Pesymistyczna złożoność czasowa operacji na tablicy z haszowaniem rozmiaru m, w której znajduje się n kluczy, z rozwiązywaniem konfliktów metodą łańcuchową: - wstaw, usuń: Θ(1) - szukaj: Θ(n)

Metoda łańcuchowa rozwiązywania kolizji Średnia złożoność czasowa operacji szukaj w tablicy z haszowaniem rozmiaru m, w której znajduje się n kluczy, przy założeniu o równomiernym haszowaniu: O(1+n/m) Wniosek. Jeżeli n c m gdzie c to jakaś stała, to złożoność czasowa operacji szukaj w tablicy z haszowaniem, przy założeniu o równomiernym haszowaniu: jest O(1)

Metoda łańcuchowa rozwiązywania kolizji Założenie o równomiernym haszowaniu: dla losowo wybranego klucza k, wartość h(k) z jednakowym prawdopodobieństwem trafia w każdą z pozycji 0,1,2,...,m-1

Rozwązywanie problemu kolizji przez adresowanie otwarte wariant: adresowanie liniowe Jeżeli pozycja tablicy T[h(k)] jest zajęta przez inny klucz, to dla klucza k szukamy wolnej pozycji na kolejnych pozycjach: (h(k)+i)%m dla i = 1,2,... gdzie x%m oznacza resztę z dzielenia x przez m

adresowanie liniowe zatem, dla klucza k generujemy ciąg pozycji H(k,i) = (h(k)+i)%m dla i = 0,1,2,... gdzie x%m oznacza resztę z dzielenia x przez m i próbujemy wstawić klucz k na tych pozycjach H(k,0), H(k,1), H(k,2),...

adresowanie liniowe 0 1 2 3 4 5 6 7 8 16 17 m=9 h(k) = k%m wstaw 25: h(25) = 25%9 = 7 H(25,0) = (h(25)+0)%9 = (7+0)%9 = 7 H(25,1) = (h(25)+1)%9 = (7+1)%9 = 8 H(25,2) = (h(25)+2)%9 = (7+2)%9 = 0

int wstaw(info x, info T[]){ int h,i,p; h=hash(x.klucz); i=0; // numer próby do{ p=(h+i)%m; if (T[p] jest wolne){ T[p]=x; return p; } else i++; } while(i<m); printf("przepelnienie\n"); return -1;

int szukaj(klucze k, info T[]){ int h,i,p; h=hash(k); i=0; // numer próby do{ p=(h+i)%m; if (T[p].klucz == k){ return p; } else i++; } while(t[p] nie jest wolne i i<m); return -1; }

adresowanie otwarte Pesymistyczna złożoność czasowa operacji na tablicy z haszowaniem rozmiaru m, w której znajduje się n kluczy, z rozwiązywaniem konfliktów metodą adresowania otwartego: - wstaw, szukaj: Θ(n) - usuń: Θ(1)

adresowanie otwarte Średnia złożoność czasowa operacji szukaj w tablicy z haszowaniem rozmiaru m, w której znajduje się n kluczy, z użyciem adresowania otwarego, przy założeniu o równomiernym haszowaniu: O(1/(1-α)), gdzie α = n/m. Wniosek. Jeżeli α c < 1 gdzie c to jakaś stała, to złożoność czasowa operacji szukaj w tablicy z haszowaniem, przy założeniu o równomiernym haszowaniu: jest O(1).

adresowanie otwarte Założenie o równomiernym haszowaniu: dla losowo wybranego klucza k, ciąg wartości H(k,0), H(k,1),...,H(k,m-1) z jednakowym prawdopodobieństwem daje każdą z permutacji liczb 0,1,2,...,m-1