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]