ตัวแก้ปัญหา NP ที่เหมาะสมที่สุด


12

แก้ไขปัญหาการค้นหา NP-Complete เช่นรูปแบบการค้นหาของ SAT การค้นหาเลวินมีอัลกอริทึมสำหรับการแก้ซึ่งเหมาะสมที่สุดในบางแง่มุม โดยเฉพาะขั้นตอนวิธีการคือ "การดำเนินการที่เป็นไปได้ทุกโปรแกรมในการประกบกันในการป้อนข้อมูลเมื่อบางผลตอบแทนที่ตอบทดสอบไม่ว่าจะเป็นที่ถูกต้อง" มันเหมาะสมที่สุดในแง่ที่ว่าโปรแกรมที่แก้ด้วยความซับซ้อนของเวลา , ความซับซ้อนของเวลาของตามX{0,1}×{0,1}LXPxPyPXtP(n)tL(n)L

tL(n)<2|P|p(tP(n))

โดยที่คือพหุนามคงที่ซึ่งขึ้นอยู่กับรูปแบบการคำนวณที่แม่นยำp

Lในแง่ดีของนั้นสามารถกำหนดได้ในลักษณะที่ค่อนข้างแข็งแกร่งกว่า กล่าวคือสำหรับทุกและโปรแกรมที่แก้ด้วยคำสัญญาในเวลาความซับซ้อนของเวลาของจำกัด เฉพาะอินพุตในความพึงพอใจM{0,1}QXMtQM(n)tLM(n)LM

tLM(n)<2|Q|q(n,tQM(n))

โดยที่คือพหุนามคงที่ ความแตกต่างที่สำคัญคือสามารถเป็นได้เช่นพหุนามแม้ว่าqtQM(n)PNP

"ความอ่อนแอ" ที่เห็นได้ชัดของคือปัจจัยใหญ่ในขอบเขตนี้ มันง่ายที่จะเห็นว่าถ้ามีอัลกอริทึมที่ทำให้ขอบเขตของรูปแบบเดียวกันเป็นถูกแทนที่ด้วยพหุนามในแล้วNP นี่เป็นเพราะเราสามารถใช้เป็นโปรแกรมที่แก้ปัญหาอินสแตนซ์ของโดยการเข้ารหัสคำตอบ ในทำนองเดียวกันถ้าสามารถถูกแทนที่ด้วยฟังก์ชันเลขชี้กำลังเป็นจากนั้นสมมติฐานเวลาเอ็กซ์โพเนนเชียลจะถูกละเมิด อย่างไรก็ตามคำตอบสำหรับคำถามต่อไปนี้ไม่ชัดเจน (สำหรับฉัน):L2|Q|2|Q||Q|P=NPQX2|Q||Q|

สมมติว่ามีการอธิบายสมมติฐานเวลาและการคาดเดาอื่น ๆ ที่รู้จักกันดี (เช่นความเสื่อมของลำดับชั้นพหุนามการดำรงอยู่ของฟังก์ชั่นทางเดียว) หากจำเป็นมีอัลกอริทึมการแก้เซนต์สำหรับและโปรแกรมที่แก้ปัญหาด้วยสัญญาในเวลา , ความซับซ้อนของเวลาของจำกัด ให้อินพุตในตามเงื่อนไขAXM{0,1}QXMtQM(n)tAM(n)AM

tAM(n)<f(|Q|)q(n,tQM(n))+g(|Q|)

โดยที่คือพหุนามคือเลขชี้กำลังย่อยและเป็นเลขยกqfg

ถ้าคำตอบเป็นค่าบวกสามารถเป็นพหุนามหรือไม่ อัตราการเติบโตของคืออะไร(อย่างน้อยอธิบายอย่างชัดเจนภายใต้ ETH)? ถ้าคำตอบนั้นเป็นลบสามารถมีพหุนามถ้า ETH นั้นผิด แต่ ?fgfPNP

คำตอบ:


12

พิจารณาอัลกอริทึมต่อไปนี้ (ตัวแปรของอัลกอริทึมของเลวิน):

เรียกใช้อัลกอริทึมแรกแบบขนาน นอกจากนี้ให้เรียกใช้อัลกอริทึมแบบ brute-force ที่พยายามแก้ไขปัญหาที่เป็นไปได้ทั้งหมดทีละตัว (เรียกใช้อัลกอริทึมทั้งหมดด้วยความเร็วเท่ากัน)n

หยุดเมื่อหนึ่งในอัลกอริทึมค้นหาวิธีแก้ไข

พิจารณาสองกรณี (กำหนดอินพุตยาว ):xn

  • Qเป็นหนึ่งในคนแรกที่อัลกอริทึม จากนั้นเวลาทำงานเป็น(n)nO(ntQM(n))poly(n)

  • Qไม่ใช่หนึ่งในขั้นตอนวิธีแรก(เช่น ) จากนั้นเวลาทำงานจะถูก จำกัด ด้วยเวลาทำงานของอัลกอริทึมแรงเดรัจฉาน เรามีเวลาทำงานเป็น |)}}nn<2|Q|2nO(1)=22O(|Q|)

เรามี

tAM(n)poly(n)tQM(n)+22O(|Q|).

(ที่นี่คือพหุนามและเป็นเลขชี้กำลังสองเท่าใน ; เราสามารถปรับปรุงการพึ่งพาบนโดยทำให้การพึ่งพาแย่ลงบน )f(n)g(n)ng(n)nf(n)n


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