Dany jest nieskierowany graf G=(V,E), gdzie V, to zbiór

Transkrypt

Dany jest nieskierowany graf G=(V,E), gdzie V, to zbiór
Dany jest nieskierowany graf G=(V,E), gdzie V, to zbiór wierzchołków (węzłów),
a E to zbiór krawędzi (łuków). Ponadto w(u,v) ≥ 0 oznacza wagę krawędzi biegnącą
od wierzchołka u do wierzchołka v. Ponieważ, graf jest nieskierowany to
w(u,v)=w(v,u). Waga krawędzi może być liczbą całkowitą z przedziału [1;1000].
Drzewem nazywamy graf, który jest nieskierowany, acykliczny (nie zawiera cykli),
oraz spójny. Spójność oznacza, że z każdego wierzchołka istnieje droga
(niekoniecznie pojedyncza krawędź) do dowolnego innego wierzchołka.
Drzewem rozpinającym grafu G=(V,E) nazywamy drzewo T=(V,e), do którego należą
wszystkie wierzchołki grafu V. Zbiór krawędzi drzewa e jest pewnym podzbiorem E.
Minimalnym drzewem rozpinającym (minimal spanning tree, MST) grafu G=(V,E)
nazywamy takie drzewo rozpinające, które posiada najmniejszą sumę wag krawędzi
ze wszystkich drzew rozpinających tego grafu.
Zadanie 1 – algorytm Prima (3 pkt)
Napisz program wyznaczający minimalne drzewo rozpinające (MST) prostego grafu
(np. 6 wierzchołków) z wykorzystaniem algorytmu Prima. Wykorzystać następujące
sposoby reprezentacji grafu (sposoby reprezentacji opisane są na stronie):
1. Macierz sąsiedztwa – 1 pkt.
2. Lista sąsiedztwa – 1 pkt.
3. Lista krawędzi – 1 pkt.
Program powinien wyświetlać graf wejściowy oraz uzyskane drzewo (najprościej
zrobić to wypisując reprezentację grafu/drzewa).
Zadanie 2 – algorytm Kruskala (3 pkt)
Identycznie jak zadanie 1, ale z wykorzystaniem algorytmu Kruskala.
Sprawozdanie (6 pkt)
Rozważyć 5 różnych liczb wierzchołków N (przykładowo, 2, 4, 8... lub 10, 100,
1000... dobrać tak, by dla najmniejszego rozmiaru mierzony czas był dalej
sensowny). Dla każdego z 5 rozmiarów rozważyć 4 gęstości grafu:
1. Graf pełny (liczba krawędzi równa N*(N-1)).
2. Graf posiadający 75% krawędzi grafu pełnego.
3. Graf posiadający 50% krawędzi grafu pełnego.
4. Graf posiadający 25% krawędzi grafu pełnego.
Dla każdego z powyższych 20 przypadków zmierzyć średni czas pracy obu
algorytmów na podstawie co najmniej 30 losowych instancji. Przedstawić wyniki
(wykresy/tabele) oraz wnioski.
Punkty
<6
6
7
8
9
10–11
12
Ocena
2.0
3.0
3.5
4.0
4.5
5.0
5.5