Transcript Document
สัปดาห ์ที่ 2 Search Technique อ.เทพฤทธิ ์ สินธารงร ักษ ์ เรียบเรียง ้ ในบทนี เราจะกล่ าวถึงเทคนิ คการค ้นหาคาตอบสาหร ับการ ่ ้ผลลัพธ ์ทีได ่ ้ ได ้ประสิทธิภาพสูงสด แก ้ปัญหา เพือให ่ ้แก ้ไขปัญหาเพือหา ่ เทคนิ คการค ้นหา หมายถึง เทคนิ คทีใช คาตอบหรือสูส ่ ถานะเป้ าหมาย ได ้อย่างมีประสิทธิภาพ KPI of Search Techniques ได ้แก่ ◦ Completeness ◦ Optimality ◦ Time Complexity ◦ Space Complexity สามารถค ้นหาคาตอบได ้หรือไม่ ่ ทส สามารถค ้าหาคาตอบทีดี ี่ ดได ้ ่ ้ในการค ้นหา เวลาทีใช ้ หน่ ่ วยความจาทีใช ่ ้ พืนที อ ้างอิงจาก Russell and Norvig, 2003 หรือ Uninformed Search Techniques เป็ นวิธก ี าร คา้ หาทีง่่ ายต่อการเขียนโปรแกรม ง่ายต่อการเขา้ ใจ แต่ มีประสิทธิภาพต่าเนื่ องจากลักษณะการเขียนโปรแกรม ่ ต ้องต ้อง For หรือ While loop ทกทิศทางทีจะเป็ นไป ได ้ Blind Search Technique เป็ นเทคนิ คการค ้นหาที่ ไม่มข ี ้อมูลนามาพิจารณา Heuristic Search Techniques เป็ นเทคนิ คการ ่ ข ้อมูลประกอบในการค ้นหา ค ้นหาทีมี เป็ นวิธค ี ้นหาแนวกว ้าง (Breadth) จะค ้าหาแต่ละโหลดจาก ซ ้ายไปขวาทีล ะระดับ ของทรีจ ากบนลงล่ า ง หากยังไม่ พ บ เป้ าหมายใหล้ งไปอีกระดับหนึ่ งแลว้ คน ้ หาทีละโหนด จนกว่า ่ อ้ งการ เช่น กาหนดใหโ้ หลด h จะพบเป้ าหมายทีต เป้ น เ ป้ า ห ม า ย ข อ ง ก า ร ค น ้ ห า แ ต่ มี ข อ ้ เ สี ย ที่ เ ว ล า น า น แ ล ะ หน่ วยความจามาก กาหนดให้ ่ ่ b แทนจานวนกิงเฉลี ยของแต่ ละโหลด (Branching Factor) d แทนระดับความลึก (Deep) Time O(bd) An example map of Germany with some connections between cities เป็ นวิธก ี ารค ้นหาตามแนวลึก(Depth) จะค ้นหาจากข ้างบนลง ่ ่ ล่าง หากไม่พบให ้ลงไปอีกหนึ่ งระดับแล ้วพิจารณาโหลดลูกทีอยู ้ ่ ด ้านซ ้ายก่อน ทาเช่นนี ไปเรื อยๆ จนกว่าจะพบโหนดเป้ าหมายที่ ต ้องการ หากพิจาณาจนถึงโหลดสดท ้าย กาหนดให้ ่ ่ b แทนจานวนกิงเฉลี ยของแต่ ละโหลด (Branching Factor) d แทนระดับความลึก (Deep) Time O(bd) ให ้นักศึกษา สังเกตความแตกต่างระหว่าง BFS กับ DFS ว่า ่ จาก DFS ทาให ้การเขียนโปรแกรมจะต ้องลูปให ้ครบทกทาง ่ ้ นมาเพื ้ ่ ทีจะเป็ นไปได ้ในการค ้นหา ดังนั้นจึงเกิดวิธก ี ารนี ขึ อ ลดระยะเวลาในการค้นหา ตัวอย่าง กาหนดเป้ าหมาย เป็ น E และlimit=2 ่ ้นเป็ น 0) (Limit เป็ นระดับความสูงของต ้นไม้เริมต กาหนด ่ ่ ยของแต่ ละโหลด (Branching b แทนจานวนกิงเฉลี Factor) l แทน Limitของการค ้นหา Time O(bl) ้ ออะไร ข ้อเสียของวิธน ี ี คื เป็ นการพัฒนา DLS ให ้มีขด ี ความสามารถสูงขึน้ กาหนด ่ ่ b แทนจานวนกิงเฉลี ยของแต่ ละโหลด (Branching Factor) l แทน Limitของการค ้นหา Time O(bl) *Depth-First Search (DFS) กับ Iterative Deepening Se ่ ในความเป็ นจริงของปัญหา มักเป็ นปัญหาทีใหญ่ ่ ข ้อมูลเยอะขึนนั ้ ้นการค ้นหาแบบ เราจะเห็ นได ้ว่าเมือมี Uninformed Search Techniques จะไม่ เหมาะสมในการเขียนโปรแกรมคานวณเนื่ องจากทก วิธใี ช ้เวลาในการคานวณสูง Heuristic Search หรือในตาราบางเล่มเรียกว่า Heuristic Algorithm ่ ค วามเร็ว สูง ลอกเรีย น เป็ นวิธ ก ี ารส่ม หาค าตอบทีมี ่ ชวี ต การทางานของสิงมี ิ เช่น ต ้นไม้ มด พันธศาสตร ์ สัด ส่ ว นทองค าแต่ผ ลลัพ ธ ์ที่ได อ้ าจจะไม่ เ ป็ นค่า ที่ดี ่ ด ขึนอยู ้ ่ น ทีส ่กบ ั จดเริมต ้ (Initialization) และ ่ ้ค ้นหา เทคนิ คทีใช ตัวอย่างปัญา MAX ตัวอย่างปัญา Maximum ตัวอย่างปัญา Maximum London ถ้าเราต้องเดินทางจาก London ไปMunchen เป็ นวิธ ีก ารเลือ กเส น ้ ทางที่ดีที่ส ดก่ อ น เพื่อค น ้ หา เป้ าหมายได อ้ ย่ า งรวดเร็ว โดยพิจ ารณาเส น ้ ทางที่ ่ ้นๆ และเลือกเส ้นทางทีใช ่ ้ สามารถมองเห็น ทีโหนดนั ทรพ ั ยากรจากตาแหน่ ง ณ จด นั้นจนถึงเป้ าหมายให ้ ่ ด น้อยทีส Time O(bm) b is the average branching factor (the average number of successors from a state) m is the maximum depth of the search tree.) 2 3 A 2 D G Start 5 3 2 C 12 E 3 5 Go al I will use it to find the path from Start to Goal in the graph below. 2 3 A 2 D G Start 5 3 2 C 12 E 3 5 First, add the Start node to the fringe. Go al 2 3 A 2 D G Start 5 3 2 C 12 E 3 5 Go al Visit the Start node and add its neighbors to the fringe. 2 3 A 2 D G Start 5 3 2 C 12 E 3 Next 5 Go al 2 3 A 2 D G Start 5 3 2 C 12 E 3 Next 5 Go al 2 3 A 2 D G Start 5 3 2 C 12 E 3 5 Go al The path found from Start to Goal is: Start -> A -> D -> E -> Goal. In this case, it was the optimal path, but only because the heuristic values were fairly accurate. 2 3 A 2 D G Start 2 3 2 C 12 E 3 5 Go al This way is longer than old way Nearest neighbor search (NNS), also known as proximity search, similarity search or closest point search, is an optimization problem for finding closest points in metric spaces. The problem is: given a set S of points in a metric space M and a query point q ∈ M, find the closest point in S to q. In many cases, M is taken to be d-dimensional Euclidean space and distance is measured by Euclidean distance. ให ้ นศ. ใช ้อัลกอริทม ึ Nearest neighbor ่ นที ้ ส ่ ด Search แก ้ปัญหาการค ้าหาเส ้นทางทีสั ่ ้นจากเมือง A แบบ TSP โดยเริมต Objective function : Min Distance ้ ขันตอน การคานวณ(แบบหยาบๆ) - สร ้างตาราง Distance ่ - ใช ้อัลกอริทม ึ ค ้นหาโดยเริมจาก A ให ้ นศ. ใช ้อัลกอริทม ึ Nearest neighbor Search แก ้ปัญหาEngland USA Canada Japan Egypt Venezuela Goal Russia Nigeria India Start Brazil South Africa Matlab A*,Kmean ,Crossover C# Express kNN Appserv 2.5.10 Rollete Java script ่ นที ้ ส ่ ดแบบ TSP ส่ง ให ้ นศ. แก ้ปัญหา การค ้นหาเส ้นทางทีสั พร ้อมรายงาน คะแนนเต็ม 10 Objective function : Min Distance กาหนดให้ เมือง A,B,C,…,K A=[0,0] ส่วนประกอบของรายงาน B=[3,5] ่ หลักการ โจทย มา 1.ที C=[2,3] 2.ผลลัพธ ์ D=[4,6] E =[5,5] 3.วิเคราะห ์ผลลัพธ ์ F=[8,1] 4.โค้ด G=[2,4] H=[1,6] กาหนดส่ง 21 พ.ย. 56 I=[-1,-1] K=[6,4]