Ostatnie pytanie dotyczyło teraz klasycznego algorytmu programowania dynamicznego dla TSP, niezależnie od Bellmana i Held-Karpa . Algorytm jest powszechnie zgłaszany do działania w czasie . Jednak, jak niedawno zauważył jeden z moich studentów, ten czas działania może wymagać nieracjonalnie silnego modelu obliczeń.
Oto krótki opis algorytmu. Dane wejściowe składają się z ukierunkowanego wykresu z n wierzchołkami i nieujemnej funkcji długości ℓ : E → R + . Dla dowolnych wierzchołków s i t oraz dowolnego podzbioru X wierzchołków, który wyklucza s i t , niech L ( s , X , t ) oznacza długość najkrótszej ścieżki hamiltonowskiej od s do t w indukowanym podrozdziale . Algorytm Bellmana-Helda-Karpa opiera się na następującej powtarzalności (lub, jak nazywają to ekonomiści i teoretycy kontroli, „równanie Bellmana”):
Dla każdego wierzchołka , długością optymalną trasę podróży sprzedawca jest l ( s , V ∖ { s } , s ) . Ponieważ pierwszy parametr s jest stały we wszystkich wywołaniach rekurencyjnych, istnieje Θ ( 2 n n ) różnych podproblemów, a każdy podproblem zależy od co najwyżej n innych. Zatem algorytm programowania dynamicznego działa w czasie O ( 2 n n 2 ) .
A może to ?!
Standardowy model liczb całkowitych RAM umożliwia ciągłe manipulowanie liczbami całkowitymi za pomocą bitów , ale przynajmniej w przypadku operacji arytmetycznych i logicznych większe liczby całkowite muszą być podzielone na fragmenty wielkości słowa. (W przeciwnym razie mogą się zdarzyć dziwne rzeczy .) Czy nie dotyczy to również dostępu do dłuższych adresów pamięci? Jeśli algorytm wykorzystuje przestrzeń wielobiegunową, czy uzasadnione jest założenie, że dostęp do pamięci wymaga tylko stałego czasu?
W szczególności w przypadku algorytmu Bellmana-Helda-Karpa algorytm musi przekształcić opis podzestawu w opis podzestawu X ∖ { v } , dla każdego v , aby uzyskać dostęp do tabeli zapamiętywania. Jeśli podzbiory są reprezentowane przez liczby całkowite, liczby te wymagają n bitów i dlatego nie można nimi manipulować w stałym czasie; jeśli nie są reprezentowane przez liczby całkowite, ich reprezentacja nie może być użyta bezpośrednio jako indeks w tabeli zapamiętywania.
Tak więc: jaki jest rzeczywisty asymptotyczny czas działania algorytmu Bellmana-Helda-Karpa?