ASD Ćwiczenia 11: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Diks (dyskusja | edycje)
Diks (dyskusja | edycje)
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 G=(V,E) będzie grafem spójnym, a w:EZ funkcją, która każdej krawędzi e przypisuje nieujemą, całkowitoliczbową wagę w(e). Dla każdego podgrafu G=(V,E) definujemy wagę W(G) jako sumę wag jego krawędzi. Drzewo rozpinające grafu G, 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 G. 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 G jest reprezentowany przez listy sąsiedztw i krawędzie grafu są już posortowane niemalejąco według wag. Zaproponuj algorytm, który w czasie O(nlog*n) obliczy dla G minimalne drzewo rozpinające.

Wskazówka