Zadanie 06: Cykle
Algorytmy Matematyki Dyskretnej
Dany jest spójny graf i jego drzewo rozpinające . Niech będzie dowolnym cyklem wG T C grafie . Przez G E(C) oznaczmy zbiór krawędzi występujących w tym cyklu. Zaimplementuj operację dodawania dwóch cykli (ozn. ) zdefiniowaną w następujący sposób:⊕
(C) (E(C ) (C )) (E(C ) (C )) C1⊕C2= C ⇔ E = 1 ⋃E 2 − 1 ⋂E 2
Twoim zadaniem jest:
1. Wyznaczyć wszystkie cykle fundamentalne w względem G T
2. Napisać funkcję, która dla dowolnych dwóch cykli C1, C2wyznacza C1⊕C2
OPIS ALGORYTMU DO PUNKTU PIERWSZEGO
W celu wyznaczenia cyklu fundamentalnego zawierającego krawędź e1= v vi j należy wyznaczyć ścieżkę w drzewie pomiędzy i . W tym celu użyj następującego algorytmu:vi vj
1. Przyjmij pewien wierzchołek grafu za korzeń drzewa. Wyznacz ścieżkę pomiędzy , av v każdym z wierzchołków grafu. Wystarczy zapamiętać rodzica dla każdego wierzchołka.
Do wyznaczania rodziców użyj przeszukiwania grafu.
2. Niech Si będzie ścieżką z do , v vi Sj będzie ścieżką z do . Szukana ścieżkav vj powstanie z połączenia Si i Sj po odrzuceniu części wspólnej.
PUNKTACJA:
3p. Wyznaczanie cykli fundamentalnych 2p. Wyznaczanie C1⊕C2
+?p. Dodatkowe punkty za rozwiązania częściowe (do decyzji prowadzącego).
PRZESŁANIE ZADANIA:
Na koniec laboratorium należy przesłać rozwiązanie na adres
lawniczakl@student.mini.pw.edu.pl. Rozwiązanie należy spakować do archiwum o nazwie zgodnej z uczelnianym loginem. Temat maila: [AMD] Zadanie 06.