Chương 0. Mở đầu 2 1. Tổng quan về Khoa học Trí ruệ nhân tạo 2 2. Lịch sử phát triển của Trí tuệ nhân tạo 5 3. Một số vấn đề Trí tuệ nhân tạo quan tâm 8 4. Các khái niêm cơ bản 10 Chương 1. Biểu diễn bài toán trong không gian trạng thái 12 1. Đặt vấn đề 12 2. Mô tả trạng thái 12 3. Toán tử chuyển trạng thái 14 4. Không gian trạng thái của bài toán 17 5. Biểu diễn không gian trạng thái dưới dạng đồ thị 18 6. Bài tập 21 Chương 2. Các phương pháp tìm kiếm lời giải trong không gian trạng thái 23 1. Phương pháp tìm kiếm theo chiều rộng 23 2. Phương pháp tìm kiếm theo chiều sâu 30 3. Phương pháp tìm kiếm sâu dần 34 4. Phương pháp tìm kiếm tốt nhất đầu tiên 36 5. Tìm kiếm đường đi có giá thành cực tiểu - Thuật toán AT 39 6. Tìm kiếm cực tiểu sử dụng hàm đánh giá - Thuật toán A* 43 7. Phương pháp tìm kiếm leo đồi 46 8. Phương pháp sinh và thử 49 9. Phương pháp thoả mãn ràng buộc 51 10. Cài đặt một số giải thuật. 53 11. Bài tập 72 Chương 3 Phân rã bài toán – Tìm kiếm lời giải trên đồ thị Và/Hoặc 90 1. Đặt vấn đề 90 2. Đồ thị Và/Hoặc 92 3. Các phương pháp tìm kiếm lời giải trên đồ thị Và/Hoặc 94 4. Cây tìm kiếm và các đấu thủ 104 Chương 4. Biểu diễn bài toán bằng logic và các phương pháp chứng minh 107 1. Biểu diễn vấn đề hờ logic hình thức 108 2. Một số giải thuật chứng minh 130 3. Ví dụ và bài tập 138 Chương 5. Tri thức và các phương pháp suy diễn 148 1. Tri thức và dữ liệu 148 2. Các dạng mô tả tri thức 149 3. Suy diễn trên luật sản xuất 152
Chương PHÂN RÃ BÀI TỐN - TÌM KIẾM LỜI GIẢI TRÊN ĐỒ THỊ VÀ/ HOẶC Đặt vấn đề Trong chương 2, nghiên cứu việc biểu diễn tốn thơng qua trạng thái tốn tử Khi việc tìm lời giải tốn quy việc tìm đường khơng gian trạng thái Trong chương nghiên cứu phương pháp luận khác để giải vấn đề, dựa việc quy vấn đề vấn đề Ý tưởng chủ yếu xuất phát từ toán ban đầu, tách toán con, q trình tiếp tục tốn gặp toán sơ cấp (bài tốn có lời giải ngay) Ví dụ Xét tốn tính tích phân ∫ x(ln x + x )dx Thơng thường để tính tích phân bất định, thường sử dụng quy tắc tính tích phân: tích phân tổng, quy tắc tích phân phần hay phép biến đổi v.v… để đưa tích phân cần tính tích phân hàm số sơ cấp mà biết cách tính Đối với tích phân trên, áp dụng quy tắc tích phân tổng ta đưa hai tích phân ∫xlnxdx tích phân ∫x3dx Áp dụng quy tắc tích phân phần ta đưa tích phân ∫xlnx tích phân ∫xdx Q trình biểu diễn đồ thị Hình ∫x(lnx+x2)dx ∫x3dx ∫xlnxdx ∫xdx Hình 90 Trong tốn tích phân, tích phân trạng thái kết thúc Ví dụ Bài tốn tìm đường đồ giao thơng Bài toán phát biểu toán tìm đương khơng gian trạng thái, trạng thái ứng với thành phố, toán tử ứng với đường, nối thành phố với thành phố khác Bây ta đưa cách bểu diễn khác dựa việc quy vấn đề vấn đề Xét đồ giao thông thành phố Hình A C D F E I H G B K Hình Giả sử ta cần tìm đường từ thành phố A đến thành phố B Có sơng chảy qua hai thành phố E G có cầu qua sơng thành phố Như đường từ A đến B phải qua E G Khi tốn tìm đường từ A đến B quy hai tốn: 1) Bài tốn tìm đường từ A đến B qua E 2) Bài tốn tìm đường từ A đến B qua G Mỗi toán lại phân nhỏ sau: 1) Bài tốn tìm đường từ A đến B qua E quy về: 1.1 Tìm đường từ A đến E 1.2 Tìm đường từ E đến B 91 2) Bài tốn tịm đường từ A đến B qua G quy về: 2.1 Tìm đường từ A đến G 2.2 Tìm đường từ G đến B Tổng quát, từ toán P ta đưa trường hợp: - Đưa P toán tương đương: P1, P2, , Pk - Đưa P toán con: P1, P2, , Pk Phương pháp phân chia toán ban đầu gặp lập trình truyền thống với cách gọi “chia để trị” , “Modul hoá” Đồ thị VÀ/HOẶC: Không gian trạng thái mô tả việc quy vấn đề vấn đề biểu diễn dạng đồ thị định hướng đặc biệt gọi đồ thị và/hoặc Đồ thị xây dựng sau: Mỗi toán ứng với đỉnh đồ thị Nếu có tốn tử quy tốn tốn tương đương có cung từ toán xuất phát đến toán tương đương Nếu tốn tử quy tốn tốn có cung nối từ toán xuất phát đến toán con, ngồi cung có đường nới với Chẳng hạn, giả sử toán A đưa hai táon tương đương A1 A2 Bài toán A1 lại quy hai tốn B1 B2, ta có biểu diễn hình A A1 B1 A2 B2 Hình 92 Một cách hình thức ta định nghĩa đồ thị và/hoặc sau: Đồ thị G = (V, E) gọi đồ thị VÀ/HOẶC ∀n ∈ V , T(n) toán n (n gọi đỉnh VÀ) tập toán tương đương với n (n gọi đỉnh HOẶC) Cách biểu diễn sau: n n1 n2 nk n gọi đỉnh HOẶC (n⇔ n1 ⇔ ⇔ nk ) n n1 n2 nk n gọi đỉnh VÀ (n⇔ n1∩ ∩ nk ) Khi để giải tốn n ta phải tìm đồ thị G có gốc đỉnh xuất phát n cho đỉnh đồ thị đưa toán sơ cấp (đỉnh kết thúc) Nhận xét: Gọi VA: tập đỉnh VÀ VO: tập đỉnh HOẶC • Nếu VA= ∅ ⇒ tìm lời giải đồ thị biểu diễn khơng gian trạng thái Khi đó: - Bài tốn n gọi giải nếu: + n đỉnh kết thúc + T(n)={n1, n2, , nk} n đỉnh HOẶC ⇒ ∃i ∈ (1 k ) cho ni giải được, ngược lại ni giải ∀i = k - Bài toán n gọi không giải nếu: 93 + n đỉnh n đỉnh kết thúc + T(n)={n1, n2, , nk}và n đỉnh HOẶC ⇒ ∃i ∈ (1 k ) cho nj không giải được, ngược lại ni không giải ∀i = k • Để tìm lời giải toán phân rã đồ thị VÀ/HOẶC khơng phải tìm đường mà phải tìm đồ thị gọi đồ thị lời giải (hay lời giải) Cây lời giải đồ thị G’ G thoả: - Đỉnh gốc (xuất phát) n0 ∈ V ' - ∀n ∈ V ' , n giải • Ta có tương quan: Phân rã toán Bài toán Chuyển toán thành toán Bài toán sơ cấp Các toán phụ Các toán độc lập Giải toán Đồ thị VÀ/HOẶC Đỉnh Cung Đỉnh cuối Đỉnh VÀ Đỉnh HOẶC Tìm đồ thị lời giải tốn Các phương pháp tìm kiếm lời giải đồ thị và/hoặc Sau lựa chọn mô tả toán toán tử quy toán tốn con, ta xây dựng đồ thị Và/hoặc để giải toán ban đầu chứng tỏ tính khơng giải Cũng đồ thị khơng gian trạng thái, đồ thị và/hoặc cho dạng tường minh không tường minh sở tốn tử xây dựng Các phương pháp tìm kiếm đồ thị và/hoặc khác chủ yếu phương pháp lựa chọn xếp đỉnh trước tháo chúng Tương tự không gian trạng thái, ta cung có phương pháp sau: - Tìm kiếm theo chiều rộng 94 - Tìm kiếm theo chiều sâu - Tìm kiếm lời giải có giá nhỏ Các trình khác hẳn với trình lựa chọn không gian trạng thái Sự khác biệt chủ yếu việc kiểm tra tính kết thúc trình tìm kiếm phương pháp xếp lựa chọn đỉnh để xét phức tạp nhiều Thay cho việc tìm kiếm đỉnh thoả mãn điều kện đích, phải tiến hành tìm kiếm đồ thị lời giải Do đó, thời điểm định, ta phải kiểm tra xem đỉnh đầu có giải hay khơng, đỉnh đầu giải kết thúc cơng việc, trường hợp ngược lại tiếp tục xét nút Nếu đỉnh xét đỉnh kết thúc đỉnh lá, tức đỉnh không giải Lúc phải kiểm tra đỉnh đàu có phải khơng giải hay khơng, dừng, ngược lại, tiếp tục tìm kiếm Trước tìm kiếm lời giải đồ thị VÀ/HOẶC, xây dựng hàm kiểm tra đỉnh n thời điểm xét có giải hay không giải không? Function giaiduoc(n):boolean; Begin If then giaiduoc:=true else if T(n)null then if T(n)⊂VA then giaiduoc = and ( giaiduoc (m)) m∈T ( n ) else giaiduoc = or ( giaiduoc (m)) m∈T ( n ) else giaiduoc:=false; 95 End; Function khonggd(n):boolean; Begin If T(n)null then if T(n)⊂VA then khonggd = or (khonggd ( m)) m∈T ( n ) else khonggd = and (khonggd (m)) m∈T ( n ) else if then khonggd:=true else khonggd:=false; End; 3.1 Phương pháp tìm kiếm chiều rộng: Procedure TKR; Begin Push(n0, MO); While MOnull begin n:=pop(MO); push(DONG, n); if T(n)null then for m ∈ T (n) begin push(m, MO); 96 if T(m)=null then if giaiduoc(m) then if giaiduoc(n0) then exit else for k∈MO if giaiduoc(k) then MO:=MO-[k] Else If khonggd(m) then If khonggd(n0) then Exit Else For k∈MO if khonggd(k) then MO:=MO-[k] end; end; write(‘Khong ket luan’); End; • Nhận xét: Nếu tồn lời giải thủ tục tìm kiếm rộng dừng cho kết lời giải có độ cao nhỏ Ví dụ Xét đồ thị Hình A B E* C F G D H* I 97 J M* K L* N O* Hình Các đỉnh kết thúc đỉnh đánh dấu * Quá trình tìm kiếm lời giải đị thị phương pháp tìm kiếm rộng trình bày bảng sau n T(n) MO A BCD CDF DFG FGI GIJ IJ Dừng A B, C, D B E*, F C G D H*, I F J G K0 I L* Cây lời giải Hình DONG A AB ABC ABCD ABCDF ABCDFG A D H* I L* Hình 3.2 Tìm kiếm theo chiều sâu: Hồn tồn tương tự tìm kiếm theo chiều rộng, khác thứ tự lấy đỉnh danh sách MO xét Ở MO truy xuất theo ngun tắc LIFO Ví dụ Xét đồ thị Hình A 98 B D H* I* C E J* F* K* G L* M* Hình Quá trình tìm theo chiều sâu tiến hành sau: n T(n) MO DONG A A B, C BC C F* , G BG G L*, M* : giải ⇒ A giải Cây lời giải Hình A C F* G L* M* Hình 99 3.3 Tìm kiếm lời giải cực tiểu: Cây G=(V, E) biểu diễn phân rã toán gốc n0 Ứng với phép chuyển toán n sang toán v tốn chi phí c(u,v) R+ c: E (u,v) c(u,v) Vấn đề đặt tìm lời giải có tổng chi phí bé Đối với không gian trạng thái, ta sử dụng hàm đánh giá để thứ tự nút MO trước xử lý hàm h(n) giá đường tối ưu từ đỉnh n→DICH Trong VÀ/HOẶC khái niệm giá tối ưu lời giải với gốc đỉnh n cho Đối với đỉnh n∈V, giá n tính phụ thuộc vào quy ước chọn giá chung đồ thị Có loại giá: giá cực đại (max) giá tổng cộng (∑) Định nghĩa giá tối ưu lời giải có gốc n sau: - Nếu n đỉnh kết thúc h(n) = - Nếu n đỉnh kết thúc n đỉnh có tập T(n) = {n1, .,nk} khác rỗng h(n) = min(c(n,ni)+h(ni)) - Nếu n đỉnh kết thúc n đỉnh có tập T(n) = {n1, .,nk} khác rỗng : k + Đối với giá tổng cộng h(n) = ∑ (c( n, n i ) + h(n i )) + Đối với giá cực đại h(n) = ΜΑΧ (c (n, n i ) + h(n i )) i =1 - h(n) không xác định đỉnh không giải 100 Tương tự không gian trạng thái ta xác đinh ước lượng h h đỉnh đỉnh không giải Cây lời giải xây dựng trình mở rộng lựa chọn, thời điểm nút thuộc ba dạng sau: - Các đỉnh kết thúc - Các đỉnh đỉnh kết thúc - Các đỉnh chưa xử lý Trong tìm kiếm, bước chứa tập có gốc n cho chúng trở thành phần lời giải đầy đủ (cũng giống đường từ đỉnh n0 đến đỉnh danh sách MO giải thuật tìm kiếm đồ thị biểu diễn tốn khơng gian trạng thái ) Ta gọi lời giải tiềm tàng gốc n Như tốn tìm kiếm lời giải cực tiểu đưa hai toán con: Bài toán Xác định ước lượng h0(n) 1) n đỉnh - Nếu n đỉnh kết túc h0(n) = - Nếu n khơng phải đỉnh kết thúc h0(n) khơng xác đinh (có thể gán giá trị ∞ ) - Nếu n chưa xử lý h0(n) nhận giá trị ước lưọng dựa thông tin tốn (thưịng tham khảo ý kiến chun gia) 2) n đỉnh lá, T(n) = {n1,…,nk} - Nếu n đỉnh Hoặc h0(n) = min(c(n,ni)+h(ni)) - Nếu n đỉnh Và k - Đối với giá tổng cộng h (n) = ∑ (c (n, ni ) + h (n i )) i =1 101 - Đối với giá cực đại h0(n) = Max(c(n,ni)+h0(ni)) Bài toán Xây dựng lời giải tiềm tàng G’ mơ tả q trình chuyển tốn n0 toán n Gọi G’ = (V’, E’) đồ thị G với tập đỉnh V” xác định sau: - n0 ∈ V’ - Với n ∈ V’ có đỉnh n1,…, nk Nếu n đỉnh chọn đỉnh ni vào V’ cho c(n,ni) + h0(ni) nhỏ khonggd(ni) = false Nếu n đỉnh chọn tất đỉnh n i vào V’ khonggd(ni) = false với i Thuật toán Input: Cây G = (V,E) với gốc n0 Giá trị ước lương ban đầu h0 Tập đỉnh kết thúc c: E R+ laọi chi phí (tổng cơng cực đại) Output: Cây lời giải tối ưu Method: push(MO,n0); while MO null begin Xây dựng tiềm tàng G’; n:= pop(MO ∩Lá(G’); Push(DONG,n); 102 if n đỉnh kết thúc then begin if giaiduoc(n0) then exit; { Cây lời giải G’} for k ∈MO if giaiduoc(k) then MO := MO - {k}; end else if T(n) null then for m ∈ T(n) begin push(MO,m); Tính lại h0(m) end else if khonggd(n) then begin if khonggd(n0) then exit; for k ∈ MO if khonggd(k) then MO:= MO - {k}; 103 for m ∈ DONG Tính lại h0(m) end; writeln(‘khong co loi giai’); end; Cây tìm kiếm đấu thủ Trong nhiều trị chơi máy tính sinh ứng với nước đấu thủ Đặc thù loại trò chơi chúng thể sụ luân phiên hai đấu thủ Việc chọn nước cho đấu thủ tương ứng với việc tìm kiếm Để định lựa chọn được, người ta phải nhớ nhiều tình tốn Tuy nhiên khơng thể lưu trữ q nhiều thông tin không xử lý tất trạng thái toán Do người ta dùng chiến thuật phù hợp, định tập tình hạn chế 4.1 Thủ tục minimax Xét trò chơi với hai đấu thủ Max Min, Max tìm cách làm cực đại giá trị hàm ước lượng thông qua việc xác định gá trị hàm ước lượng nước chọn nước tương ứng với giá trị lớn nhất, đối thủ Min tìm cách làm cực tiểu giá trị ước lượng Diễn đạt theo ngôn ngữ đồ thị Và/Hoặc, Mỗi đỉnh tương ứng với nước Max, giá trị đỉnh lấy giá trị cực đại giá trị đỉnh đỉnh quy ước gọi đỉnh Hoặc Một đỉnh tương ứng với nước Min lấy giá trị cực tiểu số giá trị đỉnh đỉnh quy ước gọi đỉnh loại Và Ví dụ Trị chơi caro bảng ô vuông Đấu thủ Max đặt dấu X, đấu thủ Min đặt dấu O Ta xét ước lượng c(p) cờ p sau: 104 c(p) = (số dòng, số cột, số đường chéo mở đới với Max) – (số dòng, số cột, số đường chéo mở min) Giả sử ta hạn chế kích thước 3x3 nước đi, đấu thủ tính trước hai nước Nếu đấu thủ Max trước độc giả kiểm tra, nước Max là: X 4.2 Thủ tục Alpha – Beta Các giá trị ước lượng phát sinh tương ứng với đỉnh Và, Hoặc gọi α-giá trị β-giá trị tương ứng Thủ tục alpha-beta nút gốc với giá trị alpha -∞ beta +∞ Thủ tục alpha-beta gọi đệ quy với dãy số alpha beta Để thực tìm kiếm minimax thủ tục alpha – beta, có bước sau: 1) Nếu mức gốc, lấy giá trị alpha -∞ gia trị beta +∞ 2) Nếu đến bước kết thúc tìm kiếm, tính giá trị hàm ước lượng vị trí cho đấu thủ tương ứng Cho kết 3) Nếu mức ứng với đấu thủ min: i) Cho đến nút kiểm tra thủ tục alpha – beta alpha >= beta, thực bước sau: + Dùng thủ tục alpha – beta với giá trị alpha – beta có nút Ghi lại giá trị thủ tục đưa + So sánh giá trị thu với beta, giá trị thu nhỏ beta cho beta nhận giá trị ii) Cho giá trị beta 4) Ngược lại, mức ứng với đấu thủ beta, thực hiện: 105 i) Cho đến nút kiểm tra thủ tục alpha – beta alpha >= beta, thực bước sau: + Dùng thủ tục alpha – beta với giá trị alpha – beta có nút Ghi lại giá trị thủ tục đưa + So sánh giá trị thu với alpha, giá trị thu lớn alpha cho alpha nhận giá trị ii) Cho giá trị alpha 106 ... DONG A A B, C BC C F* , G BG G L*, M* : giải ⇒ A giải Cây lời giải Hình A C F* G L* M* Hình 99 3. 3 Tìm kiếm lời giải cực tiểu: Cây G=(V, E) biểu diễn phân rã toán gốc n0 Ứng với phép chuyển toán... đường chéo mở đới với Max) – (số dòng, số cột, số đường chéo mở min) Giả sử ta hạn chế kích thước 3x3 nước đi, đấu thủ tính trước hai nước Nếu đấu thủ Max trước độc giả kiểm tra, nước Max là: X 4.2... gia trị beta +∞ 2) Nếu đến bước kết thúc tìm kiếm, tính giá trị hàm ước lượng vị trí cho đấu thủ tương ứng Cho kết 3) Nếu mức ứng với đấu thủ min: i) Cho đến nút kiểm tra thủ tục alpha – beta alpha