You are on page 1of 3

TÌM KIẾM CÓ THÔNG TIN HEURISTIC

1 ðặt vấn ñề
ðối với những bài toán tìm kiếm,
m, thuật
thu toán UCS luôn tìm ra lời giải tốii ưu (nếu
(n có). Tuy nhiên,
theo chiến lược tìm kiếm củaa mình UCS cần
c phải duyệt lần lượt qua các trạng ng thái xung quanh
trạng thái ban ñầu (có g nhỏ nhất) trước
trư khi ñến ñược trạng thái ñích. ðiềuu này có ngh
nghĩa là UCS sẽ
duyệt qua nhiều trạng thái (tốn
n không gian lưu trữ
tr cũng như thời gian thựcc thi) trước
trư khi tìm ra
trạng thái ñích. Tìm kiếm UCS do ñóó không hiệu
hi quả.
Tìm kiếm có thông tin heuristic giảải quyết vấn ñề hiệu quả bằng cách thực hiện
n việc
vi tìm kiếm ñối
với những trạng thái gần trạng
ng thái ñích trước.
trư ðể ñánh giá khái niệm “gần”,
n”, tìm kiếm
ki có thông tin
heuristic ñặt ra một hàm heuristic h ñể
ñ chỉ khoảng cách ước lượng từ một trạng ng thái ñến
ñ trạng thái
ñích.
Ví dụ ñối với bài toán tìm ñườngng ñi trong ñồ
ñ thị, một giá trị có thể dùng ñể ướ
ớc lượng ñộ gần của
một trạng thái so với trạng
ng thái ñích là khoảng
kho cách ñoạn thẳng nối hai trạng ng thái (khoảng cách
Euclide). Các giá trị này ñược cho bởi
b các giá trị h ñi kèm với mỗi trạng ng thái trong hình. Khoảng
cách Euclide cũng làà hàm heuristic ñược
ñư sử dụng trong bài toán tìm ñường ng ñi trên bbản ñồ và ñược
gọi là “khoảng cách ñường
ng chim bay”.

Phương pháp ñể xác ñịnh các ác hàm heuristic là nới lỏng ñiều kiện bài toán. Lờ ời giải của bài toán
trong ñiều kiện nới lỏng chính là mộột hàm heuristic của bài toán. Trong ví dụ tìm ñường ñi trên ñồ
thị ở trên, khi di chuyển từ một trạng
ng thái ññến một trạng thái khác, ta ñã nới lỏng
ng ñi
ñiều kiện bài toán
bằng cách cho phép “bay” giữaa hai trạng
tr thái. Vì thế chi phí của ñoạn ñườngng bbằng ñúng khoảng
cách thẳng giữa hai trạng thái. Cách làm tương tự cũng ñược áp dụng ñối vớii bài toán tìm ñường ñi
trên bản ñồ thực.
ðối với bài toán 8-puzzles,, ta có thể
th nới lỏng ñiều kiện bằng cách thay ñổii luật
lu ñẩy số (luật ban
ñầu: chỉ ñược ñẩy 1 số vào ô trống liền kề) theo hai cách như sau:
• Cách 1: ta có thể lấy 1 số ở vịị trí bất kỳ và ñặt vào ô trống. Vớii cách này, ñể
ñ ñưa trạng thái
ban ñầu về trạng thái ñích vớii số
s lần ñẩy bằng ñúng số ô nằm sai vị trí giữaa hai trạng
tr thái.
• Cách 2: ta ñược phép ñẩyy 1 số s bất kỳ sang vị trí bên cạnh mà không cầần ñẩy vào ô trống.
Trong ñiều kiện này, ñể ñẩyy 1 vềv ñúng vị trí, ta cần số bước ñẩy bằng tổng
ng khoảng
kho cách theo
chiều ngang và khoảng cách theo chiềuchi dọc giữa vị trí của ô số trong trạạng thái hiện tại và
trạng thái ñích–khoảng
ng cách Manhattan.
Manhattan Chi phí của lời giải và cũng làà giá trị
tr heuristic trong
trường hợp này là tổng
ng các khoảng
kho cách Manhattan của tất cả các ô số.
Một số ví dụ tính heuristic
ic cho bài toán 8-puzzles:
1
Heuristic số ô sai vị trí:
1 5 1 2 3
h=6
1 2 6 3 4 5 6
Heuristic tổng khoảng cách Manhattan:
7 4 8 7 8
h=0+2+1+2+2+1+0+1=9

Heuristic số ô sai vị trí:


2 8 3 1 2 3
h = ______________________________
2 1 4 8 4
Heuristic tổng khoảng cách Manhattan:
7 6 5 7 6 5
h = ______________________________

Heuristic số ô sai vị trí:


1 3 5 1 2 3
h = ______________________________
3 4 2 4 5 6
Heuristic tổng khoảng cách Manhattan:
7 8 6 7 8
h = ______________________________

2 Các chiến lược tìm kiếm có thông tin heuristic


Các chiến lược tìm kiếm có thông tin heuristic sử dụng tri thức bổ sung dưới dạng các hàm heuristic
nhằm nâng cao hiệu quả tìm kiếm. Hai thuật toán sử dụng tri thức bổ sung là tìm kiếm tốt nhất và
tìm kiếm A*.

2.1 Chin l c tìm kim có thông tin heuristic tt nht (best-first search)
Thuật toán tìm kiếm tốt nhất sử dụng hàng ñợi ưu tiên và hoạt ñộng tương tự UCS ngoại trừ việc
tìm kiếm tốt nhất sử dụng hàm heuristic h(n) làm ñộ ưu tiên. Ví dụ thực hiện tìm kiếm tốt nhất ñối
với bài toán tìm ñường ñi ở trên từ Start ñến Goal.

2
Nhận xét:
o Về số trạng thái phải duyệt của thuật toán:______________________________
o Về ñường ñi tìm ñược: ________________________
o Thuật toán tốt nhất bảo ñảm tìm ra ñường ñi? _________________________
o Lý do: _____________________________________

2.2 Tìm kim A*


Tìm kiếm A* là thuật toán tìm kiếm tối ưu ñối với bài toán tìm ñường ñi có chi phí nhỏ nhất.
Nguyên lý hoạt ñộng của A* tương tự tìm kiếm UCS và tốt nhất nhưng sử dụng ñộ ưu tiên f(n) =
g(n) + h(n). Với hàm heuristic chấp nhận ñược, A* tìm ñược lời giải có chi phí nhỏ nhất (so với tìm
kiếm tốt nhất) và có số trạng thái phải duyệt ít nhất (so với UCS).
ðặt h*(n) là chi phí tối thiểu ñi từ n ñến ñích. Một heuristic h là chấp nhận ñược nếu h(n) ≤ h*(n)
với mọi trạng thái n. Một heuristic chấp nhận ñược ñảm bảo không bao giờ ước tính quá chi phí ñến
ñích.
Với bài toán 8-puzzles, hai heuristic trên là có chấp nhận ñược và tại sao:
- Heuristic số ô sai vị trí:

- Heuristic tổng khoảng cách Manhattan:

Ví dụ thực hiện tìm kiếm tốt nhất ñối với bài toán tìm ñường ñi ở trên từ Start ñến Goal.