Giáo trìnhTríTuệNhân Tạo - Đinh Mạnh Tờng. Chơng II Các chiến lợc tìmkiếmkinhnghiệm ------------------------------------------ Trong chơng I, chúng ta đã nghiên cứu việc biểu diễn vấn đề trong không gian trạng thái và các kỹ thuật tìmkiếm mù. Các kỹ thuật tìmkiếm mù rất kém hiệu quả và trong nhiều trờng hợp không thể áp dụng đợc. Trong chơng này, chúng ta sẽ nghiên cứu các phơng pháp tìmkiếmkinhnghiệm (tìm kiếm heuristic), đó là các phơng pháp sử dụng hàm đánh giá để hớng dẫn sự tìm kiếm. 2.1 Hàm đánh giá và tìmkiếmkinh nghiệm: Trong nhiều vấn đề, ta có thể sử dụng kinh nghiệm, tri thức của chúng ta về vấn đề để đánh giá các trạng thái của vấn đề. Với mỗi trạng thái u, chúng ta sẽ xác định một giá trị số h(u), số này đánh giá sự gần đích của trạng thái u. Hàm h(u) đợc gọi là hàm đánh giá. Chúng ta sẽ sử dụng hàm đánh giá để hớng dẫn sự tìm kiếm. Trong quá trìnhtìm kiếm, tại mỗi bớc ta sẽ chọn trạng thái để phát triển là trạng thái có giá trị hàm đánh giá nhỏ nhất, trạng thái này đợc xem là trạng thái có nhiều hứa hẹn nhất hớng tới đích. Các kỹ thuật tìmkiếm sử dụng hàm đánh giá để hớng dẫn sự tìmkiếm đợc gọi chung là các kỹ thuật tìmkiếmkinhnghiệm (heuristic search). Các giai đoạn cơ bản để giải quyết vấn đề bằng tìmkiếmkinhnghiệ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. Hàm đánh giá Trong tìmkiếmkinh nghiệm, hàm đánh giá đóng vai trò cực kỳ quan trọng. Chúng ta có xây dựng đợc hàm đánh giá cho ta sự đánh giá đúng các trạng thái thì tìmkiếm mới hiệu quả. Nếu hàm đánh giá không chính xác, nó có thể dẫn ta đi chệch hớng và do đó tìmkiếm kém hiệu quả. Hàm đánh giá đợc xây dựng tùy thuộc vào vấn đề. Sau đây là một số ví dụ về hàm đánh giá: Chơng 2 - Trang 1 Giáo trìnhTríTuệNhân Tạo - Đinh Mạnh Tờng. Trong bài toán tìmkiếm đờng đi trên bản đồ giao thông, ta có thể lấy độ dài của đờng chim bay từ một thành phố tới một thành phố đích làm giá trị của hàm đánh giá. 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 h 1 : Với mỗi trạng thái u thì h 1 (u) là số quân không nằm đúng vị trí của nó trong trạng thái đích. Chẳng hạn trạng thái đích ở bên phải hình 2.1, và u là trạng thái ở bên trái hình 2.1, thì h 1 (u) = 4, vì các quân không đúng vị trí là 3, 8, 6 và 1. Hàm h 2 : h 2 (u) là tổng khoảng cách giữa vị trí của 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 đợc hiểu là số ít nhất các dịch chuyển theo hàng hoặc cột để đa một quân tới vị trí của nó trong trạng thái đích. Chẳng hạn với trạng thái u và trạng thái đích nh trong hình 2.1, ta có: h 2 (u) = 2 + 3 + 1 + 3 = 9 Vì quân 3 cần ít nhất 2 dịch chuyển, quân 8 cần ít nhất 3 dịch chuyển, quân 6 cần ít nhất 1 dịch chuyển và quân 1 cần ít nhất 3 dịch chuyển. Hai chiến lợc tìmkiếmkinhnghiệm quan trọng nhất là tìmkiếm tốt nhất - đầu tiên (best-first search) và tìmkiếm leo đồi (hill-climbing search). Có thể xác định các chiến lợc này nh sau: Tìmkiếm tốt nhất đầu tiên = Tìmkiếm theo bề rộng + Hàm đánh giá Tìmkiếm leo đồi = Tìmkiếm theo độ sâu + Hàm đánh giá Chúng ta sẽ lần lợt nghiên cứu các kỹ thuật tìmkiếm này trong các mục sau. 2.2 Tìmkiếm tốt nhất - đầu tiên: Tìmkiếm tốt nhất - đầu tiên (best-first search) là tìmkiếm theo bề rộng đợc hớng dẫn bởi hàm đánh giá. Nhng nó khác với tìmkiếm theo bề rộng ở chỗ, trong tìmkiếm theo bề rộng ta lần lợt phát triển tất cả các đỉnh ở mức hiện tại để sinh ra các đỉnh ở mức tiếp theo, còn trong tìmkiếm tốt nhất - đầu tiên ta chọn đỉnh để phát triển là đỉnh tốt nhất đợc xác định bởi hàm đánh giá Chơng 2 - Trang 2 Giáo trìnhTríTuệNhân Tạo - Đinh Mạnh Tờng. (tức là đỉnh có giá trị hàm đánh giá là nhỏ nhất), đỉnh này có thể ở mức hiện tại hoặc ở các mức trên. Ví dụ: Xét không gian trạng thái đợc biểu diễn bởi đồ thị trong hình 2.2, trong đó trạng thái ban đầu là A, trạng thái kết thúc là B. Giá trị của hàm đánh giá là các số ghi cạnh mỗi đỉnh. Quá trìnhtìmkiếm tốt nhất - đầu tiên diễn ra nh sau: Đầu tiên phát triển đỉnh A sinh ra các đỉnh kề là C, D và E. Trong ba đỉnh này, đỉnh D có giá trị hàm đánh giá nhỏ nhất, nó đợc chọn để phát triển và sinh ra F, I. Trong số các đỉnh cha đợc phát triển C, E, F, I thì đỉnh E có giá trị đánh giá nhỏ nhất, nó đợc chọn để phát triển và sinh ra các đỉnh G, K. Trong số các đỉnh cha đợc phát triển thì G tốt nhất, phát triển G sinh ra B, H. Đến đây ta đã đạt tới trạng thái kết thúc. Cây tìmkiếm tốt nhất - đầu tiên đợc biểu diễn trong hình 2.3. Sau đây là thủ tục tìmkiếm tốt nhất - đầu tiên. Trong thủ tục này, chúng ta sử dụng danh sách L để lu các trạng thái chờ phát triển, danh sách đợc sắp Chơng 2 - Trang 3 Giáo trìnhTríTuệNhân Tạo - Đinh Mạnh Tờng. theo thứ tự tăng dần của hàm đánh giá sao cho trạng thái có giá trị hàm đánh giá nhỏ nhất ở đầu danh sách. procedure Best_First_Search ; begin 1. Khởi tạo danh sách L chỉ chứa trạng thái ban đầu ; 2. loop do 2.1 if L rỗng then { thông báo thất bại ; stop}; 2.2 Loại trạng thái u ở đầu danh sách L ; 2.3 if u là trạng thái kết thúc then { thông báo thành công ; stop} 2.4 for mỗi trạng thái v kề u do Xen v vào danh sách L sao cho L đợc sắp theo thứ tự tăng dần của hàm đánh giá ; end; 2.3 Tìmkiếm leo đồi: Tìmkiếm leo đồi (hill-climbing search) là tìmkiếm theo độ sâu đợc h- ớng dẫn bởi hàm đánh giá. Song khác với tìmkiếm theo độ sâu, khi ta phát triển một đỉnh u thì bớc tiếp theo, ta chọn trong số các đỉnh con của u, đỉnh có nhiều hứa hẹn nhất để phát triển, đỉnh này đợc xác định bởi hàm đánh giá. Ví dụ: Ta lại xét đồ thị không gian trạng thái trong hình 2.2. Quá trìnhtìmkiếm leo đồi đợc tiến hành nh sau. Đầu tiên phát triển đỉnh A sinh ra các đỉnh con C, D, E. Trong các đỉnh này chọn D để phát triển, và nó sinh ra các đỉnh con B, G. Quá trìnhtìmkiếm kết thúc. Cây tìmkiếm leo đồi đợc cho trong hình 2.4. Trong thủ tục tìmkiếm leo đồi đợc trình bày dới đây, ngoài danh sách L lu các trạng thái chờ đợc phát triển, chúng ta sử dụng danh sách L 1 để lu giữ Chơng 2 - Trang 4 Giáo trìnhTríTuệNhân Tạo - Đinh Mạnh Tờng. tạm thời các trạng thái kề trạng thái u, khi ta phát triển u. Danh sách L 1 đợc sắp xếp theo thứ tự tăng dần của hàm đánh giá, rồi đợc chuyển vào danh sách L sao trạng thái tốt nhất kề u đứng ở danh sách L. procedure Hill_Climbing_Search ; begin 1. Khởi tạo danh sách L chỉ chứa trạng thái ban đầu ; 2. loop do 2.1 if L rỗng then { thông báo thất bại ; stop}; 2.2 Loại trạng thái u ở đầu danh sách L ; 2.3 if u là trạng thái kết thúc then { thông báo thành công ; stop}; 2.3 for mỗi trạng thái v kề u do đặt v vào L 1 ; 2.5 Sắp xếp L 1 theo thứ tự tăng dần của hàm đánh giá ; 2.6 Chuyển danh sách L 1 vào đầu danh sách L ; end; 2.4 Tìmkiếm beam Tìmkiếm beam (beam search) giống nh tìmkiếm theo bề rộng, nó phát triển các đỉnh ở một mức rồi phát triển các đỉnh ở mức tiếp theo. Tuy nhiên, trong tìmkiếm theo bề rộng, ta phát triển tất cả các đỉnh ở một mức, còn trong tìmkiếm beam, ta hạn chế chỉ phát triển k đỉnh tốt nhất (các đỉnh này đợc xác định bởi hàm đánh giá). Do đó trong tìmkiếm beam, ở bất kỳ mức nào cũng chỉ có nhiều nhất k đỉnh đợc phát triển, trong khi tìmkiếm theo bề rộng, số đỉnh cần phát triển ở mức d là b d (b là nhân tố nhánh). Ví dụ: Chúng ta lại xét đồ thị không gian trạng thái trong hình 2.2. Chọn k = 2. Khi đó cây tìmkiếm beam đợc cho nh hình 2.5. Các đỉnh đợc gạch dới là các đỉnh đợc chọn để phát triển ở mỗi mức. Chơng 2 - Trang 5 . pháp tìm kiếm kinh nghiệm (tìm kiếm heuristic), đó là các phơng pháp sử dụng hàm đánh giá để hớng dẫn sự tìm kiếm. 2.1 Hàm đánh giá và tìm kiếm kinh nghiệm: . Giáo trình Trí Tuệ Nhân Tạo - Đinh Mạnh Tờng. Chơng II Các chiến lợc tìm kiếm kinh nghiệm ------------------------------------------