ผลต่างระหว่างรุ่นของ "204512/บรรยาย 13"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 43: แถว 43:
 
== Decision Problem ==
 
== Decision Problem ==
 
'''Description :''' คือปัญหาที่ต้องการคำตอบเป็น Yes หรือ No<br/><br/>
 
'''Description :''' คือปัญหาที่ต้องการคำตอบเป็น Yes หรือ No<br/><br/>
ปัญหา Decision Problem P สามารถนิยามใหม่ ด้วย Language P ซึ่งเป็นเซ็ตของ instance ที่ตอบ yes<br/>
+
ปัญหา Decision Problem P สามารถนิยามใหม่ ด้วย Language P ซึ่งเป็นเซ็ตของ instance ที่ตอบ yes เช่น<br/>
'''ตัวอย่าง'''
 
  
 
'''Decision Problem'''
 
'''Decision Problem'''
  
'''Prime :''' <br/>
+
'''Prime :''' ให้จำนวนจริง X ถามว่า X เป็น prime หรือไม่<br/>
ให้จำนวนจริง X ถามว่า X เป็น prime หรือไม่<br/>
+
'''Shortest path :''' ให้หาว่ามี Shortest path จาก s ไป t ที่ยาวไม่เกิน p หรือไม่<br/>
'''Shortest path :''' <br/>
+
 
ให้หาว่ามี Shortest path จาก s ไป t ที่ยาวไม่เกิน p หรือไม่
+
'''Language'''
 +
 
 +
'''Prime :''' {3, 5, 7, 11, ...} <br/>
 +
'''Shortest path :''' {...} (set ของ Shortest path จาก s ไป t ที่ยาวไม่เกิน p)
 +
 
  
 
=== ปัญหา Satisfiability (SAT) ===
 
=== ปัญหา Satisfiability (SAT) ===

รุ่นแก้ไขเมื่อ 05:03, 23 กันยายน 2550


จดบันทึกคำบรรยายโดย:

นายเกรียงไกร ลิ่มทอง   รหัส : 50653732
นายธีรวัฒน์ ตออำนวย   รหัส : 50653815



NP Completeness

NP : Non-deterministic Polynomial time

ปัญหา Halting Problem

Description : ให้โปรแกรม P และ input X ถามว่า P(x) ทำงานจบหรือไม่ จะพบว่าเราไม่สามารถออกแบบอัลกอริทึมที่แก้ปัญหานี้ได้ ซึ่งสามารถพิสูจน์โดย contradiction ได้ดังนี้

Proof : สมมติให้มีอัลกอริทึม Q ที่แก้ปัญหา Halting Problem ได้ โดยมี Q(program P, input X) จะ return True ถ้า P(x) halt และ return False เมื่อ P(x) ติด loop เพราะฉะนั้นเราจะสามารถสร้าง procedure Q' ที่มีอัลกอริทึมดังต่อไปนี้ได้

  Procedure Q'(program P)
     If Q(P, P) then
        loop forever
     Else
        halt

จาก procedure Q' พิจารณา Q'(Q') ว่า halt หรือไม่

Case1 : Q'(Q') halt
นั่นคือ Q(Q',Q') = False --> Q'(Q') = False คือ Q'(Q') ติด loop *Contradict
Case2 : Q'(Q') loop
นั่นคือ Q(Q',Q') = Ture --> Q'(Q') = True คือ Q'(Q') halt *Contradict

เกิด Contradiction จึงสรุปได้ว่าไม่สามารถสร้าง procedure Q' ได้ เพราะฉะนั้น สมมติฐานที่มีอัลกอริทึม Q ที่แก้ปัญหา Halting Problem ได้ ไม่เป็นเป็นจริง

  Note : ปัญหา Halting Problem ถูกพิสูจน์โดย Alan Turing

ปัญหา Program Equivalence

Description : ให้โปรแกรม P1 และ P2 ถามว่า P1 และ P2 ให้ผลลัพธ์เหมือนกันในทุกๆ input หรือไม่ ในที่นี้เราจะพิสูจน์โดยวิธี Reduction จากปัญหา Halting Problem ไปสู่ปัญหา Program Equivalence

Proof : สมมติว่ามีอัลกอริทึม Q ที่แก้ปัญหา Program Equivalence ได้
ให้มี procedure HP(P,X) สำหรับแก้ปัญหา Halting Problem

Decision Problem

Description : คือปัญหาที่ต้องการคำตอบเป็น Yes หรือ No

ปัญหา Decision Problem P สามารถนิยามใหม่ ด้วย Language P ซึ่งเป็นเซ็ตของ instance ที่ตอบ yes เช่น

Decision Problem

Prime : ให้จำนวนจริง X ถามว่า X เป็น prime หรือไม่
Shortest path : ให้หาว่ามี Shortest path จาก s ไป t ที่ยาวไม่เกิน p หรือไม่

Language

Prime : {3, 5, 7, 11, ...}
Shortest path : {...} (set ของ Shortest path จาก s ไป t ที่ยาวไม่เกิน p)


ปัญหา Satisfiability (SAT)

ปัญหา 3-Satisfiability (3-SAT)

ปัญหา Independent Set

Class NP

ปัญหา Vertex Cover

ปัญหา 3-Color