240 likes | 375 Views
CSE 221/ICT221 Analysis and Design of Algorithms Lecture 14: P and NP Problems. Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th. Euler Circuit Problems. ลากเส้นตามรูปโดยไม่ซ้ำ มีรูปใดทำได้บ้าง และ รูปใดทำไม่ได้เลย. เป็นไปได้ ถ้ามี node degree เป็นคี่ = 2 โหนด (Euler path).
E N D
CSE 221/ICT221 Analysis and Design of AlgorithmsLecture 14:P and NP Problems Dr.SurasakMungsing E-mail: Surasak.mu@spu.ac.th
Euler Circuit Problems ลากเส้นตามรูปโดยไม่ซ้ำ มีรูปใดทำได้บ้าง และ รูปใดทำไม่ได้เลย เป็นไปได้ ถ้ามี node degree เป็นคี่ =2 โหนด (Euler path) การจบที่จุดเริ่มต้น จะเป็นไปได้ ถ้ากราฟมี node degree ทั้งหมดเป็นคู่ (Euler Circuit) เป็นไปไม่ได้ ถ้ามี node degree เป็นคี่มากกว่า 2 โหนด
ความยากของปัญหา • ปัญหาแบ่งเป็นกลุ่มได้แก่ • กลุ่มปัญหาP • กลุ่มปัญหาNP • กลุ่มปัญหาNP-hard • กลุ่มปัญหาNP-complete • บางปัญหามีความยากที่ยังไม่มีใครในโลกออกแบบอัลกอริทึมที่ให้ผลเฉลยได้รวดเร็ว ซึ่งปัญหาเหล่านี้ว่า NP-complete problem
ประสิทธิภาพของอัลกอริทึม อัลกอริทึมที่มีประสิทธิภาพ หมายถึงอัลกอริทึมที่จะทำงานได้รวดเร็วและมีอัตราการเติบโตของเวลาทำงานที่ยอมรับได้ คือ O(nk) อัลกอริทึมที่ไม่มีประสิทธิภาพ หมายถึงอัลกอริทึมที่มีเวลาการทำงานโตเร็วกว่าฟังก์ชันพหุนามเช่น O(n log n) O(2n) หรือ O(n!)
ปัญหาง่ายหรือยาก • เป็นปัญหาง่าย (Tractable problem) ก็ต่อเมื่อมีอัลกอริทึมที่มีประสิทธิภาพซึ่งใช้แก้ปัญหานี้ได้ • เป็นปัญหายาก (Intractable problem) ก็ต่อเมื่อพิสูจน์ได้ว่าต้องใช้อัลกอริทึมที่ไม่มีประสิทธิภาพแน่ๆในแก้ปัญหานี้ • ปัญหาในตารางประสิทธิภาพอัลกอริทึมข้างต้น ยกเว้น 2 รายการสุดท้ายเป็นปัญหาง่ายทั้งสิ้น เพราะได้พบอัลกอริทึมที่มีประสิทธิภาพซึ่งใช้แก้ปัญหาเหล่านี้แล้ว • สองปัญหาสุดท้ายในตารางประสิทธิภาพอัลกอริทึมข้างต้นเป็นปัญหายากเพราะอาจมีอัลกอริทึมที่มีประสิทธิภาพซึ่งแก้ปัญหาเหล่านี้ได้ที่เรายังไม่รู้จักก็ได้
มีปัญหาอะไรบ้างที่รู้ว่ายากแน่ๆมีปัญหาอะไรบ้างที่รู้ว่ายากแน่ๆ • ปัญหาแจกแจงทุกกรณี เซตย่อย ซึงมีความซับซ้อนอยู่ใน O(2n) • ปัญหาย้ายจานหอคอยฮานอย ซึ่งต้องทำการย้าย 2n -1 ครั้ง • ปัญหายากที่สนใจกันส่วนใหญ่เป็นปัญหาที่คิดคำตอบนานๆ ไม่ใช่คิดคำตอบยาวๆ • ปัญหาประเภทที่พิสูจน์ได้เลยว่าไม่มีอัลกอริทึมใดๆหาคำตอบได้ (เรียกกันว่าปัญหา non-computable) เช่น Hilbert’s Tenth Problem ซึ่งต้องการหาคำตอบของสมการDiphantine ตัวอย่างเช่น จงหาว่ามีคำตอบจำนวนเต็มของตัวแปร x, y และ z ในสมการ 42x2y +34xz = 112 หรือไม่ ? • ปัญหา Halting problem ซึ่ง Alan Turing เป็นผู้พิสูจน์ว่า เป็นปัญหาแบบคำนวณไม่ได้ในปี ค.ศ. 1937
ปัญหาการตัดสินใจ • ปัญหาการตัดสินใจคือปัญหาที่ให้คำตอบว่า ใช่/ไม่ใช่ ได้/ไม่ได้ มี/ไม่มี จริง/ไม่จริง มีเพียงสองคำตอบ • ตัวอย่างของปัญหาประเภทนี้ เช่น • Satisfiability (SAT) • Hamilton Circuit (HAM) • Traveling Salesperson Problem (TSP)
ตัวอย่างปัญหา Hamilton Circuit กราฟนี้มีวงจรHamiltonหรือไม่ (วงจรที่ผ่านจุดยอดทุกจุดๆละหนึ่งครั้ง) 10 1 3 2 1 5 2 5 6 13 4 11 7 8 3 4 9 กราฟที่มีวงจรHamilton 12 กราฟที่ไม่มีวงจรHamilton
Traveling Salesperson Problem (TSP) • กำหนดให้ G คือกราฟ อยากทราบว่ามีวงจรในกราฟนี้ซึ่งผ่านจุดยอด (Vertex) ทุกจุดในกราฟจุดละหนึ่งครั้ง โดยความยาวรวมของวงจรนี้มีค่าไม่เกิน k หรือไม่ • เป็น NP-hard Problem
Other Problems • Partition • Partition n positive integers s1, s2, s3, …, sn into two groups A and B such that the sum of the numbers in each group is the same. [9, 4, 6, 3, 5, 1,8] A = [9, 4, 5] and B = [6, 3, 1, 8] • เป็นNP-hard Problem • Subset Sum Problem • Does any subset of n positive integers s1, s2, s3, …, sn have a sum exactly equal to c? [9, 4, 6, 3, 5, 1,8] and c = 18 A = [9, 4, 5] • เป็น NP-hard Problem
ต้องการคำตอบที่เป็นไปได้หรือคำตอบที่ดีที่สุดต้องการคำตอบที่เป็นไปได้หรือคำตอบที่ดีที่สุด เป้าหมายการแก้ปัญหานั้น ต้องการจะให้ได้คำตอบที่ดีที่สุดหรือต้องการแค่คำตอบที่เป็นไปได้ • ตัวอย่างปัญหา • TravellingSalesperson:บุรุษไปรษณีย์ต้องการเดินส่งจดหมายให้ครบทุกเมืองโดยให้มีระยะทางรวมสั้นที่สุด • คำตอบที่ดีที่สุดในปัญหานี้คือคำตอบของระยะทางที่สั้นที่สุด จะใช้เวลาสำหรับการหาคำตอบเป็นO(n!) • คำตอบที่พอใช้ได้อาจอยู่ในเทอมของO(na) • ทั้งนี้ระยะเวลาที่ใช้ในการทำคำตอบที่ดีที่สุดของแต่ละปัญหาขึ้นกับลักษณะธรรมชาติของปัญหานั้นๆ
ปัญหาเป็นแบบ P หรือ NP • ปัญหาแบ่งเป็น 2 กลุ่ม • กลุ่มแรกคือปัญหาที่แก้ไขได้ในเวลา Polynomial • กลุ่มที่สองคือปัญหาที่ ไม่ สามารถแก้ไขได้ในเวลา Polynomial • ปัญหาในกลุ่มที่สองอาจแก้ได้ในเวลา Polynomial ถ้าใช้วิธีเดา (guess) คำตอบ โดยกำหนดระยะเวลาในการเดาคำตอบให้อยู่ในรูปของเวลา P • ปัญหาที่แก้ไขได้ในเวลา Polynomial เรียกว่าปัญหาแบบ P • ปัญหาที่แก้โดยใช้เวลา P ในการเดาคำตอบ เป็นปัญหาแบบ NPหรือ Non-Deterministic Polynomial
เครื่องคำนวณแบบ Turing • เสนอโดย Alan Turingในปี ค.ศ. 1936เป็นแบบจำลองของเครื่องคำนวณที่มีโครงสร้างง่ายๆ แต่สามารถใช้แก้ปัญหาส่วนใหญ่ได้ • มีปัญหาบางประเภทที่ไม่ว่าจะใช้เครื่องคำนวณแบบใดก็ตาม ก็ไม่สามารถจะใช้หาคำตอบของปัญหาเหล่านั้นได้ เช่น ปัญหาที่ว่าจะรู้ได้อย่างไรว่าโปรแกรมที่ให้มาจะหยุดทำงาน (the Halting Problem) A TuringMachine was a specific mechanical device that could carry out some specific task in a systematic way. Each Turing Machine would work in a similar manner, using mechanisms related to the computer concepts of input, output and a program.
. . . . . . . . เทปที่มีความยาว ไม่จำกัด ส่วนควบคุม หัวอ่าน/เขียน Deterministic Turing Machine(DTM) เครื่องคำนวณ DTM แบบพื้นฐานประกอบด้วย • เทปที่มีความยาวไม่จำกัด แบ่งออกเป็นช่องๆ เท่าๆ กัน เพื่อไว้บรรจุข้อมูล ซึ่งอาจเป็นตัวเลขหรือตัวหนังสือก็ได้ • หัวสำหรับอ่านและเขียนตัวอักษรที่อยู่บนเทป หัวนี้อ่านตัวอักษรครั้งละหนึ่งตัวอักษรและสามารถเลื่อนไปมาทางซ้ายหรือขวาได้ หรือไม่เลื่อนเลย ทั้งนี้จะขึ้นกับส่วนควบคุมหรือลำดับการทำงานของเครื่องคำนวณ • ส่วนควบคุม ทำหน้าที่ตัดสินใจว่า จะให้หัวอ่าน/เขียนบันทึกตัวอักษรอะไรลงไปบนเทป เมื่ออ่านตัวอีกษรหนึ่งตัวบนเทป จะเป็นผู้กำหนดว่าจะให้ไปทำขั้นตอนไหนต่อไปในลำดับการทำงนของเครื่อง
Non- deterministic Turing Machine(NDTM) เครื่องคำนวณ NDTM แบบพื้นฐานประกอบด้วย 1. เทปที่มีความยาวไม่จำกัด แบ่งออกเป็นช่องๆ เท่าๆ กัน เพื่อไว้บรรจุข้อมูล ซึ่งอาจป็นตัวเลขหรือตัวหนังสือก็ได้ 2. หัวสำหรับอ่านและเขียนตัวอักษรที่อยู่บนเทป หัวนี้อ่านตัวอักษรครั้งละหนึ่งตัวอักษรและสามารถเลื่อนไปมาทางซ้ายหรือขวาได้ หรือไม่เลื่อนเลย ทั้งนี้จะขึ้นกับส่วนควบคุมหรือลำดับการทำงานของเครื่องคำนวณ 3. ส่วนควบคุมแน่ชัดและส่วนเดา ทำหน้าที่ตัดสินใจว่า จะให้หัวอ่าน/เขียนบันทึกตัวอักษรอะไรลงไปบนเทป เมื่ออ่านตัวอีกษรหนึ่งตัวบนเทป จะเป็นผู้กำหนดว่าจะให้ไปทำขั้นตอนไหนต่อไปในลำดับการทำงนของเครื่อง
DTM and NDTM with k tapes DTM with k tapes NDTM with k tapes
โปรแกรมสำหรบเครื่องคำนวณแบบTuringโปรแกรมสำหรบเครื่องคำนวณแบบTuring • กลุ่มตัวอักษรที่มีจำนวนแน่นอนบนเทป แทนด้วย T • กลุ่มขั้นตอนการทำงานของส่วนควบคุม แทนด้วย Q q0คือขั้นตอนเริ่มต้น qFคือขั้นตอนสุดท้าย {qi} คือขั้นตอนระหว่าง q0และ qF • ฟังก์ชันการเปลี่ยนขั้นตอนการทำงานและเลื่อนหัวอ่าน/เขียน แทนฟังก์ชันเมื่ออ่านตัวอักรเข้ามา ตำแหน่งหัวอ่าน/เขียน เลื่อนได้ 3 แบบ คือ L (ไปทางซ้าย) R (ไปทางขวา) และ S (ไม่เลื่อน) : (Q – {qF} x T Q x T x {L, R, S}
การลดรูปของปัญหา • กำหนดให้ Q1และ Q2 เป็นปัญหาการตัดสินใจ 2 ปัญหา ถ้าเราลดรูปปัญหา Q1ไปเป็นปัญหา Q2 ก็แสดงว่าเราสามารถเปลี่ยนตัวอย่างปัญหาใดๆของ Q1ไปเป็นตัวอย่างปัญหาของ Q2 ได้ จากนั้นใช้อัลกอริทึม Q2 หาคำตอบ ก็จะเป็นคำตอบของตัวอย่างปัญหาของ Q1นั้น • การลดรูปของปัญหาเป็นกลวิธีในการแก้ปัญหาแบบหนึ่ง สมมติว่าเราต้องการแก้ปัญหา Q1สิ่งที่นักออกแบบอัลกอริทึมต้องคิดคือ Q1เป็นปัญหาที่รู้สึกคล้ายๆกับปัญหาอื่นที่เราเคยรู้จักวิธีแก้ไขหรือไม่ ถ้ารู้สึกว่าคล้ายปัญหา Q2แล้ว คิดต่อว่าจะมีวิธีตีความปัญหา Q1 ให้อยู่ในรูปแบบของปัญหา Q2 ที่เรารู้จักวิธีแก้ไขนั้นได้อย่างไร
กลุ่มปัญหาNP-Complete • P NP ปัญหาในกลุ่ม P เป็นปัญหาง่ายทั้งสิ้น เพราะมีอัลกอริทึมหาคำตอบได้อย่างมีประสิทธิภาพ ในขณะที่ปัญหาในกลุ่ม NP นั้นยังไม่เด่นชัด • ในปี ค.ศ. 1971 Cook ได้แสดงให้เห็นว่าปัญหา SAT เป็นปัญหาที่ยากที่สุดใน NP โดยการพิสูจน์ว่าทุกๆปัญหาใน NP สามารถลดรูปแบบพหุนามไปเป็น SAT ได้หมด • ในปี ค.ศ. 1972 Karp ได้อาศัยกลวิธีการลดรูปเพื่อแสดงให้เห็นว่ามีปัญหาอื่นๆอีกมากมายหลากหลายรูปแบบที่มีความยากง่ายเทียบเท่ากับ SAT นั่นก็คือกลุ่มปัญหาที่เรียกว่า NP-Complete ซึ่งเป็นกลุ่มปัญหาที่ยากที่สุดใน NP หมายความว่าเป็นกลุ่มปัญหาที่มีความยากง่ายทัดเทียมกันหมด (อันเป็นที่มาของคำว่า Complete หรือ บริบูรณ์)
NP-Complete (ต่อ) • ดังนั้นหากใครพบอัลกอริทึมที่มีประสิทธิภาพที่แก้เพียง 1 ปัญหาใน NP-Complete ก็ย่อมหมายความว่าทุกปัญหาใน NPC เป็นปัญหาง่ายทั้งสิ้น (นั่นคือพิสูจน์ได้ว่า P = NP) • ในทางกลับกัน ถ้ามีใครสามารถพิสูจน์เพียง 1 ปัญหาใดใน NPC เป็นปัญหายาก ก็สรุปได้ว่าทุกปัญหาในกลุ่มนี้เป็นปัญหายากทั้งสิ้น (นั่นคือ พิสูจน์ได้ว่า P NP หรือ P NP)
P NP-Complete สรุป If any NP-Complete can be solved in polynomial time, then all NP problems can be solved in polynomial time. NP Or, if any NP-complete problem can be solvedin polynomial time, then NP = P กลุ่มปัญหา NP-Hard Q เป็นปัญหา NP-Hard ถ้าทุกปัญหาใน NP สามารถลดรูปแบบพหุนามไปเป็น Q ได้ NP-Complete คือกลุ่มของปัญหาการตัดสินใจที่เป็น NP-Hard และอยู่ในกลุ่ม NP ปัญหา NP-Hard ไม่จำเป็นต้องเป็นปัญหาตัดสินใจ
สรุป • SAT เป็น NP Problem • NP problem ทั้งหลายแปลงให้เป็นปัญหา SAT ได้ในเวลา Polynomial • การแก้ปัญหาที่เป็น NP สามารถทำได้ในเวลาที่เป็น Polynomial โดยใช้เครื่อง NDTM