Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Rodzaje, przechodzenie grafu

Podobne prezentacje


Prezentacja na temat: "Rodzaje, przechodzenie grafu"— Zapis prezentacji:

1 Rodzaje, przechodzenie grafu
Grafy Rodzaje, przechodzenie grafu

2 Grafy podstawowe definicje
Grafem nazywamy strukturę G=(V,E) składającą się ze skończonego i niepustego zbioru wierzchołków V i zbioru krawędzi E. Krawędź od wierzchołków u do v oznaczamy jako (u,v). Drogą od wierzchołka v1 do vj nazywamy sekwencję krawędzi: (v1,v2), (v2,v3),…, (vn-1,vn) Dwa wierzchołki vi i vj nazywamy sąsiędnimi, jeżeli w zbiorze D istnieje krawędź (vi,vj). Taką krawędź nazywamy incydentną do wierzchołków vi, vj. Stopniem wierzchołka v deg(v) – nazywamy liczbę krawędzi do niego incydentnych. Jeśli deg(v)=0 to jest to wierzchołek izolowany.

3 Rodzaje grafów: Grafy proste
graf pełny – każdy wierzchołek jest połączony krawędzią z każdym wierzchołkiem

4 Rodzaje grafów: Grafy złożone
Multigraf – dwa wierzchołki mogą być połączone kilkoma krawędziami Pseudograf – pojawiają się pętle czyli krawędzie wychodzące z i wchodzące do tego samego wierzchołka

5 Rodzaje grafów: Grafy złożone
Graf skierowany – krawędzie, zwane też łukami, spełniają warunek (u,v)≠(v,u) 5 2 4 6 1 Graf ważony – gdy krawędziom zostają przyporządkowane liczby – wagi

6 Reprezentacja grafów A B C D E Graf A B C D E B C D A D A C
Lista sąsiedztwa

7 Reprezentacja grafów A B C D E A B C D E 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0
Macierz sąsiedztwa AB AC AD CD A B C D E Macierz incydencji

8 Przechodzenie w głąb funkcja dfs()
for wszystkie wierzcholki Visited[v]:=false; Ustaw wskaźnik current[v] na pierwszy wierzchołek na liście L[v] Odwiedz(p); visited[p]=true; If current[p] nie puste Stos pusty; push(stos,p); while stos jest niepusty v=wierzcholek(stos); niech w będzie wierzchołkiem wskazywanym przez current[v] przesuń wskaźnik current[v] do następnego wierzchołka na liście L if current[v]=pusty pop(stos); if not visited[w] odwiedz(w) visited[w]=true; if current[w] różne od nil then push(stos,w)

9 Przechodzenie grafów – wszerz funkcja bfs()
for wszystkie wierzcholki Visited[v]:=false; Ustaw wskaźnik current[v] na pierwszy wierzchołek na liście L[v] Odwiedz(p); visited[p]=true; If current[p] nie puste Kolejka pusta; enqueue(koljka,p); while stos jest niepusty v=początek(kolejka); niech w będzie wierzchołkiem wskazywanym przez current[v] przesuń wskaźnik current[v] do następnego wierzchołka na liście L if current[v]=pusty dequeue(kolejka); if not visited[w] odwiedz(w) visited[w]=true; if current[w] różne od nil then enqueue(kolejka,w)

10 Bibliografia A. Drozdek, „C++. Algorytmy i struktury danych”, Helion, Gliwice 2004; L. Banachowski, K. Diks, W. Rytter, „Algorytmy i struktury danych”, WNT, Warszawa1996;


Pobierz ppt "Rodzaje, przechodzenie grafu"

Podobne prezentacje


Reklamy Google