ปัญหาที่ไม่เกี่ยวกับการแก้ไขในเวลาคงที่?


14

เวลาคงที่คือความซับซ้อนต่ำสุดของเวลา บางคนอาจสงสัยว่า: มีเรื่องแปลกใหม่ที่สามารถคำนวณได้ในเวลาที่แน่นอนหรือไม่? หากเรายึดติดกับโมเดลของทัวริงเครื่องก็ไม่สามารถทำได้มากนักเนื่องจากคำตอบนั้นขึ้นอยู่กับส่วนเริ่มต้นความยาวคงที่ของอินพุตเนื่องจากส่วนที่อยู่ไกลกว่าของอินพุตไม่สามารถเข้าถึงได้ในเวลาคงที่

ในทางกลับกันถ้าเราใช้รูปแบบ RAM ราคาต้นทุนต่อหน่วยที่ค่อนข้างมีประสิทธิภาพมากขึ้นซึ่งในการดำเนินการเบื้องต้นในบิตตัวเลขจะถูกนับเป็นขั้นตอนเดียวจากนั้นเราอาจจะสามารถแก้ไข งานที่ไม่สำคัญแม้ในเวลาที่คงที่ นี่คือตัวอย่าง:O(logn)

อินสแตนซ์:จำนวนเต็ม , แต่ละอันกำหนดในรูปแบบไบนารีโดยบิตn,k,l,dO(logn)

คำถาม:มีกราฟ -vertex อยู่หรือไม่เช่นการเชื่อมต่อจุดยอดคือ , การเชื่อมต่อขอบของมันคือและระดับต่ำสุดของมันคือ ?nkld

โปรดทราบว่าจากความหมายมันไม่ได้เป็นที่เห็นได้ชัดแม้กระทั่งว่าปัญหาอยู่ในNP เหตุผลก็คือพยานธรรมชาติ (กราฟ) อาจต้องการคำอธิบายแบบยาวบิตในขณะที่อินพุตจะได้รับจากบิตเท่านั้น ในทางตรงกันข้ามทฤษฎีต่อไปนี้ (ดูทฤษฎีกราฟ Extremalโดย B. Bollobas) มาช่วยΩ(n2)O(logn)

ทฤษฎีบท:ปล่อยเป็นจำนวนเต็ม มีกราฟ -vertex พร้อมจุดเชื่อมต่อ , การเชื่อมต่อขอบ , และระดับต่ำสุด , ถ้าหากเพียงหนึ่งในเงื่อนไขต่อไปนี้:n,k,l,dnkld

  • 0kld<n/2 ,
  • 12d+2nkl=d<n1
  • k=l=d=n1.

เนื่องจากสามารถตรวจสอบเงื่อนไขเหล่านี้ในเวลาที่คงที่ (ในรูปแบบหน่วยราคา RAM) ทฤษฎีบทจะนำไปสู่อัลกอริธึมเวลาคงที่ในรุ่นนี้

คำถาม:อะไรคือตัวอย่างที่ไม่น่าสนใจอื่น ๆ ของอัลกอริธึมเวลาคงที่?


6
การตรวจสอบความน่าจะเป็นหลักฐานที่ตรวจสอบได้นับหรือไม่
David Eppstein

6
อย่าคิดว่าตัวอย่างของคุณคือเวลา ข้อมูลที่คุณป้อนมีความยาวซึ่งในกรณีนี้คำทั่วไปจะอนุญาตการดำเนินงานบิตในขั้นตอนเดียว (ทางเลือกคืออนุญาตให้ wordize ตามสัดส่วนของความยาวอินพุต แต่ในกรณีนั้นเราสามารถตั้งชื่ออัลกอริธึม "คงที่" จำนวนมากได้ ... ) คุณสามารถลองเพิ่มความยาวของสตริงหลังจากตัวเลขเหล่านั้น แต่แล้ว ฉันไม่เห็นว่าการตรวจสอบรูปแบบนั้นจะทำงานในเวลา : ดูเหมือนว่าคุณต้องตรวจสอบ (ผ่านการค้นหาแบบไบนารี, พูด) ว่าความยาวสตริงทั้งหมดนั้นแน่นอนซึ่งต้องใช้เวลา. O(1)m=O(logn)O(logm)nO(1)Ω(logn)logn
Ryan Williams

4
ฉันคิดว่าคำแนะนำของ David Eppstein ชี้ไปยังทิศทางที่น่าสนใจมากขึ้น: พิจารณาอัลกอริธึมแบบสุ่ม O (1) - อย่างน้อยในกรณีนี้คุณสามารถหวังว่าทุกบิตอินพุตจะถูกเข้าถึงในการเรียกใช้อัลกอริทึมอย่างน้อยหนึ่งที่เป็นไปได้
Ryan Williams

4
ตัวอย่างง่ายๆของอัลกอริธึมแบบสุ่ม O (1) คือค่ามัธยฐานโดยประมาณ (โดยประมาณในแง่ที่ว่ามันจะแบ่งอินพุตประมาณ 50-50) เพียงแค่เลือกองค์ประกอบ 1000000 จากการป้อนข้อมูลแบบสุ่มสม่ำเสมอคำนวณค่ามัธยฐานของพวกเขาและส่งออกมัน
Jukka Suomela

5
ฉันชอบคำถามของคุณ แต่ข้อเสียเปรียบของตัวอย่างของคุณก็คือมันต้องอาศัยทฤษฎีบททางคณิตศาสตร์ ผลักดันนี้ถึงขีด จำกัด ที่คุณอาจจะบอกว่า: อินสแตนซ์บวกจำนวนเต็มz คำถามมีจำนวนเต็มซึ่ง (คำตอบคือจริงหรือเท็จ) มีอัลกอริธึมเวลาคงที่แน่นอนเพราะคำตอบนั้นเป็นเท็จเสมอ แต่นี่ไม่ใช่ตัวอย่างที่คุณต้องการอย่างชัดเจน x,y,zn>2xn+yn=zn
เจ

คำตอบ:


6

อัลกอริทึมการประมาณเวลาคงที่ของกระดาษผ่านการปรับปรุงในท้องถิ่นโดย Nguyen และ Onak ให้ตัวอย่างจำนวนมากของแผนการประมาณเวลาคงที่แบบสุ่ม: การจับคู่สูงสุด (เวลาทำงานขึ้นอยู่กับระดับสูงสุดของกราฟเท่านั้น) ผู้เขียนตั้งค่า ฯลฯ นำเสนอวิธีการออกแบบอัลกอริธึมดังกล่าว


5

มีตัวอย่างมากมายของเกมที่ศึกษาในทฤษฎีเกมแบบ combinatorial ที่สถานะของเกมสามารถอธิบายได้ด้วยค่าจำนวนเต็มคงที่ สำหรับบางส่วนของกลยุทธ์การชนะสำหรับเกมสามารถคำนวณได้ในเวลาคงที่ แต่พวกเขายังตั้งคำถามว่ารูปแบบการคำนวณของคุณคืออะไร

หนึ่งในเกม combinatorial ที่ง่ายที่สุดและพื้นฐานที่สุดคือ nim: เกมหนึ่งมีจำนวนกองถั่วคงที่และในการย้ายเพียงครั้งเดียวคุณสามารถลบถั่วจำนวนเท่าใดก็ได้จากกองเดียวไม่ว่าจะชนะหรือแพ้ (ขึ้นอยู่กับกฎที่คุณเลือก) ถ้าคุณใช้ถั่วสุดท้าย กลยุทธ์ที่ดีที่สุดสามารถคำนวณได้ในเวลาคงที่หากคุณอนุญาตให้ใช้การดำเนินการ Boolean xor bitwise (เช่นตัวดำเนินการ ^ ในภาษาการเขียนโปรแกรมเช่น C / C ++ / Java / etc) นี่เป็นอัลกอริทึมเวลาคงที่ในโมเดลของคุณหรือไม่?

นี่คือสิ่งที่ทราบกันดีว่ามีอัลกอริธึมที่กำหนดเวลาแน่นอนที่แน่นอน (ในรูปแบบการคำนวณแบบขยายที่ไม่สมจริงที่ช่วยให้คุณทดสอบความเป็นจริงของตัวเลขในเวลาคงที่) แต่ก็ไม่รู้ว่าอัลกอริทึมนั้นคืออะไร ย้ายในเกมของSylver coinage , ตรวจสอบว่ามันเป็นการชนะหรือแพ้ แผนผังลำดับงานสำหรับปัญหานี้มีให้ใน Berlecamp, Conway และ Guy, Winning Waysแต่ขึ้นอยู่กับกลุ่มตัวอย่างที่มีขอบเขต จำกัด สำหรับลักษณะทั่วไปของการเคลื่อนไหวที่ชนะและไม่ทราบว่าชุดนั้นคืออะไร (หรือไม่ว่าจะเป็นก็ตาม) ว่างเปล่า)

อีกตัวอย่างที่น่าสนใจจากทฤษฎีเกม combinatorial คือเกมของ Wythoff. แต่ละตำแหน่งของเกมสามารถอธิบายได้ด้วยคู่ของจำนวนเต็ม (เช่นพื้นที่คงที่ในรูปแบบการคำนวณของคุณ) การเคลื่อนไหวในเกมเกี่ยวข้องกับการลดจำนวนหนึ่งในสองจำนวนนี้ให้เป็นค่าที่น้อยลงและกลยุทธ์ที่ชนะเกี่ยวข้องกับการย้ายไปยังตำแหน่งที่ อัตราส่วนระหว่างจำนวนเต็มสองตัวนี้ใกล้เคียงกับอัตราส่วนทองคำมากที่สุด แต่ในหลาย ๆ ตำแหน่งของเกมมีตัวเลือก: คุณสามารถลดจำนวนเต็มของจำนวนเต็มทั้งสองให้เหลือน้อยกว่าจำนวนเต็มเล็กกว่าอัตราส่วนทองคำหรือจำนวนเต็มเล็กกว่าหารด้วยอัตราส่วนทองคำ เพียงหนึ่งในสองตัวเลือกนี้เท่านั้นที่จะเป็นผู้ชนะ ดังนั้นกลยุทธ์ที่ดีที่สุดสามารถกำหนดในแง่ของการดำเนินการทางคณิตศาสตร์จำนวนคงที่ แต่การดำเนินการเหล่านี้เกี่ยวข้องกับจำนวนอตรรกยะจำนวนอัตราส่วนทองคำ นั่นเป็นอัลกอริธึมเวลาคงที่ในแบบจำลองของคุณหรือไม่? อาจจะเป็น 'nเข้าสู่ระบบn


ขอบคุณนี่เป็นตัวอย่างที่น่าสนใจ พวกเขายังเข้าใจอย่างชัดเจนถึงความจริงที่ว่าแนวคิดของ "เวลาคงที่" นั้นชัดเจนน้อยกว่าที่ฉันคิดไว้ในตอนแรก ...
Andras Farago

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