Algorytmy i struktury danych



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

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

Algorytmy i struktury danych. wykład 5

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

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

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

Porządek symetryczny: right(x)

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

Algorytmy i struktury danych

Drzewa podstawowe poj

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

Drzewa AVL definicje

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

Algorytmy i struktury danych

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:

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

STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA. Część 3. Drzewa Przeszukiwanie drzew

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

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

Struktury Danych i Złożoność Obliczeniowa

PODSTAWY INFORMATYKI wykład 6.

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

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i Struktury Danych

Drzewa czerwono-czarne.

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

Tadeusz Pankowski

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

Lista liniowa dwukierunkowa

Poprawność semantyczna

Listy, kolejki, stosy

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

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

Algorytmy i Struktury Danych

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Algorytmy i Struktury Danych

Definicja pliku kratowego

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

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

Drzewa poszukiwań binarnych

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

Podstawy Informatyki. Metody dostępu do danych

Sortowanie bąbelkowe

Przykładowe B+ drzewo

Algorytmy i Struktury Danych.

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

Drzewa poszukiwań binarnych

Co to są drzewa decyzji

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

Teoretyczne podstawy informatyki

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

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

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

Teoretyczne podstawy informatyki

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Algorytmy i struktury danych

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Drzewo binarne BST. LABORKA Piotr Ciskowski

Wykład 3. Drzewa czerwono-czarne

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Matematyka dyskretna - 7.Drzewa

Struktury danych: stos, kolejka, lista, drzewo

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

SYSTEMY UCZĄCE SIĘ WYKŁAD 3. DRZEWA DECYZYJNE. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016

Egzaminy i inne zadania. Semestr II.

Algorytmy i struktury danych. wykład 8

Gramatyki atrybutywne

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

Stos LIFO Last In First Out

Podstawy Informatyki. Wykład 6. Struktury danych

Drzewa wyszukiwań binarnych (BST)

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP

Ogólne wiadomości o grafach

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

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Wykład 14. Środowisko przetwarzania

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Wstęp do programowania. Różne różności

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Informatyka 1. Przetwarzanie tekstów

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Ogólne wiadomości o drzewach

Wykład 11. Konstrukcja drzew składniowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Dynamiczne struktury danych

Programowanie obiektowe

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Nierówność Krafta-McMillana, Kodowanie Huffmana

Wstęp do programowania

Struktury danych. przez użytkownika, jak to ma miejsce w przypadku zwykłych zmiennych statycznych.

Transkrypt:

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ą liczbę rozłącznych węzłów, stanowiących poddrzewa danego węzła. Węzeł początkowy (najwyŝszy) nazywany jest korzeniem. Element nie mający potomków (wskazań na inne węzły) nazywany jest liściem. Element nie będący liściem i korzeniem nazywamy węzłem wewnętrznym. Korzeń drzewa znajduje się na poziomie, a kaŝdy węzeł potomny znajduje się na poziomie o jeden wyŝszym. Maksymalny poziom wszystkich elementów jest nazywany głębokością drzewa. Liczbę bezpośrednich potomków węzła nazywamy stopniem węzła. Maksymalny stopień wszystkich węzłów jest stopniem drzewa. Liczbę gałęzi od korzenia do węzła nazywa się długością drogi wewnętrznej. 2

Drzewa - podstawy Szczególnie istotne okazują się drzewa binarne, tj. 2 stopnia (kaŝdy węzeł ma co najwyŝej 2 potomków). (Najlepszym przykładem drzewa binarnego jest drzewo genealogiczne, gdzie rodzice kaŝdej osoby traktowani są jako węzły potomne). korzen 33 korzeń (element) 3 27 TYPE wezel = record : integer; lewe : ^wezel; prawe : ^wezel; end; 8 47 4 Wskaźniki węzłów, które nie wskazują na Ŝadnego potomka mają wartość nil (wskazanie puste) 8 Drzewo 2-stopnia (binarne), o głębokości. 7 4 8 3 Przeglądanie drzew binarnych Przeglądanie drzewa oznacza czynność odwiedzenia wszystkich elementów drzewa zwykle w celu wykonania na nich operacji P. RozróŜnia się trzy porządki przeglądania drzewa:. wzdłuŝny: K, A, B 2. poprzeczny: A, K, B K 3. wsteczny: A, B, K A B PoniewaŜ drzewa są strukturą danych o definicji rekurencyjnej (tj. drzewo składa się z poddrzew) procedury przeglądania drzew najłatwiej sformułować rekurencyjnie. 4 2

Przeglądanie drzew binarnych. wzdłuŝny: K, A, B 2. poprzeczny: A, K, B 3. wsteczny: A, B, K A K B PROCEDURE wzdluzny(t: ^wezel) wzdluzny(t^.lewe); wzdluzny(t^.prawe); t PROCEDURE poprzeczny(t: ^wezel) poprzeczny(t^.lewe); poprzeczny(t^.prawe); PROCEDURE wsteczny(t: ^wezel) wsteczny(t^.lewe); wsteczny(t^.prawe); P(t^) Wyszukiwanie elementu w drzewie binarnym Wyszukiwanie elementu (o Ŝądanej wartości a) w drzewie niezorganizowanym moŝe korzystać z dowolnej procedury przeglądania drzewa, uzupełniając ją o operację P: np.: IF t^.klux=x THEN... PROCEDURE wzdluzny(t: ^wezel; x:integer) IF t^.=x THEN {operacje na u} wzdluzny(t^.lewe,x); wzdluzny(t^.prawe,x); ZłoŜoność obliczeniowa takiego wyszukiwania dla n-elementowego drzewa jest równa Ο(n). 3

Wyszukiwanie elementu w zorganizowanym drzewie binarnym Drzewa dobrze nadają się do przechowywania elementów w postaci zorganizowanej, co znacznie przyspiesza operację wyszukiwania (złoŝoność obliczeniowa Ο( log(n) ). RozwaŜmy drzewo, w którym dla kaŝdego węzła wszystkie e jego lewego poddrzewa są mniejsze o a danego węzła, a prawego większe. 2 4 40 20 3 30 3 43 8 7 Wyszukiwanie elementu w zorganizowanym drzewie binarnym Funkcja znajdz(t,x) wymaga podania wskaźnika korzenia oraz poszukiwanego a, a zwraca wskaźnik do elementu o szukanym u (lub nil gdy elementu nie znaleziono). FUNCTION znajdz(x: integer; t: ^wezel): ^wezel; VAR znaleziony: boolean; znaleziony:=false; WHILE (t<>nil) AND NOT znaleziony DO IF t^.=x THEN znaleziony:=true ELSE IF t^.>x THEN t:=t^.lewe ELSE t:=t^.prawe; znajdz:=t; 8 4

Wyszukiwanie elementu w drzewie z wartownikiem Operację wyszukiwania elementu w drzewie zorganizowanym moŝna znacznie uprościć poprzez wstawienie elementu kotwicznego dla wszystkich liści (wartownika). Podczas wyszukiwania ustawia się wartość a wartownika równą poszukiwanemu owi, co zapewnia poprawne zakończenie wyszukiwania, równieŝ w przypadku nie znalezienia elementu o danym a w drzewie. 2 4 40 20 3 30 3 43 8 x Wyszukiwanie elementu w drzewie z wartownikiem Funkcja znajdz(t,x) wymaga, jak poprzednio, podania wskaźnika korzenia oraz poszukiwanego a, a zwraca wskaźnik do elementu o szukanym u, lub wskazanie na wartownika gdy elementu nie znaleziono. 2 4 40 20 3 30 3 43 8 x FUNCTION znajdz(x: integer; t: ^wezel): ^wezel; wartownik^.:=x; WHILE t^.<>x DO IF x<t^. THEN t:=t^.lewe ELSE t:=t^.prawe; znajdz:=t; 0