Professional Documents
Culture Documents
a GOAL
b c
e
d
f
START h
p r
q
GOAL
a
b c
e
d f
START
h
p r
q
Q = {START, a , b , c , d , e , f , h , p , q , r , GOAL}
S = { START }
G = { GOAL }
succs(b) = { a }
succs(e) = { h , r }
succs(a) = NULL … etc.
cost(s,s’) = 1 cho tất cả các biến ñổi
Bài toán Tìm kiếm
6
GOAL
a
b c
e
d f
START
h
p r
q
Q = {START, a , b , c , d , e , f , h , p , q , r , GOAL}
S = { START }
G = { GOAL }
succs(b) = { a }
succs(e) = { h , r }
succs(a) = NULL … etc.
cost(s,s’) = 1 cho tất cả các biến ñổi
Các Bài toán Tìm kiếm
7
Các Bài toán Tìm kiếm
8 Lập lịch
8-Hậu
Gì nữa?
Giải toán
Tìm kiếm Theo Chiều Rộng
9
GOAL
a
b c
e
d f
START
h
p r
q
Gán nhãn tất cả trạng thái có thể ñi ñến ñược từ S trong 1 bước nhưng
không thể ñi ñến ñược trong ít hơn 1 bước.
Sau ñó gán nhãn tất cả trạng thái có thể ñi ñến ñược từ S trong 2 bước
nhưng không thể ñi ñến ñược trong ít hơn 2 bước.
Sau ñó gán nhãn tất cả trạng thái có thể ñi ñến ñược từ S trong 3 bước
nhưng không thể ñi ñến ñược trong ít hơn 3 bước.
V.v… ñến khi trạng thái Goal ñược ñi ñến.
Tìm kiếm Theo Chiều Rộng
10
a GOAL
b c
0 bước từ e
start d
f
START h
p r
q
Tìm kiếm Theo Chiều Rộng
11
1 bước từ
start GOAL
a
b c
0 bước từ e
start d
f
START h
p r
q
Tìm kiếm Theo Chiều Rộng
12
1 bước từ
start GOAL
a
b c
0 bước từ e
start d
f
START h
p r
q
2 bước từ
start
Tìm kiếm Theo Chiều Rộng
13
1 bước từ
start GOAL
a
b c
0 bước từ e
start d
f
START h
3 bước từ
start
p r
q
2 bước từ
start
Tìm kiếm Theo Chiều Rộng
14
1 bước từ 4 bước từ
start start
a GOAL
b c
0 bước từ e
start d
f
START h
3 bước từ
start
p r
q
2 bước từ
start
Ghi nhớ ñường ñi!
15
GOAL
a
b c
e
d f
START
h
p r
q
Ngoài ra, khi gán nhãn một trạng thái, ghi nhận trạng thái
trước ñó. Ghi nhận này ñược gọi là con trỏ quay lui. Lịch
sử trước ñó ñược dùng ñể phát sinh con ñường lời giải, khi
ñã tìm ñược ñích:
“Tôi ñã ñến ñích. Tôi thấy mình ñã ở f trước ñó. Và tôi ñã
ở r trước khi tới f. Và…
…. do ñó con ñường lời giải là S e r f G”
Con trỏ quay lui
16
4 bước từ
1 bước từ start
start GOAL
a
b c
0 bước từ e
start d
f
START h
3 bước từ
start
p r
q
2 bước từ
start
Con trỏ quay lui
17
1 bước từ 4 bước từ
start start GOAL
a
b c
0 bước từ e
start d
f
START h
3 bước từ
start
p r
q
2 bước từ
start
Bắt ñầu Tìm kiếm Theo chiều Rộng
18
a GOAL
b c
e
d
f
START h
V0 p
q
r
BFS
20
a GOAL
b c
e
d
f
START h
V0 p
q
r
V1
BFS
21
a GOAL
b c
e
d
f
START h
V0 p
q
r
V1
V2
Tìm kiếm Chi phí ðồng nhất (UCS)
33
a GOAL
b c
e
d
f V3
START h
V0 p
q
r
V1
V2
Tìm kiếm Theo Chiều Rộng
24
a GOAL
b c
e
d
f V3
START h
V0 p
q
r
V1
V2
Một cách khác: ði lui
26
GOAL
a
b c
e
d f
START
h
p r
q
Gán nhãn tất cả các trạng thái có thể ñến G trong 1 nhưng không thể ñi
ñến nó trong ít hơn 1 bước.
Gán nhãn tất cả các trạng thái có thể ñến G trong 2 nhưng không thể ñi
ñến nó trong ít hơn 2 bước.
V.v. … cho ñến khi ñến start.
Nhãn “số bước tới ñích” xác ñịnh ñường ñi ngắn nhất. Không cần
thêm thông tin lưu trữ.
Các chi tiết của Theo Chiều Rộng
27
a GOAL
2 2
b c
5
5
1 8
2 e
3 d f
9 1 9
START h
1 4 5
p 15 4 3 r
q
Lưu ý rằng BFS tìm ñường ñi ngắn nhất theo số biến ñổi. Nó không
tìm thấy ñường ñi có chi phí ít nhất.
Bây giờ chúng ta xem xét một thuật toán tìm ñường ñi chi phí thấp
nhất. Trong vòng lặp thứ k, với bất kỳ trạng thái S nào, ñặt g(s) là chi
phí ñường ñi có chi phí nhỏ nhất ñến S trong k bước hay ít hơn.
Lặp UCS
42
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (h,6),(c,11),(r,14),(q,16) } 2. Thêm các con
Tìm kiếm Chi phí ðồng nhất
30
Pop-least(PQ) trả về cặp (thing, value) với giá trị thấp nhất, và
loại bỏ nó khỏi hàng ñợi.
Hàng ñợi Ưu tiên
32
Pop-least(PQ) trả về cặp (thing, value) với giá trị thấp nhất, và
loại bỏ nó khỏi hàng ñợi.
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
PQ = { (S,0) }
Lặp UCS
35
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (S,0) } 2. Thêm các con
ðánh giá một thuật toán
53
Least Cost
LCBFS
BFS
C C O(min(N,BL)) O(min(N,BL))
Uniform
UCS
Cost Search
C C O(log(Q) * min(N,BL)) O(min(N,BL))
DFS trên thực tế
55
a GOAL
b c
START e
START d d f
START d b START h
START d b a
START d c p r
q
START d c a
START d e
START d e r
START d e r f
START d e r f c
START d e r f c a
START d e r f GOAL
Duyệt cây tìm kiếm DFS
56
a GOAL
b c
e
d f
Bạn có thể vẽ thứ START
h
tự mà trong ñó p q r
các node của cây
tìm kiếm ñược
viếng?
Lặp UCS
39
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (b,4) , (e,5) , (c,11) , (q,16) } 2. Thêm các con
Lặp UCS
40
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (e,5) , (a,6) , (c,11) , (q,16) } 2. Thêm các con
Lặp UCS
41
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (a,6),(h,6),(c,11),(r,14),(q,16) } 2. Thêm các con
Lặp UCS
42
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (h,6),(c,11),(r,14),(q,16) } 2. Thêm các con
Lặp UCS
43
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (q,10), (c,11),(r,14) } 2. Thêm các con
Lặp UCS
44
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (q,10), (c,11),(r,14) } 2. Thêm các con
Lặp UCS
45
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (c,11),(r,13) } 2. Thêm các con
Lặp UCS
46
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (r,13) } 2. Thêm các con
Lặp UCS
47
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (f,18) } 2. Thêm các con
Lặp UCS
48
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (G,23) } 2. Thêm các con
Lặp UCS
49
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { (G,23) } 2. Thêm các con
Kết thúc UCS
50
a GOAL
2 2
b c
2
5
1 8
2 e
3 d
f
9 1 9
START
h
1 4 5
4 3
p 15 r
q
Lặp:
1. Lấy trạng thái chi phí
thấp nhất từ PQ
PQ = { } 2. Thêm các con
Biểu diễn cây tìm kiếm
51
a GOAL
b c
e
d f
START
h
p q r
ðánh giá một thuật toán tìm kiếm
52
Tính ñầy ñủ: thuật toán có bảo ñảm tìm thấy lời giải nếu có
hay không?
Có bảo ñảm tìm thấy tối ưu? (nó sẽ tìm thấy ñường ñi có chi
phí ít nhất?)
ðộ phức tạp về thời gian
ðộ phức tạp về không gian (sử dụng bộ nhớ)
Các biến:
N số trạng thái của bài toán
B nhân tố phân nhánh trung bình (số con trung
bình) (B>1)
L ñọ dài ñường ñi từ start ñến goal với số bước
ngắn nhất
Least Cost
LCBFS
BFS
C C O(min(N,BL)) O(min(N,BL))
Uniform
UCS
Cost Search
C C O(log(Q) * min(N,BL)) O(min(N,BL))
Tìm kiếm Theo Chiều Sâu
54
a GOAL
2 2
b c
5
5
1 8
2 e
3 d
f
9 1 9
START h
1 4 5
p 4 3 r
15 q
a GOAL
b c
START e
START d d f
START d b START h
START d b a
START d c p r
q
START d c a
START d e
START d e r
START d e r f
START d e r f c
START d e r f c a
START d e r f GOAL
Duyệt cây tìm kiếm DFS
56
a GOAL
b c
e
d f
Bạn có thể vẽ thứ START
h
tự mà trong ñó p q r
các node của cây
tìm kiếm ñược
viếng?
Thuật toán DFS
57
Ta dùng một cấu trúc dữ liệu gọi là Path ñể biểu diễn ñường ñi từ START ñến
trạng thái hiện tại.
VD. Path P = <START, d, e, r >
Cùng với mỗi node trên ñường ñi, chúng ta phải nhớ những con nào ta vẫn
có thể mở. VD. tại ñiểm sau, ta có
P = <START (expand=e , p) ,
d (expand = NULL) ,
e (expand = h) ,
r (expand = f) >
Thuật toán DFS
58
C
Câu hỏi suy nghĩ
Trả lời 1:
64
PC-DFS (Path Checking DFS):
Làm sao ñể ngăn Don’t
A
recurse on a state
ngừa lặp vô tận if that state is already in
trong DFS ? B
the current path