ØGraph Search (GS) phải có khả năng tìm kiếm ra tất cả các Path có thể có hể tìm được nghiệm: Path từ trạng thái khởi đầu đến Goal.
ØGS thực hiện bằng cách “lần” theo các nhánh của Graph. Từ một trạng thái, sinh ra các trạng thái con, chọn một trạng thái con, xem , ó là trạng thái xét kế tiếp. Lặp lại cho đến khi tìm thấy một trạng thái
đích.
Ø“Lần” theo các trạng thái ® Vào ngõ cụt?
ØKhi gặp nhánh không đi tiếp được, giải thuật phải có khả năng
2. Tìm kiếm trên không gian trạng thái (tt)
2. Tìm kiếm trên không gian trạng thái (tt)
Ø Một số ký hiệu
üSL (State list) : chứa danh sách các trạng thái trên path hiện đang
xét. Nếu tìm ra goal thì SL chính là nghiệm.
üNSL (New State List): chứa danh sách các trạng thái đang đợi xét.
üDE (Dead End): chứa các trạng thái mà con cháu của chúng không chứa đích.
üCS (Current State): chứa trạng thái đang xét.
üHướng phát triển của quá trình search tùy theo cơ cấu tổ chức của NSL: FIFO, FILO hay Evaluated.
2. Tìm kiếm trên không gian trạng thái (tt)
2. Tìm kiếm trên không gian trạng thái (tt)
Procedure Backtrack_Search; BEGIN
S:=[start]; NLS:=[start]; DE:=[ ]; CS:=start; While (NSL<>[ ]) do
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)) do Begin
Add CS to DE
2. Tìm kiếm trên không gian trạng thái (tt)
2. Tìm kiếm trên 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;
2. Tìm kiếm trên không gian trạng thái (tt)
2. Tìm kiếm trên không gian trạng thái (tt)
Lần lặp CS SL NSL DE 0 1 2 3 4 5 6 A B E H I F J [A] [B A] [E B A] [H E B A] [I E B A] [F B A] [J F B 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] [] [] [] [] [H] [E I H] [E I H] A B C D E F G H I J Backtrack Search - Ví dụ