Kỹ thuật tìm kiếm sâu dần là thực hiện việc tìm kiếm với độ sâu ở mức giưói hạn d nào đó. Nếu không tìm ra nghiệm ta tăng độ sâu lên d+1 và lại tìm kiếm theo độ sâu tới mức d+1. Quá trình trên được lặp lại với d lần lượt là 1, 2,...đến độ sâu max nào đó.
Kỹ thuật tìm kiếm sâu dần thường được thực hiện khi cây tìm kiếm chứa nhánh vô hạn, và nếu sử dụng tìm kiếm theo độ sâu ta có thể mắc kẹt ở một nhánh nào đó (thuật toán không dừng) và không tìm ra nghiệm.
3.2. Giải thuật.
Thuật toán tìm kiếm sâu dần sử dụng thuật toán tìm kiếm sâu hạn chế như thủ tục con. Đó là thủ tục tìm kiếm theo chiều sâu nhưng chỉ tới độ sâu d nào đó rồi quay lên.
Thủ tục tìm kiếm sâu hạn chế (depth_limitedsearch)
Procedure Depth_limited_search(d); {d là tham số độ sâu}
Begin
Push (MO,no);
Depth(n0)=0; {hàm depth ghi lại độ sâu mỗi đỉnh}
DONG=null;
While MO <> null do
begin
n:=pop (MO);
if nÎ DICH then exit;
push (DONG, n);
if depth(n)<=d then
For mÎ T(n) and mÏDONG do
begin
Push (MO, m);
depth(m)=depth(n)+1;
end;
end;
Write (‘Không có lời giải’);
End
Thuật toán tìm kiếm sâu dần (Depth_deepening_search) sẽ sử dụng thủ tục tìm kiếm sâu hạn chế như thủ tục con:
Procedure Depth_deepening_search;
Begin
For d:=0 to max do
Depth_limited_search(d);
If thành công then exit;
End;
3.3. Nhận xét.
» Tin mới nhất:
» Các tin khác: