Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP
|
|
- Mariusz Matuszewski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP Danuta Szeliga AGH Kraków
2 Drzewo Drzewo (tree) Drzewo jest hierarchiczną strukturą danych. Def. Drzewo jest to zbiór T jednego lub więcej elementów zwanych węzłami, takich że istnieje jeden wyróżniony węzeł zwany korzeniem drzewa i pozostałe węzły (z wyłączeniem korzenia) są podzielone na m 0 rozłącznych zbiorów T 1,..., T m, z których każdy jest drzewem, zwanym poddrzewem korzenia. Pierwszy obiekt zwany jest korzeniem, kolejne obiekty traktowane są jako jego potomstwo: węzły. Liście to węzły nie mające potomstwa Droga w drzewie sekwencja węzłów w drzewie odpowiadających przejściu w kierunku od korzenia do liścia Pojęcia: rodzic, przodek, potomek, rodzeństwo (dwa węzły są rodzeństwem, gdy mają tego samego ojca) Warianty: drzewa AVL, drzewa czerwono-czarne, BST,...
3 Drzewa binarne Drzewo binarne jest skończonym zbiorem węzłów, który jest albo pusty, albo zawiera korzeń oraz dwa drzewa binarne Każdy węzeł przechowuje dwa wskaźniki: do lewego poddrzewa left i prawego poddrzewa right root jest wskaźnikiem do drzewa Jeśli root = Λ - drzewo puste wpp root jest adresem korzenia drzewa, left(root) wskazuje lewe poddrzewo, right(root) wskazuje prawe poddrzewo Implementacja wskaźnikowa struct NODE{ T val; // wartość NODE* left; // wskaźnik do lewego syna NODE* right; // wskaźnik do prawego syna * root = null; // początkowo drzewo jest puste
4 Drzewa binarne - operacje Podstawowe operacje dla drzew wyliczenie wszystkich elementów drzewa ("przejście" drzewa) wyszukanie elementu dodanie nowego elementu/poddrzewa w określonym miejscu drzewa usunięcie elementu/poddrzewa
5 Przechodzenie drzewa binarnego Jest to systematyczne przeglądanie węzłów w taki sposób, ze każdy węzeł jest odwiedzony dokładnie jeden raz Przejście drzewa wyznacza porządek liniowy w drzewie 6 sposób przechodzenia drzewa VLR, LVR, LRV, VRL, RVL, RLV gdzie: Visit = odwiedź węzeł, Left = idź w lewo, Right = idź w prawo W szczególności wyróżnia się trzy pierwsze: VLR pre-order, wzdłużny: korzeń, lewe poddrzewo, prawe poddrzewo LVR in-order, poprzeczny: lewe poddrzewo, korzeń, prawe poddrzewo LRV post-order, wsteczny: lewe poddrzewo, prawe poddrzewo, korzeń preorder ( NODE* root){ if( root) return ; visit( root ->val) if( root ->left) preorder ( root ->left); if( root ->right ); preorder ( root ->right); inorder ( NODE* root){ if( root) return ; if( root ->left) inorder ( root ->left); visit( root ->val); if(root ->right ) inorder ( root ->right); postorder( NODE* root){ if( root) return ; if( root ->left) postorder( root ->left); if(root -> right) postorder( root ->right); visit( root ->val);
6 Przykład Pre-order: A B D C E G F H I In-order: D B A E G C H F I Post-order: D B G E H I F C A
7 Porządek in-order - algorytm nierekurencyjny inorder ( NODE* root){ S = Λ; //S - stos p = root; // p - zmienna pomocnicza while (1){ while (p Λ){ push(s,p); p = p->left; if (S=Λ) return ; // koniec algorytmu p = pop(s); visit (p); p = p->right;
8 Drzewa poszukiwań binarnych - BST Binarne drzewo poszukiwań (Binary search tree) Binarne drzewo poszukiwań to drzewo binarne o następującej własności każdy element binarnego drzewa poszukiwań ma tę własność, że jego lewostronne potomstwo jest mniejsze bądź równe co do wartości od tego elementu, a prawostronne potomstwo jest większe bądź równe (drzewo BST) Własność binarnego drzewa binarnego dla każdego węzła x drzewa zachodzi: x->val x->left->val oraz x->val x->right->val
9 Implementacja BST Implementacja wskaźnikowa struct BST_N{ T val; // wartość BST_N* left; // wskaźnik do lewego syna BST_N* right; // wskaźnik do prawego syna BST_N* parent ; // opcjonalny wskaźnik do ojca * root = null; // początkowo drzewo jest puste Implementacja tablicowa struct BST_N{ T val; // wartość integer left; // wskaźnik do lewego syna integer right; // wskaźnik do prawego syna integer parent ; // opcjonalny wskaźnik do ojca tree[n]; root = 0; // początkowo drzewo jest puste
10 Operacje na BST Przechodzenie drzewa Wyszukiwanie węzła o podanym kluczu największego/najmniejszego następnika/poprzednika węzła Wstawianie węzła do drzewa Usuwanie węzła/podrzewa
11 Przechodzenie BST I Własność BST umożliwia wypisanie wszystkich znajdujących się w nim elementów w uporządkowany sposób Wykorzystujemy algorytm przechodzenia drzewa metodą inorder (przechodzenie poprzeczne) inorder ( BST_N* root){ if( root) stop; if( root ->left) inorder ( root ->left); wypisz ( root ->val); if( root ->right) inorder ( root ->right); Złożoność: O(n), n liczba węzłów drzewa
12 Przechodzenie BST II Niekiedy procedura przechodzenia drzewa BST nazywana jest "sortowaniem" drzewiastym Algorytm "sortowania" drzewiastego TreeSort (val arr[]){ BST_N * root arr; // przekształć listę inorder (root); wejściową w BST Procedura ta nie zmienia porządku w tablicy, a jedynie wypisuje elementy w sposób uporządkowany
13 Wyszukiwanie węzła w BST Wersja rekurencyjna BST_N * find( NODE* root, T x) { if ( root) return 0; if ( root ->val = x) return root; if ( root ->val > x) return find( root ->left,x); else return find( root ->right,x); Wersja iteracyjna NODE* find( BST_N* root, T x) { while ( root root ->val x) if( root ->val > x) root = root ->left; else root = root -> right; return root; Złożoność obliczeniowa: O(h), gdzie h jest wysokością drzewa
14 Wyszukiwanie minimum i maksimum w BST Wyszukiwanie minimum: należy przejść od korzenia do najbardziej lewego liścia BST_N * min( BST_N* root){ while ( root ->left) root = root ->left; return root; Wyszukiwanie maksimum: należy przejść od korzenia do najbardziej prawego liścia BST_N * max( BST_N* root){ while ( root ->right) root = root ->rigth ; return root; Złożoność obliczeniowa: O(h), gdzie h jest wysokością drzewa
15 Następnik i poprzednik w BST Struktura BST umożliwia wyznaczenie następnika i poprzednika bez konieczności porównywania kluczy Konieczne jest wtedy przechowywanie w każdym węźle wskaźnika do ojca NODE* parent Jeśli wszystkie klucze są różne, to następnikiem węzła x jest węzeł o najmniejszym kluczu większym od x->val poprzednikiem węzła x jest węzeł o największym kluczu mniejszym od x->val
16 Następnik w BST Następnik: jeżeli jest prawe poddrzewo, to następnikiem węzła x jest najmniejszy element tego poddrzewa jeżeli brak prawego poddrzewa, to następnikiem węzła x jest jego najniższy przodek, którego lewy syn jest przodkiem x Funkcja next BST_N * next( BST_N* x){ if (x->right) // jeżeli jest prawe poddrzewo return min(x->right ); // najmniejszy na prawo BST_N* y = x->parent ; // brak prawego poddrzewa while (y x = y->right){ // cofamy się do góry x = y; y = y->parent ; return y; Złożoność obliczeniowa: O(h), gdzie h jest wysokością drzewa
17 Poprzednik w BST Poprzednik: jeżeli jest lewe poddrzewo, to następnikiem węzła x jest największy element tego poddrzewa jeżeli brak lewego poddrzewa, to następnikiem węzła x jest jego najniższy przodek, którego prawy syn jest przodkiem x Funkcja prev BST_N * prev( BST_N* x){ if (x->left) // jeżeli jest lewe poddrzewo return max(x->left); // największy na prawo BST_N* y = x->parent ; // brak prawego poddrzewa while (y x = y->left){ // cofamy x = y; y = y->parent ; return y; się do góry Złożoność obliczeniowa: O(h), gdzie h jest wysokością drzewa
18 Wstawianie węzła w BST insert - BST( BST_N * root, BST_N* x){ if( root) { // jeżeli drzewo było puste root = x; stop; // x->left = x->right = NULL; BST_N* par = 0; BST_N* son = root; while (son){ par = son; if(par ->val > x->val) son = par ->left; else son = par ->right ; x->parent = par; // x->left = x->right = 0; if( par ->val > x->val) par ->left = x; // x - lewym synem else par ->right = x; // x - prawym synem
19 Usuwanie węzła w BST (3 przypadki)
20 Usuwanie węzła w BST remove - BST( BST_N* root, BST_N* z){ BST_N* y; if(z->left z->right) y = next(z); // do usunięcia else y = z; BST_N* x; if(y->left) x = y->left; // sprawdzenie, czy y ma lewego syna else x = y->right; if( x) x->parent = y-> parent ; // podpinamy x do ojca y- ka if(y->parent ) { // ojciec y- ka pokaże na x if(y = y->parent ->left) y->parent ->left = x; else y->parent ->right = x; else root = x; // jeżeli z = y jest korzeniem if( y z) // nadpisanie usuniętego z z->val = y->val; delete y; // fizyczne usunięcie węzła Usuwany element musi być zastąpiony przez lub swój następnik (w prawym poddrzewie) swój poprzednik (w lewym poddrzewie)
21 Inne rodzaje drzew Drzewa BST z powtarzającymi się kluczami Drzewa pozycyjne: porządek leksykograficzny klucz każdego węzła można jednoznacznie wyznaczyć na podstawie ścieżki od korzenia do tego węzła nie ma potrzeby przechowywania klucza w węźle
22 Drzewa zrównoważone W drzewach BST pesymistyczny koszt operacji dostępu (wyszukanie, wstawienie, usunięcie) jest proporcjonalny do wysokości drzewa - może być zatem liniowy Kształt drzewa (czyli również jego wysokość) zależy od ciągu wykonywanych na nim operacji Potrzebny jest dodatkowy mechanizm, który zapewni zrównoważenie drzewa, tzn. pomimo zmiany struktury drzewa, jego wysokość zawsze pozostaje logarytmiczna względem jego rozmiaru
23 Drzewa AVL Drzewo AVL (Gieorgij Adelson-Wielskij, Jewgienij Łandis) to drzewo BST spełniające dodatkowo następujący warunek zrównoważenia: w każdym węźle wysokości obu jego poddrzew różnią się co najwyżej o 1 Implementacja: w każdym węźle przechowywany jest dodatkowy atrybut (współczynnik zrównoważenia), przyjmujący wartości: -1 jeśli lewe poddrzewo jest o 1 wyższe niż prawe 0 jeśli oba poddrzewa są takiej samej wysokości +1 jeśli prawe poddrzewo jest o 1 wyższe niż lewe struct AVL_N{ struct BST_N; integer balance ; * root = NULL; // początkowo drzewo jest puste
24 Operacje na drzewie BST Operacje wyszukiwania są identyczne jak dla drzewa BST Operacje wstawiania i usuwania elementu są bardziej skomplikowane - zazwyczaj konieczna jest wtedy zmiana struktury drzewa tak, aby drzewo nadal pozostało zrównoważone Wstawienie węzłów o kluczach 9 lub 11 nie zmieni zrównoważenia drzewa Wstawienie węzłów o kluczach 1, 3, 5 lub 7 spowoduje konieczność wyważenia drzewa Do zmiany kształtu drzewa, bez zaburzania własności drzewa BST, służą operacje rotacji
25 Rotacje Rozróżniamy dwa istotne przypadki rotacji dwie operacje rotacji Rotacja pojedyncza (uczestniczą dwa węzły) Rotacja podwójna (uczestniczą trzy węzły)
26 Rotacja pojedyncza rot1left ( AVL_N* root, AVL_N* x){ AVL_N* y = x->right ; x->balance = y-> balance = 0; x->right = y->left; x->right ->parent = x; y->parent = x-> parent ; if(x->parent = NULL) root = y; else if(x->parent ->left = x) x->parent ->left = y; else x->parent ->right = y; y->left = x; x->parent = y; rot1right( AVL_N* root, AVL_N* y){ AVL_N* x = y->left; x->balance = y-> balance = 0; y->left = x->right ; y->left ->parent = y; x->parent = y-> parent ; if(y->parent = NULL) root = x; else if(y->parent ->left = y) y->parent ->left = x; else y->parent ->right = x; x->right = y; y->parent = x;
27 Rotacja podwójna rot2left ( AVL_N* root, AVL_N* A){ AVL_N *C=A->right, *B=C->left; A->right=B->left; // beta A->right ->parent =A; // beta C->left=B->right; // gamma C->left ->parent =C; // gamma B->parent =A-> parent ; if(a->parent =NULL) root=b; else if(a->parent ->left=a) A->parent ->left=b; else A->parent -> right=b; B->left=A; B->right =C; A->parent =C-> parent =B; if(b->balance =1){ A->balance =-1; C->balance =0; else { A->balance =0; C-> balance =+1; B->balance =0; rot2right( AVL_N* root, AVL_N* C){ AVL_N *A=C->left, *B=A->right; A->right=B->left; // beta A->right ->parent =A; // beta C->left=B->right ; // gamma C->left ->parent =C; // gamma B->parent =C-> parent ; if(c->parent =NULL) root=b; else if(c->parent ->left=c) C->parent ->left=b; else C->parent -> right=b; B->left=A; B->right =C; A->parent =C-> parent =B; if(b->balance =1){ A->balance =-1; C->balance =0; else { A->balance =0; C->balance =+1; B->balance =0;
28 Rotacja podwójna rot2left ( AVL_N* root, AVL_N* A){ integer balb = A->right ->left ->balance ; rot1right( root, A-> right); rot1left ( root, A); if( balb = 1){ B->left -> balance = -1; B->right -> balance = 0; else { B->left -> balance = 0; B->right -> balance = +1; B->balance = 0; rot2right( AVL_N* root, AVL_N* C){ integer balb = A->left ->right ->balance ; rot1left ( root, C->left); rot1right( root, C); if( balb = 1){ B->left -> balance = -1; B->right -> balance = 0; else { B->left -> balance = 0; B->right -> balance = +1; B->balance = 0;
29 Wstawianie węzłów w drzewie AVL Co może się zdarzyć po wstawieniu nowego w ezła do drzewa? (Wstawiamy węzeł do lewego poddrzewa L): jeżeli h(l) = h(r), to po wstawieniu L i P będą poddrzewami o różnej wysokości, ale kryterium wyważenia będzie wciąż spełnione jeżeli h(l) < h(r), to poddrzewa L i P uzyskują tę samą wysokość jeżeli h(l) > h(r), to kryterium wyważenie nie jest spełnione i drzewo musi być przebudowane
30 Wstawianie węzłów w drzewie AVL Proces wstawiania węzła 1 Schodzimy po ścieżce przeszukiwania drzewa 2 Wstawiamy nowy liść, wyznaczamy współczynnik wyważenia 3 Wracamy w kierunku korzenia, aktualizując współczynniki wyważenia Jeżeli wysokość drzewa nie zmieniła się, to kończymy W przeciwnym razie kontynuujemy marsz w górę drzewa 4 Jeżeli został naruszony warunek zrównoważenia, to przywracamy go za pomocą rotacji
31 Wstawianie węzłów w drzewie AVL insert - AVL( AVL_N* root, AVL_N* x, integer bal) { if( root){ root = x; root ->balance = 0; bal = 1; // tu + czy - nie ma znaczenia return ; if(x->val < root ->val) { // wstawiamy do lewego poddrzewa insert ( root ->left, x, bal); switch ( root ->balance ) { case 0: if( bal) root ->balance = -1; break ; case 1: if( bal) root ->balance = 0; break ; default : if( bal == -1) rot1right( root ->parent, root); else rot2right( root ->parent, root); root -> balance = 0; else { // wstawiamy do prawego poddrzewa insert ( root ->right, x, bal); switch (root -> balance ) { case 0: if( bal) root ->balance = 1; break ; case -1: if( bal) root ->balance = 0; break ; default : if( bal == -1) rot2left ( root ->parent, root); else rot1left ( root ->parent, root); root -> balance = 0; bal = root ->balance ;
32 Usuwanie węzłów w drzewie AVL Algorytm usuwania węzła w drzewie AVL bazuje na algorytmie usuwania węzła dla drzewa BST, choć musi być zmodyfikowany skomplikowany Po zastąpieniu usuniętego węzła jego następnikiem Z miejsca, skąd pobrano następnik, należy przejść w stronę korzenia, przywracając zrównoważenie wierzchołków używając rotacji 1 Odtwarzanie może być zatrzymane, jeśli współczynnik wyważenia zostaje zmieniony na -1 lub 1; oznacza to, że wysokość poddrzewa pozostaje niezmieniona 2 Zmiana współczynnika wyważenia na 0 oznacza zmniejszenie wysokości poddrzewa, aktualizowanie współczynników musi być kontynuowane 3 Jeśli współczynnik zostanie zmieniony na -2 lub 2, to wykonywana jest rotacja w celu przywrócenia struktury AVL Tym razem może się zdarzyć, że trzeba będzie dokonywać rotacji na tej drodze, aż do samego korzenia włącznie
33 Drzewa AVL Nawet w najgorszym przypadku można w drzewie AVL wykonać następujące operacje wyszukiwanie wstawianie węzła usuwanie węezła Drzewa AVL sprawdzają się najlepiej w sytuacjach, gdy najczęstszą operacją jest wyszukiwanie Twierdzenie (Adelson-Wielskij, Łandis) Niezależnie od liczby węzłów, drzewo AVL nie będzie nigdy wyższe o więcej niż 45% od swego dokładnie wyważonego odpowiednika Wysokość drzewa AVL h(n) o n węzłach log(n+1) h(n) log(n+2) 0.328
34 Drzewa czerwono-czarne Drzewo czerwono-czarne RBT (Rudolf Bayer, 1972) to drzewo BST, w którym: 1 każdy węzeł jest czerwony lub czarny 2 korzeń drzewa jest czarny 3 każdy liść (przyjmuje się, że liśćmi są elementy NIL) jest czarny 4 każdy czerwony węzeł ma czarne dzieci 5 każda prosta ścieżka z ustalonego węzła do liścia (w dół drzewa) ma tyle samo czarnych węzłów (gdyby miała tyle samo zarówno czerwonych, jak i czarnych węzłów, drzewo miałoby wszystkie gałęzie równej długości)
35 Drzewa czerwono-czarne struct RBT_N { struct BST_N ; string color ; // uwaga: wystarczy jeden dodatkowy bit * root = NULL; // początkowo drzewo jest puste Wartość NIL reprezentuje jeden czarny węzeł-wartownik Istotne informacje zawierają jedynie węzły wewnętrzne drzewa RB
36 Drzewa czerwono-czarne Liczbę czarnych węzłów na dowolnej ścieżce z węzła x (wykluczając węzeł x) do liścia nazywamy czarną wysokością węzła bh(x) Czarna wysokość drzewa RB to czarna wysokość jego korzenia
37 Drzewa czerwono-czarne Wysokość RBT o n węzłach wewnętrznych wynosi co najwyżej 2 log(n+1) Dowód Każde poddrzewo o korzeniu x ma co najmniej 2 bh(x) 1 węzłów wewnętrznych 1 jeśli x ma wysokość 0 (jest liściem), to poddrzewo zawiera co najmniej = 0 węzłów 2 jeśli x ma 2 synów, to czerwony syn ma wysokość bh(x) a czarny bh(x) 1; wysokość syna jest mniejsza niż wysokość x, zatem każde z poddrzew ma co najmniej 2 bh(x) 1 1 węzłów wewnętrznych; stąd poddrzewo o korzeniu x ma co najmniej 2(2 bh(x) 1 1)+1 = 2 bh(x) 1 węzłów wewnętrznych Jeśli h jest wysokością drzewa, to z własności (4) wynika, że co najmniej połowa węzłów na ścieżce korzeń-liść jest czarna czarna wysokość drzewa wynosi co najmniej h/2, a zatem n 2 h/2 1, stąd teza
38 Drzewa czerwono-czarne. Operacje Operacje wyszukiwania działają w drzewie RBT w czasie O(log n) Przewaga drzew RBT nad drzewami AVL polega na tym, że przywrócenie własności RBT po wstawieniu/usunięciu węzła wymagają co najwyżej dwóch rotacji Operacje wyszukiwania są identyczne jak dla drzewa BST Operacje wstawiania i usuwania elementu są bardziej skomplikowane - zazwyczaj konieczna jest wtedy zmiana struktury drzewa tak, aby drzewo nadal spełniało warunki drzewa RBT Operacje wstawiania i usuwania mają pesymistyczną złożoność obliczeniową O(log n)
39 Wstawianie węzła do drzewa RBT Wstawiamy węzeł analogicznie jak dla drzewa BST Kolorujemy wstawiony węzeł na czerwono Przekolorowujemy węzły tak, aby przywrócić własność drzewa RBT Rozpatrywane są 3 przypadki. Przypadek 1 odróżniamy od przypadków 2 i 3, rozpatrując kolor brata ojca węzła, który wstawiamy (x)
40 Wstawianie węzła do drzewa RBT Przypadek 1: brat y ojca x jest czerwony: Węzeł C (równy węzłowi x w nowej iteracji) jest czerwony Węzeł C parent jest niezmieniony Naprawiono zaburzenie własności (4), ale własność (2) może być dalej zaburzona
41 Wstawianie węzła do drzewa RBT Przypadek 2: brat y ojca x jest czarny i x jest prawym synem sprowadzamy do Przypadku 3 przez lewą rotację - zachowana jest własność (5) Przypadek 3: brat y ojca x jest czarny i x jest lewym synem: α, β, γ mają czarne korzenie - własność (4) δ też ma czarny korzeń (patrz Przypadek 1) Po wykonaniu tego kroku przerywana jest pętla for
42 Wstawianie węzła do drzewa RBT insert - RBT( RBT_N* root, RBT_N x){ insert -BST(root, x) while (x root and x->parent ->color = Red){ if (x->parent = x->parent ->parent ->left){ y x->parent ->parent ->right if(y->color = Red){ \\ Przypadek 1 x->parent ->color Black y->color Black x->parent -> parent Red x x->parent ->parent else{ if(x = x->parent ->right){ \\ Przypadek 2 x x-> parent rot1left ( root,x) x->parent ->color Black \\ Przypadek 3 x->parent ->parent ->color Red rot1right( root,x->parent - parent ) else { // tak samo jak dla if z zamienionymi rolami " right" i " left" root ->color Black
43 Usuwanie węzła z drzewa RBT Usuwamy węzeł analogicznie jak dla drzewa BST Przekolorowujemy węzły tak, aby przywrócić własność drzewa RBT Rozpatrujemy 4 przypadki, w każdym z nich usuwany węzeł jest oznaczony jako x Przypadek 1 zachodzi, jeśli węzeł w, brat węzła x, jest czerwony Przypadki 2, 3 i 4 zachodzą, jeśli węzeł w jest czarny i różnią się od siebie tym, jakie kolory mają synowie w
44 Usuwanie węzła z drzewa RBT Przypadek 1: brat w węzła x jest czerowny Węzeł w musi mieć czarnych synów można zamienić kolory w i x parent i wykonać lewą rotację w x parent Nowy brat węzła x, jeden z synów w, jest teraz czarny udało się sprowadzić przypadek 1 do jednego z przypadków 2,3 lub 4
45 Usuwanie węzła z drzewa RBT Przypadek 2: węzeł w jest czarny i obaj jego synowie są koloru czarnego w jest czarny usuwamy po jednej "czarnej jednostce" z x oraz w x pozostaje czarny, w staje się czerwony x->parent otrzymuje dodatkową "czarną jednostkę" jeśli Przypadek 2 powstaje z Przypadku 1, to color nowego węzła wskazywanego przez x jest czerwony, a ponieważ x->parent był czerwony, wykonanie pętli while zostaje przerwane
46 Usuwanie węzła z drzewa RBT Przypadek 3: węzeł w jest czarny, jego prawy syn jest czarny, a lewy syn jest czerwony zamieniamy kolory w o jego lewego syna w->left i wykonujemy prawą rotację dla w nowy brat w węzła x jest teraz czarny, a jego prawy syn czerwony przekształcono Przypadek 3 do Przypadku 4
47 Usuwanie węzła z drzewa RBT Przypadek 4: brat w węzła x jest czarny, prawy syn węzła w jest czerwony Przekolorowujemy węzły, wykonujemy lewą rotację dla węzła x->parent możliwe stało się usunięcie nadmiarowej "czarnej jednostki" w x Przypisanie zmiennej x wskazania na korzeń drzewa przerywa wykonanie pętli while
48 Usuwanie węzła z drzewa RBT Procedura zbliżona do procedury usuwania węzła w drzewie BST Przywrócenie własności drzewa RB następuje w procedurze remove-rbt-fixup remove - RBT( RBT_N* root, RBT_N* z){ if(z->left = Λ z->right = Λ) y z else y next(z) if(y->left Λ) x y->left else x y->right x->parent y-> parent if(y->parent = Λ) root x else if(y = y->parent ->left) y->parent ->left x else y->parent ->right x if(y z) z->val y->val if(y->color = Black) remove -RBT -FixUp(root,x) delete y
49 Usuwanie węzła z drzewa RBT remove -RBT - FixUp( RBT_N* root, RBT_N* x){ while (x root x->color = Black){ if(x = x->parent ->left){ w x->parent ->right if(w->color = Red){ // Przypadek 1 w->color Black x->parent ->color Red rot1left ( root, x->parent ) w x->parent ->right if(w->left ->color = Black w->right ->color = Black){ w->color Red // Przypadek 2 x x-> parent else{ if(w->right -> color = Black){ // Przypadek 3 w->left -> color Black w->color Red rot1right( root, w) w x->parent ->right w->color x->parent ->color // Przypadek 4 x->parent ->color Black w->right ->color Black rot1left ( root, x->parent ) x root else{// tak jak dla if tylko zamień rolami " right" i " left" x->color Black
Algorytmy i struktury danych Struktury danych IS/IO, WIMiIP
Algorytmy i struktury danych Struktury danych IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp Pojęcia podstawowe Abstrakcyjne typ danych Statyczna/dynamiczna struktura danych 2 Statyczne
Bardziej szczegółowoDrzewo. 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:
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Bardziej szczegółowoWysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
Bardziej szczegółowoWykład 2. Drzewa zbalansowane AVL i 2-3-4
Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania
Bardziej szczegółowoDrzewa czerwono-czarne.
Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric
Bardziej szczegółowoDrzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.
Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa
Bardziej szczegółowoPorządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Bardziej szczegółowoDrzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Bardziej szczegółowoWykład 3. Drzewa czerwono-czarne
Wykład 3 Drzewa czerwono-czarne 1 Drzewa zbalansowane Wprowadzenie Drzewa czerwono-czarne Definicja, wysokość drzewa Rotacje, operacje wstawiania i usuwania Literatura Cormen, Leiserson, Rivest, Wprowadzenie
Bardziej szczegółowoWykład 2. Drzewa poszukiwań binarnych (BST)
Wykład 2 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
Bardziej szczegółowoWykład 6. Drzewa poszukiwań binarnych (BST)
Wykład 6 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych
Bardziej szczegółowoWykład 8. Drzewa AVL i 2-3-4
Wykład 8 Drzewa AVL i 2-3-4 1 Drzewa AVL Ø Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Ø Drzewa 2-3-4 Definicja drzewa 2-3-4 Operacje wstawiania i usuwania Złożoność
Bardziej szczegółowoKażdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.
Drzewa binarne Każdy węzeł w drzewie posiada pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste. Uporządkowanie. Zakładamy, że klucze są różne. Klucze leżące
Bardziej szczegółowoListy, kolejki, stosy
Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:
Bardziej szczegółowoPodstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Drzewa poszukiwań binarnych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
Bardziej szczegółowoStruktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 3 Struktury drzewiaste drzewo binarne szczególny przypadek drzewa, które jest szczególnym przypadkiem grafu skierowanego, stopień każdego wierzchołka jest
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 8 1 /
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Bardziej szczegółowoALGORYTMY I STRUKTURY DANYCH
LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu
Bardziej szczegółowoWSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Drzewa i struktury drzewiaste www.agh.edu.pl DEFINICJA DRZEWA Drzewo
Bardziej szczegółowoAlgorytmy i struktury danych. wykład 5
Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również
Bardziej szczegółowoWyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna
Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2016 1 / 8 Plan Wstęp Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz Zmiany w funkcji main()
Bardziej szczegółowoDrzewa BST i AVL. Drzewa poszukiwań binarnych (BST)
Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie
Bardziej szczegółowoALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat 4: Realizacje dynamicznych struktur danych. Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Bardziej szczegółowo. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019
.. Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2019 1 / 39 Plan.1 Wstęp.2 Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz.3.4 Zmiany w
Bardziej szczegółowoDrzewa wyszukiwań binarnych (BST)
Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.
Bardziej szczegółowoPodstawy Informatyki. Metody dostępu do danych
Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie
Bardziej szczegółowoKoszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych
Koszt zamortyzowany Jeśli mamy ciąg operacji, to koszt zamortyzowany jednej z nich jest sumarycznym kosztem wykonania wszystkich operacji podzielonym przez liczbę operacji. Inaczej mówiąc jest to, dla
Bardziej szczegółowoAlgorytmy i Struktury Danych, 9. ćwiczenia
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
Bardziej szczegółowoDrzewa poszukiwań binarnych
1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich
Bardziej szczegółowoLista liniowa dwukierunkowa
53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej
Bardziej szczegółowoKolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
Bardziej szczegółowoSortowanie bąbelkowe
1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym
Bardziej szczegółowoTadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
: idea Indeksowanie: Drzewo decyzyjne, przeszukiwania binarnego: F = {5, 7, 10, 12, 13, 15, 17, 30, 34, 35, 37, 40, 45, 50, 60} 30 12 40 7 15 35 50 Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski
Bardziej szczegółowoWykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
Bardziej szczegółowoAlgorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne
Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może
Bardziej szczegółowoPodstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
Bardziej szczegółowoTeoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,
Bardziej szczegółowo< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >
Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających
Bardziej szczegółowoliniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:
Sortowanie stogowe Drzewo binarne Binary Tree Dotychczas operowaliśmy na prostych strukturach danych, takich jak tablice. W tablicy elementy ułożone są zgodnie z ich numeracją, czyli indeksami. Jeśli za
Bardziej szczegółowoprowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Wykład 9 - Drzewa i algorytmy ich przetwarzania (ciąg dalszy) Janusz Szwabiński Plan wykładu: Binarne drzewo poszukiwań (BST) Zrównoważone binarne drzewa poszukiwań (AVL) Implementacja
Bardziej szczegółowoPrzypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.
Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4
Bardziej szczegółowoStruktury danych: stos, kolejka, lista, drzewo
Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja
Bardziej szczegółowoALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Bardziej szczegółowoTeoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6b: Model danych oparty na drzewach http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Model danych oparty na drzewach
Bardziej szczegółowoAlgorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski
Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny
Bardziej szczegółowoWstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości
Bardziej szczegółowo. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016
.. Podstawy Programowania 2 Drzewa bst - część pierwsza Arkadiusz Chrobot Zakład Informatyki 22 maja 2016 1 / 55 Plan.1 Wstęp.2 Definicje.3 Implementacja Typ bazowy i wskaźnik na korzeń Dodawanie elementu
Bardziej szczegółowoDrzewa podstawowe poj
Drzewa podstawowe poj ecia drzewo graf reprezentujacy regularna strukture wskaźnikowa, gdzie każdy element zawiera dwa lub wiecej wskaźników (ponumerowanych) do takich samych elementów; wez ly (albo wierzcho
Bardziej szczegółowodr inż. Paweł Myszkowski Wykład nr 11 ( )
dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:
Bardziej szczegółowoSortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Bardziej szczegółowoAlgorytmy i Struktury Danych. (c) Marcin Sydow. Słownik. Tablica mieszająca. Słowniki. Słownik uporządkowany. Drzewo BST.
i Zawartość wykładu definicja słownika analiza naiwnych implementacji słownika tablice mieszające własności funkcji mieszającej analiza operacji słownika zaimplementowanych na tablicy mieszającej sposoby
Bardziej szczegółowoOgólne wiadomości o drzewach
Ogólne wiadomości o drzewach Algorytmy i struktury danych Wykład 4. Rok akademicki: 2010/2011 Drzewo jako struktura danych Drzewo kolekcja elementów pozostających w zależności hierarchicznej, posiadająca
Bardziej szczegółowoSTRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA. Część 3. Drzewa Przeszukiwanie drzew
STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA Część 3 Drzewa Przeszukiwanie drzew 1 / 24 DRZEWA (ang.: trees) Drzewo struktura danych o typie podstawowym T definiowana rekurencyjnie jako: - struktura pusta,
Bardziej szczegółowoPoprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Bardziej szczegółowoSortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:
Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące
Bardziej szczegółowoZadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
Bardziej szczegółowoStos LIFO Last In First Out
Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)
Bardziej szczegółowoAlgorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych
Algorytmy i Struktury Danych Wykład IV Sortowania cd. Elementarne struktury danych 1 Co dziś? Dolna granica sortowań Mediany i statystyki pozycyjne Warstwa implementacji Warstwa abstrakcji #tablice #listy
Bardziej szczegółowoDrzewa AVL definicje
Drzewa AVL definicje Uporzadkowane drzewo binarne jest drzewem AVL 1, jeśli dla każdego wez la różnica wysokości dwóch jego poddrzew wynosi co najwyżej 1. M D S C H F K Z typowe drzewo AVL minimalne drzewa
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań
Bardziej szczegółowoSortowanie - wybrane algorytmy
Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe
Bardziej szczegółowoBAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki
Bardziej szczegółowoWykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy
Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2015 1 / 21 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań
Bardziej szczegółowoKompresja danych Streszczenie Studia Dzienne Wykład 10,
1 Kwantyzacja wektorowa Kompresja danych Streszczenie Studia Dzienne Wykład 10, 28.04.2006 Kwantyzacja wektorowa: dane dzielone na bloki (wektory), każdy blok kwantyzowany jako jeden element danych. Ogólny
Bardziej szczegółowoWYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
Rekurencja - zdolność podprogramu (procedury) do wywoływania samego (samej) siebie Wieże Hanoi dane wejściowe - trzy kołki i N krążków o różniących się średnicach wynik - sekwencja ruchów przenosząca krążki
Bardziej szczegółowoAlgorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Bardziej szczegółowoMatematyka dyskretna - 7.Drzewa
Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja
Bardziej szczegółowoPrzykładowe B+ drzewo
Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku
Bardziej szczegółowoDynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowoAiSD zadanie drugie. Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5. 10 kwietnia 2008
AiSD zadanie drugie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 10 kwietnia 2008 1 Wstęp W nowym zadaniu porównywano efektywność kilku operacji na dwóch różnie zorganizowanych
Bardziej szczegółowoWstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach
Bardziej szczegółowo2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew
0-0-6 PLAN WYKŁADU Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew BAZY DANYCH Wykład 9 dr inż. Agnieszka Bołtuć INDEKSY - DEFINICJE Indeksy to pomocnicze struktury
Bardziej szczegółowoTypy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:
Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane
Bardziej szczegółowoWstęp do programowania
Wieczorowe Studia Licencjackie Wrocław, 9.01.2007 Wstęp do programowania Wykład nr 13 Listy usuwanie elementów Poniżej prezentujemy funkcję, która usuwa element o podanej wartości pola wiek z nieuporządkowanej
Bardziej szczegółowoBazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)
Indeksy Wykład przygotował: Robert Wrembel BD wykład 7 (1) 1 Plan wykładu Problematyka indeksowania Podział indeksów i ich charakterystyka indeks podstawowy, zgrupowany, wtórny indeks rzadki, gęsty Indeks
Bardziej szczegółowoPODSTAWY INFORMATYKI wykład 6.
PODSTAWY INFORMATYKI wykład 6. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,
Bardziej szczegółowoGrafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz
Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny
Bardziej szczegółowododatkowe operacje dla kopca binarnego: typu min oraz typu max:
ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu
Bardziej szczegółowoPlan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.
Plan wykładu 2 BAZY DANYCH Wykład 4: Indeksy. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów struktury statyczne struktury dynamiczne Małgorzata Krętowska Wydział Informatyki PB Pojęcie
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Liniowe struktury danych - Lista Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
Bardziej szczegółowoDefinicja pliku kratowego
Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Drzewa Witold Marańda maranda@dmcs.p.lodz.pl Drzewa - podstawy Drzewo jest dynamiczną strukturą danych składającą się z elementu węzłowego, zawierającego wskazania na skończoną
Bardziej szczegółowoBAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki
Bardziej szczegółowoOgólne wiadomości o grafach
Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,
Bardziej szczegółowoRekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!
Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym
Bardziej szczegółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Zaawansowane algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Sortowanie za pomocą malejących przyrostów metoda Shella Metoda jest rozwinięciem metody sortowania
Bardziej szczegółowoPodstawy Informatyki Metody dostępu do danych
Podstawy Informatyki Metody dostępu do danych alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Wprowadzenie Czym zajmuje się informatyka 2 Wprowadzenie Podstawowe problemy baz danych Struktury
Bardziej szczegółowoTwój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).
Powrót Twój wynik: 4 punktów na 6 możliwych do uzyskania (6667 %). Nr Opcja Punkty Poprawna Odpowiedź Rozważmy algorytm AVLSequence postaci: 1 Niech drzewo będzie rezultatem działania algorytmu AVLSequence
Bardziej szczegółowoWykład 5. Sortowanie w czasie liniowologarytmicznym
Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie
Bardziej szczegółowoEGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew
1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Liniowe struktury danych - Lista uporzadkowana. Wartownicy. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD)
Bardziej szczegółowoAlgorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne
Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na
Bardziej szczegółowoPodstawy Informatyki. Wykład 4. Struktury danych
Podstawy Informatyki Wykład 4 Struktury danych Języki programowania Kompilacja proces, w którym program w języku wysokiego poziomu jest tłumaczony na język adresów symbolicznych (asembler). Program realizujący
Bardziej szczegółowo