การวิเคราะห์และออกแบบขั้นตอนวิธี

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
INC 551 Artificial Intelligence Lecture 2. Review Environment Action Sense, Perceive Make Decision Agent World Model Deliberative Agent.
Advertisements

สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
AVL Tree.
INC 551 Artificial Intelligence
CSC201 Analysis and Design of Algorithms P and NP Problems
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
9. การออกแบบขั้นตอนวิธี
CPE 332 Computer Engineering Mathematics II
Artificial Intelligence (AI)
วิวัฒน์ ชินนาทศิริกุล
Shortest-Path Algorithms
ต้นไม้ Tree (2) ผู้สอน อาจารย์ ยืนยง กันทะเนตร
School of Information Communication Technology,
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
แนะนำรายวิชา การออกแบบและวิเคราะห์ขั้นตอนวิธี. รหัสวิชา ชื่อวิชา Design and Analysis of Algorithm หน่วยกิต 3 (2-2-5) ภาคเรียน 2 ปี 2556 เริ่ม 4.
O “take what you can get now” o make a decision that appears to be good (close to optimal solution) o proceed by searching a sequence of choices iteratively.
การจัดเรียงข้อมูล (sorting)
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
Page : Stability and Statdy-State Error Chapter 3 Design of Discrete-Time control systems Stability and Steady-State Error.
ACM ICPC Training Nattee Niparnan.
อัลกอริทึมและผังงาน อาจารย์สมเกียรติ ช่อเหมือน
วันที่ 30 พฤษภาคม 2560 และ 20 มิถุนายน 2560
Burin Rujjanapan Updated:
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Data Structure & Algorithm Concept
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Lecturers : Boontee Kruatrachue. Room no. 913 Kritawan Siriboon
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Tree 2.
Trees (2) University of Phayao Sanchai Yeewiyom
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Complexity Lecturers : Boontee Kruatrachue Room no Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm.
CPE 332 Computer Engineering Mathematics II
13 October 2007
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
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: การคำนวณได้และการตัดสินใจของปัญหา ที่ยากต่อการแก้ไข.
การวิเคราะห์และออกแบบขั้นตอนวิธี
มหาวิทยาลัยราชภัฏนครปฐม
การวัดอัลกอริทึม (Analysis of Algorithm)
Asst.Prof. Dr.Surasak Mungsing
Dr.Surasak Mungsing CSE 221/ICT221 Analysis and Design of Algorithms Lecture 04: Time complexity analysis in form of Big-Oh.
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
การวิเคราะห์และออกแบบขั้นตอนวิธี
2. Algorithm Analysis.
บทที่ 10 การค้นหาข้อมูล (Searching)
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 11: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Greedy,
Hashing Sanchai Yeewiyom
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures and Algorithms 2/2561
Data Structures & Algorithms Using Python
Algorithms Analysis Sanchai Yeewiyom
Data Structures and Algorithms 2/2561
Data Structures & Algorithms Using Python
การวิเคราะห์และออกแบบขั้นตอนวิธี
4.4 AVL Trees AVL (Adelson-Velskii and Landis) tree เป็น binary search tree กำกับด้วยเงื่อนไขของการสมดุล และประกันว่า depth ของ tree จะเป็น O(log n) อย่างง่ายที่สุดคือกำหนดว่า.
9. GRAPH ALGORITHMS.
Data Structure and Algorithms
บทที่ 3 การโปรแกรมเชิงเส้น (Linear Programming)
แผนงานประชาคมสังคมและวัฒนธรรมอาเซียน ภายหลังปี 2558 ( )
การวิเคราะห์และออกแบบขั้นตอนวิธี
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 12: เทคนิคการออกแบบขั้นตอนวิธีตอนวิธี Dynamic.
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

การวิเคราะห์และออกแบบขั้นตอนวิธี CSE 221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 14: Review (หลัง Mid-Term) อาจารย์ผู้สอน: ดร. สุรศักดิ์ มังสิงห์ E-mail: mungsing@spu.ac.th URL: http://www.spu.ac.th/~mungsing Office Hour: 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี Topics Binary Search Tree and AVL Tree Graph: Single source shortest path Decision Tree Breadth-first-search and Depth-first-search Algorithm Design Techniques Non-deterministic polynomial problems 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี Binary Search tree ต้นไม้ Binary Search Tree (BST) เก็บค่าที่น้อยกว่า Root ไว้ใน Left sub-tree และ ค่าที่มากกว่า Root ไว้ใน Right sub-tree BST มีหลายรูปแบบและ BST ที่มีความสูงน้อยจะมีประสิทธิภาพในกรจัดเก็บและค้นหาข้อมูลมากกว่า BST ที่มีความสูงมาก ต้นไม้ BST ที่เตี้ยที่สุดจะอยู่ในรูปแบบของ AVL Tree การค้นหาข้อมูลใน BST จะมีจำนวนครั้งการเปรียบเทียบข้อมูลระหว่างการค้นหาไม่เกินความสูงของ BST Complexity ของ BST Algorithm ในการณี Worst case อยู่ใน O(n) และในกรณี Best case อยู่ใน O( logn) 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี AVL Tree AVL Tree คือ ต้นไม้ BST ที่ความสูงของ Left sub-tree และ ความสูงของ Right sub-tree ต่างกันไม่เกิน 1 ระดับ คือเป็น Balanced binary search tree การเพิ่มหรือลบโหนดใน AVL Tree อาจส่งผลให้ AVL Tree เสียสมดุลและขาดคุณสมบัติของการเป็น Balanced BST ซึ่งสามารถปรับให้ต้นไม้นั้นสมดุลและเป็น AVL Tree ได้อีกโดยการหมุนหนึ่งหรือสองครั้งแล้วแต่กรณี มี 4 กรณีที่ต้องพิจารณาในการหมุน คือ L of L, R of R, L of R และ R of L ถ้าเป็นกรณี L of L หรือ R of R ให้มุน 1 ครั้ง (Single Rotation) ถ้าเป็นกรณี L of R หรือ R of L ให้มุน 2 ครั้ง (Double Rotation) ในการหมุนนั้นให้หมุนในทิศทางตรงกันข้ามกับ sub-Tree ที่สูงกว่า เช่น ถ้า Left sub-tree สูงกว่าให้หมุนไปทางขวาและถ้า Right sub-tree สูงกว่าให้หมุนไปทางซ้าย 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

ตัวอย่างการหมุน การหมุนกรณี Left of Left การหมุนกรณี Right of Left Simple double rotation right Complex double rotation right 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Single Source Short Path Dijskstra’s Algorithm 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Dijskstra’s Algorithm 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Dijskstra’s Algorithm 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Decision Tree Exercise นักลงทุนพบที่ดินประกาศขายแปลงหนึ่ง ในทีดินแปลงนี้หากมีการสำรวจและพบว่ามีแร่เศรษฐกิจก็จะทำให้ที่ดินมีราคาสูงขึ้นคือ ถ้าสำรวจพบว่ามีสายแร่ดีบุก ก็จะนำที่ดินไปขายต่อได้ 10 ล้านบาทและถ้าสำรวจพบสายแร่ทองคำก็จะนำไปขายต่อได้ 50 ล้านบาท จึงพิจารณาว่าจะตัดสินใจตัดสินใจลงทุนอย่างไรดี ระหว่างไม่ลงทุนซื้อที่ดิน หรือ ซื้อที่ดินก่อนทันทีแล้วทำการสำรวจหาแร่เศรษฐกิจ หรือ ลงทุนสำรวจก่อนแล้วจึงตัดสินใจว่าจะซื้อหรือไม่ซื้อ ซึ่งมีข้อมูลประกอบดังนี้ ทางเลือกที่ 1 เลือกไม่ซื้อที่ดินตั้งแต่แรก ซึ่งก็จะไม่มีค่าใช้จ่ายและไม่มีผลตอบแทนการลงทุน ทางเลือกที่ 2 ซื้อที่ดินก่อนแล้วทำการสำรวจซึ่งจะต้องจ่ายเงินค่าที่ดินทันที 5 ล้านบาทและค่าสำรวจอีก 1 ล้านบาท และจากข้อมูลสถิติ ที่ดินที่มีลักษณะคล้ายที่ดินแปลงนี้จะมีโอกาสพบ ดีบุก 2% มีโอกาสพบ ทองคำ 0.05% โดยจะมีการพบเแร่เศรษฐกิจเพียงชนิดเดียวเท่านั้น (ไม่มีโอกาสที่จะพบ 2 ชนิดหรือมากกว่า และ ไม่มีโอกาสพบแร่เศรษฐกิจอื่นเลย) ทางเลือกที่ 3 ยังไม่ตัดสินใจซื้อที่ดินผืนนี้ทันที แต่จะลงทุนทำการสำรวจเบื้องต้นก่อนเป็นเวลา 3 วัน แล้วจึงตัดสินใจว่าจะซื้อที่ดินผืนนี้หรือไม่ ซึ่งจะเสียค่าได้สิทธิ์ในการสำรวจเป็นเงิน 500,000 บาทและจากประสพการณ์จะมีค่าใช้จ่ายในการสำรวจอีก เป็นเงิน 200,000 บาท ถ้าผลการสำรวจประสพความสำเร็จอย่างมีนัยสำคัญ โอกาสที่จะพบ ดีบุก และ ทองคำ จะเพิ่มเป็น 4% และ 1% ตามลำดับ แต่ถ้าผลสำรวจไม่ประสพความสำเร็จ โอกาสที่จะพบ ดีบุก และทองคำ จะลดลงเป็น 0.3 % และ 0.02% ตามลำดับ จงสร้างต้นไม้ตัดสินใจสำหรับเลือกวิธีลงทุน และคำนวณค่าคาดหวังจากการลงทุนของแต่ละทางเลือก

ที่โหนด 3 มีค่าคาดหวัง = (0.5*(-0.7 )) + ((0.5*(-0.7 ))= -0.7 Decision Tree เลือกไม่ซื้อตั้งแต่แรก มีกำไรเป็น 0 ค่าคาดหวังที่โหนด 2 = (2%x4) + (0.05%x44) + ((97.55%x(-6)) = -5.771 ค่าคาดหวังที่โหนด 6 = (4%x4.3) + (1%x44.3) + ((95%x(-5.7)) = -4.8 ค่าคาดหวังที่โหนด 7 = (.3%x4.3) + (0.02%x44.3) + ((99.68%x(-5.7)) = -5.66 ที่โหนด 4 ถ้าซื้อที่ดินจะมีค่าคาดหวัง -4.8 ถ้าไม่ซื้อที่ดินจะมีค่าคาดหวัง -0.7 ดังนั้นเลือกไม่ซื้อที่ดิน ที่โหนด 5 ถ้าซื้อจะมีค่าคาดหวัง -5.66 ถ้าไม่ซื้อจะมีค่าคาดหวัง -0.7 ดังนั้นเลือกไม่ซื้อที่ดิน ที่โหนด 3 มีค่าคาดหวัง = (0.5*(-0.7 )) + ((0.5*(-0.7 ))= -0.7

จากค่าคาดหวังที่คำนวณได้ เลือกตัดสินใจไม่ซื้อตั้งแต่แรก ที่โหนด 2 ถ้าซื้อทันทีแล้วลงทุนสำรวจจะมีค่าคาดหวัง -5.771 จากค่าคาดหวังที่คำนวณได้ เลือกตัดสินใจไม่ซื้อตั้งแต่แรก ที่โหนด 8 เลือกไม่ซื้อตั้งแต่แรก มีกำไรเป็น 0 ที่โหนด 3 สำรวจเบื้องต้น 3 วันและตัดสินใจไม่ซื้อ มีค่าคาดหวัง = -0.7

Breadth-first-search Breadth-first search (BFS) เป็นการค้นหาในแนวกว้างซึ่งที่กระจายออกทีละระดับ เริ่มต้นจากโหนดที่กำหนดไปยังโหนดที่เชื่อมต่อถึงกันโดยตรงทั้งหมดก่อน ถ้าหาไม่พบข้อมูลที่ต้องการก็จะค้นหาต่อไปยังโหนดอื่นที่เชื่อมต่อโดยตรงกับโหนดในรอบการค้นหาที่ผ่านมา สำหรับโหนดที่เชื่อมต่อโดยตรงแต่ยังไม่ได้ทำการสำรวจจะเก็บไว้ในคิวเพื่อทำการสำรวจในภายหลังตามลำดับ ทำการค้นหาจนกว่าจะพบข้อมูลที่ต้องการหรือสิ้นสุดการค้นหาโดยไม่พบข้อมูล 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี Depth-first-search Depth-first search (DFS) เป็นการค้นหาในแนวลึก โดยเริ่มจากโหนดที่กำหนดแล้วไปค้นหาที่โหนดซึ่งเป็นหนึ่งในจำนวนโหนดต่างๆที่เชื่อมต่อโดยตรงกับโหนดเริ่มต้น และหลังจากนั้นก็ค้นหาต่อไปยังหนึ่งในจำนวนโหนดต่างๆที่เชื่อมต่อโดยตรงกับโหนดที่ผ่านมา สำหรับโหนดที่เชื่อมต่อโดยตรงอื่นๆที่ยังไม่ได้ทำการสำรวจจะเก็บไว้ในสแต็กเพื่อทำการสำรวจในภายหลัง ดังที่แสดงในรูปที่ 10.2 การค้นหาดำเนินไปในลักษณะดังกล่าวเรื่อยๆจนกว่าจะพบข้อมูลที่ค้นหาหรือสิ้นสุดการค้นหาโดยไม่พบข้อมูล 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Search Tree Search Tree ของการค้นหาแบบ BSF Search Tree ของการค้นหาแบบ DSF เริ่มจากเมือง Chicago เริ่มจากเมือง Chicago 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี Hashing hash function อย่างง่าย เช่น hash(key) = key MOD TableSize TableSize ควรเป็นตัวเลขจำเพาะ (prime number) การได้ผลลัพธ์เหมือนกันจากค่าคีย์ที่แตกต่างกันเรียกว่า Collision การแก้ปัญหา Collision ทำโดยการเก็บค่าคีย์ใน Hash table แบบ Separate Chaining Open Addressing 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี การทำ Rehashing Theorem ในการแก้ปัญหา Collision แบบ Quadratic probing และ table size เป็นเลข prime แล้ว ข้อมูลใหม่จะมีที่ลงในตารางเสมอหากว่า table ยังอย่างน้อยครึ่งหนึ่งของตารางยังว่าง ตัวอย่างการทำ Rehashing 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Greedy Method & Divide and Conquer Greedy method เป็นเทคนิคที่การตัดสินใจเลือกหนทางปฏิบัติโดยพิจารณาทางเลือกที่เห็นว่าดีที่สุดในขณะนั้น โดยไม่สนใจต่อผลกระทบหรือทางเลือกที่จะต้องตัดสินใจในอนาคต หนทางปฏิบัติที่เลือกอาจเป็นเพียง Local optimum เท่านั้น อาจต้องมีการปรับเลือกหนทางปฏิบัติกันใหม่อีกเพื่อให้ได้ผลลัพธ์ที่ดีที่สุดของปัญหา (Global optimum) ตัวอย่างการใช้เทคนิค Greedy Algorithm ที่ได้เห็นมาแล้วในบทเรียนก่อนหน้านี้ได้แก่ Dijkstra’s, Prim’s และ Kruskal’s Algorithms การประยุกต์ใช้เทคนิคนี้กับการแก้ปัญหายังมีอีกมาก เช่น ปัญหาการกำหนดงาน (Simple Scheduling Problems) ปัญหาการบรรจุ (Approximate Bin Packing) Divide and Conquer Strategy เป็นเทคนิคการออกแบขั้นตอนวิธีที่แบ่งออกเป็น 2 ขั้นตอน คือ Divide ซึ่งเป็นขั้นตอนการแบ่งปัญหาออกเป็นส่วนย่อยๆแล้วแก้ปัญหาย่อยเหล่านั้นโดยวิธีการของฟังก์ชันที่เรียกตัวเองอย่างน้อย 2 ครั้ง Conquer เป็นขั้นตอนของการสร้างผลลัพธ์ของปัญหาใหญ่จากผลลัพธ์ของปัญหาย่อย ตัวอย่างการแก้ปัญหาโดยใช้เทคนิคของ Divide and Conquer เช่น ปัญหา the Maximum Subsequence Sum ซึ่งมีความซับซ้อนด้านเวลาเป็น O(nlogn) และขั้นตอนวิธีของการเรียงลำดับแบบ Mergesort และ Quicksort ซึ่งมีความซับซ้อนด้านเวลาในกรณี worst-case ของ Mergesort และ กรณี average-case ของ Quicksort เป็น O(nlogn) ตัวอย่างอื่นๆที่ใช้เทคนิคของ Divide and Conquer ได้แก่ ปัญหาการหาคู่ของจุดที่มีระยะห่างกันน้อยที่สุด (Closest-point Problem) 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

Dynamic Programming and Back traking Dynamic Programming เป็นเทคนิคการแก้ปัญหาที่ไม่ใช้ Recursive call เพื่อปรับปรุงประสิทธิภาพการทำงานของขั้นตอนวิธีให้ดีขึ้น โดยใช้วิธีบันทึกผลลัพธ์ย่อยของแต่ละขั้นตอนอย่างเป็นระบบลงในตาราง วิธีการดังกล่าวนี้คือหลักการของ Dynamic Programming ตัวอย่างของการใช้เทคนิคของ Dynamic programming เช่นปัญหาการคำนวณตัวเลข Fibonacci number ซึ่งหากใช้วิธีการของ Recursive algorithm จะมีความซับซ้อนด้านเวลาเป็น Exponential คือ O(2n) แต่หากเปลี่ยนมาใช้วิธีการของ non-recursive algorithm เป็นลักษณะของ Linear algorithm จะช่วยให้การทำงานมีประสิทธิภาพยิ่งขึ้นมากเป็น O(n) ตัวอย่างอื่นๆที่ใช้เทคนิค Dynamic programming ได้แก่ ปัญหา All-pairs Shortest Path, Dijkstra’s algorithm (Single-source, Shortest-path) ปัญหา Resource Allocation Backtracking เป็นเทคนิคที่ใช้ในการหาคำตอบให้กับปัญหาที่ต้องมีการทดสอบผลของการการตัดสินใจในแต่ละขั้นตอนว่าจะดำเนินการต่อไปอย่างไร ถ้าได้คำตอบที่ต้องการก็จะหยุดการทำงาน แต่ถ้าผลการตัดสินใจที่ผ่านมาไม่ได้คำตอบที่ต้องการก็จะมีการย้อนกลับขั้นตอนตามเส้นทางการตัดสิใจเดิมและตัดสินใจเดินหน้าค้นหาคำตอบต่อไปใหม่ ตัวอย่างของการใช้เทคนิคนี้ในชีวิตประจำวันเช่นการจัดเฟอร์นิเจอร์ในห้องรับแขก โดยทำการย้ายเฟอร์นิเจอร์ไปวางตามจุดต่างๆของห้อง ถ้าดูแล้วไม่ถูกใจ(ไม่ใช่ solution ที่ต้องการ) ก็อาจจะต้องย้ายเฟอร์นิเจอร์บางอย่างกลับมาที่เดิมอีก แล้วก็ตัดสินใจใหม่ว่าจะวางไว้ที่ไหนดี เป็นต้น ตัวอย่างของการใช้เทคนิคนี้ในการออกแบบขั้นตอนวิธีอีกตัวอย่างหนึ่งคือการแก้ปัญหา 8 ราชินี (Eight Queens Problem) 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี การลดรูปของปัญหา ในด้านของทฤษฎีการคำนวณได้ และทฤษฎีความซับซ้อนในการคำนวณ คำว่า "การลดรูป" นั้นหมายถึงการพิจารณาการแก้ปัญหาอย่างหนึ่งให้ไปเป็นการแก้ปัญหาอีกปัญหาหนึ่ง ซึ่งบางทีอาจจะรู้สึกว่าปัญหานั้นไม่เกี่ยวกันเลยก็ได้ ถ้าเรากล่าวว่า A ลดรูปเป็น B เราหมายความว่าการแก้ปัญหา B ได้จะส่งผลให้เราสามารถแก้ปัญหา A ได้ด้วย เพราะฉะนั้น A จะไม่ยากไปกว่า B ในปี ค.ศ. 1971 Cook ได้แสดงให้เห็นว่าปัญหา SAT เป็นปัญหาที่ยากที่สุดใน NP โดยการพิสูจน์ว่าทุกๆปัญหาใน NP สามารถลดรูปแบบพหุนามไปเป็น SAT ได้หมด ในปี ค.ศ. 1972 Karp ได้อาศัยกลวิธีการลดรูปเพื่อแสดงให้เห็นว่ามีปัญหาอื่นๆอีกมากมายหลากหลายรูปแบบที่มีความยากง่ายเทียบเท่ากับ SAT นั่นก็คือกลุ่มปัญหาที่เรียกว่า NP-Complete ซึ่งเป็นกลุ่มปัญหาที่ยากที่สุดใน NP หมายความว่าเป็นกลุ่มปัญหาที่มีความยากง่ายทัดเทียมกันหมด (อันเป็นที่มาของคำว่า Complete) 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี 11/28/2018 CSE221 การวิเคราะห์และออกแบบขั้นตอนวิธี