Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Wstęp do programowania

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

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

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

Listy, kolejki, stosy

Ogólne wiadomości o grafach

Struktury danych: stos, kolejka, lista, drzewo

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

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

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Podstawy Informatyki. Wykład 6. Struktury danych

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

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

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 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Algorytmiczna teoria grafów

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

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

ALGORYTMY I STRUKTURY DANYCH

Tadeusz Pankowski

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

Algorytmy i Struktury Danych

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

Matematyka dyskretna - 7.Drzewa

a) 7 b) 19 c) 21 d) 34

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Algorytmy i Struktury Danych

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

Wstęp do Programowania potok funkcyjny

Struktury Danych i Złożoność Obliczeniowa

Podstawy Informatyki. Metody dostępu do danych

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

Teoretyczne podstawy informatyki

Algorytmy i Struktury Danych.

Wykłady z Matematyki Dyskretnej

Drzewa poszukiwań binarnych

Abstrakcyjne struktury danych - stos, lista, drzewo

Wstęp do programowania

Porządek symetryczny: right(x)

Stos LIFO Last In First Out

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

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

Algorytmy i struktury danych. wykład 5

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

Egzaminy i inne zadania. Semestr II.

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

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

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

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

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

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

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

ALGORYTMY I STRUKTURY DANYCH

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

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

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

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques


Algorytmy i Struktury Danych

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

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

AiSD zadanie trzecie

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

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

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Drzewo binarne BST. LABORKA Piotr Ciskowski

PODSTAWY INFORMATYKI wykład 6.

Wykład 8 - Drzewa i algorytmy ich przetwarzania

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

7. Teoria drzew - spinanie i przeszukiwanie

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

Struktury Danych i Złożoność Obliczeniowa

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Programowanie i projektowanie obiektowe

Wstęp do Programowania potok funkcyjny

Definicja pliku kratowego

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

Rozwiązywanie problemów metodą przeszukiwania

Teoretyczne podstawy informatyki

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Lista liniowa dwukierunkowa

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

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

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

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

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

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

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

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

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

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

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

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

Matematyczne Podstawy Informatyki

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

Drzewa poszukiwań binarnych

Indukowane Reguły Decyzyjne I. Wykład 3

Transkrypt:

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ń pomiędzy obiektami: 1 obiekt nadrzędny do wielu podrzędnych (np. bycie elementem, zawieranie) zazwyczaj pomiędzy obiektami różnych klas 2 pomiędzy obiektami równoważnymi (np. sąsiedztwo, występowanie oddziaływania) często pomiędzy obiektami jednej klasy Pierwszy rodzaj powiązań zazwyczaj skutkuje powstaniem jednej (lub wielu) hierarchii. Dobrą implementacją są konterery. Sytuacja jest bardziej złożona, gdy sieć powiązań jest bardziej skomplikowana i chcemy obliczyć np.: najszybsze połączenie lotnicze z wylotem po południu najliczniejszą grupę studentów, z których każdych dwoje chodziło wspólnie na co najmniej jedne zajęcia P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 2 / 24

Różne topologie sieci 1 Lista jednokierunkowa 2 Lista dwukierunkowa 3 Lista cykliczna 4 Drzewo binarne 5 Drzewo o dowolnym stopniu wierzchołków 6 Graf Uwaga Może być wiele rodzajów powiązań. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 3 / 24

Listy jednokierunkowe Każdy obiekt zna swój następnik. Reprezentacja Przez pierwszy element Przechodzenie Od początku do końca w jednym kierunku. Nie ma możliwości cofania. Wstawianie Najłatwiej na początek Usuwanie Najłatwiej z początku P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 4 / 24

Lista jednokierunkowa przykład c l a s s L i s t E l e m e n t : def init ( s e l f, v a l, next=none ) : s e l f. v a l = v a l s e l f. next = next def f i n d ( s e l f, v a l ) : i f s e l f. v a l == v a l : r e t u r n s e l f e l s e i f s e l f. next : r e t u r n s e l f. next. f i n d ( v a l ) r e t u r n None def i n s e r t _ a f t e r ( s e l f, v a l ) : s e l f. next = L i s t E l e m e n t ( v a l, s e l f. next ) def push ( l, v a l ) : r e t u r n L i s t E l e m e n t ( v a l, l ) def pop ( l ) : r e t u r n l. v a l, l. next P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 5 / 24

Listy dwukierunkowe Każdy obiekt zna swój następnik i poprzednik. Reprezentacja Przez pierwszy i ostatni element. Przechodzenie Sekwencyjne w obie strony. Wstawianie Gdziekolwiek, ale trzeba sekwencyjnie dojść we właściwe miejsce. Usuwanie J.w. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 6 / 24

Listy cykliczne Każdy element ma następnik pierwszy jest następnikiem ostatniego Zastosowania bufor cykliczny równomierny przydział zasobów P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 7 / 24

Drzewa binarne Drzewo binarne jest strukturą danych, w której każdy węzeł ma co najwyżej dwa węzły potomne, każdy węzeł z wyjątkiem korzenia ma rodzica oraz żaden węzeł nie może być swoim przodkiem. Ważne pojęcia korzeń poddrzewo (lewe, prawe) potomek rodzic przodek P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 8 / 24

Drzewa binarne Reprezentacja Przez korzeń Wstawianie Najłatwiej liść Przechodzenie DFS i BFS Usuwanie Liście. Usuwanie węzłów może wymagać przebudowy drzewa. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 9 / 24

Obchodzenie drzewa Większość algorytmów operujących na drzewach wymaga sprawdzenia zawartości wierzchołków. Można to robić na wiele sposobów. Wyróżnia się dwa podstawowe: Depth First Search (DFS) i Breadth First Search (BFS). DFS Polega na schodzeniu wgłąb. Po odwiedzeniu wierzchołka, odwiedza się wszystkie wierzchołki w lewym poddrzewie, następnie wszystkie wierzchołki w prawym poddrzewie. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 10 / 24

Obchodzenie drzewa Większość algorytmów operujących na drzewach wymaga sprawdzenia zawartości wierzchołków. Można to robić na wiele sposobów. Wyróżnia się dwa podstawowe: Depth First Search (DFS) i Breadth First Search (BFS). BFS Polega na odwiedzaniu wierzchołków według odległości od korzenia. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 11 / 24

Obchodzenie drzewa DFS Stos 0 1 1 8 7 2 2 8 7 6 3 3 8 7 6 5 4 4 8 7 6 5 5 8 7 6 6 8 7 7 8 8 12 9 9 12 11 10 10 12 11 11 12 12 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 12 / 24

Obchodzenie drzewa BFS Kolejka 0 1 1 2 3 4 2 3 4 5 6 3 4 5 6 4 5 6 7 8 5 6 7 8 9 10 6 7 8 9 10 7 8 9 10 11 12 8 9 10 11 12 9 10 11 12 10 11 12 11 12 12 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 13 / 24

Drzewo binarne przykład c l a s s Node : d e f init ( s e l f, v a l, p a r e n t=none, l e f t=none, r i g h t=none ) s e l f. v a l = v a l s e l f. p a r e n t = p a r e n t s e l f. l e f t = l e f t s e l f. r i g h t = r i g h t d e f DFS( s e l f, pre_op = lambda x : x, in_op = lambda x : x, post_op = lambda x : x ) : pre_op ( s e l f ) i f s e l f. l e f t i s not None : s e l f. l e f t. DFS( pre_op, in_op, post_op ) in_op ( s e l f ) i f s e l f. r i g h t i s not None : s e l f. r i g h t. DFS( pre_op, in_op, post_op ) post_op ( s e l f ) P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 14 / 24

Drzewa rozszerzenia 1 wierzchołki wyższego stopnia lista poddrzew zamiast atrybutów left i right 2 wagi krawędzi 3 fastrygowanie dodatkowe połączenia pomiędzy wierzchołkami P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 15 / 24

Grafy Graf jest strukturą danych, w której dowolne węzły mogą być połączone krawędzią. Ważne pojęcia węzeł (ang. node, vertex) krawędź (ang. edge, arc) sąsiedzi ścieżka cykl klika spójna składowa drzewo rozpinające P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 16 / 24

Reprezentacje grafów 1 Listy sąsiedztwa 2 Macierz sąsiedztwa 3 Lista krawędzi Każda reprezentacja ma swoje silne i słabe strony. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 17 / 24

Listy sąsiedztwa Zalety Wady relatywnie niewielkie zużycie pamięci (zwłaszcza dla rzadkich grafów) łatwo określić sąsiadów węzła wygodne obchodzenie grafu pracochłonne sprawdzanie, czy konkretna krawędź należy do grafu Macierz sąsiedztwa Zalety Wady łatwość implementacji sprawdzanie, czy krawędź należy do grafu wiele operacji da się zdefiniować w języku macierzy pracochłonne znajdowanie sąsiadów węzła zużycie pamięci P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 18 / 24

Zastosowania grafów mapy sieci telekomunikacyjne cytowania, powiązania pomiędzy dokumentami interakcje pomiędzy białkami szlaki sygnałowe P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 19 / 24

Operacje na elementach i na strukturze Listę jednokierunkową albo drzewo łatwo można utożsamić z pierwszym elementem (korzeniem). Bardziej skomplikowane struktury na to nie pozwalają. Niektórych operacji nie da się zdefiniować na elementach grafu. Na przykład: znajdowanie spójnych składowych znajdowanie najdłuższej ścieżki (średnicy grafu) znajdowanie minimalnego drzewa rozpinającego P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 20 / 24

Przykładowe rozwiązanie n_nodes n_edges Graph has AdjacencyMatrix get_node(n) diameter() connected_components() comprises comprises val Node get_edges() get_neighbors() degree() DFS(operation) spanning_tree() connects Edge P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 21 / 24

Zadanie 1 Stacje benzynowe Problem Na zamkniętym torze znajduje się N stacji benzynowych. W ich zbiornikach jest w sumie dokładnie tyle paliwa, ile potrzeba do przejechania całego toru. Należy wskazać stację (o ile istnieje), od której można zacząć jazdę z pustym bakiem tak, aby tankując całe paliwo na odwiedzanych stacjach można było przejechać dookoła toru. Zakładamy, że samochód ma nieograniczenie duży zbiornik. Dane wejściowe liczba stacji odległości pomiędzy stacjami (położenie stacji na torze) ilość paliwa na stacjach P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 22 / 24

Zadanie 2 Drzewo BST Zadanie Zaimpementuj drzewo BST, które wstawianie i usuwanie liczb, wyszukiwanie ich w drzewie, oraz szybkie znajdowanie liczby poprzedniej i kolejnej dla wskazanej. Wskazówka Fastrygowanie jest tutaj pomocne. P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 23 / 24

Zadanie 3 Graf Zadanie Wykonaj implementację grafu umożliwiającą: 1 znajdowanie liczby wierzchołków i krawędzi 2 budowanie drzewa rozpinającego o minimalnej wysokości dla wskazanego wierzchołka 3 stwierdzanie, czy pomiędzy wskazanymi wierzchołkami istnieje ścieżka P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 24 / 24