2
ความซับซ้อนของเวลาของอัลกอรึทึมของ Bellman-Held-Karp สำหรับ TSP ใช้เวลา 2
คำถามที่ผ่านมากล่าวถึงขั้นตอนวิธีการเขียนโปรแกรมแบบไดนามิกตอนนี้คลาสสิกสำหรับ TSP เนื่องจากอิสระเพื่อยามและถือคาร์พ อัลกอริทึมเป็นสากลรายงานให้ทำงานในO(2nn2)O(2nn2)O(2^n n^2)เวลา อย่างไรก็ตามในฐานะที่เป็นหนึ่งในนักเรียนของฉันเมื่อเร็ว ๆ นี้ชี้ให้เห็นเวลาทำงานนี้อาจต้องใช้แบบจำลองการคำนวณที่ทรงพลังอย่างไม่มีเหตุผล นี่คือคำอธิบายสั้น ๆ ของอัลกอริทึม การป้อนข้อมูลประกอบด้วยกำกับกราฟG=(V,E)G=(V,E)G=(V,E)กับnnnจุดและที่ไม่ใช่เชิงลบฟังก์ชั่นความยาวℓ:E→R+ℓ:E→R+\ell\colon E\to\mathbb{R}^+ + สำหรับจุดยอดsssและtttใด ๆ และเซตย่อยXXXของจุดยอดที่แยกsssและtttให้L(s,X,t)L(s,X,t)L(s,X,t)แสดงความยาวของเส้นทางแฮมิลโตเนียนที่สั้นที่สุดจากsssถึงtttใน subgraph เหนี่ยวนำให้เกิดG[X∪{s,t}]G[X∪{s,t}]G[X\cup\{s,t\}] ] อัลกอรึทึมของ Bellman-Held-Karp นั้นมีพื้นฐานมาจากการเกิดซ้ำดังต่อไปนี้ (หรือในฐานะนักเศรษฐศาสตร์และนักทฤษฎีควบคุมที่เรียกมันว่า "สมการของเบลแมน"): L(s,X,t)={ℓ(s,t)minv∈X (L(s,X∖{v},v)+ℓ(v,t))if X=∅otherwiseL(s,X,t)={ℓ(s,t)if X=∅minv∈X (L(s,X∖{v},v)+ℓ(v,t))otherwise L(s,X,t) = \begin{cases} \ell(s,t) & \text{if $X = \varnothing_{\strut} $} \\ \min_{v\in X}~ \big(L(s, X\setminus\lbrace v\rbrace, v) + \ell(v,t)\big) & …