Mamy graf nieskierowany ważony, chcemy znaleźć najkrótszą sciężke (o najmniejszej sumie wag) z pojedynczego zródła do pojedynczego celu. Od tego jest algorytm Dijkstry, A*, i jeszcze kilka innych, ale czy można zrobić to bfs-em?
Standardowo, puszczamy BFS ze zródła.
Jeśli znajdziemy cel, wywołania rekurencyjne się wracają, wracamy zatem naszą scieżką do zródła i przy okazji liczymy sume wag na scieżce.
W zródle po prostu bierzemy minimum z otrzymanych wartości.
Oczywiście - wymaga to dodatkowej pamięci, bo trzeba pamiętac scieżkę wracając się - może być ona rozwiązaniem, więc chcemy ją znać.
Mam wrażenie, że to czasowo jest w O(|V| + |E|).
To jednak niemożliwe, sam w to nie wierze ;p Gdzie zatem jest błąd w moim rozumowaniu?