Zaawansowane algorytmy i struktury danych/Ćwiczenia 5: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
== Zadanie 1 == | |||
{{kotwica|zadanie 1|}} | {{kotwica|zadanie 1|}} | ||
Zaproponuj efektywny algorytm obliczania najkrótszych ścieżek z jednego | |||
wierzchołka w [[dag|DAGu]] o dowolnych wagach krawędzi. | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> '''Wskazówka''' <div class="mw-collapsible-content" style="display:none"> Po pierwsze w DAGu nie | |||
ma cykli a więc także nie ma cykli o ujemnej wadze. Zauważmy, że | |||
wszystkie ścieżki w DAGu idą zgodnie z porządkiem topologicznym, a | |||
więc także te najkrótsze. Odległości DAGu można więc policzyć | |||
wykonując [[#relaksacja|relaksację]] krawędzi w porządku | |||
topologicznym. | |||
</div> | |||
</div> | |||
== Zadanie 2 == | |||
{{kotwica|zadanie 2|}} | |||
'''Układ ograniczeń różnicowych''' zadany jest poprzez zbiór zmiennych | |||
<math>X=\{x_0, \ldots, x_n\}</math> oraz zbiór nierówności liniowych | |||
<math>O=\{x_{i_0} - x_{j_0} \le b_0, ldots, \{x_{i_m} - x_{j_m} \le | |||
b_m\} </math>, gdzie <math>i_k, j_k \in X</math>, <math>b_k\in | |||
\mathcal{R}</math> dla <math>k = 0,\ldots, m</math>. Rozwiązaniem | |||
układu ograniczeń różnicowych jest wartościowanie zmiennych | |||
<math>X</math> dla którego spełnione są wszystkie nierówności z | |||
<math>O</math>. Zaproponuj efektywny algorytm znajdujący | |||
rozwiązanie układu ograniczeń liniowych. | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> '''Wskazówka''' <div class="mw-collapsible-content" style="display:none"> | |||
Problem ten można rozwiązać poprzez sprowadzenie do problemu | |||
najkrótszych ścieżek z jednym źródłem i wykorzystanie algorytmu | |||
Bellmana-Forda. Mając dane zbiory <math>X</math> i <math>O</math> | |||
konstruujemy na ich podstawie graf <math>G=(X,E)</math> oraz | |||
funkcję wagową <math>w:E \to \mathcal{R}</math> w następujący | |||
sposób: | |||
<center><math> | |||
E = \{(x_i, x_j) : x_{i} - x_{j} \le b \in O\}, | |||
</math></center> | |||
<center><math> | |||
w(x_i,x_j) = \min\{b : x_{i} - x_{j} \le b \in O\}. | |||
</math></center> | |||
Łatwo teraz pokazać, że w grafie <math>G</math> nie ma cyklu | |||
ujemnej długości jeżeli układ ograniczeń różnicowych ma rozwiązanie, | |||
oraz odległości w grafie <math>G</math> zadają rozwiązanie tego | |||
układu. | |||
</div> </div> | |||
== Zadanie 3 == | |||
{{kotwica|zadanie 2|}} | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> '''Wskazówka''' <div class="mw-collapsible-content" style="display:none"> | |||
</div> </div> |
Wersja z 20:45, 20 lip 2006
Zadanie 1
Zaproponuj efektywny algorytm obliczania najkrótszych ścieżek z jednego wierzchołka w DAGu o dowolnych wagach krawędzi.
Wskazówka
Zadanie 2
Układ ograniczeń różnicowych zadany jest poprzez zbiór zmiennych oraz zbiór nierówności liniowych , gdzie , dla . Rozwiązaniem układu ograniczeń różnicowych jest wartościowanie zmiennych dla którego spełnione są wszystkie nierówności z . Zaproponuj efektywny algorytm znajdujący rozwiązanie układu ograniczeń liniowych.
Wskazówka
Zadanie 3
Wskazówka