1 - Wkuwanko.pl

Transkrypt

1 - Wkuwanko.pl
Dr Aleksander Klosow
PWSZ Legnica, 2003
www.strony.wp.pl/wp/klosov/
Algorytmy i Struktury Danych
Wykład 7
TEORIA GRAFÓW
[1] www.binboy.org
[2] www.algorytm.cad.pl
[3] P.Wróblewski, Algorytmy, struktury danych i techniki programowania
PLAN
1. Definicja grafu
2. Podstawowe pojęcia teorii grafów
3. Metody prezentacji grafów
4. Algorytmy grafowe
DEFINICJA GRAFU
Grafem nazywamy strukturę G(V,E), gdzie V reprezentuję zbiór
wierzchołków grafu, a E - zbiór krawędzi. (ang. Vertex, Edge)
PODSTAWOWE POJĘCIA
Wierzchołek, np. 1, 2, 3; A, B, C; Student1, Student2
type W = record
{dane;...}
ID:integer;
nastepniki: array[1..m] of ^W;
end
struct W {
/* dane; ... */
int ID;
W** nastepniki;
}
Krawędź, np. 1-2, 2-3; A-B, Student1-Student2
Łączy dwa wierzchołki, może posiadać kierunek i wagę.
5
Graf spójny
- oznacza, że dowolne dwa wierzchołki w grafie można połączyć ścieżką (która
może składać się zarówno z jednej, jak i wielu krawędzi)
Graf pełny - graf, w którym każdy wierzchołek łączy się z każdym
Graf cykliczny - graf, w którym występują cykle (np.: A-B, B-C, C-A)
Graf acykliczny - graf, w którym brak cykli
Graf spójny cykliczny
Graf niespójny
Graf spójny acykliczny
Graf wagowy - graf, w którym wszystkie krawędzie posiadają wagi
Graf skierowany
- graf, w którym wyznaczono kierunek przejścia pomiędzy wierzchołkami
np., z 2 można przejść do 4, ale z 4 nie można przejść do 2
Następnik wierzchołka - wierzchołek, na który można przejść z danego
wierzchołka przechodząc po tylko jednej krawędzi
Poprzednik wierzchołka - analogicznie...
Krawędź incydentna - krawędź łącząca dwa wierzchołki jest dla nich
incydentna
Stopień wierzchołka w grafie nieskierowanym: liczba incydentnych (przyległych) krawędzi;
w grafie skierowanym: suma wchodzących i wychodzących krawędzi.
Graf regularny graf, w którym wszystkie wierzchołki są tego samego stopnia
Graf planarny graf, którym można przedstawić na płaszczyźnie bez przecinających się krawędzi
f-Graf to graf z ograniczonym stopniem wierzchołka, nie większym niż liczba f
Graf prosty - to graf bez pętli własnych i krawędzi równoległych
A
Pętla własna
A
B
Krawędzie równoległe
Liczba chromatyczna - to najmniejsza liczba kolorów potrzebnych do
pokolorowania wierzchołków grafu tak, by żadne dwa przyległe wierzchołki
nie były tego samego koloru
Zadanie: jaka jest liczba chromatyczna grafu?
METODY PREZENTACJI GRAFÓW
Macierz sąsiedztwa
1
2
3
4
5
6
7
Złożoność pamięciowa: O(V2)
1 2 3 4 5 6 7
1 1
1
1 1 1
1
1
1
1 1
1
1
1
Dla grafów nie wagowych - 1
Dla grafów wagowych - wagi
Lista incydencji
Dla każdego wierzchołka tworzymy
listę sąsiadów
Złożoność pamięciowa: O(V+E)
1
2
3
4
5
6
7
2
1
1
2
2
2
5
3
4 5 6
5
3 7
Lista krawędzi
{1-2, 1-3, 2-4, 2-5, 2-6, 3-5, 5-7}
Złożoność pamięciowa: O(E)
Macierz incydencji
(Dla grafów skierowanych)
A
C
B
D
E
Złożoność pamięciowa: O(V*E)
A B C D E
A-B -1 1
1
A-C -1
-1
1
B-D
-1
1
C-E
1
-1
E-B
PODSUMOWANIE
Odpowiedź: "Liczba
chromatyczna..."
b)
1 2 3 4 5 6
1
1
2 1
1
3
1
1 1
4
1
1
5
1
1
6
1 1
c)
Zadanie: Odtworzyć postać grafów
a) G = (A-B, C-B, D-B, A-D, A-C)
A B C D E
A-B -1 1
1
A-C -1
1
A-D -1
1
-1
E-B
1
-1
E-C
1 -1
E-D
ODPOWIEDZI
a) G = (A-B, C-B, D-B, A-D, A-C)
c)
B
A
C
A
C
B
D
D
b)
2
4
1
3
5
6
E
ALGORYTMY GRAFOWE
PRZECHODZENIE GRAFÓW
Cykl Eulera
Kaliningrad - Küningsberg
Mosty Królewieckie
Jak przejechać przez wszystkie 7 mostów dokładnie 1 raz ?
CYKL EULERA
Opis algorytmu
1. Wyznaczyć wierzchołek początkowy.
2. Jeżeli istnieje następnik to: dodać bieżący wierzchołek na stos oraz
przejść do osiągalnego następnika z najmniejszym indeksem, usuwając
przy tym wykorzystaną krawędź.
3. Jeżeli zabraknie następników, dodajemy bieżący wierzchołek do
wynikowego cyklu, zdejmujemy pierwszy wierzchołek ze stosu i
traktujemy go jako bieżący.
4. Dopóki stos nie jest pusty przechodzimy do kroku 2.
Rozwiązanie problemu...