ASD 10

Transkrypt

ASD 10
Algorytmy i Struktury Danych
Wykład X
Grafy
ASD 10
1
Co dziś?
Podstawowe definicje
Reprezentacja w pamięci
Przeszukiwanie grafów
ASD 10
2
Grafy
Po co zajmujemy się grafami?
# Problem przydziału sal do zajęć → kolorowanie
grafu
# Sprawdzenie czy można z dostępnych kości
domina ułożyć jeden ciąg → ścieżka Eulera
# Problem komiwojażera
# Najdłuższy podciąg rosnący
ASD 10
3
1
ASD 10
4
Grafy - definicje
Intuicja
# wierzchołki – kropki
# krawędzie – odcinki, strzałki
Graf G opisany jest parą (V, E) gdzie:
# V to zbiór wierzchołków (węzłów) [vertex]
# E zbiór krawędzi [edge]
# E jest relacją binarną w zbiór V
# E ⊂ { (v1, v2) | v1, v2 ∈ V }
ASD 10
5
Grafy - definicje
Klasyfikacja
# graf nieskierowany
{u,v} = {v,u}
u ≠ v
# graf skierowany
# graf mieszany
ASD 10
6
2
Grafy - definicje
Droga (ścieżka) ciąg wierzchołków (bądź krawędzi)
który powstaje podczas „podróży” przez graf – jest to
podgraf
#
#
#
#
zbiór wierzchołków lub zbiór krawędzi
długość ścieżki (drogi)
droga (ścieżka) prosta – elementy nie powtarzają się
cykl – ścieżka (droga) zamknięta
ostatnia krawędź kończy się węzłem którym zaczęła się pierwsza
krawędź
ostatni wierzchołek jest zarazem pierwszym wierzchołkiem
# cykl prosty
ASD 10
7
Grafy - definicje
# osiągalność wierzchołka
# droga (ścieżka) acykliczna – bez cykli
# podścieżka (poddroga)
# długość drogi (ścieżki)
Graf acykliczny – bez cykli
Sąsiedztwo wierzchołków
# nieskierowany – relacja symetryczna
Graf spójny (nieskierowany)
Graf silnie spójny (tylko skierowany)
ASD 10
8
Grafy - definicje
Parametry
# ilość krawędzi
# ilość wierzchołków
# stopień wierzchołka
# stopień grafu
# stopień wejściowy (wyjściowy) – graf skierowany
# waga krawędzi
# liczba chromatyczna
ASD 10
9
3
Grafy - definicje
Pojęcia
# wierzchołek incydentny z krawędzią
# wierzchołki adiacentne (ta sama krawędź)
# krawędzie adiacentne (przyległe) – wspólny
wierzchołek
# wierzchołki spójne – istnieje ścieżka pomiędzy
nimi
# wierzchołek separowany – nie należy do żadnej
krawędzi
ASD 10
10
Graf regularny (stopnia-k) [pełny]
ASD 10
11
Graf dwudzielny
ASD 10
12
4
Graf dwudzielny
ASD 10
13
Graf dwudzielny
ASD 10
14
Grafy - definicje
Klasy:
# eulerowski
# hamiltonowski
# planarny (graf płaski)
Drzewo – spójny acykliczny graf
nieskierowany
Las – acykliczny graf nieskierowany
Drzewo rozpinające (minimalne)
ASD 10
15
5
Graf planarny (graf płaski)
ASD 10
16
Implementacja
Reprezentacja
# odsyłaczowa
# tablicowa
Złożoność O(G) = O(e,v)
ASD 10
17
Listy sąsiedztwa
ASD 10
18
6
Macierz sąsiedztwa
1
1
2
3
4
5
2
1
1
1
1
1
1
3
4
1
1
1
1
5
1
1
1
1
macierz adiacencji (adiacentna)
# przekątna
# symatryczna – nieskierowany
19
ASD 10
Macierz incydencji
krawędzie
1
1
2
3
4
5
1
2
1
1
1
3
1
1
4
1
1
5
6
1
1
1
1
7
1
1
wierzchołki
20
ASD 10
Przeglądanie grafu
Przeszukiwanie w głąb (wzdłuż) [stos]
# DFS - Depth-first search
Przeszukiwanie wszerz [kolejka]
# BSF - Breadth-first search
# Reprezentacja
# Grafy
odsyłaczowa
tablica incydencji
tablica adiacencji
skierowany
nieskierowany
ASD 10
21
7
Przeszukiwanie wszerz
„Mierzymy” ścieżki
Ustawiamy poprzednika (ojca)
# podgraf poprzedników - drzewo przeszukiwania
wszerz (krawędzie drzewowe); graf skierowany las
# graf nieskierowany - najkrótsze ścieżki z s
Kolorujemy wierzchołki na biały, szary i czarny
ASD 10
22
Graf nieskierowany
przeszukiwanie wszerz
ASD 10
23
Graf skierowany
ASD 10
24
8
Przeszukiwanie w głąb
Poprzednik (ojciec)
Podgraf poprzedników – drzewo (las)
przeszukiwania w głąb
Etykiety czasowe
# początek przetwarzania (pre-order)
# zakończenie przetwarzania (post-order)
ASD 10
25
Graf skierowany
przeszukiwanie w głąb
ASD 10
26
Przeszukiwanie w głąb
Klasyfikacja krawędzi
# krawędzie drzewowe
# krawędzie powrotne (back)
# krawędzie w przód (forward)
# poprzeczne (cross)
Nieskierowany
# brak krawędzi w przód i poprzecznych
# pewna niejednoznaczność podczas nazywania
krawędzi, istotna jest kolejność klasyfikacji
ASD 10
27
9
Przeszukiwanie w głąb
ASD 10
28
Złożoności przeszukiwań
Przeszukiwania
# wszerz O(E+V) → O(E)
# w głąb O(E+V) → O(E)
Reprezentacja
# listowa O(E+V)
# macierz adiacencji O(V*V)
# macierz incydencji O(V*E*V)
ASD 10
29
ASD 10
30
Pytania?
KONIEC
10