Algorytmy i Struktury Danych, 9. ćwiczenia

Podobne dokumenty
Tablice z haszowaniem

Wykład 4. Tablice z haszowaniem

Porządek symetryczny: right(x)

Tablice z haszowaniem

Haszowanie. dr inż. Urszula Gałązka

Wysokość drzewa Głębokość węzła

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

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:

Matematyka dyskretna

Matematyka dyskretna

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

struktury danych dla operacji słownikowych

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

Podstawy Informatyki. Metody dostępu do danych

Drzewa poszukiwań binarnych

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

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

Algorytmy i Struktury Danych

Podstawowe struktury algebraiczne

Listy, kolejki, stosy

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Wykład 3 Równania rózniczkowe cd

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Przykładowe zadania z teorii liczb

Wykład 8. Drzewa AVL i 2-3-4

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

Algorytmy i struktury danych. wykład 5

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Układy równań i równania wyższych rzędów

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

ALGORYTMY I STRUKTURY DANYCH

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Sumy kwadratów kolejnych liczb naturalnych

Definicja pliku kratowego

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

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Haszowanie (adresowanie rozpraszające, mieszające)

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Drzewa wyszukiwań binarnych (BST)

Drzewa czerwono-czarne.

1. Wykład NWD, NWW i algorytm Euklidesa.

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Biotechnologia, Chemia, Chemia Budowlana - Wydział Chemiczny - 1

Teoretyczne podstawy informatyki

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

Wykład 14 i 15. Równania różniczkowe. Równanie o zmiennych rozdzielonych. Definicja 1. Równaniem różniczkowym zwyczajnym rzędu n nazywamy równanie

( ) Arkusz I Zadanie 1. Wartość bezwzględna Rozwiąż równanie. Naszkicujmy wykresy funkcji f ( x) = x + 3 oraz g ( x) 2x

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

Wykład 3. Drzewa czerwono-czarne

Definicja i własności wartości bezwzględnej.

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Matematyka dyskretna

Wielomiany. dr Tadeusz Werbiński. Teoria

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Matematyka Dyskretna Zestaw 2

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

Krzywe Freya i Wielkie Twierdzenie Fermata

Kongruencje twierdzenie Wilsona

Zadania do samodzielnego rozwiązania

Macierze. Rozdział Działania na macierzach

Matematyka dyskretna. 1. Relacje

Tadeusz Pankowski

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

Podstawy Informatyki Metody dostępu do danych

Sortowanie bąbelkowe

Wersja testu A 18 czerwca 2012 r. x 2 +x dx

R n = {(x 1, x 2,..., x n ): x i R, i {1,2,...,n} },

Teoretyczne podstawy informatyki

Lista liniowa dwukierunkowa

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

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

Wykład z równań różnicowych

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

Techniki wyszukiwania danych haszowanie

Lista 0. Kamil Matuszewski 1 marca 2016

Drzewa poszukiwań binarnych

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Równania różniczkowe. Notatki z wykładu.

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Metody numeryczne. Sformułowanie zagadnienia interpolacji

n=0 (n + r)a n x n+r 1 (n + r)(n + r 1)a n x n+r 2. Wykorzystując te obliczenia otrzymujemy, że lewa strona równania (1) jest równa

Ciała skończone. 1. Ciała: podstawy

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

Matematyka dyskretna. Andrzej Łachwa, UJ, A/15

Prawdopodobieństwo i statystyka

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

LX Olimpiada Matematyczna

1 Macierze i wyznaczniki

Matematyka dyskretna

Transkrypt:

Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące pola n, c[], key[], każdy węzeł wewnętrzny utrzymuje n kluczy i n+ wskaźników do synów, klucze są uporządkowane rosnąco, klucz w poddrzewie c[i] mają wartości pochodzą z przedziału [key[i ], key[i]] (definiujemy key[0] =, key[n + ] = ), wszystkie liście mają leżą na tej samej głębokości, każdy węzeł zawiera nie więcej niż 2t kluczy, każdy węzeł oprócz korzenia zawiera co najmniej t kluczy. B-drzewa usuwanie jeśli klucz k jest w węźle x i x jest liściem, to usuń k z węzła, jeśli klucz k jest w węźle wewnętrznym x, to: niech y syn x poprzedzający k, y 2 syn x występujący po k, k poprzednik k w drzewie, k 2 następnik k w drzewie, jeśli węzeł y ma co najmniej t kluczy, to rekurencyjnie usuń k i zastąp k przez k, w przeciwnym przypadku, jeśli węzeł y 2 ma co najmniej t kluczy, to rekurencyjnie usuń k 2 i zastąp k przez k 2, w przeciwnym przypadku, y i y 2 mają po t kluczy, scal węzeł y, klucz k i węzeł y 2 otrzymując węzeł y, usuń rekurencyjnie k z węzła y.

jeśli klucz k nie występuje w węźle wewnętrznym x, to: znajdź odpowiednie poddrzewo y w którym może znajdować się k, jeśli y ma co najmniej t kluczy, usuń rekurencyjnie k z y, wpp., jeśli y ma t kluczy, ale jeden z sąsiadów y ma t kluczy, to dodaj jeden klucz do y (jeden klucz przechodzi z x do y, jeden z brata y do x), wpp., scal y z dowolnym bratem i usuń k z tak utworzonego węzła (jeśli x jest korzeniem, to może to spowodować zmniejszenie wysokości drzewa). 3 Join i Split na 2 3 4 drzewach http://courses.csail.mit.edu/6.046/spring04/handouts/ps5-sol.pdf i ogólnie o 2 3 4 drzewach: https://www.cs.purdue.edu/homes/ayg/cs25/slides/chap3b.pdf 4 Przejście z 2 3 4 drzew na czerwono-czarne węzeł z jednym kluczem zamieniany jest na czarny węzeł, węzeł z dwoma kluczami zamieniany jest na dwa węzły czarny i jego czerwonego syna (możemy dowolnie wybrać lewy czy prawy), węzeł z trzema kluczami jest zamieniany na czarny węzeł z dwoma czerwonymi synami. 5 Drzepce Definicja:. drzewo zachowuje warunki BST, 2. każdy węzeł v, przechowuje swój prioritet pr(v), priorytety spełniają warunki kopca, tzn. pr(v) < pr(parent(v)) (dla v root) Z dużym prawdopodobieństwem wysokość drzepca jest równa O(log n). Kosz opertacji: search O(log n), insert O(log n), delete O(log n), join O(log n), https://en.wikipedia.org/wiki/treap 2

6 Uniwersalna klasa funkcji haszujących [[CLR, rozdział. Strona 234]] Dla dowolnej pary liczb a Z p ({,..., p }), b Z p, niech: Rodzina wszystkich takich funkcji to: h a,b (k) = ((ak + b) mod p) H p,m = {h a,b : a Z p i b Z p } Twierdzenie Klasa funkcji haszujących H p,m, jest klasą uniwersalną. Niech k, l Z p (k l). Dla danej funkcji haszującej h a,b, niech: r = (ak + b) mod p, s = (al + b) mod p. Zauważmy, że r s: r s a(k l) mod p Ponieważ a i (k l) są różne od zera, stąd też ich iloczyn (modulo p) jest również różny od zera. Co więcej każda możliwa para (a, b) z a 0 daje inną parę (r, s) z r s. Ponieważ możliwych par (r, s) z r s jest tylko p(p ), istnieje zatem wzajemnie jednoznaczne odwzorowanie między parami (a, b) z a 0 i parami (r, s) z r s. Tak więc dla każdej pary różnych kluczy k i l, jeśli wybierzemy (a, b) równomiernie losowo z Z p Z p, to wynikową parą (r, s) może być z jednakowym prawdopodobieństwem każda para różnych liczb modulo p. Wynika stąd, że prawdopodobieństwo kolizji dwóch różnych kluczy k i l jest równe prawdopodobieństwu, że r s ( ), gdzie r i s są różnymi losowymi wartościami modulo p. Dla ustalonego r liczba tych s, spośród pozostałych p możliwych wartości, dla których s r i s r ( ), wynosi co najwyżej: p/m (p )/m Prawdopodobieństwo, że r i s kolidują modulo m wynosi co najwyżej: (p )/m (p ) = /m Zatem dla każdej pary różnych wartości k, l Z p mamy: P r{h a,b (k) = h a,b (l)} /m 3

7 Adresowanie otwarte [[CLR, rozdział.4. Strona 236]] adresowane liniowe: h(k, i) = (h (k) + i) adresowanie kwadratowe: h(k, i) = (h (k) + c i + c 2 i 2 ) haszowanie dwukrotne: h(k, i) = (h (k) + ih 2 (k)) [[CLR, Rozdział, strona 242]] Twierdzenie 2 Jeśli współczynnik zapełnienia tablicy z haszowaniem wynosi α = n/m <, to oczekiwana liczba sprawdzanych pozycji w czasie wyszukiwania elementu, który nie występuje w tablicy, jest nie większa niż α, o ile jest spełnione założenie o równomiernym haszowaniu. Niech X będzie zmienną losową równą liczbie sprawdzanych pozycji. P r[x i] = n m n m n i + 2 m i + 2 αi (zauważmy, że n j m j n m dla 0 j < m) E[X] = P r[x i] α i = i= i= α i = α Twierdzenie 3 Jeżeli współczynnik zapełnienia tablicy z haszowaniem wynosi α, to wstawianie z adresowaniem otwartym wymaga średnio co najwyżej α sprawdzeń pozycji w tablicy, o ile spełniony jest warunek równomiernego haszowania. Wynika bezpośrednio z twierdzenia 2. [[CLR, Rozdział, strona 243 244]] Twierdzenie 4 Załóżmy, że element znajduje się w tablicy z haszowaniem przez adresowanie otwarte, a współczynnik zapełnienia tablicy α spełnia nierówność α <. Wtedy oczekiwana liczba sprawdzeń pozycji w tablicy wykonywanych w czasie wyszukiwania tego elementu jest nie większa niż α ln α. 4

Wyszukanie elementu k wymaga tyle samo czasu ile kosztowało jego wstawienie, stąd możemy uśrednić koszt wstawienia wszystkich elementów. n n m m i = m n n (H i i ta liczba harmoniczna). m i = α (H m H m n ) α (H m H m n ) = α m k=m n+ k m α m n x dx = α ln m m n = α ln α (stary CLR) 2.4-3 adresowanie otwarte, dwukrotne haszowanie, wykazać, że ciąg kontrolny jest permutacją gdy h 2 (k) jest względnie pierwsze z m Bez utraty ogólności możemy założyć, że h (k) = 0. Niech a = h 2 (k), d = gcd(a, n). Ciąg kontrolny ma postać ax( mod n). Rozważmy równanie ax z( mod n). z = d, z algorytmu Euklidesa wynika, że istnieje rozwiązanie równania ax + ny = gcd(a, n) = d x 0, z = kd x := kx 0 d z powiedzmy, że istnieją całkowite x, y spełniające równanie ax = z + ny, jednak d n i d a stąd lewa strona jest podzielna przez d, natomiast prawa nie! sprzeczność. 5