CSC201 Analysis and Design of Algorithms P and NP Problems

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การบวกจำนวนสองจำนวนที่มีผลบวกไม่เกิน 9
Advertisements

ลิมิตและความต่อเนื่อง
ความต่อเนื่อง (Continuity)
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
การสังเกต อ.สมพงษ์ พันธุรัตน์.
การเขียนผังงาน.
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
Register Allocation and Graph Coloring
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
Functional Programming
Functional programming part II
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
การแก้ปัญหาด้วยคอมพิวเตอร์
บทที่ 2 หลักการแก้ปัญหา
ผังงานโปรแกรม (Program Flowchart)
แผนผัง FlowChart Flow Chart คือ ขั้นตอนที่นำผลที่ได้จากการกำหนดและการ วิเคราะห์ปัญหามาเขียนเป็นแผนภาพหรือสัญลักษณ์ ประโยชน์ของผังงาน -ช่วยลำดับขั้นตอนการทำงานของโปรแกรม.
วิชา การออกแบบและพัฒนาซอฟต์แวร์
บทที่ 1. พื้นฐานความรู้ทั่วไป
สมการเชิงอนุพันธ์อย่างง่าย
Object-Oriented Analysis and Design
หน่วยที่ 2 วิธีการออกแบบโปรแกรม
Application of Graph Theory
การจำลองความคิด
Surachai Wachirahatthapong
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
การควบคุมทิศทางการทำงานของโปรแกรม
ขั้นตอนวิธี (Algorithm)
Asst.Prof. Dr.Surasak Mungsing
Asst.Prof. Dr.Surasak Mungsing
CSC201 Analysis and Design of Algorithms Greedy, Divide and Conquer
Asst.Prof. Dr.Surasak Mungsing
ให้ประหยัดการใช้หน่วยความจำ (space) ด้วยความรวดเร็ว (time)
Memory Management ในยุคก่อน
Flow Chart INT1103 Computer Programming
ที่ใช้ใน Object-Oriented Design
โครงสร้างข้อมูลคืออะไร ?
บทที่ 2 หลักการแก้ปัญหา
การออกแบบโปรแกรม ขั้นตอนการแก้ปัญหา การนิยามปัญหา (Problem definition)
2.1 วิธีแก้ปัญหาด้วยคอมพิวเตอร์ (Computer problem solving methods)
z  1 ( mod 2 ) ก็ต่อเมื่อ z2  1 ( mod 2 )
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
กองซ้อน ยอดกองซ้อน (stack).
PHP การตรวจสอบเงื่อนไข.
หลักการแก้ปัญหา
Chapter 01 Problem-Solving Concept แนวคิดการแก้ปัญหา
Shortest-Path Algorithms
School of Information Communication Technology,
บทที่ 2 แนวคิดในการเขียนโปรแกรม. ขั้นตอนการ พัฒนาโปรแกรม ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรม ครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
การแก้ปัญหาโปรแกรม (Flowchart)
หลักการเขียนโปรแกรม ( )
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
บทที่ 6 การจัดการโครงการ Project Management ญาลดา พรประเสริฐ.
การจัดเรียงข้อมูล (sorting)
การเขียนผังงาน ผังงาน (Flowchart)
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
กำหนดการพลวัต (Dynamic programming)
การแบ่งแยกและเอาชนะ Divide & Conquer
การแบ่งแยกและเอาชนะ Divide & Conquer
Wattanapong suttapak SE, ICT University of Phayao.
Summations and Mathematical Induction Benchaporn Jantarakongkul
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
ลิมิตและความต่อเนื่องของฟังก์ชัน
Dr.Surasak Mungsing CSE 221/ICT221 Analysis and Design of Algorithms Lecture 14: P and NP Problems Dr.Surasak Mungsing
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 13: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
การวิเคราะห์และออกแบบขั้นตอนวิธี
ใบสำเนางานนำเสนอ:

CSC201 Analysis and Design of Algorithms P and NP Problems Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Apr-17

Euler Circuit Problems ลากเส้นตามรูปโดยไม่ซ้ำ มีรูปใดทำได้บ้าง และ รูปใดทำไม่ได้เลย เป็นไปได้ ถ้ามี node degree เป็นคี่ = 2 โหนด (Euler path) การจบที่จุดเริ่มต้น จะเป็นไปได้ ถ้ากราฟมี node degree ทั้งหมดเป็นคู่ (Euler Circuit) เป็นไปไม่ได้ ถ้ามี node degree เป็นคี่มากกว่า 2 โหนด 4/4/2017

ความยากของปัญหา ปัญหาแบ่งเป็นกลุ่มได้แก่ กลุ่มปัญหา P กลุ่มปัญหา NP กลุ่มปัญหา NP-hard กลุ่มปัญหา NP-complete บางปัญหามีความยากที่ยังไม่มีใครในโลกออกแบบอัลกอริทึมที่ให้ผลเฉลยได้รวดเร็ว ซึ่งปัญหาเหล่านี้ว่า NP-complete problem 4/4/2017

ประสิทธิภาพของอัลกอริทึม ปัญหา เวลาทำงานของอัลกอริทึม 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!) Apr-17

ปัญหาง่ายหรือยาก เป็นปัญหาง่าย (Tractable problem) ก็ต่อเมื่อมีอัลกอริทึมที่มีประสิทธิภาพซึ่งใช้แก้ปัญหานี้ได้ เป็นปัญหายาก (Intractable problem) ก็ต่อเมื่อพิสูจน์ได้ว่าต้องใช้อัลกอริทึมที่ไม่มีประสิทธิภาพแน่ๆในแก้ปัญหานี้ ปัญหาในตารางประสิทธิภาพอัลกอริทึมข้างต้น ยกเว้น 2 รายการสุดท้ายเป็นปัญหาง่ายทั้งสิ้น เพราะได้พบอัลกอริทึมที่มีประสิทธิภาพซึ่งใช้แก้ปัญหาเหล่านี้แล้ว สองปัญหาสุดท้ายในตารางประสิทธิภาพอัลกอริทึมข้างต้นเป็นปัญหายากเพราะอาจมีอัลกอริทึมที่มีประสิทธิภาพซึ่งแก้ปัญหาเหล่านี้ได้ที่เรายังไม่รู้จักก็ได้ 4/4/2017

มีปัญหาอะไรบ้างที่รู้ว่ายากแน่ๆ ปัญหาแจกแจงทุกกรณี เซตย่อย ซึงมีความซับซ้อนอยู่ใน O(2n) ปัญหาย้ายจานหอคอยฮานอย ซึ่งต้องทำการย้าย 2n -1 ครั้ง ปัญหายากที่สนใจกันส่วนใหญ่เป็นปัญหาที่คิดคำตอบนานๆ ไม่ใช่คิดคำตอบยาวๆ ปัญหาประเภทที่พิสูจน์ได้เลยว่าไม่มีอัลกอริทึมใดๆหาคำตอบได้ (เรียกกันว่าปัญหา non-computable) เช่น Hilbert’s Tenth Problem ซึ่งต้องการหาคำตอบของสมการ Diphantine ตัวอย่างเช่น จงหาว่ามีคำตอบจำนวนเต็มของตัวแปร x, y และ z ในสมการ 42x2y +34xz = 112 หรือไม่ ? ปัญหา Halting problem ซึ่ง Alan Turing เป็นผู้พิสูจน์ว่า เป็นปัญหาแบบคำนวณไม่ได้ในปี ค.ศ. 1937 4/4/2017

ปัญหาการตัดสินใจ ปัญหาการตัดสินใจคือปัญหาที่ให้คำตอบว่า ใช่/ไม่ใช่ ได้/ไม่ได้ มี/ไม่มี จริง/ไม่จริง มีเพียงสองคำตอบ ตัวอย่างของปัญหาประเภทนี้ เช่น Satisfiability (SAT) Hamilton Circuit (HAM) Traveling Salesperson Problem (TSP) 4/4/2017

ตัวอย่างปัญหา Satisfiability (SAT) 4/4/2017

ตัวอย่างปัญหา Hamilton Circuit 10 1 1 2 3 5 2 13 5 6 4 11 7 8 4 3 9 กราฟที่มีวงจร Hamilton 12 กราฟที่ไม่มีวงจร Hamilton 4/4/2017

Traveling Salesperson Problem (TSP) กำหนดให้ G คือกราฟ อยากทราบว่ามีวงจรในกราฟนี้ซึ่งผ่านจุดยอด (Vertex) ทุกจุดในกราฟจุดละหนึ่งครั้ง โดยความยาวรวมของวงจรนี้มีค่าไม่เกิน k หรือไม่ เป็น NP-hard Problem

Other Problems เป็น NP-hard Problem 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]

ต้องการคำตอบที่เป็นไปได้หรือคำตอบที่ดีที่สุด เป้าหมายการแก้ปัญหานั้น ต้องการจะให้ได้คำตอบที่ดีที่สุดหรือต้องการแค่คำตอบที่เป็นไปได้ ตัวอย่างปัญหา Travelling Salesperson: บุรุษไปรษณีย์ต้องการเดินส่งจดหมายให้ครบทุกเมืองโดยให้มีระยะทางรวมสั้นที่สุด คำตอบที่ดีที่สุดในปัญหานี้คือคำตอบของระยะทางที่สั้นที่สุด จะใช้เวลาสำหรับการหาคำตอบเป็น O(n!) คำตอบที่พอใช้ได้อาจอยู่ในเทอมของ O(na) ทั้งนี้ระยะเวลาที่ใช้ในการทำคำตอบที่ดีที่สุดของแต่ละปัญหาขึ้นกับลักษณะธรรมชาติของปัญหานั้นๆ 4/4/2017

ปัญหาเป็นแบบ P หรือ NP ปัญหาแบ่งเป็น 2 กลุ่ม กลุ่มแรกคือปัญหาที่แก้ไขได้ในเวลา Polynomial กลุ่มที่สองคือปัญหาที่ ไม่ สามารถแก้ไขได้ในเวลา Polynomial ปัญหาในกลุ่มที่สองอาจแก้ได้ในเวลา Polynomial ถ้าใช้วิธีเดา (guess) คำตอบ โดยกำหนดระยะเวลาในการเดาคำตอบให้อยู่ในรูปของเวลา P ปัญหาที่แก้ไขได้ในเวลา Polynomial เรียกว่าปัญหาแบบ P ปัญหาที่แก้โดยใช้เวลา P ในการเดาคำตอบ เป็นปัญหาแบบ NP หรือ Non-Deterministic Polynomial 4/4/2017

เครื่องคำนวณแบบ 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. 4/4/2017

Deterministic Turing Machine (DTM) เทปที่มีความยาวไม่จำกัด แบ่งออกเป็นช่องๆ เท่าๆ กัน เพื่อไว้บรรจุข้อมูล ซึ่งอาจเป็นตัวเลขหรือตัวหนังสือก็ได้ หัวสำหรับอ่านและเขียนตัวอักษรที่อยู่บนเทป หัวนี้อ่านตัวอักษรครั้งละหนึ่งตัวอักษรและสามารถเลื่อนไปมาทางซ้ายหรือขวาได้ หรือไม่เลื่อนเลย ทั้งนี้จะขึ้นกับส่วนควบคุมหรือลำดับการทำงานของเครื่องคำนวณ ส่วนควบคุม ทำหน้าที่ตัดสินใจว่า จะให้หัวอ่าน/เขียนบันทึกตัวอักษรอะไรลงไปบนเทป เมื่ออ่านตัวอีกษรหนึ่งตัวบนเทป จะเป็นผู้กำหนดว่าจะให้ไปทำขั้นตอนไหนต่อไปในลำดับการทำงนของเครื่อง . . . . หัวอ่าน/เขียน ส่วนควบคุม เทปที่มีความยาว ไม่จำกัด 4/4/2017

Non- deterministic Turing Machine (NDTM) 1. เทปที่มีความยาวไม่จำกัด แบ่งออกเป็นช่องๆ เท่าๆ กัน เพื่อไว้บรรจุข้อมูล ซึ่งอาจป็นตัวเลขหรือตัวหนังสือก็ได้ 2. หัวสำหรับอ่านและเขียนตัวอักษรที่อยู่บนเทป หัวนี้อ่านตัวอักษรครั้งละหนึ่งตัวอักษรและสามารถเลื่อนไปมาทางซ้ายหรือขวาได้ หรือไม่เลื่อนเลย ทั้งนี้จะขึ้นกับส่วนควบคุมหรือลำดับการทำงานของเครื่องคำนวณ 3. ส่วนควบคุมแน่ชัดและส่วนเดา ทำหน้าที่ตัดสินใจว่า จะให้หัวอ่าน/เขียนบันทึกตัวอักษรอะไรลงไปบนเทป เมื่ออ่านตัวอีกษรหนึ่งตัวบนเทป จะเป็นผู้กำหนดว่าจะให้ไปทำขั้นตอนไหนต่อไปในลำดับการทำงนของเครื่อง 4/4/2017

DTM and NDTM with k tapes 4/4/2017

โปรแกรมสำหรบเครื่องคำนวณแบบ Turing กลุ่มขั้นตอนการทำงานของส่วนควบคุม แทนด้วย Q q0 คือขั้นตอนเริ่มต้น qF คือขั้นตอนสุดท้าย {qi} คือขั้นตอนระหว่าง q0 และ qF ฟังก์ชันการเปลี่ยนขั้นตอนการทำงานและเลื่อนหัวอ่าน/เขียน  แทนฟังก์ชันเมื่ออ่านตัวอักรเข้ามา ตำแหน่งหัวอ่าน/เขียน เลื่อนได้ 3 แบบ คือ L (ไปทางซ้าย) R (ไปทางขวา) และ S (ไม่เลื่อน) : (Q – {qF} x T  Q x T x {L, R, S} 4/4/2017

การลดรูปของปัญหา กำหนดให้ Q1 และ Q2 เป็นปัญหาการตัดสินใจ 2 ปัญหา ถ้าเราลดรูปปัญหา Q1ไปเป็นปัญหา Q2 ก็แสดงว่าเราสามารถเปลี่ยนตัวอย่างปัญหาใดๆของ Q1 ไปเป็นตัวอย่างปัญหาของ Q2 ได้ จากนั้นใช้อัลกอริทึม Q2 หาคำตอบ ก็จะเป็นคำตอบของตัวอย่างปัญหาของ Q1 นั้น การลดรูปของปัญหาเป็นกลวิธีในการแก้ปัญหาแบบหนึ่ง สมมติว่าเราต้องการแก้ปัญหา Q1 สิ่งที่นักออกแบบอัลกอริทึมต้องคิดคือ Q1 เป็นปัญหาที่รู้สึกคล้ายๆกับปัญหาอื่นที่เราเคยรู้จักวิธีแก้ไขหรือไม่ ถ้ารู้สึกว่าคล้ายปัญหา Q2 แล้ว คิดต่อว่าจะมีวิธีตีความปัญหา Q1 ให้อยู่ในรูปแบบของปัญหา Q2 ที่เรารู้จักวิธีแก้ไขนั้นได้อย่างไร 4/4/2017

กลุ่มปัญหา NP-Complete P  NP ปัญหาในกลุ่ม P เป็นปัญหาง่ายทั้งสิ้น เพราะมีอัลกอริทึมหาคำตอบได้อย่างมีประสิทธิภาพ ในขณะที่ปัญหาในกลุ่ม NP นั้นยังไม่เด่นชัด ในปี ค.ศ. 1971 Cook ได้แสดงให้เห็นว่าปัญหา SAT เป็นปัญหาที่ยากที่สุดใน NP โดยการพิสูจน์ว่าทุกๆปัญหาใน NP สามารถลดรูปแบบพหุนามไปเป็น SAT ได้หมด ในปี ค.ศ. 1972 Karp ได้อาศัยกลวิธีการลดรูปเพื่อแสดงให้เห็นว่ามีปัญหาอื่นๆอีกมากมายหลากหลายรูปแบบที่มีความยากง่ายเทียบเท่ากับ SAT นั่นก็คือกลุ่มปัญหาที่เรียกว่า NP-Complete ซึ่งเป็นกลุ่มปัญหาที่ยากที่สุดใน NP หมายความว่าเป็นกลุ่มปัญหาที่มีความยากง่ายทัดเทียมกันหมด (อันเป็นที่มาของคำว่า Complete หรือ บริบูรณ์) 4/4/2017

NP-Complete (ต่อ) ดังนั้นหากใครพบอัลกอริทึมที่มีประสิทธิภาพที่แก้เพียง 1 ปัญหาใน NP-Complete ก็ย่อมหมายความว่าทุกปัญหาใน NPC เป็นปัญหาง่ายทั้งสิ้น (นั่นคือพิสูจน์ได้ว่า P = NP) ในทางกลับกัน ถ้ามีใครสามารถพิสูจน์เพียง 1 ปัญหาใดใน NPC เป็นปัญหายาก ก็สรุปได้ว่าทุกปัญหาในกลุ่มนี้เป็นปัญหายากทั้งสิ้น (นั่นคือ พิสูจน์ได้ว่า P  NP หรือ P  NP) 4/4/2017

สรุป กลุ่มปัญหา NP-Hard If any NP-Complete can be solved in polynomial time, then all NP problems can be solved in polynomial time. P NP-Complete NP Or, if any NP-complete problem can be solved in polynomial time, then NP = P กลุ่มปัญหา NP-Hard Q เป็นปัญหา NP-Hard ถ้าทุกปัญหาใน NP สามารถลดรูปแบบพหุนามไปเป็น Q ได้ NP-Complete คือกลุ่มของปัญหาการตัดสินใจที่เป็น NP-Hard และอยู่ในกลุ่ม NP ปัญหา NP-Hard ไม่จำเป็นต้องเป็นปัญหาตัดสินใจ 4/4/2017

สรุป SAT เป็น NP Problem NP problem ทั้งหลายแปลงให้เป็นปัญหา SAT ได้ในเวลา Polynomial การแก้ปัญหาที่เป็น NP สามารถทำได้ในเวลาที่เป็น Polynomial โดยใช้เครื่อง NDTM 4/4/2017

4-Apr-17