Trong ngành khoa học máy tính một giải thuật tìm kiếm là một thuật toán lấy đầu vào là một bài toán và trả về kết quả là một lời giải cho bài toán đó, thường là sau khi cân nhắc giữa một loạt các lời giải có thể. Hầu hết các thuật toán được nghiên cứu bởi các nhà khoa học máy tính để giải quyết các bài toán đều là các thuật toán tìm kiếm tập hợp tất cả các lời giải có thể đối với một bài toán được gọi là không gian tìm kiếm thuật toán thử sai (bruteforce search) hay các thuật toán tìm kiếm sơ đẳng không có thông tin sử dụng phương pháp đơn giản nhất và trực quan nhất trong khi đó, các thuật toán tìm kiếm có thông tin sử dụng heuristics để áp dụng các tri thức về cấu trúc của không gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm.
Trang 1ĐỒ ÁN MÔN HỌC TRÍ TUỆ NHÂN TẠO
NGHIÊN CỨU CÁC GIẢI THUẬT TÌM KIẾM
Trang 2MỤC LỤC
1 Tổng quan về giải thuật tìm kiếm Heuristic: 3
1.1 Heuristic: 3
1.2 Chức năng của Heuristic: 3
1.3 Ưu điểm của thuật giải Heuristic: 3
1.4 Phương pháp xây dựng thuật giải Heuristic: 4
1.5 Tìm kiếm kinh nghiệm (Heuristic Search) : 4
1.6 Ví dụ: 4
1.6.1 Trò chơi Tic-tac-toe: 4
1.6.2 Bài toán hành trình ngắn nhất, ứng dụng nguyên lý Greedy: 6
1.6.3 Bài toán phân việc, ứng dụng của nguyên lý thứ tự: 8
2 Các kỹ thuật tìm kiếm Heuristic: 10
2.1 Hàm đánh giá: 10
2.1.1 Định nghĩa: 10
2.1.2 Ý nghĩa: 10
2.1.3 Ví dụ: 10
2.2 Tìm kiếm Beam (Beam Search): 11
2.2.1 Ý tưởng thuật toán: 11
2.2.2 Ví dụ: 11
2.3 Tìm kiếm leo đồi (Hill climbing Search): 13
2.3.1 Leo đồi đơn giản: 13
2.3.2 Leo đồi dốc đứng: 14
2.3.3 Đánh giá: 15
2.4 Tìm kiếm tốt nhất (Best First Search): 17
2.4.1 Tư tưởng: 17
2.4.2 Ví dụ: 17
2.4.3 Thuật giải: 18
2.4.4 So sánh với tìm kiếm leo đồi: 19
2.4.5 Thông tin về quá khứ và tương lai: 19
2.5 Thuật giải AT: 20
2.6 Thuật giải AKT: 20
2.7 Thuật giải A*: 21
2.7.1 Ví dụ minh họa hoạt động của thuật giải A*: 23
2.7.2 Bàn luận về A*: 33
2.7.3 Ứng dụng A* để giải bài toán Ta-canh: 36
3 Các chiến lược tìm kiếm lai: 36
4 Tổng kết 39
4.1 Tóm tắt nội dung: 39
4.2 Phần làm được và thiếu sót: 40
4.2.1 Làm được: 40
4.2.2 Thiếu sót: 40
Trang 31 Tổng quan về giải thuật tìm kiếm Heuristic:
Trong ngành khoa học máy tính một giải thuật tìm kiếm là một thuật toán lấy đầu vào là mộtbài toán và trả về kết quả là một lời giải cho bài toán đó, thường là sau khi cân nhắc giữa mộtloạt các lời giải có thể Hầu hết các thuật toán được nghiên cứu bởi các nhà khoa học máy tính
để giải quyết các bài toán đều là các thuật toán tìm kiếm tập hợp tất cả các lời giải có thể đốivới một bài toán được gọi là không gian tìm kiếm thuật toán thử sai (brute-force search) haycác thuật toán tìm kiếm "sơ đẳng" không có thông tin sử dụng phương pháp đơn giản nhất vàtrực quan nhất trong khi đó, các thuật toán tìm kiếm có thông tin sử dụng heuristics để áp dụngcác tri thức về cấu trúc của không gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìmkiếm
1.1 Heuristic:
George Polya định nghĩa heuristic là “sự nghiên cứu về các phương pháp và các qui tắctrong việc khám phá và phát minh” (Polya 1945) nghĩa này có thể xuất phát từ gốc Hy Lạp củađộng từ eurisco nghĩa là “tôi phát hiện”
Trong tìm kiếm không gian trạng thái, heuristic là các luật dùng để chọn những nhánh nào
có nhiều khả năng nhất dẫn đến một giải pháp chấp nhận được
- Heuristic chỉ là một phỏng đoán chứa các thông tin về bước tiếp theo sẽ được chọn dùngtrong việc giải quyết một vấn đề
- Heuristic là những tri thức được rút ra từ những kinh nghiệm, “trực giác” của con người
- Heuristic có thể là những tri thức đúng hoặc sai
Vì các heuristic sử dụng những thông tin hạn chế nên chúng ít khi có khả năng đoán trướcchính xác cách hành xử của không gian trạng thái ở những giai đoạn xa hơn
1.2 Chức năng của Heuristic:
Các chương trình giải quyết những vấn đề trí tuệ nhân tạo sử dụng Heuristic cơ bản theo haidạng:
1 Vấn đề có thể không có giải pháp chính xác vì những điều không rõ ràng trong diễn đạtvấn đề hoặc trong các dữ liệu có sẵn
2 Vấn đề có thể có giải pháp chính xác, nhưng chi phí tính toán để tìm ra nó không chophép
1.3 Ưu điểm của thuật giải Heuristic:
Thuật giải Heuristic thể hiện cách giải bài toán với các đặc tính sau:
- Thường tìm được lời giải tốt (Nhưng không chắc là lời giải tốt nhất)
- Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa ra kết quảhơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn
- Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hànhđộng con người
Trang 41.4 Phương pháp xây dựng thuật giải Heuristic:
Thuật giải Heuristic gồm hai phần: Hàm đánh giá Heuristic và thuật toán để sử dụng nó trongtìm kiếm không gian trạng thái
Có nhiều các để xây dựng một thuật giải Heuristic, trong đó người ta thường dựa và một sốnguyên lý cơ bản như sau:
- Nguyên lý vét cạn thông minh: Trong một bài toán tìm kiếm nào đó, khi không gian tìmkiếm lớn, ta thường tìm cách giới hạn lại không gian tìm kiếm hoặc thực hiện một kiểu
dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu
- Nguyên lý tham lam (Greedy): lấy tiêu chuẩn tối ưu (Trên phạm vi toàn cục) của bàitoán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng bước (Haytừng giai đoạn) trong quá trình tìm kiếm lời giải
- Nguyên lý thứ tự: thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của khônggian khảo sát nhằm nhanh chóng đạt được một lời giải tốt
1.5 Tìm kiếm kinh nghiệm (Heuristic Search) :
Các kỹ thuật tìm kiếm sử dụng hàm đánh giá để hướng dẫn sự tìm kiếm được gọi chung là các
kỹ thuật tìm kiếm kinh nghiệm (heuristic search) Các giai đoạn cơ bản để giải quyết vấn đềbằng tìm kiếm kinh nghiệm như sau:
1 Tìm biểu diễn thích hợp mô tả các trạng thái và các toán tử của vấn đề
2 Xây dựng hàm đánh giá
3 Thiết kế chiến lược chọn trạng thái để phát triển ở mỗi bước
1.6 Ví dụ:
1.6.1 Trò chơi Tic-tac-toe:
Xét trò chơi Tic-tac-toe, mỗi nước đi trong chín nước đầu tiên đều có tám khả năng đặt quân
cờ kế tiếp và đến lượt mình mỗi nước đi này lại có bảy khả năng đặt quân cờ cho nước đi tiếptục Một phân tích đơn giản cho biết số lượng các trạng thái cần được xem xét cho quá trìnhnày là 9 x 8 x 7 x x 1 = 9!
Áp dụng một nhận xét trực quan nhỏ dựa theo tính chất đối xứng của cấu hình bàn cờ : thực tếchỉ có ba nước đi cho quân cờ đầu tiên: ô cạnh, ô góc hoặc ô giữa
• Giảm số lượng đường đi có thể xảy ra trong không gian đó xuống đến tổng số 12 x 7!
Nó đã nhỏ hơn không gian ban đầu nhưng vẫn phát triển theo hàm giai thừa
Trang 5Hình 1 – Không gian trạng thái bài toán Tic-tac-toe thu giảm bởi tính đối xứng
Tuy nhiên, một heuristic đơn giản có thể loại bỏ việc tìm kiếm hầu như toàn bộ:heuristic “nước đi chắc thắng nhất”, nghĩa là chọn vị trí đặt quân cờ mà có nhiều đường chắcthắng nhất giao nhau trong trường hợp các trạng thái đều có số lượng bằng nhau, chọn trạngthái đầu tiên
Hình 2 - Heuristic “nước đi chắc thắng nhất”
Sau nước đi đầu tiên, đối thủ có thể chọn một trong hai nước đi tương đương nhau dù chọn
Trang 6tục, từng bước đi sẽ đánh giá các con của một nút duy nhất mà không yêu cầu tìm kiếm hết không gian.
Hình 3 – Không gian trạng thái đã được thu giảm bởi heuristic
1.6.2 Bài toán hành trình ngắn nhất, ứng dụng nguyên lý Greedy:
Bài toán: Hãy tìm một hành trình cho một người giao hàng đi qua n điểm khác nhau, mỗi điểm
đi qua một lần và trở về điểm xuất phát sao cho tổng chiều dài đoạn đường cần đi là ngắn nhất.Giả sử rằng có con đường nối trực tiếp từ giữa hai điểm bất kỳ
Tư tưởng của thuật giải như sau:
• Từ điểm khởi đầu, ta liệt kê tất cả quãng đường từ điểm xuất phát cho đến n đại lý rồichọn đi theo con đường ngắn nhất
• Khi đã đi đến một đại lý, chọn đi đến đại lý kế tiếp cũng theo nguyên tắc trên Nghĩa làliệt kê tất cả con đường từ đại lý ta đang đứng đến những đại lý chưa đi đến Chọn conđường ngắn nhất Lặp lại quá trình này cho đến lúc không còn đại lý nào để đi
Theo nguyên lý Greedy, ta lấy tiêu chuẩn hành trình ngắn nhất của bài toán làm tiêu chuẩn cho chọn lựa cục bộ ta hy vọng rằng, khi đi trên n đoạn đường ngắn nhất thì cuối cùng ta sẽ có một
Trang 7hành trình ngắn nhất điều này không phải lúc nào cũng đúng với điều kiện trong hình tiếp theo thì thuật giải cho chúng ta
Một hành trình có chiều dài là 14 trong khi hành trình tối ưu là 13 kết quả của thuật giảiHeuristic trong trường hợp này chỉ lệch 1 đơn vị so với kết quả tối ưu trong khi đó, độ phức tạpcủa thuật giải Heuristic này chỉ là 0(n2)
Hình 4 - Giải bài toán sử dụng nguyên lý Greedy
Tất nhiên, thuật giải theo kiểu Heuristic đôi lúc lại đưa ra kết quả không tốt, thậm chí rất tệ nhưtrường hợp ở hình sau
Trang 81.6.3 Bài toán phân việc, ứng dụng của nguyên lý thứ tự:
Bài toán: Một công ty nhận được hợp đồng gia công m chi tiết máy J1, J2,… Jm Công ty có nmáy gia công lần lượt là P1, P2,… Pn Mọi chi tiết đều có thể được gia công trên bất kỳ máy nàomột khi đã gia công một chi tiết trên một máy, công việc sẽ tiếp tục cho đến lúc hoàn thành,không thể bị cắt ngang để gia công một việc J1 trên một máy bất kỳ ta cần dùng một thời giantương ứng là t1 nhiệm vụ của công ty là phải làm sao gia công xong toàn bộ n chi tiết trong thờigian sớm nhất
Chúng ta xét bài toán trong trường hợp có 3 máy P1, P2, P3 và 6 công việc với thời gian là t1=2,
t2=5, t3=8, t4=1, t5=5, t6=1 ta có một phương án phân công (L) như hình sau:
Thuật giải Heuristic rất đơn giản (độ phức tạp O(n)) :
•Sắp xếp các công việc theo thứ tự giảm dần về thời gian gia công
•Lần lượt sắp xếp các việc theo thứ tự đó vào máy còn dư nhiều thời gian nhất
Với tư tưởng như vậy, ta sẽ có một phương án L* như sau:
Trang 9Rõ ràng phương án L* vừa thực hiện cũng chính là phương án tối ưu của trường hợp này vìthời gian hoàn thành là 8, đúng bằng thời gian của công việc J3 Ta hy vọng rằng một giảiHeuristic đơn giản như vậy sẽ là một thuật giải tối ưu nhưng tiếc thay, ta dễ dàng đưa ra đượcmột trường hợp mà thuật giải Heuristic không đưa ra được kết quả tối ưu.
Trang 102 Các kỹ thuật tìm kiếm Heuristic:
2.1.3 Ví dụ:
Ví dụ bài toán 8 số
Chúng ta có thể đưa ra hai cách xây dựng hàm đánh giá:
- Hàm h1: Với mỗi trạng thái u thì h1(u) là số quân ở trạng thái đầu không nằm đúng vị trí so
với trạng thái đích Các quân không nằm đúng so với vị trí của trạng thái đích là: 3,
8, 6, 1 Do đó ta có h1(u) = 4
Trang 11- Hàm h2: h2(u) là tổng khoảng cách giữa vị trí các quân trong trạng thái u và vị trí của nó
trong trạng thái đích Ở đây khoảng cách là số ít nhất các dịch chuyển theo hànghoặc theo cột để đưa một quân tới vị trí của nó trong trạng thái đích
Trong bài toán 8 ô ở trên thì:
2.2 Tìm kiếm Beam (Beam Search):
2.2.1 Ý tưởng thuật toán:
Đầu tiên chọn trạng thái ban đầu, sau đó phát triển k đỉnh tốt nhất (k được xác định bởi hàmđánh giá) ở một mức rồi phát triển k đỉnh tốt nhất ở mức tiếp theo
Như vậy tìm kiếm bean cũng giống như tìm kiếm theo bề rộng tuy nhiên trong tìm kiếm bean,
ở bất kì mức nào cũng chỉ có k đỉnh được phát triển còn trong tìm kiếm theo bề rộng thì ở mức
Trang 13Ở đây: A -> D -> I -> B có tổng chi phí là 14.
A -> E -> G ->B có tổng chi phí là 12
Vậy đường đi ngắn nhất từ A tới B là: A -> E -> G ->B
2.3 Tìm kiếm leo đồi (Hill climbing Search):
2.3.1 Leo đồi đơn giản:
1 Đặt Tk là một trạng thái tiếp theo hợp lệ của trạng thái hiện hành Ti
2 Đánh giá trạng thái Tk mới :
• Nếu là trạng thái kết thúc thì trả về trị này và thoát
•Nếu không phải là trạng thái kết thúc nhưng tốt hơn trạng thái hiện hành thì cập
WHILE (Better=FALSE) AND (STOP=FALSE) DO BEGIN
IF <không tồn tại trạng thái kế tiếp hợp lệ của Ti> THEN BEGIN
<không tìm được kết quả >; Stop:=TRUE; END;
ELSE BEGIN
Tk := <một trạng thái kế tiếp hợp lệ của Ti>;
IF <h(Tk) tốt hơn h(Ti)> THEN BEGIN
Trang 142.3.2 Leo đồi dốc đứng:
Về cơ bản, leo đồi dốc đứng cũng giống như leo đồi, chỉ khác ở điểm là leo đồi dốc đứng sẽduyệt tất cả các hướng đi có thể và chọn đi theo trạng thái tốt nhất trong số các trạng thái kếtiếp có thể có (trong khi đó leo đồi chỉ chọn đi theo trạng thái kế tiếp đầu tiên tốt hơn trạng tháihiện hành mà nó tìm thấy)
a) Đặt S bằng tập tất cả trạng thái kế tiếp có thể có của Ti và tốt hơn Ti.
b) Xác định Tkmax là trạng thái tốt nhất trong tập S
WHILE <tồn tại trạng thái kế tiếp hợp lệ của Ti> DO BEGIN
Tk := <một trạng thái kế tiếp hợp lệ của Ti>;
IF <h’(Tk) tốt hơn Best> THEN BEGIN Best :=h’(Tk);
Trang 152.3.3 Đánh giá:
• So sánh leo đồi dốc đứng và leo đồi đơn giản
Để chọn ra được hướng đi tốt nhất, leo đồi dốc đứng phải duyệt qua tất cả các hướng
đi có thể có tại trạng thái hiện hành Trong khi đó, leo đồi đơn giản chỉ chọn đi theo
trạng thái đầu tiên tốt hơn (so với trạng thái hiện hành) mà nó tìm ra được
Thời gian cần thiết để leo đồi dốc đứng chọn được một hướng đi sẽ lớn hơn sovới leo đồi đơn giản
Tuy vậy, do lúc nào cũng chọn hướng đi tốt nhất nên leo đồi dốc đứng thường sẽ tìmđến lời giải sau một số bước ít hơn so với leo đồi đơn giản
• Qui tắc đơn giản này có ba nhược điểm nổi tiếng như sau:
Các giá trị cực đại địa phương: một giá trị cực đại địa phương, trái ngược với một
giá trị cực đại toàn cục, là một đỉnh mà thấp hơn đỉnh cao nhất trong không giantrạng thái Khi ở trên một đại lượng cực đại địa phương, giải thuật sẽ dừng lại thậmchí mặc dù giải pháp vẫn còn lâu mới tối ưu
định giá là phẳng tuyệt đối Phép tìm kiếm sẽ thực hiện một bước đi ngẫu nhiên
kiếm đi đến đỉnh của chóp một cách dễ dàng, nhưng đỉnh có thể dốc rất ít về phíamột đỉnh khác Trừ phi ở đó có các toán tử mà di chuyển trực tiếp dọc theo đỉnh củahình chóp, phép tìm kiếm có thể dao động từ bên này qua bên kia, khiến cho sự tiếnchuyển rất ít
Cả hai phương pháp leo núi đơn giản và leo núi dốc đứng đều có khả năng thất bại trongviệc tìm lời giải của bài toán mặc dù lời giải đó thực sự hiện hữu
• Vai trò quyết định của hàm Heuristic trong quá trình tìm kiếm lời giải
Xét bài toán về các khối được trình bày ở hình sau ta có hai thao tác biến đổi là:
+ Lấy một khối ở đỉnh một cột bất kỳ và đặt nó lên một chỗ trống tạo thành một cột mới.Lưu ý là chỉ có thể tạo ra tối đa 2 cột mới
+ Lấy một khối ở đỉnh một cột và đặt nó lên đỉnh một cột khác
Hãy xác định số thao tác ít nhất để biến đổi cột đã cho thành cột kết quả
Trang 16Hình 5 - Trạng thái khởi đầu và trạng thái kết thúc
Giả sử ban đầu ta dùng một hàm Heuristic đơn giản như sau :
H 1 : Cộng 1 điểm cho mỗi khối ở vị trí đúng so với trạng thái đích trừ 1 điểm cho mỗi khối đặt ở vị trí sai so với trạng thái đích
- Trạng thái kết thúc sẽ có giá trị là 8 vì cả 8 khối đều được đặt ở vị trí đúng
- Trạng thái khởi đầu có giá trị là 4 (vì nó có 1 điểm cộng cho các khối C, D, E, F, G, H và
1 điểm trừ cho các khối A và B)
Chỉ có thể có một di chuyển từ trạng thái khởi đầu, đó là dịch chuyển khối A xuống tạothành một cột mới (T1)
- Từ trạng thái mới T1, có ba di chuyển có thể thực hiện dẫn đến ba trạng thái Ta, Tb, Tc
được minh họa trong hình dưới Những trạng thái này có số điểm là : h’(Ta)= 4; h’(Tb)
= 4 và h’(Tc) = 4
-T 1 T A T B T C
Hình 6 - Các trạng thái có thể đạt được từ T 1
Trang 17 Thủ tục leo núi sẽ tạm dừng bởi vì tất cả các trạng thái này có số điểm thấp hơn trạngthái hiện hành Quá trình tìm kiếm chỉ dừng lại ở một trạng thái cực đại địa phương màkhông phải là cực đại toàn cục
H 2 : Đối với mỗi khối phụ trợ đúng (khối phụ trợ là khối nằm bên dưới khối hiện tại),
cộng 1 điểm, ngược lại trừ 1 điểm
- Trạng thái kết thúc có số điểm là 28
- Trạng thái khởi đầu có số điểm là –28
- Việc di chuyển A xuống tạo thành một cột mới làm sinh ra một trạng thái với số điểm làh’(T1) = –21 vì A không còn 7 khối sai phía dưới nó nữa Ba trạng thái có thể phát sinh
tiếp theo bây giờ có các điểm số là : h’(Ta)=–28; h’(Tb)=–16 và h’(Tc) = –15
Lúc này thủ tục leo núi dốc đứng sẽ chọn di chuyến đến trạng thái Tc, ở đó có một khốiđúng
• Hiệu quả của cả hai thuật giải leo đồi đơn giản và leo đồi dốc đứng phụ thuộc vào : + Chất lượng của hàm Heuristic
+ Đặc điểm của không gian trạng thái
+ Trạng thái khởi đầu
Sau đây, chúng ta sẽ tìm hiểu một tiếp cận theo mới, kết hợp được sức mạnh của cả tìm kiếmchiều sâu và tìm kiếm chiều rộng một thuật giải rất linh động và có thể nói là một thuật giảikinh điển của Heuristic
2.4 Tìm kiếm tốt nhất (Best First Search):
2.4.1 Tư tưởng:
Tại mỗi bước của tìm kiếm BFS, chọn đi theo TT có khả năng cao nhất trong số các TT
đã được xét cho đến thời điểm đó
=> Ưu tiên đi vào những nhánh tìm kiếm có khả năng nhất (giống tìm kiếm leo đồi dốc
đứng)
Nếu phát hiện ra hướng đang đi càng đi thì càng tệ, đến mức xấu hơn cả những hướng
mà chưa đi
=> Không đi tiếp hướng hiện tại nữa mà chọn đi theo một hướng tốt nhất trong số những
hướng chưa đi
2.4.2 Ví dụ:
Để hiểu được tư tưởng này bạn hãy xem ví dụ sau:
Trang 18Hình 7 - Minh họa thuật giải Best-First Search
- Khởi đầu, chỉ có một nút (trạng thái) A nên nó sẽ được mở rộng tạo ra 3 nút mới B,C và
Để cài đặt các thuật giải theo kiểu tìm kiếm BFS, người ta thường cần dùng 2 tập hợp sau:
OPEN: tập chứa các trạng thái đã được sinh ra nhưng chưa được xét đến (vì ta đã chọn một
trạng thái khác) Thực ra, OPEN là một loại hàng đợi ưu tiên (priority queue) mà trong đó,
phần tử có độ ưu tiên cao nhất là phần tử tốt nhất người ta thường cài đặt hàng đợi ưu tiên bằngHeap các bạn có thể tham khảo thêm trong các tài liệu về Cấu trúc dữ liệu về loại dữ liệu này
CLOSE: tập chứa các trạng thái đã được xét đến chúng ta cần lưu trữ những trạng thái này
trong bộ nhớ để đề phòng trường hợp khi một trạng thái mới được tạo ra lại trùng với một trạngthái mà ta đã xét đến trước đó trong trường hợp không gian tìm kiếm có dạng cây thì không cầndùng tập này
1 Đặt OPEN chứa trạng thái khởi đầu
2 Cho đến khi tìm được trạng thái đích hoặc không còn nút nào trong OPEN, thực hiện:
Trang 19a) Chọn trạng thái tốt nhất (Tmax) trong OPEN (và xóa Tmaxkhỏi OPEN)
b) Nếu Tmax là trạng thái kết thúc thì thoát
c) Ngược lại, tạo ra các trạng thái kế tiếp Tk có thể có từ trạng thái Tmax Đối vớimỗi trạng thái kế tiếp Tk thực hiện :
Tính f(Tk); Thêm Tk vào OPEN
2.4.4 So sánh với tìm kiếm leo đồi:
Tìm kiếm này rất giống với tìm kiếm leo đồi dốc đứng, với 2 ngoại lệ
• Trong leo núi, một trạng thái được chọn và tất cả các trạng thái khác bị loại bỏ, khôngbao giờ chúng được xem xét lại Cách xử lý dứt khoát này là một đặc trưng của leo đồi.Trong BFS, tại một bước, cũng có một di chuyển được chọn nhưng những cái khác vẫnđược giữ lại, để ta có thể trở lại xét sau đó khi trạng thái hiện tại trở nên kém khả nănghơn những trạng thái đã được lưu trữ
• Hơn nữa, ta chọn trạng thái tốt nhất mà không quan tâm đến nó có tốt hơn hay không
các trạng thái trước đó Điều này tương phản với leo đồi vì leo đồi sẽ dừng nếu không cótrạng thái tiếp theo nào tốt hơn trạng thái hiện hành
2.4.5 Thông tin về quá khứ và tương lai:
Thông thường, trong các phương án tìm kiếm theo kiểu BFS, độ tốt f của một trạng thái được tính dựa theo 2 hai giá trị mà ta gọi là là g và h’
- h’ chúng ta đã biết, đó là một ước lượng về chi phí từ trạng thái hiện hành cho
đến trạng thái đích (thông tin tương lai)
- g là "chiều dài quãng đường" đã đi từ trạng thái ban đầu cho đến trạng thái hiện
tại (thông tin quá khứ)
-Hình 8 - Phân biệt khái niệm g và h’
Trang 20Kết hợp g và h’ thành f’ (f’ = g + h’) sẽ thể hiện một ước lượng về "tổng chi phí" cho
con đường từ trạng thái bắt đầu đến trạng thái kết thúc dọc theo con đường đi qua trạng thái
hiện hành để thuận tiện cho thuật giải, ta quy ước là g và h’ đều không âm và càng nhỏ nghĩa là
càng tốt
2.5 Thuật giải AT:
Thuật giải AT là một phương pháp tìm kiếm theo kiểu BFS với độ tốt của nút là giá trị
hàm g – tổng chiều dài con đường đã đi từ trạng thái bắt đầu đến trạng thái hiện tại
• Thuật giải AT
1 Đặt OPEN chứa trạng thái khởi đầu
2 Cho đến khi tìm được trạng thái đích hoặc không còn nút nào trong OPEN, thực
hiện :
a) Chọn trạng thái (Tmax) có giá trị g nhỏ nhất trong OPEN (và xóa Tmax khỏi OPEN)
b) Nếu Tmax là trạng thái kết thúc thì thoát
c) Ngược lại, tạo ra các trạng thái kế tiếp Tk có thể có từ trạng thái Tmax Đối với mỗi trạng thái kế tiếp Tk thực hiện :
g(Tk) = g(Tmax) + cost(Tmax, Tk);
Thêm Tk vào OPEN
* Vì chỉ sử dụng hàm g (mà không dùng hàm ước lượng h’ để đánh giá độ tốt của một trạng thái nên ta cũng có thể xem AT chỉ là một thuật toán
2.6 Thuật giải AKT:
(Algorithm for Knowledgeable Tree Search)
Thuật giải AKT mở rộng AT bằng cách sử dụng thêm thông tin ước lượng h’ độ tốt của một trạng thái f là tổng của hai hàm g và h’
• Thuật giải AKT
1 Đặt OPEN chứa trạng thái khởi đầu
2 Cho đến khi tìm được trạng thái đích hoặc không còn nút nào trong OPEN,
thực hiện :
a) Chọn trạng thái (Tmax) có giá trị f nhỏ nhất trong OPEN (và xóa Tmax
khỏi OPEN) b) Nếu Tmax là trạng thái kết thúc thì thoát
c) Ngược lại, tạo ra các trạng thái kế tiếp Tk có thể có từ trạng thái Tmax Đối với mỗi trạng thái kế tiếp Tk thực hiện :