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