Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.