Trí Tuệ Nhân Tạo – Cải Tiến Thuật Toán Tìm Kiếm Sâu Lặp - Đồ thị không gian trạng thái Demo tìm kiếm đường đi từ đỉnh trạng thái A đến đỉnh K với bước nhảy độ sâu là 1... Father củ
Trang 1Trí Tuệ Nhân Tạo – Cải Tiến Thuật Toán Tìm Kiếm Sâu Lặp
- Đồ thị không gian trạng thái
Demo tìm kiếm đường đi từ đỉnh (trạng thái ) A đến đỉnh K với bước nhảy độ sâu là 1
Lần
duyệt
6 1 [B1] [G2],[I2] [F2], [E2] [A0],[D1],[C1],[B1]
7 1 [I2] [G2] [F2], [E2],[I2] [A0],[D1],[C1],[B1]
8 1 [G2] [] [F2], [E2],[I2], [G2] [A0],[D1],[C1],[B1]
2 [G2],[I2],[E2],[F2] [] [A0],[D1],[C1],[B1]
9 2 [F2] [G2],[I2],[E2],[K3] [] [A0],[D1],[C1],[B1],[F2]
A
G
E
D
C
B
K
L
Trang 2Mảng Father sau khi tìm được đỉnh K :
Theo mảng Father ta tìm được đường đi : A D F K
Father của A là null vì A là root
Father của L là null vì L chưa được sinh ra trong OPEN ( chưa tìm thấy )
Muốn tìm thấy đỉnh đích có độ sâu là n thì chỉ cần duyệt đến độ sâu n-1 là sẽ tìm thấy
Mã giả của thuật toán :
/*
OPEN là danh sách để lưu các đỉnh đã được sinh ra và chờ phát triển ( chờ duyệt )
CLOSE là danh sách để lưu các đỉnh đã phát triển ( đã duyệt )
NEXT là danh sách để lưu các đỉnh đã được sinh ra nhưng có Depth ( độ sâu ) lớn hơn d
OPEN , NEXT , CLOSE kiểu Stack
U 0 là đỉnh ban đầu
Father là danh sách để ghi lại cha của mỗi đỉnh trên đường đi
Hàm Depth dung để ghi lại độ sâu của mỗi đỉnh
*/
Trang 3Procedure Depth_Limited_Search(d);
Begin
While OPEN khác rỗng do
Begin
Xóa đỉnh u ở đầu OPEN;
If Depth(u) <= d then Begin
Thêm u vào CLOSE ; For mỗi trạng thái v kề u do
Begin
Father (v) = u;
If v là đích then Begin
Thông báo tìm kiếm thành công ; Exit ;
End ; Thêm v vào đầu OPEN;
Depth(v) = Depth(u) + 1;
End ; End ;
Else Begin
Thêm u vào NEXT ; End ;
End ;
End ;
Trang 4Procudure Interative_Depening_Search;
Begin
Khởi tạo danh sách OPEN rỗng ;
Khởi tạo danh sách CLOSE rỗng ;
If u 0 là đích then
Begin
Thông báo đỉnh ban đầu cũng là đỉnh kết thúc;
Exit ; End ;
Begin
Copy danh sách NEXT vào danh sách OPEN;
Xóa danh sách NEXT ( về trạng thái rỗng );
Depth_Limited_Search(d);
If ( thành công ) then
exit ; End ;
Thông báo không tìm thấy ;
End ;
26/9/2010 LeeThong