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

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

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

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

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

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

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

Algorytmy i struktury danych

Porządek symetryczny: right(x)

Matematyka dyskretna - 7.Drzewa

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

Drzewa podstawowe poj

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

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

Algorytmiczna teoria grafów

Algorytmy i struktury danych. wykład 5

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Ogólne wiadomości o grafach

Drzewa czerwono-czarne.

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

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukowane Reguły Decyzyjne I. Wykład 3

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:

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

Digraf. 13 maja 2017

Drzewa AVL definicje

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Algorytmy i Struktury Danych

PODSTAWY INFORMATYKI wykład 6.

Programowanie obiektowe

7a. Teoria drzew - kodowanie i dekodowanie

Algorytmy i Struktury Danych

Przykładowe B+ drzewo

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

Egzaminy i inne zadania. Semestr II.

Programowanie obiektowe

Struktury Danych i Złożoność Obliczeniowa

Rozwiązywanie problemów metodą przeszukiwania

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

Sortowanie bąbelkowe

Algorytmy i Struktury Danych.

Minimalne drzewa rozpinające

Graf. Definicja marca / 1

Metody Kompilacji Wykład 3

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Drzewa poszukiwań binarnych

Wstęp do Programowania potok funkcyjny

Matematyczne Podstawy Informatyki

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

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

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

Znajdowanie skojarzeń na maszynie równoległej

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Listy, kolejki, stosy

Podstawy Informatyki. Wykład 6. Struktury danych

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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Algorytmy i Struktury Danych.

Podstawy sztucznej inteligencji

Sztuczna Inteligencja i Systemy Doradcze

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

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

Analiza semantyczna. Gramatyka atrybutywna

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

Lista liniowa dwukierunkowa

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

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

Dynamiczne drzewa. Piotr Sankowski. - p. 1/27

TEORETYCZNE PODSTAWY INFORMATYKI

Wykład 8. Drzewo rozpinające (minimum spanning tree)

WYKŁAD 11 Uczenie maszynowe drzewa decyzyjne

Algorytmy i Struktury Danych

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

Ogólne wiadomości o drzewach

Złożoność obliczeniowa klasycznych problemów grafowych

Podstawowe własności grafów. Wykład 3. Własności grafów

INFORMATYKA DANE.

Wykłady z Matematyki Dyskretnej

Algorytmy i Struktury Danych, 9. ćwiczenia

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

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

ALGORYTMY I STRUKTURY DANYCH

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

7. Teoria drzew - spinanie i przeszukiwanie

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

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

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

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

Drzewa poszukiwań binarnych

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

1 Automaty niedeterministyczne

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Transkrypt:

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 Grafy, w których miedzy każdymi dwoma węzłami istnieje dokładnie jedna ścieżka Dla informatyków drzewa w zasadzie są takie same, ale zawsze dodatkowo wskazujemy węzeł początkowy, przez który wchodzimy na drzewo korzeń drzewa. Ponadto wszystkie krawędzie w naturalny sposób są zorientowane od korzenia do 2 liści.

Definicja drzewa formalnie Podobnie, jak z listami, zdefiniujemy zbiór D drzew o wartościach w zbiorze A rekurencyjnie, jako najmniejszy zbiór spełniający dwa warunki: nil D, czyli drzewo puste należy do D; jeśli a A oraz ciąg D=D 1,...D m składa się z drzew ze zbioru D, to para T=(a,D) jest drzewem ze zbioru D. Mówimy wtedy, że T jest ojcem dla każdego z drzew D k, zaś te z kolei są jego synami. 3

Pojęcia związane z drzewami węzeł wewnętrzny ojciec węzła x d korzeń 0 1 x liść 2 krawędź syn x-a 4 3 poziomy

Definicje Głębokość węzła poziom, na którym się znajduje Wysokość drzewa max z głębokości węzłów Stopień węzła liczba synów Stopień drzewa max z liczby synów Drzewo binarne drzewo stopnia <=2 Liść węzeł stopnia 0 Węzeł wewnętrzny węzeł stopnia >0 Przodek x każdy węzeł na ścieżce od korzenia do x Potomek x każdy węzeł którego przodkiem jest x 5

Drzewa nieuporządkowane Jeśli w definicji drzewa przyjmiemy, że kolejność synów nie ma znaczenia, czyli zamiast ciągu synów weźmiemy ich zbiór, to dostaniemy drzewo nieuporządkowane. Zdarzają sie też drzewa hybrydowe, w których niektóre węzły mają uporządkowanych synów, a inne nie. Nie będziemy się nimi zajmowali. 6

Drzewa binarne type drzewo = ^węzeł; węzeł = record w : typ; lsyn,psyn : drzewo var d:drzewo; 5 d 7

Wyszukiwanie wartości w drzewie function jest(x:typ; d:drzewo):boolean; if d=nil then jest := false else if d^.w=x then jest := true else jest := jest(x,d^.lsyn) or jest(x,d^.psyn) {leniwie} 8

Wyszukiwanie wartości w drzewie function jest(x:typ; d:drzewo):boolean; if d=nil then jest := false else if d^.w=x then jest := true else if jest(x,d^.lsyn) then jest:=true else jest:= jest(x,d^.psyn) {nie leniwie} 9

Liczymy liczbę liści w drzewie function LiczbaLisci(d: drzewo): integer; var lewo, prawo: integer; if d = nil then LiczbaLisci:=0 else if d^.lsyn=nil and d^.psyn=nil then LiczbaLisci:=1 else lewo := LiczbaLisci(d^.lsyn); prawo := LiczbaLisci(d^.psyn); LiczbaLisci := lewo + prawo; end 10

Obieg prefiksowy Często chcemy odwiedzić każdy węzeł drzewa. Sposób, w jaki to zrobimy może nam pomóc w rozwiązaniu konkretnego problemu. Poza omawianymi algorytmami przechodzenia grafów w przypadku drzew mamy możliwość zastosowania specyficznych procedur Od tej pory zajmujemy się drzewami binarnymi. 11

Obieg prefiksowy procedure wypiszprelp(d:drzewo); if d<>nil then Write(d^.w); wypiszprelp(d^.lsyn); wypiszprelp(d^.psyn) end 12

Obieg prefiksowy - PL procedure wypiszprepl(d:drzewo); if d<>nil then Write(d^.w); wypiszprepl(d^.psyn); wypiszprepl(d^.lsyn) end 13

Obieg infiksowy procedure wypiszinlp(d:drzewo); if d<>nil then wypiszinlp(d^.lsyn); Write(d^.w); wypiszinlp(d^.psyn) end 14

Obieg infiksowy - PL procedure wypiszinpl(d:drzewo); if d<>nil then wypiszinpl(d^.psyn); Write(d^.w); wypiszinpl(d^.lsyn) end 15

Obieg postfiksowy procedure wypiszpostlp(d:drzewo); if d<>nil then wypiszpostlp(d^.lsyn); wypiszpostlp(d^.psyn) Write(d^.w); end 16

Obieg postfiksowy - PL procedure wypiszpostpl(d:drzewo); if d<>nil then wypiszpostpl(d^.psyn); wypiszpostpl(d^.lsyn) Write(d^.w); end 17

Twierdzenia o obiegach Jeśli porządki w prezentowanych obiegach, to odpowiednio PreLP, PrePL, InLP, InPL, PostLP, PostPL, to PreLP=PostPL -1 PostLP=PrePL -1 InLP=InPL -1 18