Khái niệm
Tìm kiếm tốt nhất trước
Phương pháp leo ñồi
Cài ñặt hàm ñánh giá
Thu giảm ràng buộc
Giải thuật cắt tỉa α-
35 trang |
Chia sẻ: Mr Hưng | Lượt xem: 925 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Kĩ thuật lập trình - Chương 3: Các kỹ thuật tìm kiếm Heuristics, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Chương 3: Các kỹ thuật tìm
kiếm Heuristics
2Nội dung
Khái niệm
Tìm kiếm tốt nhất trước
Phương pháp leo ñồi
Cài ñặt hàm ñánh giá
Thu giảm ràng buộc
Giải thuật cắt tỉa α-β
3Giới hạn của duyệt hệ thống
8-puzzle
Lời giải cần trung bình 22 cấp
(depth)
ðộ rộng của bước ~ 3
Tìm kiếm vét cạn cho 22 cấp cần
3.1 x 1010 states
Nếu chỉ giới hạn ở d=12, cần trung
bình 3.6 triệu trạng thái
[24 puzzle có 1024 trạng thái]
Cần chiến lược tìm kiếm heuristic
4Khái niệm: Heuristic
Heuristics: là các phỏng ñoán, ước chừng dựa
trên kinh nghiệm, trực giác
Các hệ giải quyết AI sử dụng heuristic trong hai
tình huống cơ bản:
Bài toán ñược ñịnh nghĩa chính xác nhưng chi phí tìm
lời giải vét cạn là không thể chấp nhận
VD: Sự bùng nổ KGTT trong trò chơi cờ vua
Vấn ñề với nhiều sự mơ hồ trong lời phát biểu bài toán
hay dữ liệu cũng như tri thức sẵn có
VD: Chẩn ñoán trong y học
5Khái niệm: Giải thuật Heuristics
Một giải thuật heuristic có thể ñược xem gồm 2
phần:
Phép ño heuristic: thể hiện qua hàm ñánh giá heuristic
(evaluation function f(n) - EF), dùng ñể ñánh giá các
ñặc ñiểm của một trạng thái trong KGTT
Giải thuật tìm kiếm heuristic:
TK tốt nhất (best-first search)
A* search
Giải thuật leo núi (hill-climbing)
6Ví dụ phép ño Heuristics
7Ví dụ phép ño Heuristics (tt)
Heuristic “Số ñường thắng nhiều nhất” (theo các
ñường chéo trên bàn cờ) áp dụng cho các con cờ
ñầu tên ñặt vào bàn cờ trong bàn cờ tic-tac-toe
8Ví dụ phép ño Heuristics (tt)
9Giải thuật leo ñồi (Hill climbing)
Giải thuật
Xét trạng thái bắt ñầu
Nếu là ñích => dừng
Ngược lại: thiết lập khởi ñầu như TT hiện tại
Lặp ñến khi: gặp ñích OR không còn luật nào chưa
ñược áp dụng vào TT hiện tại
Lựa một luật ñể áp dụng vào TT hiện tại ñể sinh ra một
TT mới
Xem xét TT mới này
Nếu là ñích => dừng
Nếu không là ñích, nhưng tốt hơn TT hiện tại => thiết lập
TT mới là TT hiện tại
Nếu không tốt hơn thì thì tiếp lần lặp kế
10
Giải thuật leo ñồi (tt)
Giới hạn
Giải thuật có khuynh hướng bị sa lầy ở những cực ñại
cục bộ
Lời giải tìm ñược không tối ưu
Không tìm ñược lời giải mặc dù có tồn tại lời giải
Giải thuật có thể gặp vòng lặp vô hạn do không lưu
giữ thông tin về các trạng thái ñã duyệt
11
Giải thuật leo ñồi (tt)
Bài toán 8 Hậu
Trang thái bắt ñầu: mỗi Hậu trên 1cột
Trạng thái ñích: các Hậu không thể tấn công nhau
Phép ño Heuristic h(n) : số lượng các cập hậu ñối kháng
nhau
H(n) = 17 h(n) = 1
12
Tìm kiếm tốt nhất (BFS)
Là phương pháp dung hoà của BrFS và DFS
Có sử dụng ñể ñánh giá ưu thế của mỗi trạng thái, có thể
là ước lượng từ nó ñến TT ñích
Tại mỗi bước, GT sẽ chọn trạng thái mà nó cho rằng là có
ưu thế nhất trong số các trạng thái ñã sinh ra ñược ñến
thời ñiểm ñó
Khác với GT leo ñồi có cải tiến ở chổ: có lưu tất cả những
TT ñã phát sinh ñến thời ñiểm chọn TT ñể xét tiếp
Dùng hai danh sách:
OPEN: chứa các TT sẽ ñược xét.
CLOSED: chứa các TT ñã xét qua.
13
Tìm kiếm tốt nhất (BFS)
Giải thuật
OPEN = [TT ñầu]
Lặp ñến khi: gặp ñích OR OPEN rỗng
Lấy TT tốt nhất từ OPEN
Phát sinh các con của nó
Với mỗi con:
Nếu nó chưa ñược phát sinh: gán nó trị ñánh giá, ñưa vào OPEN,
ghi nhận TT cha của nó
Nếu ñã ñược phát sinh trước: Nếu ñạt ñến bởi ñường khác tốt hơn
=> ghi nhận lại TT cha của nó, cập nhật lại trị ñánh giá của nó và
của các con của nó
14
Tìm kiếm tốt nhất (BFS)
1. open = [A5]; closed = [ ]
2. ðánh giá A5; open = [B4,C4,D6];
closed = [A5]
3. ðánh giá B4;
open = [C4,E5,F5,D6];
closed = [B4,A5]
4. ðánh giá C4;
open = [H3,G4,E5,F5,D6];
closed = [C4,B4,A5]
5. ðánh giá H3;
open = [O2,P3,G4,E5,F5,D6];
closed = [H3,C4,B4,A5]
6. ðánh giá O2;
open = [P3,G4,E5,F5,D6];
closed = [O2,H3,C4,B4,A5]
7. ðánh giá P3; tìm ñược lời giải!
Open là queue, xếp theo
Heuristic tăng dần
15
Cài ñặt hàm ñánh giá (EF)
Xét trò chơi 8-ô, mỗi trạng thái n, một giá trị f(n):
f(n) = g(n) + h(n)
g(n) = khoảng cách thực sự từ n ñến trạng thái bắt ñầu
h(n) = hàm heuristic ñánh giá khoảng cách từ trạng thái
n ñến mục tiêu.
57
461
382
57
461
382
567
41
382
57
461
382
start
567
48
321
goal
g(n) = 0
g(n) = 1
6 4 6f(n) =
h(n): số lượng các vị trí còn sai;
16
Ví dụ
17
Ví dụ
18
Ví dụ
19
Heuristic trong trò chơi ñối kháng
Giải thuật minimax
Hai ñấu thủ trong trò chơi ñược gọi là MIN và MAX.
Mỗi nút lá có giá trị:
1 nếu là MAX thắng,
0 nếu là MIN thắng.
Minimax sẽ truyền các giá trị này lên cao dần trên ñồ
thị, qua các nút cha mẹ kế tiếp theo các luật sau:
Nếu trạng thái cha mẹ là MAX, gán cho nó giá trị lớn nhất có
trong các trạng thái con.
Nếu trạng thái cha mẹ là MIN, gán cho nó giá trị nhỏ nhất có
trong các trạng thái con.
20
Áp dụng GT Minimax vào Trò Chơi NIM
MIN
MIN
MIN
MAX
MAX
MAX
1
1 1 1
1 1
1
0 0
0
0
0
01
KẾT QUẢ CỦA
MIN
KẾT QUẢ CỦA
MAX
21
Minimax với ñộ sâu lớp cố ñịnh
Minimax ñối với một KGTT giả ñịnh
3 là giá trị max
của các nút con
2 là giá trị min
của các nút con
Các nút lá ñược gán các giá trị heuristic nào ñó
Còn giá trị tại các nút trong là các giá trị nhận ñược
dựa trên giải thuật Minimax (min hay max cua các nút con)
22
Heuristic trong trò chơi tic-tac-toe
Hàm Heuristic: E(n) = M(n) – O(n)
Trong ñó: M(n) là tổng số ñường thắng có thể của tôi
O(n) là tổng số ñường thắng có thể của ñối thủ
E(n) là trị số ñánh giá tổng cộng cho trạng thái n
23
Minimax 2 lớp ñược áp dụng vào
nước ñi mở ñầu trong tic-tac-toe
Max (X) có 5
ñường thắng,
Min(O) có 4, hàm
heuristic là -1
24
Thu giảm bài toán
ðồ thị AND-OR :
ðược dùng ñể biểu diễn KGTT cho bài toán giải ñược bằng cách
phân rã ra các bài toán nhỏ hơn
Khi bài toán ñược phân rã thành N bài toán con, mà tất cả chúng
phải ñược giải ñể hoàn thành bài toán lớn thì ñược biểu diễn thành
cung AND chỉ ñến N trạng thái con
Nhiều cách giải cho bài toán có thể ñược dùng thì có thể biểu diễn
bởi cung OR
A có thể ñược thông qua hai cách:
- Giải B, hoặc
- Giải cả C và D
25
Thu giảm bài toán (tt)
ðồ thị AND-OR :
Nếu dùng giải thuật BFS cho việc tìm lời giải trên ñồ thị AND-
OR thì có lẽ không thích hợp vì như xem xét ñồ thị sau:
Nếu giá trị ghi kề bên trạng thái là trị ước lượng cho trạng thái ñó.
Theo BFS thì trạng thái kế tiếp ñược chọn là C, như:
Khi chọn cách giải qua C thì bắt buộc phải giải cả D. Do vậy tổng chi
phí cho cách giải này là: C+D+ 2 = 9, 2 là giá trị của hàm g trong BFS
Trong khi ñó nếu chọn cách giải qua B thì chi phí chỉ là: B+1 = 6.
26
Thu giảm bài toán (tt)
GT thu giảm bài toán
Khởi ñộng ñồ thị là TT bắt ñầu.
Lặp ñến khi: TT ñầu ñược gán nhãn là SOLVED OR chi phí vượt
qua ngưỡng FUTILITY:
Duyệt ñồ thị bắt ñầu từ TT ñầu, theo con ñường tốt nhất hiện tại,
tích luỹ tập trạng thái trên con ñường ñó mà nó chưa ñược mở rộng
hoặc ñược gán nhãn SOLVED.
Lấy một TT chưa mở rộng và mở rộng nó. Nếu không có con thì
gán FUTILITY bằng trị của TT này. Ngược lại, thêm các con vào
ñồ thị và mỗi chúng tính f’ (sử dụng chỉ h’, bỏ qua g). Nếu f’ =0
thì gán nhãn cho TT ñó là SOLVED.
Thay ñổi f’ của TT ñã ñược mở rộng ñể phản ánh thông tin ñược
cung cấp bởi con của nó. Lan truyền trị này ngược lên ñồ thị. Nếu
một TT có cung mà tất cả các con của nó ñã ñược gán nhãn
SOLVED thì nó cũng ñược gán nhãn SOLVED. Khi lan truyền
ngược lên ñồ thị ñánh dấu cung nào là tốt nhất như là phần của con
ñường tốt nhất hiện tại.
27
Thu giảm bài toán (tt)
GT Thu giảm (tt.) - từng bước:
28
Thu giảm bài toán (tt)
GT Thu giảm (tt.) - từng bước:
29
Giải thuật cắt tỉa α-β
Tìm kiếm theo kiểu depth-first.
Nút MAX có 1 giá trị α (luôn tăng)
Nút MIN có 1 giá trị β (luôn giảm)
Tìm Kiếm có thể kết thúc dưới bất kỳ:
Nút MIN nào có β ≤ α của bất kỳ nút cha MAX nào.
Nút MAX nào có α ≥ β của bất kỳ nút cha MIN nào.
Giải thuật cắt tỉa α-β thể hiện mối quan hệ giữa các nút ở
lớp n và n+2, mà tại ñó toàn bộ cây có gốc tại lớp n+1 có
thể cắt bỏ.
30
Cắt tỉa α (vị trí MAX)
S
A C
MAX
MIN
B
Có giá trị >= α
α - cut
Có giá
trị = α
MAX
Có giá trị <= k
Có giá
trị = k
X Y . Z
ðiều kiện 1: Chỉ cần biết giá trị tại A và B
ðiều kiện 2: Giá trị A > giá trị B
ðiều kiện 3: X, Y, .. , Z ở vị trí Max
Bỏ những cây con có gốc là X,Y,, Z
31
Cắt tỉa β (vị trí Min)
S
A C
MIN
MAX
B
β - cut
MIN
Có giá
trị = β
Có giá trị <= β
Có giá
trị = k
Có giá trị >= k
X Y . Z
ðiều kiện 1: Chỉ cần biết giá trị tại A và B
ðiều kiện 2: Giá trị A < giá trị B
ðiều kiện 3: X, Y, .. , Z ở vị trí Min
Bỏ những cây con có gốc là X,Y,, Z
32
Cắt tỉa α-β: ví dụ
33
Bài tập: bài 1 (trò ñố 8 ô như)
Dùng các hàm lượng giá heuristic sau
h1 = số lượng các vị trí sai khác so với trạng thái goal.
h2 = tổng số ñộ dời ngắn nhất của các ô về vị trí ñúng (khoảng cách
Manhattan)
hãy triển khai không gian trạng thái của bài toán ñến mức 5 (nếu chưa tìm ñược
goal):
a) Theo giải thuật leo núi
b) Theo giải thuật tìm kiếm rộng
c) Theo giải thuật tìm kiếm sâu
d) Theo giải thuật tìm kiếm tốt nhất ñầu tiên
458
76
321
Start
567
48
321
Goal
34
Trong cây tìm kiếm dưới ñây, mỗi nút có 2 giá trị ñi kèm: giá trị bên trái của
nút (in nghiêng) thể hiện giá trị heuristic của nút, và giá trị bên phải nút
thể hiện thứ tự nút ñược duyệt qua. Với mỗi chiến lược tìm kiếm dưới
ñây, hãy viết danh sách thứ tự các nút ñược duyệt, so sánh và cho biết ta
ñã dùng giải thuật tìm kiếm nào trên cây :
a) Tìm kiếm rộng BFS
b) Tìm kiếm sâu DFS
c) Tìm kiếm tốt nhất ñầu tiên BFS
d) Tìm kiếm leo núi
Bài tập: bài 2 (duyệt ñồ thị)
35
Kê danh sách các nút ñược duyệt theo tìm kiếm DFS.
Thực hiện giải thuật Minimax trên cây.
Sẽ có gì khác biệt nếu như ta dùng giải thuật cắt tỉa alpha –
beta ñể ñịnh trị nút gốc cho cây?
Bài tập: bài 3 (minimax)
Các file đính kèm theo tài liệu này:
- baigiangtrituenhantaochuong3_7085.pdf