– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle... – fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle... – fr
Trang 1NHẬP MÔN TRÍ TUỆ NHÂN TẠO
@copyrights by Dr Nguyễn Xuân Hoài
Trang 2Nội Dung
Giải quyết vấn đề:
• Một số vấn đề về giải quyết vấn đề
• Biểu diễn không gian lời giải bằng không gian trạng thái
• Giải quyết vấn đề bằng tìm kiếm
Tìm kiếm cơ bản không dựa vào thông tin thu thập trong quá trình tìm kiếm: (uninformed/blind search)
Trang 3Giải quyết vấn đề
Giải quyết vấn đề là gì?
Để giải quyết vấn đề:
1 Phát biểu chính xác bài toán (Hiện trạng ban đầu, kết
quả mong muốn, )
2 Phân tích bài toán
3 Thu thập và biểu diễn dữ liệu, tri thức cần thiết để giải
bài toán
4 Lựa chọn kỹ thuật giải quyết thích hợp
Trang 4Không gian trạng thái
Ví dụ: Tìm đường đi, Robot xếp hình, Máy hút bụi tự
động, tính tích phân bất định, chương trình chơi cờ,
chương trình chuẩn đoán bệnh, chương trình nhận dạng vân tay, mặt người, chương trình tự sản sinh ra chương trình máy tính
Đi nghỉ tại Romania; hiện ở Arad
+ Trạng thái hiện thời: Tại Arad
+ Trạng thái đích: Tới Bucharest
+Biểu diễn dưới dạng không gian trạng thái:
trạngthái: tại các thành phố khác nhau
hành động: lái xe đến các thành phố khác nhau.
+ Tìm lời giải: Chuỗi các thành phố, từ Arad, đến Bucharest.
Trang 5Không gian trạng thái
Trang 6Không gian trạng thái
Trang 7Không gian trạng thái
Trang 8Yếu tố xác định không gian TT
1 Trạng thái.
2 Hành động.
3 Kiểm tra trạng thái thoả đích.
4 Chi phí cho mỗi bước chuyển trạng thái.
Trang 9Không gian trạng thái
Trang 10Không gian trạng thái
Trang 11Các đặc trưng của vấn đề
1 Tính khả tách
2 Có thể huỷ bỏ hay lần ngược bước giải?
3 Không gian bài toán có đoán định được trước? (sau mỗi
bước giải)
4 Cần lời giải tốt hay tối ưu?
5 Lời giải là trạng thái hay dãy chuyển trạng thái?
6 Vai trò của tri thức?
7 Quá trình giải có cần tương tác người máy?
Trang 12không gian trạng thái
Không đơn định/không nắm được bộ phận của không gian trạng thái
Trang 13Giải quyết vấn đề
Trang 14Tìm kiếm trên cây trạng thái
• Ý tưởng cơ bản:
– Tìm kiếm trên không gian trạng thái dưới dạng cây, dùng toán tử EXPAND sinh các trạng thái có thể đến được trực tiếp từ một trạng thái đã được kiểm tra (trạng thái con)
Trang 15Ví dụ
Trang 16Ví dụ
Trang 17Ví dụ
Trang 18Khung tìm kiếm tổng quát
Trang 19Trạng thái vs Nodes
• Trạng thái biểu diễn cho một cấu hình vật lý của bài
toán
• node thành phần cơ bản của cây tìm kiếm trạng thái,
node cha, hành động , giá đường đi g(x), độ sâu
• Toán tử Expand tạo ra nodes mới, sủ dụng hàm
SuccessorFn (phụ thuộc vào từng bài toán) để tạo ra các trạng thái tương ứng
Trang 20Chiến lược tìm kiếm
• Chiến lược tìm kiếm là chiến lược lựa chọn thứ tự xét các nodes tạo ra bởi toán tử Expand
• Các tiêu chuẩn để đáng giá chiến lược :
– đủ : Liệu có tìm được lời giải (nếu có)?
– độ phức tạp thời gian : số lượng node phải xét.
– độ phức tạp lưu trữ : Tổng dung lượng bộ nhớ phải lưu trữ (các nodes trong quá trình tìm kiếm.
– tối ưu : Có luôn cho lời giải tối ưu.
• Độ phực tạp thời gian vàlưu trữ của bài toán có thể được đo bằng:
– b: Độ phân nhánh của cây
– d: Độ sâu của lời giải ngắn nhất
– m: Độ sâu tối đa của không gian trạng thái (có thể vô hạn).
Trang 21Các chiến lược tìm kiếm yếu
(weak/uninformed/blind search)
• Những chiến thuật tìm kiếm chỉ sử dụng thông tin từ định nghĩa của bài toán:
• Tìm kiếm theo chiều rộng
• Tìm kiếm đều giá (uniform-cost search)
• Tím kiếm theo chiều sâu
• Tìm kiếm theo chiều sâu có hạn
• Tìm kiếm sâu dần
Trang 22Tìm kiếm theo chiều rộng
• Tìm kiếm theo từng tầng Expand node gần nút nhất
• Cài đặt :
– fringe (danh sách các node chờ được duyệt) được
cài đặt dưới dạng danh sách FIFO, i.e., Các node con được sinh ra (bởi EXPAND) sẽ được đặt ở
dưới cùng của fringe.
Trang 23Tìm kiếm theo chiều rộng
• Tìm kiếm theo từng tầng Expand node gần nút nhất.
– fringe (danh sách các node chờ được duyệt) được cài đặt
dưới dạng danh sách FIFO, i.e., Các node con được sinh ra
(bởi EXPAND) sẽ được đặt ở dưới cùng của fringe.
Trang 24Tìm kiếm theo chiều rộng
• Tìm kiếm theo từng tầng Expand node gần nút nhất
• Cài đặt :
– fringe (danh sách các node chờ được duyệt) được cài
đặt dưới dạng danh sách FIFO, i.e., Các node con
được sinh ra (bởi EXPAND) sẽ được đặt ở dưới cùng
của fringe.
Trang 25Tìm kiếm theo chiều rộng
• Tìm kiếm theo từng tầng Expand node gần nút nhất
• Cài đặt :
– fringe (danh sách các node chờ được duyệt) được cài
đặt dưới dạng danh sách FIFO, i.e., Các node con
được sinh ra (bởi EXPAND) sẽ được đặt ở dưới
cùng của fringe.
Trang 26Đánh giá tìm kiếm BFS
• đủ? có (nếu b là hữu hạn).
• thời gian? 1+b+b 2 +b 3 +… +b d + b(b d -1) = O(bd+1)
• không gian? O(b d+1 ) (lưu mọi node của cây).
• tối ưu? có (giải thiết giá của mỗi bước chuyển là 1)
• Không gian lưu trữ hết sức tốn kém là vấn đề lớn nhất
đối vơi BFS !!!
Trang 27Tìm kiếm đều giá
• Xét node có giá tìm kiếm nhỏ nhất trước
– fringe = Hàng đợi có ưu tiên (bằng nghịch dấu giá thành)
• Tương đương với BFS nếu các node có giá như nhau
• Đủ ? có nếu cost ≥ ε
• Thời gian? Số lượng nodes với g ≤ giá của lời giải tối
ưu, O(b ceiling(C*/ ε) ) trong đó C* là giá của lời giải tối ưu
• Không gian? số lượng nodes với g ≤ giá của lời giải tối
ưu, O(b ceiling(C*/ ε) ).
• Tối ưu? Có – nodes được EXPAND theo thứ tự tăng
dần của g(n).
•
Trang 28Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 29Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 30Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 31Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 32Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 33Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 34Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 35Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 36Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 37Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 38Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 39Tìm kiếm theo chiều sâu
• EXPAND node chưa xét ở sâu nhất
– fringe = danh sách kiểu LIFO, i.e., Đẩy các nodes con sinh bởi EXPAND vào đầu fringle
Trang 40Đánh giá tìm kiếm DFS
• Đủ? không đủ (không gian vô hạn hoặc loop)
- Nếu sửa để tránh trùng lặp đủ trong không gian hữu hạn.
• Thời gian? O(b m )
- Rất xấu nếu m lớn hơn nhiều so với d.
- Nhưng nếu mật độ lời giải trong không gian lớn thì có thể nhanh hơn BFS.
• Không gian? O(bm), i.e., Độ phức tạp tuyến tính
• Tối ưu? không
Trang 41Tìm kiếm với độ sâu giới hạn
= DFS với độ sâu giới hạn là l, i.e., nodes tại độ sâu l
không có node con (successor-fn trả về rỗng)
• Cài đặt :
Trang 42Tìm Kiếm Sâu Dần
Trang 43Tìm kiếm sâu dần l =0
Trang 44Tìm kiếm sâu dần l =1
Trang 45Tìm kiếm sâu dần l =2
Trang 46Tìm kiếm sâu dần l =3
Trang 48Đánh giá tìm kiếm sâu dần
Trang 49Tóm tắt các chiến lược tìm kiếm
Trang 50Trạng thái bị trùng lặp
• Việc không xử lý tốt các trạng thái bị lặp nhiều lần có thể làm cho độ phức tạp (thời gian, không gian) bị
bùng nổ tổ hợp
Trang 51Tìm kiếm trên đồ thị
Trang 52• Các chiến lược tìm kiếm khác nhau: chiều rộng, đều giá, chiều sâu, sâu dần.
• Tìm kiếm sâu dần có độ phực tạp không gian tuyến tính và độ phức tạp thời gian không quá kém so với tìm kiếm chiều rộng, chiều sâu
Trang 53Câu hỏi ôn tập
1 Nêu và cho ví dụ về các đặc trưng của vấn đề?
2 Nêu và cho ví dụ về việc phân loại các vấn đề
3 Hãy lấy ví dụ về các bài toán mà bạn quan tâm sau
đó biểu diễn nó bằng không gian trạng thái
4 Cài đặt các thuật toán BFS, DFS, UCS, IDS trên các
bài toán cụ thể