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.
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TPHCM KHOA CÔNG NGHỆ THÔNG TIN ***** ĐỒ Á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 HEURISTIC GVHD: VÕ ĐÌNH BẢY GROUP: ZERO SVTH: ĐẶNG THÀNH PHÁT VĂN THÁI NHỰT DUY ĐINH THẾ THUẬN Tháng 06 – Năm 2016 1311060941 – 13DTH06 1311060502 – 13DTH06 1311061197– 13DTH06 Đồ án môn học: Trí Tuệ Nhân Tạo MỤC LỤC Tổng quan giải thuật tìm kiếm Heuristic: 1.1 Heuristic: 1.2 Chức Heuristic: .3 1.3 Ưu điểm thuật giải Heuristic: 1.4 Phương pháp xây dựng thuật giải Heuristic: 1.5 Tìm kiếm kinh nghiệm (Heuristic Search) : 1.6 Ví dụ: 1.6.1 Trò chơi Tic-tac-toe: 1.6.2 Bài toán hành trình ngắn nhất, ứng dụng nguyên lý Greedy: 1.6.3 Bài toán phân việc, ứng dụng nguyên lý thứ tự: .8 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 (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 khứ 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 thuật giải A*: 23 2.7.2 Bàn luận A*: .33 2.7.3 Ứng dụng A* để giải toán Ta-canh: 36 Các chiến lược tìm kiếm lai: .36 Tổng kết 39 4.1 Tóm tắt nội dung: 39 4.2 Phần làm thiếu sót: 40 4.2.1 Làm được: .40 4.2.2 Thiếu sót: .40 Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo Tổng quan giải thuật tìm kiếm Heuristic: Trong ngành khoa học máy tính giải thuật tìm kiếm thuật toán lấy đầu vào toán trả kết lời giải cho toán đó, thường sau cân nhắc loạt lời giải Hầu hết thuật toán nghiên cứu nhà khoa học máy tính để giải toán thuật toán tìm kiếm tập hợp tất lời giải toán gọi không gian tìm kiếm thuật toán thử sai (brute-force search) hay thuật toán tìm kiếm "sơ đẳng" thông tin sử dụng phương pháp đơn giản trực quan đó, thuật toán tìm kiếm có thông tin sử dụng heuristics để áp dụng tri thức cấu trúc 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 1.1 Heuristic: George Polya định nghĩa heuristic “sự nghiên cứu phương pháp qui tắc việc khám phá phát minh” (Polya 1945) nghĩa xuất phát từ gốc Hy Lạp động từ eurisco nghĩa “tôi phát hiện” Trong tìm kiếm không gian trạng thái, heuristic luật dùng để chọn nhánh có nhiều khả dẫn đến giải pháp chấp nhận - Heuristic đoán chứa thông tin bước chọn dùng việc giải vấn đề - Heuristic tri thức rút từ kinh nghiệm, “trực giác” người - Heuristic tri thức sai Vì heuristic sử dụng thông tin hạn chế nên chúng có khả đoán trước xác cách hành xử không gian trạng thái giai đoạn xa 1.2 Chức Heuristic: Các chương trình giải vấn đề trí tuệ nhân tạo sử dụng Heuristic theo hai dạng: Vấn đề giải pháp xác điều không rõ ràng diễn đạt vấn đề liệu có sẵn Vấn đề có giải pháp xác, chi phí tính toán để tìm không cho phép 1.3 Ưu điểm thuật giải Heuristic: Thuật giải Heuristic thể cách giải toán với đặc tính sau: - Thường tìm lời giải tốt (Nhưng không lời giải tốt nhất) - Giải toán theo thuật giải Heuristic thường dễ dàng nhanh chóng đưa kết so với giải thuật tối ưu, chi phí thấp - Thuật giải Heuristic thường thể tự nhiên, gần gũi với cách suy nghĩ hành động người Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo 1.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 thuật toán để sử dụng tìm kiếm không gian trạng thái Có nhiều để xây dựng thuật giải Heuristic, người ta thường dựa số nguyên lý sau: - Nguyên lý vét cạn thông minh: Trong toán tìm kiếm đó, không gian tìm kiếm lớn, ta thường tìm cách giới hạn lại không gian tìm kiếm thực kiểu dò tìm đặc biệt dựa vào đặc thù toán để nhanh chóng tìm 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) toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bước (Hay giai đoạn) trình tìm kiếm lời giải - Nguyên lý thứ tự: thực hành động dựa cấu trúc thứ tự hợp lý không gian khảo sát nhằm nhanh chóng đạ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 tìm kiếm gọi chung kỹ thuật tìm kiếm kinh nghiệm (heuristic search) Các giai đoạn để giải vấn đề tìm kiếm kinh nghiệm sau: Tìm biểu diễn thích hợp mô tả trạng thái toán tử vấn đề Xây dựng hàm đánh giá Thiết kế chiến lược chọn trạng thái để phát triển bước 1.6 Ví dụ: 1.6.1 Trò chơi Tic-tac-toe: Xét trò chơi Tic-tac-toe, nước chín nước có tám khả đặt quân cờ đến lượt nước lại có bảy khả đặt quân cờ cho nước tiếp tục Một phân tích đơn giản cho biết số lượng trạng thái cần xem xét cho trình x x x x = 9! Áp dụng nhận xét trực quan nhỏ dựa theo tính chất đối xứng cấu hình bàn cờ : thực tế có ba nước cho quân cờ đầu tiên: ô cạnh, ô góc ô • Giảm số lượng đường xảy không gian xuống đến tổng số 12 x 7! Nó nhỏ không gian ban đầu phát triển theo hàm giai thừa Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo Hình – Không gian trạng thái toán Tic-tac-toe thu giảm tính đối xứng Tuy nhiên, heuristic đơn giản loại bỏ việc tìm kiếm toàn bộ: heuristic “nước thắng nhất”, nghĩa chọn vị trí đặt quân cờ mà có nhiều đường thắng giao trường hợp trạng thái có số lượng nhau, chọn trạng thái Hình - Heuristic “nước thắng nhất” Sau nước đầu tiên, đối thủ chọn hai nước tương đương dù chọn nước nào, heuristic áp dụng cho bước trình tìm kiếm tiếp Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo tục, bước đánh giá nút mà không yêu cầu tìm kiếm hết không gian Hình – Không gian trạng thái thu giảm 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 hành trình cho người giao hàng qua n điểm khác nhau, điểm qua lần trở điểm xuất phát cho tổng chiều dài đoạn đường cần ngắn Giả sử có đường nối trực tiếp từ hai điểm Tư tưởng thuật giải sau: • Từ điểm khởi đầu, ta liệt kê tất quãng đường từ điểm xuất phát n đại lý chọn theo đường ngắn • Khi đến đại lý, chọn đến đại lý theo nguyên tắc Nghĩa liệt kê tất đường từ đại lý ta đứng đến đại lý chưa đến Chọn đường ngắn Lặp lại trình lúc không đại lý để Theo nguyên lý Greedy, ta lấy tiêu chuẩn hành trình ngắn toán làm tiêu chuẩn cho chọn lựa cục ta hy vọng rằng, n đoạn đường ngắn cuối ta có Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo hành trình ngắn điều lúc với điều kiện hình thuật giải cho Một hành trình có chiều dài 14 hành trình tối ưu 13 kết thuật giải Heuristic trường hợp lệch đơn vị so với kết tối ưu đó, độ phức tạp thuật giải Heuristic 0(n2) Hình - Giả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 kết không tốt, chí tệ trường hợp hình sau Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo 1.6.3 Bài toán phân việc, ứng dụng nguyên lý thứ tự: Bài toán: Một công ty nhận hợp đồng gia công m chi tiết máy J 1, J2,… Jm Công ty có n máy gia công P1, P2,… Pn Mọi chi tiết gia công máy gia công chi tiết máy, công việc tiếp tục lúc hoàn thành, bị cắt ngang để gia công việc J máy ta cần dùng thời gian tương ứng t1 nhiệm vụ công ty phải gia công xong toàn n chi tiết thời gian sớm Chúng ta xét toán trường hợp có máy P1, P2, P3 công việc với thời gian t1=2, t2=5, t3=8, t4=1, t5=5, t6=1 ta có phương án phân công (L) hình sau: Thuật giải Heuristic đơn giản (độ phức tạp O(n)) : • Sắp xếp công việc theo thứ tự giảm dần thời gian gia công • Lần lượt xếp việc theo thứ tự vào máy dư nhiều thời gian Với tư tưởng vậy, ta có phương án L* sau: Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo Rõ ràng phương án L* vừa thực phương án tối ưu trường hợp thời gian hoàn thành 8, thời gian công việc J Ta hy vọng giải Heuristic đơn giản thuật giải tối ưu tiếc thay, ta dễ dàng đưa trường hợp mà thuật giải Heuristic không đưa kết tối ưu Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang Đồ án môn học: Trí Tuệ Nhân Tạo Các kỹ thuật tìm kiếm Heuristic: 2.1 Hàm đánh giá: 2.1.1 Định nghĩa: • Với trạng thái u xác định giá trị h(u), số đánh giá “sự gần đích” trạng thái u Hàm h(u) gọi hàm đánh giá 2.1.2 Ý nghĩa: • Trong tìm kiếm kinh nghiệm, hàm đánh giá đóng vai trò quan trọng xây dựng hàm đánh giá cho ta đánh giá trạng thái tìm kiếm hiệu hàm đánh giá không xác, dẫn ta chệch hướng, việc tìm kiếm hiệu 2.1.3 Ví dụ: Ví dụ toán số Chúng ta đưa hai cách xây dựng hàm đánh giá: - Hàm h1: Với trạng thái u h 1(u) số quân trạng thái đầu không nằm vị trí so với trạng thái đích Các quân không nằm so với vị trí trạng thái đích là: 3, 8, 6, Do ta có h1(u) = Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 10 Đồ án môn học: Trí Tuệ Nhân Tạo Trong tập OPEN, nút Sibiu nút có giá trị f’ nhỏ nên ta chọn Tmax = Sibiu ta lấy Sibiu khỏi OPEN đưa vào CLOSE OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad) (Zerind,g= 75,h’= 374,f’= 449,Cha= Arad)} CLOSE = {(Arad,g= 0,h’= 0,f’= 0) (Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)} Từ Sibiu đến thành phố : Arad, Fagaras, Oradea, Rimnicu ta tính giá trị g, h’, f’ cho nút h’(Arad) = 366 g(Arad) = g(Sibiu)+cost(Sibiu,Arad) = 140+140= 280 f’(Arad) = g(Arad)+h’(Arad) = 280+366 = 646 h’(Fagaras) = 178 g(Fagaras) = g(Sibiu)+cost(Sibiu, Fagaras) = 140+99= 239 f’(Fagaras) = g(Fagaras)+ h’(Fagaras) = 239+178= 417 h’(Oradea) = 380 g(Oradea) = g(Sibiu)+cost(Sibiu, Oradea) = 140+151 = 291 f’(Oradea) = g(Oradea)+ h’(Oradea) = 291+380 = 671 Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 26 Đồ án môn học: Trí Tuệ Nhân Tạo h’(R.Vilcea) = 193 g(R.Vilcea) = g(Sibiu)+cost(Sibiu, R.Vilcea) = 140+80 = 220 f’(R.Vilcea) = g(R.Vilcea)+ h’(R.Vilcea) = 220+193 = 413 Nút Arad có CLOSE Tuy nhiên, g(Arad) tạo (có giá trị 280) lớn g(Arad) lưu CLOSE (có giá trị 0) nên ta không cập nhật lại giá trị g f’ Arad lưu CLOSE nút lại : Fagaras, Oradea, Rimnicu OPEN CLOSE nên ta đưa nút vào OPEN, đặt cha chúng Sibiu vậy, đến bước OPEN chứa tổng cộng thành phố OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad) (Zerind,g= 75,h’= 374,f’= 449,Cha= Arad) (Fagaras,g= 239,h’= 178,f’= 417,Cha= Sibiu) (Oradea,g= 291,h’= 380,f’= 617,Cha= Sibiu) (R.Vilcea,g= 220,h’= 193,f’= 413,Cha= Sibiu)} CLOSE = {(Arad,g= 0,h’= 0,f’= 0) (Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad)} Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 27 Đồ án môn học: Trí Tuệ Nhân Tạo Trong tập OPEN, nút R.Vilcea nút có giá trị f’ nhỏ ta chọn Tmax = R.Vilcea chuyển R.Vilcea từ OPEN sang CLOSE từ R.Vilcea đến thành phố Craiova, Pitesti Sibiu ta tính giá trị f’, g h’ thành phố h’(Sibiu) = 253 g(Sibiu) = g(R.Vilcea)+ cost(R.Vilcea,Sibiu) = 220+80= 300 f’(Sibiu) = g(Sibiu)+h’(Sibiu) = 300+253 = 553 h’(Craiova) = 160 g(Craiova) = g(R.Vilcea)+ cost(R.Vilcea, Craiova) = 220+146= 366 f’(Craiova) = g(Fagaras)+h’(Fagaras) = 366+160= 526 h’(Pitesti) = 98 g(Pitesti) = g(R.Vilcea)+ cost(R.Vilcea, Pitesti) = 220+97 = 317 f’(Pitesti) = g(Oradea)+h’(Oradea) = 317+98 = 415 Sibiu có tập CLOSE Tuy nhiên, g’(Sibiu) (có giá trị 553) lớn g’(Sibiu) (có giá trị 393) nên ta không cập nhật lại giá trị Sibiu lưu CLOSE Còn lại thành phố Pitesti Craiova OPEN CLOSE nên ta đưa vào OPEN đặt cha chúng R.Vilcea Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 28 Đồ án môn học: Trí Tuệ Nhân Tạo OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad) (Zerind,g= 75,h’= 374,f’= 178,f’= 417,Cha= Sibiu) 449,Cha= Arad) (Fagaras,g= 239,h’= (Oradea,g= 291,h’= 380,f’= 617,Cha= Sibiu) (Craiova,g= 366,h’= 160,f’= 526,Cha= R.Vilcea) (Pitesti,g= 317,h’= 98,f’= 415,Cha= R.Vilcea) } CLOSE = {(Arad,g= 0,h’= 0,f’= 0) (Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad) (R.Vilcea,g= 220,h’= 193,f’= 413,Cha= Sibiu) } Đến đây, tập OPEN, nút tốt Pitesti, từ Pitesti ta đến R.Vilcea, Bucharest Craiova Lấy Pitesti khỏi OPEN đặt vào CLOSE Thực tương tự trên, ta không cập nhật giá trị f’, g R.Vilcea Craiova lưu CLOSE Sau tính toán f’, g Bucharest, ta đưa Bucharest vào tập OPEN, đặt Cha(Bucharest) = Pitesti h’(Bucharest) = g(Bucharest) = g(Pitesti)+cost(Pitesti, Bucharest) Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 29 Đồ án môn học: Trí Tuệ Nhân Tạo = 317+100= 418 f’(Bucharest) = g(Fagaras)+h’(Fagaras) = 417+0= 417 Ở bước kế tiếp, ta chọn Tmax = Bucharest thuật toán kết thúc (thực bước này, có hai ứng cử viên Bucharest Fagaras có f’ = 417 , Bucharest đích nên ta ưu tiên chọn hơn) Để xây dựng lại đường từ Arad đến Bucharest ta lần theo giá trị Cha lưu trữ kèm với f’, g h’ lúc đến Arad Cha(Bucharest) = Pitesti Cha(R.Vilcea) = Sibiu Cha(Sibiu) = Arad Vậy đường ngắn từ Arad đến Bucharest Arad, Sibiu, R.Vilcea, Pitesti, Bucharest Trong ví dụ minh họa này, hàm h’ có chất lượng tốt cấu trúc đồ thị đơn giản nên ta gần thẳng đến đích mà phải khảo sát đường khác Đây trường hợp đơn giản, trường hợp này, thuật giải có dáng dấp tìm kiếm chiều sâu Đến đây, để minh họa trường hợp phức tạp thuật giải ta thử sửa đổi lại cấu trúc đồ thị quan sát hoạt động thuật giải Giả sử ta có thêm thành phố tạm gọi TP đường Sibiu TP có chiều dài 100, đường TP Pitesti có chiều dài 60 Và khoảng cách đường chim bay từ TP đến Bucharest 174 Như rõ ràng, đường tối ưu đến Bucharest không Arad, Sibiu, R.Vilcea, Pitesti, Bucharest mà Arad, Sibiu, TP, Pitesti, Bucharest Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 30 Đồ án môn học: Trí Tuệ Nhân Tạo Trong trường hợp này, tiến hành bước sau thực hiện bước (mở rộng Sibiu), có tìm kiếm hình sau lưu ý có thêm nhánh TP R.Vilcea có giá trị f’ thấp nên ta mở rộng R.Vilcea trường hợp Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 31 Đồ án môn học: Trí Tuệ Nhân Tạo Bước trường hợp đơn giản mở rộng Pitesti để có kết nhiên, trường hợp này, TP có giá trị f’ thấp đó, ta chọn mở rộng TP Từ TP ta có hướng đi, quay lại Sibiu đến Pitesti Để nhanh chóng, ta không tính toán giá trị Sibiu biết lớn giá trị lưu trữ CLOSE (vì ngược lại) h’(Pitesti) = 98 g(Pitesti) = g(TP)+cost(TP, Pitesti) = 240+75= 315 f’(Pitesti) = g(TP)+h’(Pitesti) = 315+98= 413 Pistestti xuất tập OPEN g’(Pitesti) (có giá trị 315) thấp g’(Pitesti) cũ (có giá trị 317) nên ta phải cập nhật lại giá trị f’,g, Cha Pitesti lưu OPEN Sau cập nhật xong, tập OPEN CLOSE sau : OPEN = {(Timisoara,g= 118,h’= 329,f’= 447,Cha= Arad) (Zerind,g= 75,h’= 374,f’= 449,Cha= Arad) (Fagaras,g= 239,h’= 178,f’= 417,Cha= Sibiu) (Oradea,g= 291,h’= 380,f’= 617,Cha= Sibiu) (Craiova,g= 366,h’= 160,f’= 526,Cha= R.Vilcea) (Pitesti,g= 315,h’= 98,f’= 413,Cha= TP) } CLOSE = {(Arad,g= 0,h’= 0,f’= 0) (Sibiu,g= 140,h’= 253,f’= 393,Cha= Arad) (R.Vilcea,g= 220,h’= 193,f’= 413,Cha= Sibiu) } Đến ta thấy rằng, ban đầu thuật giải chọn đường đến Pitesti qua R.Vilcea Tuy nhiên, sau đó, thuật giải phát đường đến Pitesti qua TP tốt nên sử dụng đường Bước sau, chọn mở rộng Pitesti bình thường lần ngược theo thuộc tính Cha, ta có đường tối ưu Arad, Sibiu, TP, Pitesti, Bucharest Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 32 Đồ án môn học: Trí Tuệ Nhân Tạo 2.7.2 Bàn luận A*: Đến đây, có lẽ bạn hiểu thuật giải ta có vài nhận xét thú vị A* vai trò g việc giúp lựa chọn đường cho khả lựa chọn trạng thái để mở rộng tiếp theo, không dựa việc trạng thái tốt (thể giá trị h’) mà sở đường từ trạng thái khởi đầu đến trạng thái tốt Điều hữu ích ta không quan tâm việc tìm lời giải hay không mà quan tâm đến hiệu đường dẫn đến lời giải Chẳng hạn toán tìm đường ngắn hai điểm bên cạnh việc tìm đường hai điểm, ta phải tìm đường ngắn nhiên, ta quan tâm đến việc tìm lời giải (mà không quan tâm đến hiệu đường đến lời giải), đặt g=0 trạng thái Điều giúp ta chọn theo trạng thái gần với trạng thái kết thúc (vì lúc f’ phụ thuộc vào h’ hàm ước lượng "khoảng cách" gần để tới đích) Lúc thuật giải có dáng dấp tìm kiếm chiều sâu theo nguyên lý hướng đích kết hợp với lần ngược Ngược lại, ta muốn tìm kết với số bước (đạt trạng thái đích với số trạng thái trung gian nhất), ta đặt giá trị để từ trạng thái đến trạng thái số, thường Nghĩa đặt cost(T i-1, Ti) = (và dùng hàm ước lượng h’ bình thường) Còn ngược lại, muốn tìm chi phí rẻ ta phải đặt giá trị hàm cost xác (phản ánh ghi phí thực sự) Đến đây, bạn đọc bắt đầu cảm nhận thuật giải A* không hoàn toàn thuật giải tối ưu tuyệt đối nói hơn, A* thuật giải linh động cho nhiều tùy chọn tùy theo toán mà ta có thông số thích hợp cho A* để thuật giải hoạt động hiệu Điểm quan tâm thứ hai giá trị h’ – ước lượng khoảng cách (chi phí) từ trạng thái đến trạng thái đích h’ h (đánh giá tuyệt đối xác) A* mạch từ trạng thái đầu đến trạng thái kết thúc mà không cần phải thực thao tác đổi hướng nào! Dĩ nhiên, thực tế, chẳng ta tìm thấy đánh giá tuyệt đối xác nhiên, điều đáng quan tâm h’ ước lượng gần với h, trình tìm kiếm bị sai sót, bị rẽ vào nhánh cụt hay nói ngắn gọn nhanh chóng tìm thấy lời giải Nếu h’ trạng thái (trở thuật giải AT) trình tìm kiếm điều khiển hoàn toàn giá trị g Nghĩa thuật giải chọn theo hướng mà tốn chi phí/bước (chi phí tính từ trạng thái đến trạng thái xét) bất chấp việc theo hướng có khả dẫn đến lời giải hay không Đây hình ảnh nguyên lý tham lam (Greedy) Nếu chi phí từ trạng thái sang trạng thái khác số (dĩ nhiên lúc h’ 0) thuật giải A* trở thành thuật giải tìm kiếm theo chiều rộng! Lý tất trạng Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 33 Đồ án môn học: Trí Tuệ Nhân Tạo thái cách trạng thái khởi đầu n bước có giá trị g có f’ giá trị nhỏ tất trạng thái cách trạng thái khởi đầu n+1 bước g h’ 0, trạng thái xét tương đương ta chọn trạng thái ngẫu nhiên! Còn h’ tuyệt đối xác (nghĩa không h) không ? Có điều thú vị cách xử lý trình tìm kiếm hay không ? Câu trả lời có cách đó, ta chắn rằng, ước lượng h’ nhỏ h (đối với trạng thái) thuật giải A* thường tìm đường tối ưu (xác định g) để đến đích, đường dẫn tồn trình tìm kiếm bị sa lầy vào đường dở lý đó, ước lượng h’ lại lớn h thuật giải dễ dàng bị vướng vào hướng tìm kiếm vô ích Thậm chí lại có khuynh hướng tìm kiếm hướng vô ích trước! Điều thấy cách dễ dàng từ vài ví dụ Xét trường hợp trình bày hình sau giả sử tất cung có giá trị G trạng thái đích khởi đầu, OPEN chứa A, sau A mở rộng nên B, C, D đưa vào OPEN (hình vẽ mô tả trạng thái bước sau đó, B E mở rộng) Đối với nút, số giá trị h’, số g Trong ví dụ này, nút B có f’ thấp = h’+g = + , mở rộng trước tiên Giả sử có nút E h’(E) = 3, E A hai cung nên g(E) = suy f’(E) = 5, giống f’(C) Ta chọn mở rộng E Giả sử có F h’(F) Rõ ràng di chuyển xuống không phát triển rộng Nhưng f’(F) = lớn f’(D) Do đó, mở rộng C đạt đến trạng thái đích Như vậy, ta thấy đánh giá thấp h(B) nên ta lãng phí số bước (E,F), cuối ta phát B khác xa với điều ta mong đợi quay lại để thử đường dẫn khác Hình 12: h’ đánh giá thấp h Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 34 Đồ án môn học: Trí Tuệ Nhân Tạo Bây xét trường hợp hình mở rộng B bước E bước thứ hai Kế tiếp F cuối G, cho đường dẫn kết thúc có độ dài giả sử có đường dẫn trực tiếp từ D đến lời giải có độ dài h thực không tìm đường dẫn (tuy ta tìm thấy lời giải) Bởi việc đánh giá cao h’(D), làm cho D trông dở mà ta phải tìm đường khác – đến lời giải tệ - mà không nghĩ đến việc mở rộng D Nói chung, h’ đánh giá cao h A* tìm đường dẫn tối ưu đến lời giải (nếu có nhiều đường dẫn đến lời giải) Một câu hỏi thú vị "Liệu có nguyên tắc chung giúp đưa cách ước lượng h’ không đánh giá cao h hay không?" Câu trả lời "hầu không", hầu hết vấn đề thực ta h Tuy nhiên, cách để bảo đảm h’ không đánh giá cao h đặt h’ 0! Hình 13: h’ đánh giá cao h Đến kết thúc việc bàn luận thuật giải A*, thuật giải linh động, tổng quát, hàm chứa tìm kiếm chiều sâu, tìm kiếm chiều rộng nguyên lý Heuristic khác mà người ta thường nói, A* thuật giải tiêu biểu cho Heuristic A* linh động gặp khuyết điểm – giống chiến lược tìm kiếm chiều rộng – tốn nhiều nhớ để lưu lại trạng thái qua – muốn chắn tìm thấy lời giải tối ưu với không gian tìm kiếm lớn nhỏ điểm đáng quan tâm nhiên, với không gian tìm kiếm khổng lồ (chẳng hạn tìm đường ma trận kích thước cỡ 10 x 106) không gian lưu trữ vấn đề hóc búa nhà nghiên cứu đưa nhiều hướng tiếp cận lai để giải vấn đề Chúng ta tìm hiểu số phương án quan trọng nhất, ta cần phải nắm rõ vị trí A* so với thuật giải khác Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 35 Đồ án môn học: Trí Tuệ Nhân Tạo 2.7.3 Ứng dụng A* để giải toán Ta-canh: Bài toán Ta-canh trò chơi phổ biến, đôi lúc người ta gọi toán 9-puzzle trò chơi bao gồm hình vuông kích thước 3x3 ô Có ô có số, ô có số từ đến Một ô trống lần di chuyển di chuyển ô nằm cạnh ô trống phía ô trống vấn đề từ trạng thái ban đầu bất kỳ, đưa trạng thái cuối trạng thái mà ô từ đến theo thứ tự từ trái sang phải, từ xuống dưới, ô cuối dùng ô trống Cho đến nay, ngoại trừ giải pháp vét cạn tìm kiếm Heuristic, người ta chưa tìm thuật toán xác, tối ưu để giải toán Tuy nhiên, cách giải theo thuật giải A * lại đơn giản thường tìm lời giải (nhưng lúc tìm lời giải) Nhận xét rằng: Tại thời điểm ta có tối đa ô di chuyển vấn đề thời điểm đó, ta chọn lựa di chuyển ô nào? Chẳng hạn hình trên, ta nên di chuyển (1), (2), (6), hay (7) ? Bài toán hoàn toàn có cấu trúc thích hợp để giải A* (tổng số trạng thái có bàn cờ n 2! với n kích thước bàn cờ trạng thái hoán vị tập n số) Tại trạng thái xét Tk, đặt d(i,j)là số ô cần di chuyển để đưa số ô (i,j) vị trí trạng thái đích Hàm ước lượng h’ trạng thái Tk tổng d(i,j) cho vị trí (i,j) ô trống Như trạng thái hình ban đầu, hàm f(Tk) có giá trị Fk=2+1+3+1+0+1+2+2=12 Các chiến lược tìm kiếm lai: Chúng ta biết qua kiểu tìm kiếm: leo đèo (LĐ), tìm theo chiều sâu (MC), tìm theo chiều rộng (BR) tìm kiếm BFS bốn kiểu tìm kiếm xem thái cực không gian liên tục bao gồm chiến lược tìm kiếm khác Để giải thích điều rõ hơn, tiện cho nhìn chiến lược tìm kiếm lời giải hai chiều sau: Chiều khả quay lui (R): khả cho phép quay lại để xem xét trạng thái xét đến trước gặp trạng thái tiếp Chiều phạm vi đánh giá (S): số trạng thái xét đến định Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 36 Đồ án môn học: Trí Tuệ Nhân Tạo Hình 14: Tương quan chiến lược leo đèo, quay lui tốt Theo hướng R, thấy leo đèo nằm thái cực (nó không cho phép quay lại trạng thái chưa xét đến), tìm kiếm quay lui BFS thái cực khác (cho phép quay lại tất hướng chưa xét đến) Theo hướng S thấy leo đèo lần ngược nằm thái cực (chỉ tập trung vào phạm vi hẹp tập trạng thái tạo từ trạng thái tại) BFS nằm thái cực khác (trong BF xem xét toàn tập đường có, bao gồm đường tạo tất đường không xét tới trước trước định) Những thái cực trực quan hóa hình vùng in đậm biểu diễn mặt phẳng liên tục chiến lược tìm kiếm mà kết hợp số đặc điểm ba thái cực (leo đèo, chiều sâu, BFS) để có hòa hợp đặc tính tính toán chúng Nếu không đủ nhớ cần thiết để áp dụng thuật toán BFS túy ta kết hợp BFS với tìm theo chiều sâu để giảm bớt yêu cầu nhớ Dĩ nhiên, ta phải trả số lượng trạng thái xét đến bước nhỏ loại kết hợp hình hình này, thuật giải BFS áp dụng đỉnh đồ thị tìm kiếm (biểu diễn vùng tô tậm) tìm kiếm theo chiều sâu áp dụng đáy (biểu diễn tam giác tô nhạt) Đầu tiên ta áp dụng BFS vào trạng thái ban đầu T cách bình thường BFS thi hành lúc đó, số lượng trạng thái lưu trữ chiếm dụng không gian nhớ vượt mức cho phép đến lúc này, ta áp dụng tìm kiếm chiều sâu xuất phát từ trạng thái tốt Tmax OPEN toàn không gian phía "dưới" trạng thái duyệt hết Nếu không tìm thấy kết quả, trạng thái Tmax ghi nhận không dẫn đến kết ta lại chọn trạng thái tốt thứ hai OPEN lại áp dụng tìm kiếm chiều sâu cho cho phần không gian phía "dưới" trạng thái Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 37 Đồ án môn học: Trí Tuệ Nhân Tạo Hình 15: Chiến lược lai BFS-MC đó, BFS áp dụng đỉnh MC đáy Một cách kết hợp khác dùng tìm kiếm chiều sâu đỉnh không gian tìm kiếm BFS dùng đáy áp dụng tìm kiếm chiều sâu gặp trạng thái Tk mà độ sâu (số trạng thái trung gian) vượt ngưỡng d0 điểm này, thay lần ngược trở lại, ta áp dụng kiểu tìm kiếm BFS cho phần không gian phía "dưới" Tk trả giải pháp không tìm thấy Nếu không tìm thấy kết quả, lần ngược trở lại lại dùng BFS đạt độ sâu d tham số d0 chọn cho nhớ dùng cho tìm kiếm BFS không gian "dưới" mức d không vượt số cho trước Rõ ràng ta ta không dễ xác định d (vì nói chung, ta khó đánh giá không gian toán rộng đến mức nào) Tuy nhiên, kiểu kết hợp lại có thuận lợi phần đáy không gian tìm kiếm thường chứa nhiều thông tin "bổ ích" phần đỉnh (Chẳng hạn, tìm đường đến khu trung tâm thành phố, đến gần khu trung tâm – đáy đồ thị – bạn dễ dàng tiến đến trung tâm có nhiều "dấu hiệu" trung tâm xuất xung quanh bạn!) Nghĩa là, tiến phía đáy không gian tìm kiếm, ước lượng h’ thường trở nên xác đó, dễ dẫn ta đến kết Hình 16: Chiến lược lai BFS-MC đó, MC áp dụng đỉnh BFS đáy Còn kiểu kết hợp phức tạp đó, BFS thực cục chiều sâu thực toàn cục ta bắt đầu tìm kiếm theo BFS lượng nhớ xác định M0 dùng hết Tại điểm này, xem tất trạng thái OPEN Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 38 Đồ án môn học: Trí Tuệ Nhân Tạo trạng thái trực tiếp trạng thái ban đầu chuyển giao chúng cho tìm kiếm chiều sâu Tìm kiếm chiều sâu chọn trạng thái tốt trạng thái "bành trướng" dùng BFS, nghĩa chuyển trạng thái chọn cho tìm kiếm BFS cục lượng nhớ M0 lại dùng hết trạng thái OPEN lại tiếp tục xem nút nút "bành trướng" Nếu việc "bành trướng" BFS thất bại ta quay lui lại chọn nút tốt thứ hai tập OPEN trước đó, lại tiếp tục bành trướng BFS Hình 17: Chiến lược lai BFS-MC đó, BFS áp dụng cục chiều sâu áp dụng toàn cục Có cách phối hợp tiếng khác gọi tìm kiếm theo giai đoạn thực sau Thay lưu trữ nhớ toàn tìm kiếm sinh BFS, ta giữ lại có triển vọng Khi lượng nhớ M dùng hết, ta đánh dấu tập trạng thái OPEN (những trạng thái có giá trị hàm f thấp nhất) để giữ lại; đường tốt qua trạng thái ghi nhớ tất phần lại bị loại bỏ Quá trình tìm kiếm sau tiếp tục theo BFS lượng nhớ M lại dùng hết Chiến lược xem lai ghép BF leo đèo Trong đó, leo đèo túy loại bỏ tất giữ lại phương án tốt tìm kiếm theo giai đoạn loại bỏ tất giữ lại tập phương án tốt Tổng kết 4.1 Tóm tắt nội dung: Các heuristic việc thiết kế thuật toán để thực tìm kiếm heuristic từ lâu quan tâm chủ yếu công trình nghiên cứu trí tuệ nhân tạo chơi game chứng minh định lý hai ứng dụng lâu đời nhất, hai cần đến heuristic để thu giảm bớt không gian giải pháp kiểm tra hết suy luận sinh lĩnh vực toán nước có bàn cờ vua, tìm kiếm heuristic thường câu trả lời thực tế gần việc tìm kiếm hệ chuyên gia xác nhận mức độ quan trọng heuristic phần thiếu trình giải vấn đề Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 39 Đồ án môn học: Trí Tuệ Nhân Tạo 4.2 Phần làm thiếu sót: 4.2.1 • • • Làm được: Tìm hiểu tổng quan thuật giải Heuristic Các kỹ thuật tìm kiếm Các chiến lược tìm kiếm lai 4.2.2 Thiếu sót: • Bài nhiều thiếu sót ví dụ • Demo chưa sâu Tìm Hiểu Về: “Nghiên cứu giải thuật tìm kiếm heuristic” Trang 40 ... .40 Tìm Hiểu Về: Nghiên cứu giải thuật tìm kiếm heuristic Trang Đồ án môn học: Trí Tuệ Nhân Tạo Tổng quan giải thuật tìm kiếm Heuristic: Trong ngành khoa học máy tính giải thuật tìm kiếm thuật. .. vọng giải Heuristic đơn giản thuật giải tối ưu tiếc thay, ta dễ dàng đưa trường hợp mà thuật giải Heuristic không đưa kết tối ưu Tìm Hiểu Về: Nghiên cứu giải thuật tìm kiếm heuristic Trang Đồ án. .. với giải thuật tối ưu, chi phí thấp - Thuật giải Heuristic thường thể tự nhiên, gần gũi với cách suy nghĩ hành động người Tìm Hiểu Về: Nghiên cứu giải thuật tìm kiếm heuristic Trang Đồ án môn