Najdłuższa ścieżka w grafie skierowanym.

Najdłuższa ścieżka w grafie skierowanym.
H1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Witam,

Mamy graf skierowany z wagami krawędzi. Używam listy sąsiedztwa. Na wejściu podajemy ilość wierzchołków oraz wierzchołek startowy, następnie ilość sąsiadów dla każdego węzła oraz wagi łączących ich krawędzi.

Problem:
Znaleźć najdłuższą względem wag krawędzi możliwą ścieżkę.

Obecnie wykorzystuję BFS, ale niestety nie przechodzi wszystkich testów. Czy mogę prosić o pomoc lub jakieś propozycje? Czy BFS będzie tu dobrym rozwiązaniem? Myślałem również o wykorzystaniu Dijkstry. Byłbym bardzo wdzięczny :)

Oto przykładowy graf:
cbd1778e76.png

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
0

Przez "najdłuższa scieżka" rozumiesz "najdłuższa w sensie ilości wierzchołków/krawędzi"? Czy może "najdłuższa w sensie sumy wag krawędzi leżących na scieżce"?

NA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 68
0

Czy graf jest acykliczny? jeśli tak to najpierw posortuj topologicznie i chyba wystarczy potem przelecieć po wierzchołkach w porządku topologicznym (albo na odwrót, nie pamiętam) zaczynając od startowego i sprawdzać czy można przedłużyć ścieżkę, chyba powinno zadziałać.
jeżeli graf ma cykle to:
Dijkstra jeżeli masz pewność że nie ma dodatnich cykli (wtedy ścieżka byłaby nieskończona) przy czym poczatkowe odległości od źródła ustawić na -INF
bellman-ford jak nie masz pewności czy sa dodatnie cykle

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1055
0

Jeśli wagi krawędzi są dodatnie, to odwróć te wagi (na ujemne) i odpal Dijkstre.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.