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]