4 algorytmy grafowe z przykladami

background image

Algorytmy grafowe

•Minimalne drzewa rozpinające

•Algorytm Kruskala
•Algorytm Prima

•Wyszukiwanie najkrótszych ścieżek z

jednym źródłem

•Algorytm Dijkstry
•Algorytm Bellmana-Forda

background image

Minimalne drzewa

rozpinające

Podgraf T spójnego grafu G nazywa się jego
drzewem rozpinającym, jeśli T jest acykliczny i
łączy wszystkie wierzchołki G. Jeśli krawędziom
przypisane są wagi, i suma wag krawędzi T jest
minimalna, T nazywamy minimalnym drzewem
rozpinającym.

4

8

7

9

14

10

2

1

11

2

7

8

4

6

Przykład minimalnego drzewa
rozpinającego

background image

Algorytm Kruskala

MST-Kruskal(G, w)
1 A := 
2 for każdy wierzchołek vV[G]
3

do Make-Set(v)

4 posortuj krawędzie z E niemalejąco względem wag w
5
for każda krawędź (u,v)  E, w kolejności niemalejących

wag

6

do if Find-Set(u)  Find-Set(v)

7

then A := A  {(u,v)}

8

Union(u,v)

9 return A

background image

Algorytm Kruskala

(przykład)

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

2

1

4

8

7

9

10

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

background image

Algorytm Prima

MST-Prim(G, w, r)
1 Q := V[G]
2 for każdy uQ
3

do key[u] := 

4 key[r] := 0
5

[r] := NIL

6 while Q  
7

do u := Extract-Min(Q)

8

for każdy v Adj[u]

9

do if vQ i w(u,v) < key[v]

10

then

[v] := u

11

key[v] := w(u,v)

background image

Algorytm Prima (przykład)

8

7

4

9

14

10

2

1

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

4

8

7

9

14

10

2

1

1
1

2

7

8

4

6

2

1

4

8

7

9

10

1
1

2

7

8

4

6

8

7

2

1

4

9

14

10

1
1

2

7

8

4

6

background image

Najkrótsze ścieżki z

jednym źródłem

Dany jest ważony graf skierowany G=(V,E) i
wyróżniony wierzchołek sV, nazywany źródłem;

dla każdego wierzchołka vV należy znaleźć

najkrótszą ścieżkę z s do v. Wagą ścieżki jest
suma wag tworzących ją krawędzi. Najkrótszą
ścieżką
jest ścieżka o najmniejszej wadze.

s

6

3

5

7

11

9

3

5

0

2

1

6

2

4

3

Ważony graf skierowany Drzewo najkrótszych ścieżek

s

6

3

5

7

9

3

5

0

2

1

6

2

4

3

1
1

background image

Najkrótsze ścieżki z

jednym źródłem

d[v] - oszacowanie wagi najkrótszej ścieżki, [v] -

poprzednik v

Initialize-Single-Source(G, s)
1 for każdy wierzchołek vV[G]

2

do d[v] := 

3

[v] := NIL

4 d[s] := 0

Relaksacja krawędzi - ewentualne zmniejszenie

oszacowania wagi najkrótszej ścieżki d[v]

Relax(u, v, w)
1 if d[v] > d[u] + w(u, v)
2

then d[v] := d[u] + w(u, v)

3

[v] := u

background image

Algorytm Dijkstry

Dijkstra(G, w, s)
1 Initialize-Single-Source(G, s)
2 S := 
3 Q := V[G]
4 while Q  
5

do u := Extract-Min(Q)

6

S := S  {u}

7

for każdy wierzchołek vAdj[u]

8

do Relax(u, v, w)

background image

Algorytm Dijkstry

(przykład)

s

1

1
0

5

6

0

2

3

2

4

9

7

s

1

1
0

5

6

10

5

0

2

3

2

4

9

7

s

1

1
0

5

6

7

14

8

5

0

2

3

2

4

9

7

s

1

1
0

5

6

7

13

8

5

0

2

3

2

4

9

7

s

1

1
0

5

6

7

9

8

5

0

2

3

2

4

9

7

1

s

1
0

5

6

7

9

8

5

0

2

3

2

4

9

7

background image

Algorytm Bellmana-Forda

Bellman-Ford(G, w, s)
1 Initialize-Single-Source(G, s)
2 for i = 1 to |V[G]| - 1
3

do for każda krawędź (u, v)  E[G]

4

do Relax(u, v, w)

5 for każda krawędź (u, v)  E[G]
6

do if d[v] > d[u] + w(u, v)

7

then return FALSE

8 return TRUE

background image

Algorytm Bellmana-Forda

(przykład)

s

5

6

7

7

0

8

3

9

-4

-2

2

-3

s

5

6

7

7

6

7

0

8

3

9

-4

-2

2

-3

s

5

6

7

7

2

4

6

7

0

8

3

9

-4

-2

2

-3

9

s

5

6

7

7

2

4

2

7

0

8

3

-4

-2

2

-3

s

5

6

7

7

-2

4

2

7

0

8

3

-4

-2

2

-3


Document Outline


Wyszukiwarka

Podobne podstrony:
Algorytm genetyczny – przykład zastosowania
Algorytmy grafowe
6 6 Zagadnienie transportowe algorytm transportowy przykład 3
Algorytmy grafowe(1)
Algorytmy i struktury?nych przykl zad
6 6 Zagadnienie transportowe algorytm transportowy przykład 2
6 6 Zagadnienie transportowe algorytm transportowy przykład 1
Algorytm genetyczny – przykład zastosowania
Algorytmy grafowe(1)
lichtenstein,Struktury danych i złożoność obliczeniowa,Badanie efektywności algorytmów grafowych w z
Algorytmy z przykladami tp 7 0
EC2 słup algorytm, przykłady
pierwsze przyklady algorytmow
kozik,projektowanie algorytmów,TEORIA GRAFÓW
algorytmy przyklady

więcej podobnych podstron