Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Algorytmy i struktury danych

Podobne prezentacje


Prezentacja na temat: "Algorytmy i struktury danych"— Zapis prezentacji:

1 Algorytmy i struktury danych
Reprezentacja grafu Wybrane problemy

2 Graf Pętle Wielokrotne krawędzie Wagi 10 11 7 Prosty Skierowany

3 Reprezentacja grafu Macierz sąsiedztwa Lista sąsiedztwa
B D A B C D Macierz sąsiedztwa A B C D 1 C Lista sąsiedztwa A B C D B A C D B D B C Jeśli macierz jest symetryczna (graf nieskierowany), można przechowywać tylko jedną połówkę.

4 Reprezentacja grafu Macierz incydencji Lista incydencji m p m n o p n
1 o Lista incydencji m n o p p n m o p p n m n o

5 Reprezentacja wag Macierz sąsiedztwa Lista incydencji A 2 7 B D A B C
3 A B C D 5 7 2 3 5 C 2 Lista incydencji A B C D A,2 B,3 D,2 B,7 C,5

6 Składowe spójnosci DFS

7 Minimalne drzewo spinające
1 3 6 2 4 8 5 Zastosowania – np. budowa sieci dróg

8 Minimalne drzewo spinające
Alg Kruskala: Wybieraj kolejno krawędzie o minimalnej wadze tak, by nie tworzyły cyklu. Pot. problem: stwierdzanie obecności cyklu. Alg Prima-Dijkstry: Drzewo = krawędź o minimalnej wadze; Spośród krawędzi incydentnych z aktualnym drzewem wybierz krawędź o najmniejszej wadze; Dodaj krawędź do drzewa. Pot. problem: grafy niespójne.

9 Minimalna droga 1 3 6 7 4 9 2 Zastosowania: - wybór najkrótszej (najszybszej) trasy przejazdu; - wybór najtańszego procesu technologicznego.

10 Alg. Dijkstry Z.: Wagi są nieujemne
Dla sąsiadów wierzchołka startowego S ustaw odległość di równą wadze krawędzi e(s,i), dla każdego wierzchołka innego niż S inicjujemy di =  Spośród nieodwiedzonych wierzchołków wybierz wierzchołek i o mininimalnej ogległości di Dla sąsiadów j wybranego wierzchołka aktualizuj odległość jako min{ dj, di+e(j,w) } Jeżeli są nieosiągnięty został wierzchołek końcowy K (lub są nieodwiedzone wierzchołki gdy nie zadajemy K) przejdź do punktu 2

11 Droga, cykl Eulera Marszruta – otwarta (zamknięta), zawierająca wszystkie krawędzie w grafie Zastosowania: Problem chińskiego listonosza; Rysowanie/wycinanie figur przy pomocy plotera.

12 Minimalne drzewo spinające
Algorytm Dijkstry: Dla wszystkich wierzchołków ustal s=¥; Dla w. początkowego P ustal s=0. Podstaw D={P}; Zaktualizuj odległość s’ dla wszystkich wierzchołków sąsiednich do D; s’[w] = min { s[x] + waga krawędzi {x, w} ; po wszystkich x należących do D }; Wybierz wierzchołek o minimalnej s’, podstaw dla niego s=s’. D = D È {w}. Algorytm pozwala efektywnie wyznaczyć sieć dróg z określonego wierzchołka do wszystkich innych. Pot. problem: ujemne wagi.

13 Cykl Eulera - alg Fleury’ego
Wystartuj z wierzchołka o nieparzystym stopniu (jeśli jest); Wybierz dowolną krawędź, ale most wybieraj w ostateczności; Przejdź do kolejnego wierzchołka. Algorytm działa dla grafów eulerowkich, półeulerowskich. Problematyczna jest jednak implementacja testu, czy krawędź jest mostem.

14 Cykl Eulera – alg. ze stosem
Wystartuj z dowolnego wierzchołka; Jeżeli istnieją nie przechodzone dotąd krawędzie incydentne z bieżącym wierzchołkiem: Wybierz dowolną krawędź; Przejdź do kolejnego wierzchołka i odłóż go na stos; W przeciwnym wypadku: Przenieś wierzchołek do rozwiązania i zdejmij go ze stosu; Przejdź do wierzchołka na szczycie stosu. Algorytm wymaga grafu eulerowskiego.


Pobierz ppt "Algorytmy i struktury danych"

Podobne prezentacje


Reklamy Google