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)

Ogólne wiadomości o grafach

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

Struktury danych: stos, kolejka, lista, drzewo

Listy, kolejki, stosy

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

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

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

Podstawy Informatyki. Wykład 6. Struktury danych

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

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

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

ALGORYTMY I STRUKTURY DANYCH

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

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

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

Algorytmiczna teoria grafów

Tadeusz Pankowski

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

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

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

Wstęp do Programowania potok funkcyjny

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

Algorytmy i Struktury Danych

Matematyka dyskretna - 7.Drzewa

Stos LIFO Last In First Out

Abstrakcyjne struktury danych - stos, lista, drzewo

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

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

Teoretyczne podstawy informatyki

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

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:

Algorytmy i Struktury Danych

Podstawy Informatyki. Metody dostępu do danych

Wykłady z Matematyki Dyskretnej

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Struktury Danych i Złożoność Obliczeniowa

Algorytmy i struktury danych. wykład 5

Drzewa poszukiwań binarnych

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

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

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

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

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

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

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

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

Programowanie i projektowanie obiektowe

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

Egzaminy i inne zadania. Semestr II.

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

AiSD zadanie trzecie

Wykład 8 - Drzewa i algorytmy ich przetwarzania

7. Teoria drzew - spinanie i przeszukiwanie

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

ALGORYTMY I STRUKTURY DANYCH

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Struktury Danych i Złożoność Obliczeniowa

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

Algorytmy i Struktury Danych

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

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

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

Wstęp do Programowania potok funkcyjny

Rozwiązywanie problemów metodą przeszukiwania

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


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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

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

Porządek symetryczny: right(x)

Teoretyczne podstawy informatyki

Lista liniowa dwukierunkowa

Definicja pliku kratowego

PODSTAWY INFORMATYKI wykład 6.

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

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

SZTUCZNA INTELIGENCJA

Drzewo binarne BST. LABORKA Piotr Ciskowski

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

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Metody Kompilacji Wykład 3

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

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

Instrukcje dla zawodników

Wstęp do Sztucznej Inteligencji

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Indukowane Reguły Decyzyjne I. Wykład 3

Matematyczne Podstawy Informatyki

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

Drzewa poszukiwań binarnych

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 rozpinajace, zbiory rozłaczne, czas zamortyzowany

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019

Programowanie obiektowe

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki.

Transkrypt:

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ń 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ń 2015 2 / 21

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ń 2015 3 / 21

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ń 2015 4 / 21

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ń 2015 5 / 21

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ń 2015 6 / 21

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ń 2015 7 / 21

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ń 2015 8 / 21

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ń 2015 9 / 21

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ń 2015 10 / 21

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ń 2015 11 / 21

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ń 2015 12 / 21

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ń 2015 13 / 21

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ń 2015 14 / 21

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ń 2015 15 / 21

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ń 2015 16 / 21

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ń 2015 17 / 21

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ń 2015 18 / 21

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ń 2015 19 / 21

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ń 2015 20 / 21

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ń 2015 21 / 21