Sebuah pertanyaan baru-baru ini membahas algoritma pemrograman dinamis klasik sekarang untuk TSP, karena independen untuk Bellman dan Held-Karp . Algoritma secara universal dilaporkan berjalan dalam waktu . Namun, seperti yang ditunjukkan oleh salah satu siswa saya baru-baru ini, waktu berjalan ini mungkin memerlukan model perhitungan yang sangat kuat.
Berikut adalah uraian singkat algoritmanya. Input terdiri dari grafik berarah dengan simpul dan fungsi panjang non-negatif . Untuk setiap simpul dan , dan setiap subset dari simpul yang tidak termasuk dan , misalkan menunjukkan panjang jalur Hamiltonian terpendek dari ke dalam subgraf diinduksi . Algoritma Bellman-Held-Karp didasarkan pada pengulangan berikut (atau sebagai ekonom dan ahli teori kontrol suka menyebutnya, "persamaan Bellman"):s t X s t L ( s , X , t ) s t G [ X ∪ { s , t } ]ℓ : E → R +
Untuk setiap vertex , panjang optimal bepergian tur salesman adalah L (s, V \ setminus \ {s \}, s) . Karena parameter pertama s adalah konstan dalam semua panggilan rekursif, ada \ Theta (2 ^ nn) subproblem yang berbeda, dan setiap subproblem paling banyak bergantung pada n lainnya. Dengan demikian, algoritma pemrograman dinamis berjalan dalam waktu O (2 ^ nn ^ 2) .
Atau apakah itu ?!
Model RAM integer standar memungkinkan manipulasi bilangan bulat konstan dengan bit , tetapi setidaknya untuk operasi aritmatika dan logis , bilangan bulat yang lebih besar harus dipecah menjadi potongan-potongan berukuran kata. (Kalau tidak, hal - hal aneh dapat terjadi.) Apakah ini tidak benar untuk mengakses alamat memori yang lebih lama? Jika suatu algoritma menggunakan ruang superpolynomial, apakah masuk akal untuk mengasumsikan bahwa akses memori hanya membutuhkan waktu yang konstan?
Untuk algoritma Bellman-Held-Karp khususnya, algoritma harus mengubah deskripsi subset menjadi deskripsi subset , untuk setiap , untuk mengakses tabel memoisasi. Jika himpunan bagian diwakili oleh bilangan bulat, bilangan bulat ini membutuhkan bit dan karenanya tidak dapat dimanipulasi dalam waktu yang konstan; jika mereka tidak diwakili oleh bilangan bulat, representasi mereka tidak dapat digunakan secara langsung sebagai indeks ke dalam tabel memoisasi.
Jadi: Apa waktu berjalan asimptotik aktual dari algoritma Bellman-Held-Karp?