Bài giảng Các hệ thống thông minh nhân tạo và ứng dụng - Chương 4: Bài toán tìm kiếm 2 có nội dung trình bày về heuristic, tìm kiếm tham lam, thuật giải A*, sự nới lỏng,... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Trang 1Bài toán tìm kiếm II
THS BÙI THỊ DANH
BM.KHMT, KHOA CNTT, ĐH.KHTN TP.HCM
CÁC HỆ THỐNG THÔNG MINH NHÂN TẠO & ỨNG DỤNG
Trang 4Heuristic 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
◦ Kí hiệu là h(s), với s là trạng thái.
Heuristic được thiết kế cho từng bài toán tìm kiếm cụ thể
Một số hàm heuristic phổ biến:
◦ Khoảng cách Euclidean, Mahattan.
◦ …
Trang 5Ví dụ - Tìm đường đi cho Pacman
Hàm h(s) là hàm Euclidean
Trang 6Ví dụ - Tìm đường đi trên bản đồ
Hàm h(s) là khoảng cách đường chim bay
Trang 7Ví dụ - N-Puzzle
Hàm h(s): số ô khác biệt giữa 2 puzzle…
Trang 9Tì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
◦ Hàm heuristic tương ứng h(s) có giá trị nhỏ nhất
Sử dụng hàng đợi ưu tiên để triển khai, với độ ưu tiên là h(s)
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
Trang 10fe
4
4
15 1
Trang 11fe
4
4
15 1
Trang 12fe
4
4
15 1
Trang 13fe
4
4
15 1
Trang 14fe
4
4
15 1
Trang 15fe
4
4
15 1
Trang 16fe
4
4
15 1
Trang 17Tì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 sVớ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 pQueueGhi nhớ trạng thái trước của s’ là s
end
Trang 18Tìm kiếm tham lam (greedy search)
Tính đầy đủ:
◦ Có
Tính tối ưu:
◦ Không, vì chỉ dựa vào chi phí ước lượng
◦ 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
Độ phức tạp tính toán:
◦ O(min N, 𝑏max )
Độ phức tạp lưu trữ:
◦ O(min N, 𝑏max )
Trang 20Thuậ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 𝑓 𝑠 = 𝑔 𝑠 + ℎ(𝑠)
𝑔(𝑠)
ℎ 𝑠 ,ước lượng
Trang 21Thuậ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
Trang 22Thuậ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
◦ Chi phí đi từ s đến A là 6, nhưng chi phí thực tế chỉ là 1.
Trang 26Sự 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
◦ Heuristic tốt liên quan đến mô hình hóa, không phải xây dựng thuật toán
Trang 27Sự nới lỏng
Giảm chi phí
Loại bỏ ràng buộc
Lời giải dạng gần đúng
Tìm kiếm
dễ hơn
Các bài toán con độc lập
Trang 28Lờ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
Trang 29◦ Ràng buộc: số hành động tram không được nhiều hơn walk
Trạng thái: (thành_phố, #walk - #tram)
◦ Số trạng thái từ O(n) thành O(n 2 )
Trang 30Tì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 trạng thái đích hoặc ngược lại
Trang 31Bà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).
◦ Hàm heuristic là hàm tổng của các bài toán con.
Trang 32Nhắ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
Trang 33Tà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