Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
2,4 MB
Nội dung
Chương Tìm kiếm khơng gian trạng thái Bùi Đức Dương LOGO Khoa Công nghệ Thông tin Nội dung Không gian trạng thái Một số phương pháp tìm kiếm KGTT Khơng gian trạng thái Là hệ thống gồm thành phần [N,A,S,GD] Trong đó: N tập nút Graph Mỗi nút trạng thái trình giải vấn đề A: Tập cung nối nút N Mỗi cung bước giải vấn đề Cung có hướng S: Tập trạng thái bắt đầu S khác rỗng GD: Tập trạng thái đích GD Khơng rỗng Solution path: Là path từ nút bắt đầu Si đến nút kết thúc GDj Mục tiêu giải thuật tìm kiếm tìm solution path và/hay solution path tốt Khơng gian trạng thái (tt) Ví dụ 1: Trị chơi Tic –Tac – Toe Trạng thái Trạng thái tình bàn cờ Số trạng thái bùng nổ nhanh Biểu diễn trạng thái X X X Biểu diễn khơng gian Trạng thái kết thúc: có người có dấu X liên tục theo đường chéo, thẳng, ngang Số trạng thái kết thúc=??? X Trạng thái kết thúc X X Không gian trạng thái (tt) Đồ thị có hướng khơng lặp lại (Directed Dcyclic Graph - DAG) Không gian trạng thái (tt) Ví dụ 2: Trị chơi (đố) Puzzle Trị đố Trị đố 16 Trạng thái đầu Trạng thái đích 8 Trạng thái đầu 11 14 10 12 4 Trạng thái đích 12 13 14 13 15 11 15 10 Cần biểu diễn KGTT cho tốn nào? Khơng gian trạng thái (tt) KGTT 8-puzzle sinh phép “di chuyển trống” Có khả xảy vịng lặp khơng? Khơng gian trạng thái (tt) Ví dụ 3: Bài toán TSP Cần biểu diễn KGTT cho tốn nào? Khơng gian trạng thái (tt) Mỗi cung đánh dấu tổng giá đường từ nút bắt đầu đến nút Tìm kiếm khơng gian trạng thái TTNT = Biểu diễn + Tìm kiếm Sự biểu diễn phải: Cung cấp cấu tự nhiên để thể tri thức/thông tin/ liệu cách đầy đủ (Tính biểu đạt) Hỗ trợ việc thực thi cách hiệu việc tìm kiếmđáp án cho vấn đề (Tính hiệu quả) Liệu việc tìm kiếm: Có kết thúc khơng? Có chắn tìm lời giải khơng? Có chắn tìm lời giải tối ưu khơng? 10 Tìm kiếm khơng gian trạng thái (tt) Tìm kiếm theo chiều rộng (BFS) S=[A] bắt đầu GD=[G] goal Kết thúc Cung: Đường 17 Tìm kiếm khơng gian trạng thái (tt) Tìm kiếm theo chiều rộng (BFS) Lần lặp A B C E H F I D G J X A B C D E F G 18 Open [A] [B C D ] [C D E F] [D E F G] [E F G] [F G H I] [G H I J] [H I J] Close [] [A] [A B] [A B C ] [A B C D] [A B C D E] [A B C D E F] [A B C D E F] Tìm kiếm khơng gian trạng thái (tt) Tìm kiếm theo chiều sâu (DFS) Procedure Depth_First_Search; Begin Open :=[start]; Close:=[]; While (Open []) Begin remove X which is the leftmost of Open; If (X=goal) the return (Success) else begin generate children of X; Put X to close; put remain children on LEFT end of open; end; End; Return (Fail); End; 19 Tìm kiếm khơng gian trạng thái (tt) Tìm kiếm theo chiều sâu (DFS) A Lần lặp X A B E H I F J C G Open Close [A] [B C D ] [E F C D] [H I F C D] [I F C D] [F C D] [J C D] [C D] [G D] [] [A] [A B] [A B E ] [A B E H] [A B E H I] [A B E H I F] [A B E H I F J] [A B E H I F J C] 20 B C E H F I D G J Tìm kiếm khơng gian trạng thái (tt) BFS vs DFS Tiêu chí BFS DFS CTDL Open:QUEUE Hiệu Ln tìm nghiệm có “Thường” cho kết số cung nhỏ nhanh Kết Chắc chắn tìm kết có Bùng nổ tổ hợp Open:STACK Có thể bị lặp vơ tận X X Giải pháp cho bùng nổ tổ hợp? 21 Tìm kiếm khơng gian trạng thái (tt) DFS có giới hạn (Depth Bound Search) Depth First Search có khả lặp vô tận trạng thái sinh liên tục Độ sâu tăng vô tận Khắc phục cách giới hạn độ sâu giải thuật: quay lui trạng thái xét đạt đến độ sâu giới hạn định → Sâu vừa? Chiến lược giới hạn Cố định độ sâu MAX, danh thủ chơi cờ tính trước số nước định Theo cấu hình resource máy tính Meta knowledge việc định giới hạn độ sâu Giới hạn độ sâu → co hẹp không gian trạng thái → nghiệm 22 Tìm kiếm khơng gian trạng thái (tt) DFS có giới hạn (Depth Bound =5) trò chơi - puzzle) Tìm kiếm khơng gian trạng thái (tt) DFS đào sâu nhiều Deepening Search) lần (Depth-first Iterative Depth Bound =1 Depth First Search Tìm thấy Goal False INC (Depth Bound) True Dừng Độ phức tạp thời gian bậc với BFS DFS 24 Tìm kiếm không gian trạng thái (tt) Backtrack Search Graph Search (GS) phải có khả tìm kiếm tất Path có để tìm nghiệm: Path từ trạng thái khởi đầu đến Goal GS thực cách “lần” theo nhánh Graph Từ trạng thái, sinh trạng thái con, chọn trạng thái con, xem trạng thái xét Lặp lại tìm thấy trạng thái đích “Lần” theo trạng thái → Vào ngõ cụt? Khi gặp nhánh không tiếp được, giải thuật phải có khả quay lui lại trạng thái trước để sang nhánh khác: Back Tracking 25 Tìm kiếm khơng gian trạng thái (tt) Một số ký hiệu SL (State list) : chứa danh sách trạng thái path xét Nếu tìm goal SL nghiệm NSL (New State List): chứa danh sách trạng thái đợi xét DE (Dead End): chứa trạng thái mà cháu chúng khơng chứa đích CS (Current State): chứa trạng thái xét Hướng phát triển trình search tùy theo cấu tổ chức NSL: FIFO, FILO hay Evaluated 26 Tìm kiếm khơng gian trạng thái (tt) Procedure Backtrack_Search; BEGIN S:=[start]; NLS:=[start]; DE:=[ ]; CS:=start; While (NSL[ ]) Begin If (CS = Goal) then return(SL); If (CS has no children (Except node in [DE, Sl, NSL]) )then Begin While ((SL[ ]) and CS=First Element of SL)) Begin Add CS to DE Remove first element from SL; Remove first element from NSL; Cs:= first element of NSL; End; Add CS to SL; End; 27 Tìm kiếm khơng gian trạng thái (tt) Else Begin Add children of CS (Except node in DE,SL and NSL) to NSL CS:= first element of NSL; Add CS to SL; End; End; End; {end while} Return Fail; END 28 Tìm kiếm khơng gian trạng thái (tt) Backtrack Search - Ví dụ A B C E H Lần CS lặp F I D G J A B E H I F J C G SL NSL DE [A] [B A] [E B A] [H E B A] [I E B A] [F B A] [J F B A] [C A] [G C A] [A] [B C D A] [E F B C D A] [H I E F B C D A] [I E F B C D A] [F B C D A] [J F B C D A] [C D A] [G C D A] [] [] [] [] [H] [E I H] [E I H] [B F J E I H] [B F J E I H] 29 Bài tập Chương Biểu diễn khơng gian trạng thái cho tốn đơn giản Lấy ví dụ minh họa thuật toán BFS, DFS, DFIDS, Backtrack Search Cài đặt thuật toán BFS, DFS, DFIDS, Backtrack Search 30 31 Bùi Đức Dương LOGO Khoa Công nghệ Thông tin