ความซับซ้อนของหอคอยแห่งฮานอย


20

ฉันวิ่งเข้าไปในข้อสงสัยต่อไปนี้เกี่ยวกับความซับซ้อนของหอคอยแห่งฮานอยซึ่งฉันต้องการความคิดเห็นของคุณ

  • มันอยู่ใน NP หรือไม่? คำตอบที่พยายาม: สมมติว่าเพ็กกี้ (สุภาษิต) แก้ปัญหาและส่งไปยังวิคเตอร์ (ผู้ตรวจสอบ) วิกเตอร์สามารถเห็นได้อย่างง่ายดายว่าสถานะสุดท้ายของการแก้ปัญหานั้นถูกต้อง (ในเวลาเชิงเส้น) แต่เขาไม่มีทางเลือกอื่นนอกจากต้องผ่านการเคลื่อนไหวของเพ็กกี้แต่ละครั้งเพื่อให้แน่ใจว่าเธอไม่ได้ทำการเคลื่อนไหวที่ผิดกฎหมาย เนื่องจาก Peggy ต้องทำอย่างน้อย 2 ^ | ดิสก์ | - 1 การเคลื่อนไหว (พิสูจน์ได้) ผู้ชนะก็ต้องทำตามเช่นกัน ดังนั้น Victor จึงไม่มีการตรวจสอบเวลาแบบพหุนาม (คำจำกัดความของ NP) ดังนั้นจึงไม่สามารถอยู่ใน NP ได้

  • อยู่ใน PSPACEหรือไม่ ดูเหมือนว่า แต่ฉันไม่สามารถคิดวิธีการขยายเหตุผลด้านบน

  • เป็น PSPACE ที่สมบูรณ์หรือไม่ ดูเหมือนจะไม่ แต่ฉันมีเพียงความคิดที่คลุมเครือ การวางแผนอัตโนมัติซึ่ง ToH เป็นอินสแตนซ์ที่เฉพาะเจาะจงนั้นสมบูรณ์แบบ PSPACE ฉันคิดว่าการวางแผนมีอินสแตนซ์ที่ยากกว่า ToH

อัปเดต : อินพุต = , จำนวนดิสก์; เอาต์พุต = การกำหนดค่าดิสก์ในแต่ละขั้นตอน หลังจากอัปเดตสิ่งนี้ฉันรู้ว่ารูปแบบอินพุต / เอาต์พุตไม่เหมาะกับปัญหาการตัดสินใจ ฉันไม่แน่ใจเกี่ยวกับวิธีการที่ถูกต้องในการจับความคิดของ NP, PSPACE และอื่น ๆ สำหรับปัญหาประเภทนี้n

อัปเดต # 2 : หลังจากความคิดเห็นของ Kaveh และ Jeff ฉันถูกบังคับให้ทำให้ปัญหาแม่นยำยิ่งขึ้น:

ให้อินพุตเป็นคู่ของ intโดยที่คือจำนวนของดิสก์ หากลำดับของการย้ายที่ถ่ายโดยดิสก์ถูกเขียนลงในรูปแบบ (หมายเลขดิสก์, จาก - หมุด, ถึง - หมุด) (หมายเลขดิสก์, จาก - หมุด, ถึง - หมุด) ... จากการย้ายครั้งแรกไปยัง สุดท้ายและเข้ารหัสเป็นเลขฐานสองให้ส่งออกบิตที่(n,i)ni

แจ้งให้เราทราบหากฉันต้องมีความเฉพาะเจาะจงมากขึ้นเกี่ยวกับการเข้ารหัส ฉันคิดว่าความคิดเห็นของ Kaveh ใช้ในกรณีนี้?


5
คุณช่วยกำหนดปัญหาหอคอยแห่งฮานอยหรือลิงค์ไปยังคำจำกัดความได้หรือไม่?
Kaveh

1
PKG ฉันรู้ว่ามันคือหอคอยแห่งฮานอย ฉันหมายถึงปัญหาการคำนวณที่คุณต้องการทราบความซับซ้อนของมันคืออะไร อินพุตคืออะไร? ผลลัพธ์คืออะไร
Kaveh

@Kaveh: ความตั้งใจของคุณไม่ชัดเจนจากความคิดเห็นแรกของคุณ
PKG

ขอโทษ Btw มีคลาสความซับซ้อนของฟังก์ชันโดยทั่วไปพวกมันจะมี F อยู่ก่อนหรือหลังชื่อตรวจสอบสวนสัตว์ที่ซับซ้อนเพื่อดูคำจำกัดความ
Kaveh

1
ดังนั้นจำนวนเต็มยังเป็นส่วนหนึ่งของอินพุตหรือไม่ i
JeffE

คำตอบ:


9

ไม่ปัญหาที่คุณอธิบายนั้นเป็นเรื่องง่ายมาก เหตุผลในระดับสูงคือว่าดัชนีคือประมาณบิตนานดังนั้นเราจริงสามารถที่จะใช้เวลาพหุนามในnn ninn

พิจารณาปัญหาที่เกี่ยวข้องดังต่อไปนี้: รับจำนวนเต็มสองจำนวนและให้อธิบายการย้ายในคำตอบของปริศนา -disk ขนาดใส่เป็นแต่ในความเป็นจริงเพียงน้อยนิดที่สำคัญของเรื่อง ดังนั้นแม้ว่ามีขนาดเล็กกว่าอย่างมีนัยสำคัญเราสามารถแก้ปัญหานี้ในเวลาพหุนามในk)k k n lg n + lg k < n + lg k n lg k n O ( บันทึกk )nkknlgn+lgk<n+lgknlgknO(logk)

สมมติว่าดิสก์นั้นมีหมายเลขจากถึงอะไรก็ตามที่เพิ่มขึ้นตามลำดับและหมุดมีหมายเลข 0 = แหล่งที่มา 1 = ปลายทางและ 2 = สำรอง ขอให้เราเขียนสำหรับจำนวนเต็มและk = ( 2 p + 1 ) 2 d p0k=(2p+1)2dpd จากนั้นจึงเลี้ยว k :dk

  • d+nd( ( p + 1 ) mod 3 )(pmod3)((p+1)mod3)
  • หากคือแม้แล้วดิสก์การเคลื่อนไหวในรูปแบบหมุดการตรึง3)d+nd(pmod3)((p1)mod3)

เราสามารถคำนวณและในเวลาได้อย่างง่ายดายโดยวนลูปผ่านการแทนเลขฐานสองของจากบิตขึ้นอย่างมีนัยสำคัญน้อยที่สุด แค่นั้นแหละ.pdO(logk)k

ตอนนี้สมมติว่าคุณต้องการจริงๆบิต TH ในลำดับการส่งออกที่เป็นส่วนหนึ่งของการป้อนข้อมูลแทนkถ้าทุกเทิร์นถูกเข้ารหัสโดยใช้จำนวนบิตเท่ากัน - โดยเฉพาะบิตสำหรับหมายเลขดิสก์,บิตสำหรับจาก -peg, และบิตสำหรับ to-peg - จากนั้นเราต้องคำนวณ การย้าย th โดยที่จากนั้นบิตที่เหมาะสม (ขอให้สังเกตว่าเป็นขนาดเชิงเส้นในขนาดอินพุตเนื่องจากเราจำเป็นต้องรู้เพื่อกำหนดเอาท์พุท)iiklg(n+1)22kk=i/(lg(n+1)+4)lg(n+1)+4n

ในทางกลับกันถ้าเราใช้การแทนค่าความยาวตัวแปรสำหรับหมายเลขดิสก์เราสามารถหาจำนวนการย้ายในเวลาพหุนามโดยการค้นหาแบบไบนารี เราจำเป็นต้องทราบจำนวนเทิร์นทั้งหมดที่จำเป็นในการย้ายดิสก์ด้านบนสำหรับทั้งหมด แต่สิ่งนี้ได้มาจากการเกิดซ้ำ ซึ่งเราสามารถประเมินในเวลาพหุนามโดยการโปรแกรมแบบไดนามิก รายละเอียดที่เหลือจะเป็นแบบฝึกหัดที่น่าเบื่อสำหรับผู้อ่านm m k M ( m ) = 2 M ( m - 1 ) + ( \ #bits เพื่อบันทึกการย้ายดิสก์  m )kmmk

M(m)=2M(m1)+(\#bits to record moving disk m)

(ฉันถือว่าฉันทำอย่างน้อยหนึ่งข้อผิดพลาดแบบ off-by-one หรือ parity แต่หวังว่าแนวคิดหลักจะชัดเจน)

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