Zadanie 1
Zaproponuj efektywny algorytm obliczania najkrótszych ścieżek z jednego wierzchołka w DAGu o dowolnych wagach krawędzi.
Rozwiązanie
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 relaksację krawędzi w porządku topologicznym.
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.
Rozwiązanie
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 i konstruujemy na ich podstawie graf oraz funkcję wagową w następujący
sposób:
Łatwo teraz pokazać, że w grafie nie ma cyklu
ujemnej długości jeżeli układ ograniczeń różnicowych ma rozwiązanie,
oraz odległości w grafie zadają rozwiązanie tego
układu.
Zadanie 3
Zaproponuj jak wykorzystać algorytm Bellmana-Forda do sprawdzenia, czy w grafie i wagach krawędzi opisanych funkcją istnieje cykl o ujemnej wadze.
Rozwiązanie
Dodaj nowy wierzchołek i skonstruuj graf i
funkcję wagową taką, że:
.
Zauważmy, że w grafie są te same cykle co w grafie . Jednak teraz wszystkie te cykle są osiągalne z wierzchołka . Możemy więc do wykrycia cykli o ujemnej wadze użyć algorytmu Bellmana-Forda uruchomionego dla wierzchołka .