Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Jan-19
Euler Circuit Problems ลากเส้นตามรูปโดยไม่ซ้ำ มีรูปใดทำได้บ้าง และ รูปใดทำไม่ได้เลย เป็นไปได้ ถ้ามี node degree เป็นคี่ = 2 โหนด (Euler path) การจบที่จุดเริ่มต้น จะเป็นไปได้ ถ้ากราฟมี node degree ทั้งหมดเป็นคู่ (Euler Circuit) เป็นไปไม่ได้ ถ้ามี node degree เป็นคี่มากกว่า 2 โหนด 1/2/2019
ความยากของปัญหา ปัญหาแบ่งเป็นกลุ่มได้แก่ กลุ่มปัญหา P กลุ่มปัญหา NP กลุ่มปัญหา NP-hard กลุ่มปัญหา NP-complete บางปัญหามีความยากที่ยังไม่มีใครในโลกออกแบบอัลกอริทึมที่ให้ผลเฉลยได้รวดเร็ว ซึ่งปัญหาเหล่านี้ว่า NP-complete problem 1/2/2019
ประสิทธิภาพของอัลกอริทึม ปัญหา เวลาทำงานของอัลกอริทึม Sorting O(n log n) Closest point 2D Single source shortest path O(e + v log v) Minimum spanning tree O(e log e) Matrix multiplication O(n3) All pair shortest path O(v3) Sum of subset O(2n) Assignment O(n!) อัลกอริทึมที่มีประสิทธิภาพ หมายถึงอัลกอริทึมที่จะทำงานได้รวดเร็วและมีอัตราการเติบโตของเวลาทำงานที่ยอมรับได้ คือ O(nk) อัลกอริทึมที่ไม่มีประสิทธิภาพ หมายถึงอัลกอริทึมที่มีเวลาการทำงานโตเร็วกว่าฟังก์ชันพหุนามเช่น O(n log n) O(2n) หรือ O(n!) Jan-19
ปัญหาง่ายหรือยาก เป็นปัญหาง่าย (Tractable problem) ก็ต่อเมื่อมีอัลกอริทึมที่มีประสิทธิภาพซึ่งใช้แก้ปัญหานี้ได้ เป็นปัญหายาก (Intractable problem) ก็ต่อเมื่อพิสูจน์ได้ว่าต้องใช้อัลกอริทึมที่ไม่มีประสิทธิภาพแน่ๆในแก้ปัญหานี้ ปัญหาในตารางประสิทธิภาพอัลกอริทึมข้างต้น ยกเว้น 2 รายการสุดท้ายเป็นปัญหาง่ายทั้งสิ้น เพราะได้พบอัลกอริทึมที่มีประสิทธิภาพซึ่งใช้แก้ปัญหาเหล่านี้แล้ว สองปัญหาสุดท้ายในตารางประสิทธิภาพอัลกอริทึมข้างต้นเป็นปัญหายากเพราะอาจมีอัลกอริทึมที่มีประสิทธิภาพซึ่งแก้ปัญหาเหล่านี้ได้ที่เรายังไม่รู้จักก็ได้ 1/2/2019
มีปัญหาอะไรบ้างที่รู้ว่ายากแน่ๆ ปัญหาแจกแจงทุกกรณี เซตย่อย ซึงมีความซับซ้อนอยู่ใน O(2n) ปัญหาย้ายจานหอคอยฮานอย ซึ่งต้องทำการย้าย 2n -1 ครั้ง ปัญหายากที่สนใจกันส่วนใหญ่เป็นปัญหาที่คิดคำตอบนานๆ ไม่ใช่คิดคำตอบยาวๆ ปัญหาประเภทที่พิสูจน์ได้เลยว่าไม่มีอัลกอริทึมใดๆหาคำตอบได้ (เรียกกันว่าปัญหา non-computable) เช่น Hilbert’s Tenth Problem ซึ่งต้องการหาคำตอบของสมการ Diphantine ตัวอย่างเช่น จงหาว่ามีคำตอบจำนวนเต็มของตัวแปร x, y และ z ในสมการ 42x2y +34xz = 112 หรือไม่ ? ปัญหา Halting problem ซึ่ง Alan Turing เป็นผู้พิสูจน์ว่า เป็นปัญหาแบบคำนวณไม่ได้ในปี ค.ศ. 1937 1/2/2019
ปัญหาการตัดสินใจ ปัญหาการตัดสินใจคือปัญหาที่ให้คำตอบว่า ใช่/ไม่ใช่ ได้/ไม่ได้ มี/ไม่มี จริง/ไม่จริง มีเพียงสองคำตอบ ตัวอย่างของปัญหาประเภทนี้ เช่น Satisfiability (SAT) Hamilton Circuit (HAM) Traveling Salesperson Problem (TSP) 1/2/2019
ตัวอย่างปัญหา Satisfiability (SAT) 1/2/2019
ตัวอย่างปัญหา Hamilton Circuit 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 13 11 12 กราฟที่มีวงจร Hamilton William Rowan Hamilton (1805–1865) กราฟที่ไม่มีวงจร Hamilton 1/2/2019
Traveling Salesperson Problem (TSP) The classic traveling salesman problem: A salesman must visit customers in a number of cities scattered across the country and then return home following the shortest possible route visiting each city only once Find the cycle of minimum cost visiting all of the vertices of G exactly once. กำหนดให้ G คือกราฟ อยากทราบว่ามีวงจรในกราฟนี้ซึ่งผ่านจุดยอด (Vertex) ทุกจุดในกราฟจุดละหนึ่งครั้ง โดยความยาวรวมของวงจรนี้มีค่าไม่เกิน k หรือไม่ เป็น NP-hard Problem
ผูกเชือกรองเท้าวิธีไหน จะใช้เชือกสั้นที่สุด ? Shoelace Problem ผูกเชือกรองเท้าวิธีไหน จะใช้เชือกสั้นที่สุด ? Jan-19
American: g + 2(n - 1)(d 2 + g 2) It's then possible to calculate the length of lace in terms of the number n of pairs of eyelets, the distance d between successive eyelets, and the gap g between corresponding left and right eyelets. Applying the Pythagorean theorem and a little algebra, the lace lengths are as follows American: g + 2(n - 1)(d 2 + g 2) European: (n - 1)g + 2(d 2 + g 2) + (n - 2) (4d 2 + g 2) Shoe store: (n - 1)g + (n - 1) x (d2 + g 2) + [(n - 1)2d2 + g2] if n is at least 4, the shortest laces are always American, followed by European, then shoe store. For n = 3, American remains shortest, but European and shoe-store lacings are of equal length. Jan-19
Other Problems เป็น NP-hard Problem Partition [9, 4, 6, 3, 5, 1,8] 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]
ต้องการคำตอบที่เป็นไปได้หรือคำตอบที่ดีที่สุด เป้าหมายการแก้ปัญหานั้น ต้องการจะให้ได้คำตอบที่ดีที่สุดหรือต้องการแค่คำตอบที่เป็นไปได้ ตัวอย่างปัญหา Travelling Salesperson: บุรุษไปรษณีย์ต้องการเดินส่งจดหมายให้ครบทุกเมืองโดยให้มีระยะทางรวมสั้นที่สุด คำตอบที่ดีที่สุดในปัญหานี้คือคำตอบของระยะทางที่สั้นที่สุด จะใช้เวลาสำหรับการหาคำตอบเป็น O(n!) คำตอบที่พอใช้ได้อาจอยู่ในเทอมของ O(na) ทั้งนี้ระยะเวลาที่ใช้ในการทำคำตอบที่ดีที่สุดของแต่ละปัญหาขึ้นกับลักษณะธรรมชาติของปัญหานั้นๆ 1/2/2019
ปัญหาเป็นแบบ P หรือ NP ปัญหาแบ่งเป็น 2 กลุ่ม กลุ่มแรกคือปัญหาที่แก้ไขได้ในเวลา Polynomial กลุ่มที่สองคือปัญหาที่ ไม่ สามารถแก้ไขได้ในเวลา Polynomial ปัญหาในกลุ่มที่สองอาจแก้ได้ในเวลา Polynomial ถ้าใช้วิธีเดา (guess) คำตอบ โดยกำหนดระยะเวลาในการเดาคำตอบให้อยู่ในรูปของเวลา P ปัญหาที่แก้ไขได้ในเวลา Polynomial เรียกว่าปัญหาแบบ P ปัญหาที่แก้โดยใช้เวลา P ในการเดาคำตอบ เป็นปัญหาแบบ NP หรือ Non-Deterministic Polynomial 1/2/2019
เครื่องคำนวณแบบ Turing เสนอโดย Alan Turing ในปี ค.ศ. 1936 เป็นแบบจำลองของเครื่องคำนวณที่มีโครงสร้างง่ายๆ แต่สามารถใช้แก้ปัญหาส่วนใหญ่ได้ มีปัญหาบางประเภทที่ไม่ว่าจะใช้เครื่องคำนวณแบบใดก็ตาม ก็ไม่สามารถจะใช้หาคำตอบของปัญหาเหล่านั้นได้ เช่น ปัญหาที่ว่าจะรู้ได้อย่างไรว่าโปรแกรมที่ให้มาจะหยุดทำงาน (the Halting Problem) A Turing Machine 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. 1/2/2019
Deterministic Turing Machine (DTM) เทปที่มีความยาวไม่จำกัด แบ่งออกเป็นช่องๆ เท่าๆ กัน เพื่อไว้บรรจุข้อมูล ซึ่งอาจเป็นตัวเลขหรือตัวหนังสือก็ได้ หัวสำหรับอ่านและเขียนตัวอักษรที่อยู่บนเทป หัวนี้อ่านตัวอักษรครั้งละหนึ่งตัวอักษรและสามารถเลื่อนไปมาทางซ้ายหรือขวาได้ หรือไม่เลื่อนเลย ทั้งนี้จะขึ้นกับส่วนควบคุมหรือลำดับการทำงานของเครื่องคำนวณ ส่วนควบคุม ทำหน้าที่ตัดสินใจว่า จะให้หัวอ่าน/เขียนบันทึกตัวอักษรอะไรลงไปบนเทป เมื่ออ่านตัวอีกษรหนึ่งตัวบนเทป จะเป็นผู้กำหนดว่าจะให้ไปทำขั้นตอนไหนต่อไปในลำดับการทำงนของเครื่อง . . . . หัวอ่าน/เขียน ส่วนควบคุม เทปที่มีความยาว ไม่จำกัด 1/2/2019
Non- deterministic Turing Machine (NDTM) 1. เทปที่มีความยาวไม่จำกัด แบ่งออกเป็นช่องๆ เท่าๆ กัน เพื่อไว้บรรจุข้อมูล ซึ่งอาจป็นตัวเลขหรือตัวหนังสือก็ได้ 2. หัวสำหรับอ่านและเขียนตัวอักษรที่อยู่บนเทป หัวนี้อ่านตัวอักษรครั้งละหนึ่งตัวอักษรและสามารถเลื่อนไปมาทางซ้ายหรือขวาได้ หรือไม่เลื่อนเลย ทั้งนี้จะขึ้นกับส่วนควบคุมหรือลำดับการทำงานของเครื่องคำนวณ 3. ส่วนควบคุมแน่ชัดและส่วนเดา ทำหน้าที่ตัดสินใจว่า จะให้หัวอ่าน/เขียนบันทึกตัวอักษรอะไรลงไปบนเทป เมื่ออ่านตัวอีกษรหนึ่งตัวบนเทป จะเป็นผู้กำหนดว่าจะให้ไปทำขั้นตอนไหนต่อไปในลำดับการทำงนของเครื่อง 1/2/2019
DTM and NDTM with k tapes 1/2/2019
โปรแกรมสำหรบเครื่องคำนวณแบบ Turing กลุ่มขั้นตอนการทำงานของส่วนควบคุม แทนด้วย Q q0 คือขั้นตอนเริ่มต้น qF คือขั้นตอนสุดท้าย {qi} คือขั้นตอนระหว่าง q0 และ qF ฟังก์ชันการเปลี่ยนขั้นตอนการทำงานและเลื่อนหัวอ่าน/เขียน แทนฟังก์ชันเมื่ออ่านตัวอักรเข้ามา ตำแหน่งหัวอ่าน/เขียน เลื่อนได้ 3 แบบ คือ L (ไปทางซ้าย) R (ไปทางขวา) และ S (ไม่เลื่อน) : (Q – {qF} x T Q x T x {L, R, S} 1/2/2019
การลดรูปของปัญหา กำหนดให้ Q1 และ Q2 เป็นปัญหาการตัดสินใจ 2 ปัญหา ถ้าสามารถลดรูปปัญหา Q1ไปเป็นปัญหา Q2 ก็แสดงว่าสามารถเปลี่ยนตัวอย่างปัญหาใดๆของ Q1 ไปเป็นตัวอย่างปัญหาของ Q2 ได้ จากนั้นใช้อัลกอริทึม Q2 หาคำตอบ ก็จะเป็นคำตอบของตัวอย่างปัญหาของ Q1 นั้น การลดรูปของปัญหาเป็นกลวิธีในการแก้ปัญหาแบบหนึ่ง สมมติว่าต้องการแก้ปัญหา Q1 สิ่งที่นักออกแบบอัลกอริทึมต้องคิดคือ Q1 เป็นปัญหาที่รู้สึกคล้ายๆกับปัญหาอื่นที่เคยรู้จักวิธีแก้ไขหรือไม่ ถ้ารู้สึกว่าคล้ายปัญหา Q2 แล้ว คิดต่อว่าจะมีวิธีตีความปัญหา Q1 ให้อยู่ในรูปแบบของปัญหา Q2 ที่เรารู้จักวิธีแก้ไขนั้นได้อย่างไร 1/2/2019
กลุ่มปัญหา NP-Complete P NP ปัญหาในกลุ่ม P เป็นปัญหาง่ายทั้งสิ้น เพราะมีอัลกอริทึมหาคำตอบได้อย่างมีประสิทธิภาพ ในขณะที่ปัญหาในกลุ่ม NP นั้นยังไม่เด่นชัด ในปี ค.ศ. 1971 Cook ได้แสดงให้เห็นว่าปัญหา SAT เป็นปัญหาที่ยากที่สุดใน NP โดยการพิสูจน์ว่าทุกๆปัญหาใน NP สามารถลดรูปแบบพหุนามไปเป็น SAT ได้หมด ในปี ค.ศ. 1972 Karp ได้อาศัยกลวิธีการลดรูปเพื่อแสดงให้เห็นว่ามีปัญหาอื่นๆอีกมากมายหลากหลายรูปแบบที่มีความยากง่ายเทียบเท่ากับ SAT นั่นก็คือกลุ่มปัญหาที่เรียกว่า NP-Complete ซึ่งหมายความว่าเป็นกลุ่มปัญหาที่มีความยากง่ายทัดเทียมกันหมด (อันเป็นที่มาของคำว่า Complete หรือ บริบูรณ์) 1/2/2019
NP-Complete (ต่อ) ดังนั้นหากใครพบอัลกอริทึมที่มีประสิทธิภาพที่สามารถแก้ปัญหา NP-Complete เพียง 1 ปัญหาได้ ย่อมหมายความว่าทุกปัญหาใน NPC เป็นปัญหาง่ายทั้งสิ้น (นั่นคือพิสูจน์ได้ว่า P = NP) ในทางกลับกัน ถ้ามีใครสามารถพิสูจน์ได้ว่าปัญหาใดใน NPC เพียง 1 ปัญหาเป็นปัญหายาก ก็สรุปได้ว่าทุกปัญหาในกลุ่มนี้เป็นปัญหายากทั้งสิ้น (นั่นคือ พิสูจน์ได้ว่า P NP หรือ P NP) 1/2/2019
สรุป P NP-Complete NP If any NP-Complete can be solved in polynomial time, then all NP problems can be solved in polynomial time. Or, if any NP-complete problem can be solved in polynomial time, then NP = P 1/2/2019
สรุป SAT เป็น NP Problem NP problem ทั้งหลายแปลงให้เป็นปัญหา SAT ได้ในเวลา Polynomial การแก้ปัญหาที่เป็น NP สามารถทำได้ในเวลาที่เป็น Polynomial โดยใช้เครื่อง NDTM CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี 1/2/2019
ทบทวนเนื้อหาและประเด็นสำคัญของที่เรียนมาทั้งหมด Next Lecture: ทบทวนเนื้อหาและประเด็นสำคัญของที่เรียนมาทั้งหมด 2-Jan-19