Một câu hỏi gần đây đã thảo luận về thuật toán lập trình động hiện đại cho TSP, do độc lập với Bellman và Held-Karp . Thuật toán được báo cáo phổ biến để chạy trong thời gian . Tuy nhiên, như một trong những học sinh của tôi gần đây đã chỉ ra, thời gian hoạt động này có thể đòi hỏi một mô hình tính toán mạnh mẽ vô lý.
Dưới đây là một mô tả ngắn gọn về thuật toán. Đầu vào bao gồm một đồ thị có hướng với n đỉnh và hàm độ dài không âm ℓ : E → R + . Đối với bất kỳ đỉnh s và t và bất kỳ tập hợp con X nào của các đỉnh loại trừ s và t , hãy để L ( s , X , t ) biểu thị độ dài của đường Hamilton ngắn nhất từ s đến ttrong biểu đồ con cảm ứng . Thuật toán Bellman-Held-Karp dựa trên sự tái phát sau đây (hoặc như các nhà kinh tế và lý thuyết điều khiển muốn gọi nó, phương trình của Bell Bellman):
Đối với bất kỳ đỉnh , chiều dài của tối ưu đi du lịch tour du lịch nhân viên bán hàng là . Bởi vì tham số đầu tiên là hằng số trong tất cả các cuộc gọi đệ quy, có các bài toán con khác nhau và mỗi bài toán con phụ thuộc vào tối đa khác. Do đó, thuật toán lập trình động chạy trong thời gian .
Hay là?!
Mô hình RAM số nguyên tiêu chuẩn cho phép thao tác liên tục các số nguyên với các bit , nhưng ít nhất là đối với các phép toán số học và logic , các số nguyên lớn hơn phải được chia thành các khối có kích thước từ. (Nếu không, những điều kỳ lạ có thể xảy ra.) Điều này cũng không đúng khi truy cập vào các địa chỉ bộ nhớ dài hơn? Nếu một thuật toán sử dụng không gian siêu đa thức, có hợp lý không khi cho rằng truy cập bộ nhớ chỉ yêu cầu thời gian không đổi?
Đối với thuật toán Bellman-Held-Karp nói riêng, thuật toán phải chuyển đổi mô tả của tập hợp con thành mô tả của tập hợp con , cho mỗi , để truy cập vào bảng ghi nhớ. Nếu các tập hợp con được biểu diễn bằng số nguyên, các số nguyên này yêu cầu bit và do đó không thể được thao tác trong thời gian không đổi; nếu chúng không được biểu diễn bằng số nguyên, thì biểu diễn của chúng không thể được sử dụng trực tiếp như một chỉ mục vào bảng ghi nhớ.
Vậy: thời gian chạy tiệm cận thực tế của thuật toán Bellman-Held-Karp là gì?