จำเป็นหรือไม่ที่จะต้องคำนวณปัญหา NP-hard
ฉันไม่คิดอย่างนั้น แต่ฉันไม่แน่ใจ
จำเป็นหรือไม่ที่จะต้องคำนวณปัญหา NP-hard
ฉันไม่คิดอย่างนั้น แต่ฉันไม่แน่ใจ
คำตอบ:
ไม่ฮาร์ดไม่จำเป็นต้องคำนวณ คำจำกัดความค่อนข้างสมบูรณ์: ปัญหาคือ -hard หากปัญหาที่มีวิธีการแก้ปัญหาโพลีเวลาหมายถึงทุกปัญหาในNPมีวิธีการแก้ปัญหาแบบโพลีเวลา (นั่นคือการลดลงถึงLมีอยู่สำหรับทุกปัญหาในNP )L N P N P L N P
ปัญหาที่ไม่สามารถคำนวณได้นั้นยากอย่างไม่มีเหตุผล: สมมติว่าเราสามารถแก้ปัญหาได้ในเวลาพหุนาม จากนั้นเราใช้หลักฐานที่ไม่สามารถคำนวณได้ว่าเป็นทั้งความสามารถในการคำนวณและไม่สามารถโต้แย้งได้ จากความผิดพลาดนี้เราสามารถได้รับทุกสิ่งกล่าวคือมีอัลกอริธึมเวลาพหุนามสำหรับปัญหาNPใด ๆ ที่เรากำลังดู
ตัวอย่างเช่นพิจารณาลังเลปัญหาHเราสามารถลดการใด ๆภาษาเพื่อดังต่อไปนี้สมมติว่าเรามีการตรวจสอบ polytimeซึ่งการตรวจสอบถ้าคือใบรับรองสำหรับ :N P A H f ( s , c ) c s ∈ A
ดังนั้นด้วยการเรียกใช้อัลกอริทึมแบบโพลีเวลาเดียวเพื่อแก้ไขปัญหาการหยุดชะงักเราสามารถแก้ปัญหาใด ๆในเวลาพหุนาม
การลดลงดังกล่าวไม่ได้มีประโยชน์เพราะทั้งหมดจะมีการบอกว่า "ถ้าเป็นเท็จแล้วมีบางอย่าง" เรารู้อยู่แล้วว่าไม่มีอัลกอริทึม polytime สำหรับปัญหาที่ไม่สามารถคำนวณได้
ดูเหมือนจะมีความสับสนอย่างมากในชุมชนนี้เกี่ยวกับคำถามนี้ ฉันจะให้คำตอบโดยละเอียดโดยหวังว่าจะได้ล้างน้ำและส่องความสัมพันธ์ระหว่างการคำนวณและความแข็งของ NP
ครั้งแรกฉันเชื่อว่าการมีความชัดเจนและชัดเจนเกี่ยวกับคำจำกัดความต่าง ๆ ที่เกี่ยวข้องจะแก้ไขความสับสนมากมาย
สตริงเป็นลำดับ จำกัด ของตัวละครจากบางตัวอักษรคง จำกัด
ปัญหาการตัดสินใจเป็นชุดของสตริง (โดยทั่วไปชุดนี้จะไม่มีที่สิ้นสุด) ให้นึกถึงปัญหาการตัดสินใจในการทดสอบสตริงสำหรับคุณสมบัติบางอย่าง: สตริงที่มีคุณสมบัติอยู่ในชุดและสตริงที่ไม่มีคุณสมบัตินั้นไม่ใช่
สมมติว่าเรามีปัญหาทั้งสองตัดสินใจและB Say เป็นพหุนามเวลาซึ้งปรับปรุงเพื่อBถ้ามีบางพหุนามP ( x )และขั้นตอนวิธีการบางขั้นตอนวิธีMดังกล่าวว่าสำหรับสตริงทั้งหมดs ,
- ถ้าคุณให้มีการป้อนข้อมูลs , Mหยุดน้อยกว่าP ( | s | )ขั้นตอน (ที่| s |คือความยาวของสตริงs ) และผลสตริงM ( s )
- อยู่ในถ้าหาก M ( s )อยู่ในB
ปัญหาการตัดสินใจเป็นNP-ยากถ้าทุก NP ตัดสินใจปัญหา, เป็นพหุนามเวลาออกซิเจนB
ปัญหาการตัดสินใจคือคำนวณถ้ามีขั้นตอนวิธี , ว่าสำหรับสตริงทั้งหมดs ,
- ถ้าคุณให้มีการป้อนข้อมูลs , Mหยุดและเอาท์พุททั้ง "ใช่" หรือ "ไม่"
- เอาต์พุตคือ "ใช่" ถ้าอยู่ในAและ "no"
ด้วยคำจำกัดความข้างต้นเราสามารถชี้แจงสิ่งที่ฉันคิดว่าอาจเป็นความสับสนในคำถามของคุณได้ทันที: ไม่มีสิ่งใดในคำจำกัดความของปัญหาการตัดสินใจการลดลงหรือความกระด้าง NP ต้องมีปัญหาในการตัดสินใจ คำจำกัดความทำให้รู้สึกที่สมบูรณ์แบบของการตัดสินใจปัญหาเป็นชุดของข้อ จำกัด และชุดเหล่านี้สามารถน่ารังเกียจมากแน่นอน
นั่นเป็นคำถามสองข้อบนโต๊ะ:
คำถามที่ 1 ตอบได้ง่ายกว่า มีสองวิธีที่สำคัญโดยเฉพาะอย่างยิ่งในการค้นหาปัญหาการตัดสินใจที่ไม่คำนวณซึ่งเป็นปัญหาที่ยาก ที่แรกก็คือลังเลปัญหา: ลังเลปัญหา, มีทรัพย์สินที่ทุกคำนวณปัญหาการตัดสินใจเป็นพหุนามเวลาออกซิเจนH เนื่องจากปัญหา NP นั้นคำนวณได้ทุกปัญหา NP คือพหุนามเวลาที่ลดลงถึงHดังนั้นHจึงเป็น NP-hard
อีกวิธีที่สำคัญในการสร้างปัญหา NP-hard ที่คำนวณไม่ได้คือการสังเกตว่าเราสามารถรวมปัญหา NP-hard ใด ๆ ที่รู้จักกับปัญหาที่ไม่คำนวณได้ ให้เป็น NP-hard และBไม่สามารถคำนวณได้ สร้างปัญหาการตัดสินใจA ⊕ Bดังต่อไปนี้A ⊕ Bมีสตริงเหล่านั้นของแบบฟอร์ม "0 ตามด้วยสตริงในA " และของฟอร์ม "1 ตามด้วยสตริงในB " ⊕ Bเป็น NP-ยากเพราะเราสามารถเปิดลดใด ๆ (ของปัญหาใด ๆ ) เพื่อเข้าลดลงไป⊕ B: เพียงแค่ปรับแต่งอัลกอริทึมในการส่งออก "0" พิเศษที่ด้านหน้าของสตริงเอาต์พุต ไม่สามารถคำนวณได้เนื่องจากการคำนวณA ⊕ Bต้องตัดสินใจว่าสตริงใดที่ขึ้นต้นด้วย "1" อยู่ในชุด สิ่งนี้เป็นไปไม่ได้เนื่องจากBไม่สามารถคำนวณได้
คำถามที่ 2 มีเล่ห์เหลี่ยมมาก แต่ในความเป็นจริงมีปัญหาการตัดสินใจไม่คำนวณที่ไม่ใช่ปัญหายาก (สมมติว่า P NP) คำตอบที่ดีของ Yuval สร้างปัญหาการตัดสินใจอย่างชัดเจน (สำหรับนักทฤษฎีการคำนวณใด ๆ ในห้อง "โคเฮนΠ 0 1 -generic" ใด ๆจะทำเคล็ดลับเช่นกัน) ฉันจะแยกแยะว่าทำไมปรีชาว่า "ปัญหา NP-hard นั้นยากไม่ใช่ปัญหาที่คำนวณได้ยาก " มันผิด.
ความแข็งของ NP และความไม่สามารถคำนวณได้บอกว่าปัญหาคือ "ยาก" ในความหมายทั่วไป แต่มันแตกต่างกันมากและไม่ควรรวมเข้าด้วยกันเป็นปรากฏการณ์ชนิดเดียวกัน โดยเฉพาะอย่างยิ่งความแข็งของ NP เป็นคุณสมบัติ "บวก": ปัญหา NP-hard นั้นยากในแง่ที่ว่าเมื่อมีการเข้าถึงแผ่นโกงสำหรับAคุณสามารถแก้ปัญหาระดับยากได้ บนมืออื่น ๆ ที่ไม่ใช่การคำนวณเป็นที่พัก "เชิงลบ" เป็นปัญหาที่ไม่ได้คำนวณอย่างหนักในความรู้สึกที่คุณไม่สามารถแก้กับระดับที่กำหนดของทรัพยากร
("บังคับ" โดยวิธีเป็นเทคนิคที่ใช้ในการผลิต "โคเฮนทั่วไป" ที่ฉันกล่าวถึงจะคลุมเครือมากบังคับเป็นวิธีทั่วไปในการผลิตสิ่งที่ "ทั่วไป" ในสิ่งที่พวกเขามี ไม่มีคุณสมบัติที่เป็นบวกและทุกคุณสมบัติเชิงลบนั่นคือสาเหตุที่การบังคับให้สร้างปัญหาโดยตรงที่ไม่สามารถคำนวณได้หรือปัญหา NP-hard)
Nope NP-Hard หมายความว่ามันยากหรือยากกว่าปัญหา NP ที่ยากที่สุด การที่ไม่สามารถคำนวณได้จะทำให้ยากยิ่งกว่า NP
วิกิพีเดีย:
มีปัญหาการตัดสินใจที่เป็นปัญหา แต่ไม่สมบูรณ์เช่นปัญหาการหยุดชะงัก
ทุกคนรู้ว่าไม่สามารถคำนวณได้
problem()
ฟังก์ชั่นที่เราสามารถเรียกได้
เพื่อความสมบูรณ์ขอให้เราพิสูจน์ทฤษฎีบทต่อไปนี้:
มีภาษาที่ไม่สามารถคำนวณได้ซึ่งไม่ใช่ภาษา NP-hard ถ้าหาก P NP
ถ้า P = NP นั้นไม่ใช่ภาษาที่ไม่สำคัญ (ซึ่งแตกต่างจาก ) คือ NP-hard (แบบฝึกหัด) และโดยเฉพาะอย่างยิ่งภาษาที่ไม่สามารถนับได้คือ NP-hard
ตอนนี้สมมติว่า P NP ให้T ฉันเป็นการนับจำนวนเครื่องจักรทัวริงทั้งหมด เราจะสร้างภาษาL ที่จำเป็นในแต่ละขั้นตอน ในแต่ละขั้นตอนเราจะเก็บ{ 0 , 1 , ? }สีของ{ 0 , 1 } ∗ซึ่งเราแทนด้วยL ; ที่นี่0หมายความว่าเราได้ตัดสินใจแล้วว่าสตริงไม่ได้อยู่ในL , 1หมายความว่าเราได้ตัดสินใจว่าสตริงนั้นอยู่ในLและ?หมายความว่าเรายังไม่ได้ตัดสินใจ ทั้งหมด แต่อย่าง จำกัด จำนวนมากจะเป็นสี.
ในขั้นตอนที่เราคิดว่าT iเป็นเครื่องที่รับอินพุตของมันปฏิเสธหรือไม่หยุด ถ้าT ฉันหยุดไม่ได้แล้วเราจะไม่ทำอะไรเลย ถ้าT ฉันหยุดแล้วเราจะพบสตริงxซึ่งL ( x ) = ? และตั้งL ( x ) : = 0ถ้าT ฉัน ( x )ยอมรับและL ( x ) : = 1ถ้าTปฏิเสธ
ในขั้นตอนที่เราคิดว่าT iเป็นเครื่องคำนวณฟังก์ชั่นบางส่วน (อาจ) ของอินพุต ถ้าT ฉันไม่ได้ทั้งหมดหรือถ้ามันเป็นทั้งหมด แต่ไม่ได้ทำงานในเวลาพหุนามหรือถ้ามันเป็นทั้งหมด แต่ช่วงที่มี จำกัด เราจะไม่ทำอะไรเลย ถ้าT ฉันเป็นผลรวมวิ่งในเวลาพหุนามและมีช่วงที่ไม่มีที่สิ้นสุดแล้วเราจะพบสตริงxเช่นที่L ( T i ( x ) ) = ? . ถ้าx ∈ S A T (นั่นคือถ้าxเข้ารหัสพอใจ CNF) แล้วเราตั้งและมิฉะนั้นเราชุดL ( x ) : = 1
หลังจากขั้นตอนหลายอย่างมากมายที่เราได้รับระบายสีของ{ 0 , 1 } ∗ซึ่งเราใช้ภาษาที่แท้จริงในลักษณะที่กำหนดเอง
ภาษาที่เป็นผลลัพธ์ไม่สามารถคำนวณได้: ขั้นตอนที่2 ฉันรับรองว่าT ฉันไม่คำนวณ มันไม่ได้เป็นปัญหาแบบแข็ง ๆ แต่นี่คือเหตุผลที่ละเอียดอ่อนกว่านี้เล็กน้อย สมมติว่าT ฉันคือการลด polytime จาก SAT เพื่อL ถ้าช่วงของT ฉันมี จำกัด แล้วเราสามารถเปิดT ฉันเป็นเครื่อง polytime ตัดสินใจ SAT, โดยรายชื่อตารางความจริงของLในช่วงของTฉัน สิ่งนี้เป็นไปไม่ได้โดยสมมติฐาน P ≠ NP ดังนั้นT ฉันมีช่วงที่ไม่มีที่สิ้นสุด แต่แล้วขั้นตอนที่2 ฉันกฎออกเป็นลดลงจาก SAT ไปของL
ภาษาคือ NP-ยากถ้าทุกL ' ∈ N PเรามีL 'เป็นพหุนามเวลาออกซิเจนL ปัญหาการยอมรับสำหรับเครื่องทัวริงที่กำหนดไว้ล่วงหน้า
undecidable และเป็น NP-hard สำหรับการพิจารณา P L ′ถูกตัดสินโดยเครื่องจักรทัวริง nondeterministic M ′ ที่มีความซับซ้อนของเวลาพหุนาม การลดลงของโพลีเวลาฉจากL 'เพื่อN T Mจะได้รับจาก
I think what causes people to think there is no uncomputable NP-hard problem is that they miss the point that NP-hardness is a lower bound on the hardness of a problem, not an upper bound on their hardness like P or NP.
A language L being NP-hard means that it is above language in NP and that is. Now if you understand this what need is to show that there are arbitrary harder problem.
Let be a language. Consider algorithms augmented with a black-box that they can use to deciding membership in . Let's denote them by . It is easy to see that the halting problem for , is not in .
In computablity theory this is called jump of and is denoted by . So strictly. And nothing stops us from repeating this: