CÁC HỆ THỐNG THÔNG MINH NHÂN TẠO & ỨNG DỤNG
Bài toán tìm kiếm II THS. BÙI THỊ DANH
BM.KHMT, KHOA CNTT, ĐH.KHTN TP.HCM
Nội dung
Heuristic
Tìm kiếm tham lam
Thuật giải A*
Sự nới lỏng
2
Heuristic
Các thuật toán tìm kiếm mù duyệt trạng thái theo mọi hướng, không sử dụng thông tin của trạng thái đích.
Ước lượng chi phí đến trạng thái đích. Liệu có tìm đường nhanh hơn?!?
3
Heuristic
Heuristic là một hàm ước lượng mức độ gần của một trạng thái so với trạng thái đích
Heuristic được thiết kế cho từng bài toán tìm kiếm cụ thể
◦ Kí hiệu là h(s), với s là trạng thái.
Một số hàm heuristic phổ biến: ◦ Khoảng cách Euclidean, Mahattan.
4
◦ …
Ví dụ - Tìm đường đi cho Pacman
Hàm h(s) là hàm Euclidean
5
Ví dụ - Tìm đường đi trên bản đồ
Hàm h(s) là khoảng cách đường chim bay
6
Ví dụ - N-Puzzle
Hàm h(s): số ô khác biệt giữa 2 puzzle…
7
Nội dung
Heuristic
Tìm kiếm tham lam
Thuật giải A*
Sự nới lỏng
8
Tìm kiếm tham lam (greedy search)
Chiến lược duyệt: mở rộng trạng thái được ước lượng là gần trạng thái đích nhất
Sử dụng hàng đợi ưu tiên để triển khai, với độ ưu tiên là h(s)
◦ Hàm heuristic tương ứng h(s) có giá trị nhỏ nhất
Tùy chọn: đánh dấu các trạng thái đã được xem xét ◦ Đánh dấu khi trạng thái được lấy khỏi hàng đợi
9
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = null, PQ={(Start,12)}
10
h = 11 h = 9 h = 6
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = Start/12, PQ={(e, 4), (d, 8), (p,11)}
11
h = 11 h = 9 h = 6
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = e/4, PQ={ (h,6), (r, 6), (d, 8), (p,11),}
12
h = 11 h = 9 h = 6
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = h/6, PQ={(r, 6), (d, 8), (q, 9), (p,11),}
13
h = 11 h = 9 h = 6
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = r/6, PQ={ (f, 4), (d, 8), (q, 9), (p,11),}
14
h = 11 h = 9 h = 6
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = f/4, PQ={ (Goal, 0), (d, 8), (q, 9), (p,11),}
15
h = 11 h = 9 h = 6
Ví dụ
Goal
a
h = 0 2 2 h = 8
h = 5
b
c
2 5 8 1
e
h = 11 2
d
h = 4
f
3
9
Start
h = 8 9 1 h = 4
4
h
5
p
1 h = 12 h = 6
r
q
15
4
S = Goal/0, PQ={ (d, 8), (q, 9), (p,11),} Đã tìm thấy Goal
16
h = 11 h = 9 h = 6
Tìm kiếm tham lam (greedy search) Khởi tạo hàng đợi ưu tiên pQueue Đưa trạng thái bắt đầu start vào pQueue Loop
If không còn trạng thái để mở rộng then return “không có lời giải” Chọn trạng thái s đầu hàng đợi để mở rộng If s là trạng thái đích then return “có lời giải” Gán nhãn cho trạng thái s Với mỗi trạng thái mới s’ mở rộng từ s: If s’ chưa được gán nhãn then
Tí𝑛ℎ ℎ(𝑠′) If 𝑠′ không có trong pQueue then Thêm s’ vào pQueue Ghi nhớ trạng thái trước của s’ là s
end
17
Tìm kiếm tham lam (greedy search)
Tính đầy đủ:
Tính tối ưu: ◦ Không, vì chỉ dựa vào chi phí ước lượng
◦ Có
Độ phức tạp tính toán: ◦ O(min N, 𝑏max )
Độ phức tạp lưu trữ: ◦ O(min N, 𝑏max )
18
◦ Thường đưa agent tới thẳng trạng thái đích, nhưng không phải với chi phí tốt nhất
Nội dung
Heuristic
Tìm kiếm tham lam
Thuật giải A*
Sự nới lỏng
19
Thuật giải A*
Ý tưởng: kết hợp thuật toán UCS và tìm kiếm tham lam
UCS: chiến lược duyệt dựa theo chi phí từ trạng thái bắt đầu đến trạng thái đang xét, 𝑔(𝑠)
Tìm kiếm tham lam: chiến lược duyệt dựa theo chi phí ước lượng từ trạng thái đang xét đến trạng thái cuối, ℎ(𝑠)
Thuật giải A*: chiến lược duyệt dựa theo theo giá trị tổng 𝑓 𝑠 = 𝑔 𝑠 + ℎ(𝑠)
Goal
s
ℎ 𝑠 ,ước lượng …
Start
…
𝑔(𝑠)
20
Thuật giải A*
Khởi tạo hàng đợi ưu tiên pQueue, Đưa trạng thái bắt đầu start vào pQueue Loop
If không còn trạng thái để mở rộng then return “không có lời giải” Chọn trạng thái s đầu hàng đợi để mở rộng If s là trạng thái đích then return “có lời giải” Gán nhãn cho trạng thái s Với mỗi trạng thái mới (s’) mở rộng từ s:
If 𝑠′ không thuộc pQueue và chưa gán nhãn then
𝑔 𝑠′ = 𝑔 𝑠 + 𝐶 𝑠, 𝑠′ 𝑓 𝑠′ = 𝑔 𝑠′ + ℎ(𝑠′) Thêm s’ vào pQueue và ghi nhớ trạng thái trước của s’ là s
If 𝑠′ thuộc pQueue hoặc đã gán nhãn then
𝑔 𝑠′ = min{𝑔 𝑠′ , 𝑔 𝑠 + 𝐶(𝑠, 𝑠′) f 𝑠′ = 𝑔 𝑠′ + ℎ(𝑠) If 𝑓 𝑠′ giảm then Ghi nhớ trạng thái trước của s’ là s If 𝑓 𝑠′ giảm và s’ đã được gán nhãn then Đưa s’ trở lại hàng đợi
end
21
Thuật giải A* có tối ưu?
Chi phí ước lượng cao hơn chi phí thực thuật toán A* cho kết quả không tối ưu
22
◦ Chi phí đi từ s đến A là 6, nhưng chi phí thực tế chỉ là 1.
Heuristic có thể chấp nhận
Một heuristic là có thể chấp nhận (admissible) nếu:
0 ≤ ℎ 𝑠 ≤ ℎ∗ 𝑠
Định lý: Nếu ℎ(𝑠) là heristic có thể chấp nhận, thuật toán A* với cây tìm kiếm có tính tối
ưu.
23
◦ Trong đó, ℎ∗(𝑠) là chi phí thực tế nhỏ nhất để đến đích từ s.
Heuristic có thể chấp nhận
Thông thường, admissible heuristic là các lời giải cho các bài tóan được nới lỏng ràng buộc
(relaxation), ở đó có nhiều hành động mới được cho phép.
Đôi khi các inadmissible heuristic cũng có ích
24
Nội dung
Heuristic
Tìm kiếm tham lam
Thuật giải A*
Sự nới lỏng
25
Sự nới lỏng (relaxation)
Làm sao để có một heuristic tốt? ◦ Lý tưởng thì h(s) = h*(s). Điều này khó như giải quyết bài toán gốc
◦ Thay vì dùng h*(s) của bài toán gốc, chúng ta dùng h*(s) của bài toán dễ hơn
26
◦ Heuristic tốt liên quan đến mô hình hóa, không phải xây dựng thuật toán
Sự nới lỏng
Giảm chi phí
Loại bỏ ràng buộc
27
Tìm kiếm dễ hơn Các bài toán con độc lập Lời giải dạng gần đúng
Lời giải dạng gần đúng
Mục tiêu: di chuyển từ ô hình tam giác đến hình tròn
Nới lỏng: bỏ các bức tường đi
Bài toán sau khi nới lỏng: ℎ∗(𝑠) là khoảng cách Mahattan ◦ Sử dụng ℎ∗(𝑠) này để làm heuristic
28
Tìm kiếm dễ hơn
Bài toán gốc ◦ Trạng thái bắt đầu: thành phố 1
◦ Hành động walk: từ s đến s+1 ( chi phí là 1)
◦ Hành động tram: từ s đến 2s (chi phí là 2)
◦ Trạng thái đích: thành phố n
Trạng thái: (thành_phố, #walk - #tram) ◦ Số trạng thái từ O(n) thành O(n2)
29
◦ Ràng buộc: số hành động tram không được nhiều hơn walk
Tìm kiếm dễ hơn
Giữ các thông tin bài toán gốc, nhưng loại bỏ ràng buộc
Trạng thái sau nới lỏng: (thành_phố)
Bài toán sau khi nới lỏng: tìm đường đi từ thành phố 1 đến thành phố n. ◦ Hàm heuristic là ℎ∗(𝑠) của bài toán nới lỏng: kết quả của thuật toán UCS tìm đường từ trạng thái s tới
30
trạng thái đích hoặc ngược lại
Bài toán con độc lập
Bài toán gốc: các mảnh ghép không được chồng lên nhau
Nới lỏng: Các mảnh ghép có thể chồng lên nhau.
Bài toán sau khi nới lỏng: 8 bài toán con độc lập nhau. ◦ Mỗi bài toán con tương ứng với một dạng gần đúng (slide trước).
31
◦ Hàm heuristic là hàm tổng của các bài toán con.
Nhắc lại
Các bài toán nới lỏng được sử dụng để lấy giá trị cho hàm heuristic h(s) nhằm định hướng
tìm kiếm. Các lời giải của bài toán nới lỏng không phải là lời giải của bài toán gốc.
32
Tài liệu tham khảo
Cơ sở Trí tuệ Nhân tạo, Lê Hoài Bắc, Tô Hoài Việt, NXB Khoa học & Kỹ thuật.
Slide bài giảng Trí tuệ nhân tạo, GV. Tô Hoài Việt, GV. Lê Ngọc Thành, Khoa CNTT, ĐH. KHTN TP.HCM
Artificial Intelligence: A Modern Approach, 3rd Edition, S. Russel and P. Norvig, Pearson Education Inc., 2010
Techniques in Artificial Intelligence (SMA 5504) , MIT OpenCourseWare, Massachusetts Institute of Technology
Artificial Intelligence: Principles and Techniques, Stanford courses, Autumn 2015.
33