ความซับซ้อนของเวลาของอัลกอรึทึมของ Bellman-Held-Karp สำหรับ TSP ใช้เวลา 2


16

คำถามที่ผ่านมากล่าวถึงขั้นตอนวิธีการเขียนโปรแกรมแบบไดนามิกตอนนี้คลาสสิกสำหรับ TSP เนื่องจากอิสระเพื่อยามและถือคาร์พ อัลกอริทึมเป็นสากลรายงานให้ทำงานในO(2nn2)เวลา อย่างไรก็ตามในฐานะที่เป็นหนึ่งในนักเรียนของฉันเมื่อเร็ว ๆ นี้ชี้ให้เห็นเวลาทำงานนี้อาจต้องใช้แบบจำลองการคำนวณที่ทรงพลังอย่างไม่มีเหตุผล

นี่คือคำอธิบายสั้น ๆ ของอัลกอริทึม การป้อนข้อมูลประกอบด้วยกำกับกราฟG=(V,E)กับnจุดและที่ไม่ใช่เชิงลบฟังก์ชั่นความยาว:ER+ + สำหรับจุดยอดsและtใด ๆ และเซตย่อยXของจุดยอดที่แยกsและtให้L(s,X,t)แสดงความยาวของเส้นทางแฮมิลโตเนียนที่สั้นที่สุดจากsถึงtใน subgraph เหนี่ยวนำให้เกิดG[X{s,t}] ] อัลกอรึทึมของ Bellman-Held-Karp นั้นมีพื้นฐานมาจากการเกิดซ้ำดังต่อไปนี้ (หรือในฐานะนักเศรษฐศาสตร์และนักทฤษฎีควบคุมที่เรียกมันว่า "สมการของเบลแมน"):

L(s,X,t)={(s,t)if X=minvX (L(s,X{v},v)+(v,t))otherwise

สำหรับการใด ๆ จุดสุดยอดความยาวของการท่องเที่ยวที่ดีที่สุดในการเดินทางของพนักงานขายที่เป็นs) เนื่องจากพารามิเตอร์แรกเป็นค่าคงที่ในการเรียกซ้ำทั้งหมดมี\ Theta (2 ^ nn)ปัญหาย่อยที่แตกต่างกันและแต่ละปัญหาย่อยขึ้นอยู่กับnอื่น ๆมากที่สุด ดังนั้นขั้นตอนวิธีการเขียนโปรแกรมแบบไดนามิกวิ่งในO (2 ^ NN ^ 2)เวลาsL(s,V{s},s)sΘ(2nn)nO(2nn2)

หรือไม่!

โมเดล RAM จำนวนเต็มมาตรฐานช่วยให้สามารถจัดการกับจำนวนเต็มด้วยบิตO(logn)บิตได้ แต่อย่างน้อยสำหรับการคำนวณทางคณิตศาสตร์และการดำเนินการทางตรรกะ (ไม่เช่นนั้นอาจเกิดเรื่องประหลาดขึ้นได้) นี่เป็นเรื่องจริงหรือไม่ที่การเข้าถึงที่อยู่หน่วยความจำอีกต่อไปยังใช่หรือไม่ หากอัลกอริทึมใช้พื้นที่ superpolynomial มันสมเหตุสมผลหรือไม่ที่จะสมมติว่าการเข้าถึงหน่วยความจำต้องใช้เวลาคงที่เท่านั้น?

สำหรับอัลกอริทึม Bellman-Held-Karp โดยเฉพาะอัลกอริทึมจะต้องแปลงคำอธิบายของเซตย่อยXเป็นคำอธิบายของเซตย่อยX{v}สำหรับแต่ละvเพื่อเข้าถึงตารางบันทึกช่วยจำ หากเซตย่อยแสดงด้วยจำนวนเต็มจำนวนเต็มเหล่านี้ต้องการบิตnดังนั้นจึงไม่สามารถจัดการได้ในเวลาคงที่ หากพวกเขาไม่ได้เป็นตัวแทนจากจำนวนเต็มการแสดงของพวกเขาไม่สามารถใช้โดยตรงเป็นดัชนีลงในตารางการบันทึก

ดังนั้น: เวลาทำงานเชิงซีมโทติคจริงของอัลกอรึทึมของ Bellman-Held-Karp คืออะไร?


ลิงก์ "สิ่งที่แปลก" ของคุณเสีย
Tyson Williams

ฉันแก้ไขลิงก์
Jeffε

คำตอบ:


12

นี่เป็นคำตอบทางคณิตศาสตร์น้อยกว่าคำตอบทางปรัชญา แต่ฉันชอบคิดว่ารูปแบบ RAM ที่อนุญาตการจัดการจำนวนเต็มตลอดเวลาด้วยจำนวนบิต B จำนวนหนึ่งซึ่งไม่ทราบ แต่อย่างน้อยใหญ่ที่สุดเป็นโดยที่ S คือจำนวนพื้นที่ที่อัลกอริทึมต้องการ เพราะถ้าจำนวนเต็มไม่ใหญ่คุณจะจัดการหน่วยความจำของคุณได้อย่างไร สำหรับอัลกอริธึมเวลาและพื้นที่พหุนามก็เหมือนกับบิต O (log n) แต่สำหรับอัลกอริธึมพื้นที่เอ็กซ์โปเนนเชียลมันหลีกเลี่ยงปัญหาlog2S

แน่นอนถ้า S เกินจำนวนหน่วยความจำที่คุณมีจริงอัลกอริทึมของคุณจะไม่ทำงานเลย หรือมันจะทำงานโดยการเพจข้อมูลเข้าและออกจากหน่วยความจำและคุณควรใช้โมเดลลำดับชั้นของหน่วยความจำแทนรุ่น RAM


ฉันคุ้นเคยกับแนวคิดที่ว่ารูปแบบของเครื่องควรขึ้นอยู่กับขนาดอินพุตแต่มีบางสิ่งที่แปลกใหม่เล็กน้อยเกี่ยวกับการให้แบบจำลองเครื่องขึ้นอยู่กับอัลกอริทึม คุณต้องการให้เครื่องของคุณแก้ปัญหาใด ๆ ใน PSPACE ในเวลาคงที่ตราบใดที่คุณใช้พื้นที่ชี้แจงแทนอยู่แล้ว? n
Jeffε

3
สำหรับฉันแล้วคำถามของการสร้างแบบจำลองนั้นแตกต่างกันไปขึ้นอยู่กับอัลกอริทึมและอีกคำถามหนึ่งที่มีรูปแบบที่ได้รับการแก้ไข แต่ไม่สามารถใช้อัลกอริทึมทั้งหมดได้ (เพราะพื้นที่ไม่เพียงพอ) นั่นไม่ได้ฟังดูแตกต่างจากคอมพิวเตอร์จริงๆสำหรับฉัน
David Eppstein

1
ฉันไม่มั่นใจกับคำตอบของเดวิด มีสองประเด็นที่นี่ หนึ่งในทางทฤษฎีอื่น ๆ ในทางปฏิบัติ ในการตั้งค่าทางทฤษฎีมันเป็นธรรมชาติมากขึ้นที่จะแม่นยำเกี่ยวกับรูปแบบและวิเคราะห์เวลาทำงานอย่างเหมาะสม ในการตั้งค่าภาคปฏิบัติมันไม่ง่ายเลยที่จะรู้ว่าจริง ๆ แล้วจะมีหน่วยความจำหมดบนอินสแตนซ์เฉพาะเนื่องจากการปรับให้เหมาะสมต่าง ๆ ที่เราสามารถทำได้ (และทำการบันทึกบางส่วน ฯลฯ ) อย่างไรก็ตามเมื่อใช้อัลกอริทึม วิธีที่เราจัดเก็บชุดและดัชนีลงในชุด โมเดลด้านบนไม่ได้ช่วยในเรื่องนี้
Chandra Chekuri

8

มีการสนทนาเกี่ยวกับปัญหานี้ในหนังสือเล่มล่าสุดโดย Fedor V. Fomin และ Dieter Kratsch " อัลกอริธึม Exponential Exact " ซึ่งพวกเขาระบุเวลาการทำงานในรูปแบบ RAM ราคาต่อหน่วยและรูปแบบ RAM ต้นทุนบันทึก ( - ระยะทางสูงสุด ระหว่างเมืองและถ้า ):Wf(n)=O(g(n))f(n)=O(g(n)poly(n))

O(2n)และ (หมายเหตุ2nlogWnO(1) ) ตามลำดับ2nlogWnO(1)O(2n)


1
ดังนั้นพวกเขาจึงหลบเลี่ยงปัญหาโดยการซ่อนปัจจัยพหุนาม ฉันอยากรู้ว่าพหุนามคืออะไร!
Jeffε

3
พวกเขาคิดว่าปัจจัยพหุนามคือ (ดูลิงค์ในความคิดเห็นของฉัน) n2
Oleksandr Bondarenko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.