Zaawansowane algorytmy i struktury danych/Ćwiczenia 5: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Sank (dyskusja | edycje)
Sank (dyskusja | edycje)
Linia 41: Linia 41:
</div>
</div>


== Zadanie 3 ==  
== Zadanie 3 ==
{{kotwica|zadanie 2|}}
{{kotwica|zadanie 2|}}




Zaproponuj jak wykorzystać algorytm Bellmana-Forda do sprawdzenia, czy w grafie <math>G=(V,E)</math>
Zaproponuj jak wykorzystać algorytm Bellmana-Forda do sprawdzenia, czy w grafie <math>G=(V,E)</math> i wagach krawędzi opisanych funkcją <math>w:E \to \mathcal{R}</math> istnieje cykl o ujemnej wadze.
i wagach krawędzi opisanych funkcją <math>w:E \to \mathcal{R}</math> istnieje cykl o ujemnej wadze.


<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''
<div class="mw-collapsible mw-made=collapsible mw-collapsed">'''Rozwiązanie'''  
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Dodaj nowy wierzchołek <math>s</math> i skonstruuj graf <math>G'=(V',E')</math> i
funkcję wagową <math>w'</math> taką, że:
{{wzor2|
<math>V' = V \cup \{s\}</math>,
}}
{{wzor2|
<math>E' = E \cup \{(s,v): v \in V\}</math>,
}}
{{wzor2|
<math>w'(u,v) = \begin{cases}w(u,v), & \mbox{jeżeli} (u,v)\in E\\ 0, & \mbox{jeżeli} u=s\\0, \mbox{w pozostałych przypadkach}\end{cases}</math>.
}}
Zauważmy, że w grafie <math>G'</math> są te same cykle co w grafie <math>G</math>. Jednak teraz wszystkie te cykle są osiągalne z wierzchołka <math>s</math>. Możemy więc do wykrycia cykli o ujemnej wadze użyć algorytmu Bellmana-Forda uruchomionego dla wierzchołka <math>s</math>.


</div>
</div>
</div>
</div>

Wersja z 17:34, 23 lip 2006

Zadanie 1

Zaproponuj efektywny algorytm obliczania najkrótszych ścieżek z jednego wierzchołka w DAGu o dowolnych wagach krawędzi.

Rozwiązanie

Zadanie 2

Układ ograniczeń różnicowych zadany jest poprzez zbiór zmiennych X={x0,,xn} oraz zbiór nierówności liniowych O={xi0xj0b0,,ximxjmbm}, gdzie ik,jkX, bk dla k=0,,m. Rozwiązaniem układu ograniczeń różnicowych jest wartościowanie zmiennych X dla którego spełnione są wszystkie nierówności z O. Zaproponuj efektywny algorytm znajdujący rozwiązanie układu ograniczeń liniowych.

Rozwiązanie

Zadanie 3


Zaproponuj jak wykorzystać algorytm Bellmana-Forda do sprawdzenia, czy w grafie G=(V,E) i wagach krawędzi opisanych funkcją w:E istnieje cykl o ujemnej wadze.

Rozwiązanie