ASD Ćwiczenia 11: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 19: | Linia 19: | ||
8 '''end'''; | 8 '''end'''; | ||
9 '''return''' <math>T=(V,F)</math>; | 9 '''return''' <math>T=(V,F)</math>; | ||
</div> | |||
</div> | |||
==Zadanie 2== | |||
Załóżmy, że graf <math>G</math> jest reprezentowany przez listy sąsiedztw i krawędzie grafu są już posortowane niemalejąco według wag. Zaproponuj algorytm, który w czasie <math>O(n\log^* n)</math> obliczy dla '''G''' minimalne drzewo rozpinające. | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
Wskazówka | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Wykorzystaj algorytm podany we wskazówce do zadania 1. W trakcie działania tego algorytmu graf <math>T=(V,F)</math> jest lasem, czyli zbiorem rozłącznych drzew. Zbiory wierzchołków drzew w lesie tworzą podział zbioru <math>V</math>. Żeby sprawdzić, czy dołączenie nowej krawędzi do lasu powoduje powstanie cyklu, wystarczy wiedzieć, czy końce tej krawędzi łączą wierzchołki w tym samym drzewie (zbiorze). Dodanie krawędzie powoduje połączenia dwóch drzew (zbirów) w jedno (jeden). Naturalną strukturą danych do implementacji dynamicznego lasu <math>T</math> jest struktura zbiorów rozłącznych (Find-Union). | |||
</div> | </div> | ||
</div> | </div> |
Wersja z 12:13, 28 wrz 2006
Niech będzie grafem spójnym, a funkcją, która każdej krawędzi przypisuje nieujemą, całkowitoliczbową wagę . Dla każdego podgrafu definujemy wagę jako sumę wag jego krawędzi. Drzewo rozpinające grafu , którego waga jest nie większa o od wagi każdego innego drzewa rozpinającego w tym grafie nazywamy minimalnym drzewem rozpinającym grafu . W grafie może być więcej niż jedno drzewo rozpinające.
Zadanie 1
Udowodnij, że jeśli wagi krawędzi są parami różne, to w grafie istnieje dokładnie jedno minimalne drzewo rozpinające.
Wskazówka
Zadanie 2
Załóżmy, że graf jest reprezentowany przez listy sąsiedztw i krawędzie grafu są już posortowane niemalejąco według wag. Zaproponuj algorytm, który w czasie obliczy dla G minimalne drzewo rozpinające.
Wskazówka