งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

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

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "การวิเคราะห์และออกแบบขั้นตอนวิธี"— ใบสำเนางานนำเสนอ:

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

2 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 การวิเคราะห์และออกแบบขั้นตอนวิธี

3 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 การวิเคราะห์และออกแบบขั้นตอนวิธี

4 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 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

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

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

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

9 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% ตามลำดับ จงสร้างต้นไม้ตัดสินใจสำหรับเลือกวิธีลงทุน และคำนวณค่าคาดหวังจากการลงทุนของแต่ละทางเลือก

10 ที่โหนด 3 มีค่าคาดหวัง = (0.5*(-0.7 )) + ((0.5*(-0.7 ))= -0.7
Decision Tree เลือกไม่ซื้อตั้งแต่แรก มีกำไรเป็น 0 ค่าคาดหวังที่โหนด 2 = (2%x4) + (0.05%x44) + ((97.55%x(-6)) = ค่าคาดหวังที่โหนด 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 ถ้าซื้อจะมีค่าคาดหวัง ถ้าไม่ซื้อจะมีค่าคาดหวัง -0.7 ดังนั้นเลือกไม่ซื้อที่ดิน ที่โหนด 3 มีค่าคาดหวัง = (0.5*(-0.7 )) + ((0.5*(-0.7 ))= -0.7

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

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

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

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

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

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

17 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 การวิเคราะห์และออกแบบขั้นตอนวิธี

18 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 การวิเคราะห์และออกแบบขั้นตอนวิธี

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

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

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

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


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

งานนำเสนอที่คล้ายกัน


Ads by Google