Professional Documents
Culture Documents
edu/~awm/tutorials
a b c
a GOAL
2 2
h=0
h=8 c
b 2
5
1 8 h=5 h=4
h=11
2 e
3 d
f
h=8 9 1 9
h=4
START
h
1 4 h=6 5
h=12
4 3
p 15 r
q
h=11 h=6
h=9
Tìm kiếm với thông tin heuristic tốt nhất
(Best-first)
6
a GOAL
2 2
h=0
h=8 c
b 2
5
1 8 h=5 h=4
h=11
2 e
3 d
f
h=8 9 1 9
h=4
START
h
1 4 h=6 5
h=12
4 3
p 15 r
q
h=11 h=6
h=9
Tìm kiếm tốt nhất (tt)
7
a GOAL
2 2
h=0
h=8 c
b 2
5
1 8 h=5 h=4
h=11
2 e
3 d
f
h=8 9 1 9
h=4
START
h
1 4 h=6 5
h=12
4 3
p 15 r
q
h=11 h=6
h=9
PQ = {(Start,12)}
Tìm kiếm tốt nhất (tt)
8
a GOAL
2 2
h=0
h=8 c
b 2
5
1 8 h=5 h=4
h=11
2 e
3 d
f
h=8 9 1 9
h=4
START
h
1 4 h=6 5
h=12
4 3
p 15 r
q
h=11 h=6
h=9
PQ = {(e,4),(d,8),(p,11)}
Tìm kiếm tốt nhất (tt)
9
a GOAL
2 2
h=0
h=8 c
b 2
5
1 8 h=5 h=4
h=11
2 e
3 d
f
h=8 9 1 9
h=4
START
h
1 4 h=6 5
h=12
4 3
p 15 r
q
h=11 h=6
h=9
PQ = {(h,6),(r,6),(d,8),(p,11)}
Tìm kiếm tốt nhất (tt)
10
a GOAL
2 2
h=0
h=8 c
b 2
5
1 8 h=5 h=4
h=11
2 e
3 d
f
h=8 9 1 9
h=4
START
h
1 4 h=6 5
h=12
4 3
p 15 r
q
h=11 h=6
h=9
PQ = {(r,6),(d,8),(q,9),(p,11)}
Heuristic trong bài toán 8-puzzle
11
1 5 1 2 3
2 6 3 h=6 4 5 6
7 4 8 7 8
A* dừng khi nào?
17
7 D 1
h=1
7
G h=0
Thuật toán tìm kiếm tốt nhất
13
Init-PriQueue(PQ)
Insert-PriQueue(PQ,START,h(START))
while (PQ khác rỗng và PQ không chứa trạng thái ñích)
(s , h ) := Pop-least(PQ)
Với mỗi s’ trong succs(s)
Nếu s’ không có trong PQ và s’ chưa ñược viếng trước ñó bao
giờ
Insert-PriQueue(PQ,s’,h(s’))
Thuật toán ðủ Tối ưu Thời gian Không gian
Best First
BestFS
Search
C K O(min(N,BLMAX)) O(min(N,BLMAX))
Một vài cải tiến của thuật toán này có thể làm cho mọi việc
tốt ñẹp hơn. Nó là thứ mà chúng ta gọi là: A*….
A*: Khi bạn mở một node n, lấy node con n' và ñặt nó
vào PriQueue với ñộ ưu tiên
và ñịnh nghĩa…
2 1 1 2
S A B C G
7 D 1
h=1
7
G h=0
Quy tắc Dừng A* ðúng ðắn:
18
7 D 1
h=1
7
G h=0
Các trạng thái quay lại A*
19
Một câu hỏi khác: ðiều gì xảy ra nếu A* quay lại một trạng
thái ñã mở, và tìm ñược một ñường ngắn hơn?
1
1 S h=3
B 1
h=7 h=8
A C h=2
1/2 D 1
h=1
Trong ví dụ này một trạng
thái ñã mở ñược mở lại. 7
Như thế nào và tại sao ? G
Các trạng thái quay lại A*
20
h=8
1
1 S h=3
B 1
h=7
A C h=8
1/2 D 1
h=1
Trong ví dụ này một trạng thái ñã
có trong hàng ñợi và ñang ñợi mở lưu ý rằng giá trị
G 7 h này ñã thay
có ñộ ưu tiên tăng vọt lên. Như
thế nào và tại sao? ñổi so với trang
trước.
Thuật toán A*
21
1 A
1
h=6
h=0
S h=7
G
A* lặp với ñộ sâu tăng dần. Thật sự, rất khác so với A*. Giả sử chi
phí là số nguyên.
1. Thực hiện lặp-không dùng DFS, không mở rộng node nào có
f(n) > 0. Có tìm thấy ñích? Nếu có, dừng.
2. Thực hiện lặp-không dùng DFS, không mở rộng node nào có
f(n) > 1. Có tìm thấy ñích? Nếu có, dừng.
3. Thực hiện lặp-không dùng DFS, không mở rộng node nào có
f(n) > 2. Có tìm thấy ñích? Nếu có, dừng.
4. Thực hiện lặp-không dùng DFS, không mở rộng node nào có
f(n) > 3. Có tìm thấy ñích? Nếu có, dừng.
…lặp lại ñiều này, tăng ngưỡng f(n) lên một 1 mỗi lần, cho
ñến khi dừng.
Cái này
ðầy ñủ
Bảo ñảm tìm ñược lời giải tối ưu
Nói chung tốn chi phí nhiều hơn A*.
ðiều cần nắm
29
ñơn giản.
Hiểu ñược “tính chấp nhận ñược” của
heuristics. Chứng minh tính ñầy ñủ,
bảo ñảm tính tối ưu của ñường ñi.
Có thể nhận xét về các ñánh giá.
Thắc mắc
30