Bài giảng Nhập môn trí tuệ nhân tạo: Phần 1 cung cấp cho người học những kiến thức như: Tổng quan về Trí tuệ nhân tạo; Các chiến lược tìm kiếm; Các giải thuật tìm kiếm lời giải cho trò chơi;...Mời các bạn cùng tham khảo!
Trang 1DANH MỤC HÌNH VẼ 4
BẢNG KÝ HIỆU VIẾT TẮT 5
CHƯƠNG 1 TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO 6
1.1 Lịch sử phát triển của TTNT 6
1.1.1 Lịch sử hình thành và phát triển 6
1.1.2 Đối tượng và mục tiêu nghiên cứu của TTNT 8
1.1.3 Những tiền đề cơ bản của TTNT 8
1.2 Khái niệm về TTNT 9
1.2.1 Trí tuệ của con người 9
1.2.2 Trí tuệ nhân tạo 10
1.3 Vai trò của TTNT trong công nghệ thông tin 11
1.4 Các kỹ thuật TTNT 11
1.5 Các thành phần trong hệ thống TTNT 12
1.6 Các lĩnh vực nghiên cứu và ứng dụng cơ bản của TTNT 13
1.6.1 Trò chơi 13
1.6.2 Suy luận và chứng minh định lý tự động 14
1.6.3 Các hệ chuyên gia 15
1.6.4 Hiểu và mô hình hoá ngữ nghĩa ngôn ngữ tự nhiên 17
1.6.5 Mô hình hoá hoạt động của con người 18
1.6.6 Lập kế hoạch và robotics 19
1.6.7 Các ngôn ngữ và môi trường dùng cho TTNT 20
1.6.8 Máy học 21
1.6.9 Xử lý phân tán song song 22
1.7 Những thách thức đối với TTNT 23
CÂU HỎI CHƯƠNG 1 25
CHƯƠNG 2: CÁC CHIẾN LƯỢC TÌM KIẾM 26
2.1 Biểu diễn vấn đề trong không gian trạng thái 26
2.1.1 Không gian trạng thái của bài toán 26
2.1.2 Các ví dụ 27
2.2 Giới thiệu các chiến lược tìm kiếm 32
2.2.1 Các chiến lược tìm kiếm mù 32
2.2.2 Các chiến lược tìm kiếm kinh nghiệm (tìm kiếm heuristic) 33
2.3 Cây tìm kiếm 33
2.4 Các chiến lược tìm kiếm mù 34
2.4.1 Tìm kiếm theo bề rộng 34
2.4.2 Tìm kiếm theo chiều sâu 38
2.4.3 Các trạng thái lặp 43
2.4.4 Tìm kiếm sâu lặp 43
2.4.5.Tìm kiếm trên đồ thị và/hoặc 47
2.5 Các chiến lược tìm kiếm kinh nghiệm 56
2.5.1 Hàm đánh giá và tìm kiếm kinh nghiệm 56
2.5.2 Tìm kiếm tốt nhất đầu tiên 58
2.5.3 Tìm kiếm leo đồi 61
2.6 Các chiến lược tìm kiếm tối ưu 64
2.6.1 Thuật toán A* 66
2.6.2 Thuật toán nhánh_cận 70
2.7 Các giải thuật tìm kiếm lời giải cho trò chơi 74
2.7.1 Cây trò chơi đầy đủ 74
Trang 22.7.2 Giải thuật Minimax 76
2.7.3 Giải thuật Minimax với độ sâu hạn chế 78
2.7.4 Giải thuật Minimax với cắt tỉa Alpha-Beta 80
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2 83
CHƯƠNG 3 LOGIC MỆNH ĐỀ 95
3.1 Biểu diễn tri thức 95
3.2 Cú pháp và ngữ nghĩa của logic mệnh đề 96
3.2.1 Các ký hiệu 96
3.2.2 Các quy tắc xây dựng các công thức 97
3.2.2 Ngữ nghĩa 97
3.3 Dạng chuẩn tắc 99
3.3.1 Sự tương đương của các công thức 99
3.3.2 Dạng chuẩn tắc 100
3.3.3 Các câu Horn 101
3.4 Luật suy diễn 102
3.4 Luật phân giải Thủ tục chứng minh bác bỏ bằng luật phân giải 105
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 3 113
CHƯƠNG 4: LOGIC VỊ TỪ 119
4.1 Cú pháp và ngữ nghĩa của logic vị từ 119
4.1.1 Cú pháp 119
4.1.2 Ngữ nghĩa 121
4.2 Các công thức tương đương 123
4.3 Chuẩn hóa các công thức 124
4.4 Các luật suy diễn 126
4.4.1 Luật thay thế phổ dụng 126
4.4.2 Hợp nhất 126
4.4.3 Luật Modus Ponens tổng quát 127
4.4.4 Luật phân giải tổng quát 128
4.5 Thuật toán hợp nhất 129
4.6 Chứng minh bằng luật phân giải 131
4.7 Các chiến lược phân giải 137
4.7.1 Chiến lược phân giải theo bề rộng 139
4.7.2 Chiến lược phân giải sử dụng tập hỗ trợ 139
4.7.3 Chiến lược tuyến tính 141
4.8 Xây dựng CSTT 141
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4 144
CHƯƠNG 5 BIỂU DIỄN TRI THỨC 148
5.1 Các dạng mô tả tri thức 148
5.1.1 Biểu diễn tri thức bằng logic 148
5.1.2 Biểu diễn tri thức bằng mạng ngữ nghĩa 148
5.1.3 Biểu diễn tri thức bằng khung (Frame) 149
5.1.4 Biểu diễn tri thức bằng các luật nếu - thì 149
5.2 Lập luận tiến 151
5.2.1 Khái niệm 151
5.2.2 Thủ tục lập luận tiến 153
5.3 Lập luận lùi 158
5.3.1 Khái niệm lập luận lùi 158
5.3.2 Thủ tục lập luận lùi 160
Trang 35.4 Lập trình Prolog 166
5.4.1 Giới thiệu ngôn ngữ Prolog 166
5.4.2 Cú pháp Prolog 167
5.4.3 Các kiểu dữ liệu sơ cấp của Prolog 169
5.4.4 Sự kiện và luật trong Prolog 170
5.4.5 Kiểu dữ liệu cấu trúc của Prolog 182
5.4.6 Ngữ nghĩa của chương trình Prolog 184
5.4.7 Các phép toán 190
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5 203
HƯỚNG DẪN GIẢI BÀI TẬP 205
1 Bài tập Chương 2 205
2 Bài tập Chương 3 238
3 Bài tập Chương 4 248
4 Bài tập Chương 5 256
TÀI LIỆU THAM KHẢO 259
Trang 4DANH MỤC HÌNH VẼ
Hình 1.1 Những tiền đề cơ bản của TTNT 9
Hình 2.1 Mô tả không gian trạng thái bằng đồ thị định hướng 27
Hình 2.2 Trò chơi 8 số 28
Hình 2.3 Đồ thị biểu diễn cách rót nước 30
Hình 2.4 Biểu diễn không gian trạng của bài toán Tháp Hà Nội 31
Hình 2.5 Một phần không gian trạng thái của bài toán với n=3 32
Hình 2.6 Đồ thị không gian trạng thái và cây tìm kiếm tương ứng 34
Hình 2.7 Đồ thị không gian trạng thái 36
Hình 2.8 Đồ thị không gian trạng thái 40
Hình 2.9 Đồ thị không gian trạng thái ví dụ 2.13 45
Hình 2.10 Các mức tìm kiếm trong cây tìm kiếm ví dụ 2.13 46
Hình 2.11 Đồ thị không gian trạng thái ví dụ 2.14 46
Hình 2.12 Các mức tìm kiếm trong cây tìm kiếm ví dụ 2.14 47
Hình 2.13 Quy một tích phân về các tích phân cơ bản 48
Hình 2.14 Bản đồ nối các thành phố 48
Hình 2.15 Đồ thị và/hoặc và vấn đề tìm đường đi 49
Hình 2.16 Đồ thị và hoặc biểu diễn toán tử a b, c, d 49
Hình 2.17 Minh họa đồ thị và/hoặc 50
Hình 2.18 Cây nghiệm 51
Hình 2.19 Đồ thị và/ hoặc trong Ví dụ 2.16 54
Hình 2.20 Cây nghiệm trong ví dụ 2.16 55
Hình 2.21 Cây nghiệm trong ví dụ 2.17 56
Hình 2.22 Hai hàm đánh giá trạng thái u 57
Hình 2.23 Đồ thị không gian trạng thái 58
Hình 2.24 Cây tìm kiếm tốt nhất – đầu tiên 59
Hình 2.25 Đồ thị không gian trạng thái 60
Hình 2.26 Một phần đồ thị không gian trạng thái của ví dụ 2.22 61
Hình 2.27 Đồ thị không gian trạng thái 63
Hình 2.28 Đồ thị không gian trạng thái 64
Hình 2.29 Đồ thị không gian trạng thái với hàm đánh giá 66
Hình 2.30 Cây tìm kiếm theo thuật toán A* 67
Hình 2.31 Đồ thị không gian trạng thái 69
Hình 2.32 Cây tìm kiếm nhánh _cận 72
Hình 2.33 Đồ thị không gian trạng thái 73
Trang 5Hình 4.1 Đồ thị phân giải 138
Hình 4.2 Một cây chứng minh từ đồ thị phân giải trong Hình 4.2 139
Hình 4.3 Một cây chứng minh tìm đƣợc theo chiến lƣợc bề rộng 139
Hình 4.4 Đồ thị phân giải theo chiến lƣợc sử dụng tập hỗ trợ 140
Hình 5.1 Biểu diễn tri thức bằng mạng ngữ nghĩa 148
Hình 5.2 Các kiểu dữ liệu trong Prolog 168
Hình 5.3 Cây gia hệ 170
Hình 5.4 Định nghĩa quan hệ chị em gái 176
Hình 5.5 (a) X là tổ tiên trực tiếp của Z, (b) X là tổ tiên gián tiếp của Z 179
Hình 5.6 Các cặp tổ tiên hậu duệ gián tiếp ở các mức khác nhau 180
Hình 5.7 Ngày tháng là một đối tƣợng có cấu trúc 182
Hình 5.8 Mô hình vào/ra của một thủ tục thực hiện một danh sách các đích 189
BẢNG KÝ HIỆU VIẾT TẮT
Trang 6CHƯƠNG 1 TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO 1.1 Lịch sử phát triển của TTNT
kỷ 20 với các sự kiện sau:
Turing được coi là người khai sinh ngành TTNT bởi phát hiện của ông về máy tính
có thể lưu trữ chương trình và dữ liệu Phép thử Turing là một cách để trả lời câu hỏi
„máy tính có biết nghĩ không?‟, được phát biểu dưới dạng một trò chơi Hình dung có
ba người tham gia trò chơi, một người đàn ông (A), một người đàn bà (B) và một người chơi (C) Người chơi ngồi ở một phòng tách biệt với A và B, không biết gì về A
và B (như hai đối tượng ẩn X và Y) và chỉ đặt các câu hỏi cũng như nhận trả lời từ A
và B qua một màn hình máy tính Người chơi cần kết luận trong X và Y ai là đàn ông
ai là đàn bà Trong phép thử này, A luôn tìm cách làm cho C bị nhầm lẫn và B luôn tìm cách giúp C tìm được câu trả lời đúng Phép thử Turing thay A bằng một máy tính,
và bài toán trở thành liệu C có thể phân biệt được trong X và Y đâu là máy tính đâu là người đàn bà Phép thử Turing cho rằng máy tính là thông minh (qua được phép thử) nếu như biết cách làm sao cho C không thể chắc chắn kết luận của mình là đúng Tuy phép thử Turing đến nay vẫn được xem có tầm quan trọng lịch sử và triết học hơn là giá trị thực tế (vì con người vẫn chưa làm được máy hiểu ngôn ngữ và biết lập luận như vậy), ý nghĩa rất lớn của nó nằm ở chỗ đã nhấn mạnh rằng khả năng giao tiếp thành công của máy với con người trong một cuộc đối thoại tự do và không hạn chế là một biểu hiện chính yếu của trí thông minh nhân tạo
Tháng 8/1956 J.Mc Carthy, M Minsky, A Newell, Shannon Simon… đưa ra khái niêm"Trí tuệ nhân tạo”
Vào khoảng năm 1960 tại Đại học MIT (Massachussets Institure of Technology) ngôn ngữ LISP ra đời, phù hợp với các nhu cầu xử lý đặc trưng của TTNT - đó là ngôn ngữ lập trình đầu tiên dùng cho TTNT
Thuật ngữ TTNT được dùng đầu tiên vào năm 1961 cũng tại MIT
Những năm 60 là giai đoạn lạc quan cao độ về khả năng làm cho máy tính biết suy nghĩ Trong giai đoạn này người ta đã được chứng kiến máy chơi cờ đầu tiên và các chương trình chứng minh định lý tự động Cụ thể:
- 1961: Chương trình tính tích phân bất định
Trang 7- 1963: Các chương trình Heuristics: Chương trình chứng minh các định lý hình học không gian có tên là"tương tự”, chương trình chơi cờ của Samuel
- 1964: Chương trình giải phương trình đại số sơ cấp, chương trình trợ giúp ELIZA (có khả năng làm việc giống như một chuyên gia phân tich tâm lý)
- 1966: Chương trình phân tích và tổng hợp tiếng nói
Tuy nhiên, do giới hạn khả năng của các thiết bị, bộ nhớ và đặc biệt là yếu tố thời gian thực hiện nên có sự khó khăn trong việc tổng quát hoá các kết quả cụ thể vào trong một chương trình mềm dẻo thông minh
Vào những năm 70, máy tính với bộ nhớ lớn và tốc độ tính toán nhanh nhưng các phương pháp tiếp cận TTNT cũ vẫn thất bại (do sự bùng nổ tổ hợp trong quá trình tìm kiếm lời giải các bài toán đặt ra) Vào cuối những năm 70 một vài kết quả như xử lý ngôn ngữ tự nhiên, biểu diễn tri thức và giải quyết vấn đề Những kết quả đó đã tạo điều kiện cho sản phẩm thương mại đầu tiên của TTNT ra đời đó là Hệ chuyên gia, được đem áp dụng trong các lĩnh vực khác nhau (Hệ chuyên gia là một phần mềm máy tính chứa các thông tin và tri thức về một lĩnh vực cụ thể nào đó, có khả năng giải quyết những yêu cầu của người sử dụng trong một mức độ nào đó, ở một trình độ như một chuyên gia con người có kinh nghiệm khá lâu năm) Một sự kiện quan trọng vào những năm 70 là sự ra đời ngôn ngữ Prolog, tương tự LISP nhưng nó có cơ sở dữ liệu
đi kèm
Vào những năm 80, thị trường các sản phẩm dân dụng đã có khá nhiều sản phẩm ở trình độ cao như: máy giặt, máy ảnh sử dụng TTNT Các hệ thống nhận dạng và xử
lý ảnh, tiếng nói
Những năm 90, các nghiên cứu nhằm vào cài đặt thành phần thông minh trong các
hệ thống thông tin, gọi chung là cài đặt TTNT, làm rõ hơn các ngành của khoa học TTNT và tiến hành các nghiên cứu mới, đặc biệt là nghiên cứu về cơ chế suy lý, về TTNT phân tạo, về các mô hình tương tác
Hiện nay, nhiều lĩnh vực mới của TTNT đã ra đời và tiến triển sôi động theo sự thay đổi của môi trường tính toán và tiến bộ khoa học Chẳng hạn sự xuất hiện của những
hệ dữ liệu lớn với quan hệ phức tạp như dữ liệu Web, dữ liệu sinh học, thư viện điện tử… đã là động lực ra đời các ngành khai phá dữ liệu, Web ngữ nghĩa, tìm kiếm thông tin trên Web Thêm nữa, TTNT đã thâm nhập từ các khoa học vi mô như góp phần giải các bài toán của sinh học phân tử (tin-sinh học) đến các khoa học vĩ mô như nghiên cứu vũ trụ, rồi cả khoa học xã hội và kinh tế như phát hiện các cộng đồng mạng trong
xã hội hay phân tích các nhóm hành vi Trong các thành công của TTNT giai đoạn này
có sự kiện máy tính thông minh tranh tài với các kỳ thủ cờ vua, và đặc biệt máy tính
Trang 8Deep Blue của IBM với trí tuệ nhân tạo đã đánh bại nhà vô địch cờ vua thế giới Garry Kasparov vào năm 1997, và cuối năm 2006 máy tính Deep Fritz lại đánh bại nhà vô địch Kramnik
Một lĩnh vực tiêu biểu của TTNT trong giai đoạn này là các tác nhân thông minh Tác nhân (agent), theo nghĩa chung nhất, là một thực thể có khả năng hành động để thực hiện những nhiệm vụ được giao Một người đưa hàng, một luật sư hay một điệp viên là những tác nhân Một robot cứu người sau động đất hay một robot hút bụi trong nhà là những tác tử Một chương trình được cài trên máy tính để lọc thư rác hay một chương trình luôn xục xạo trên Internet để tìm những thông tin mới về một chủ đề là những tác tử tác nhân thông minh là những tác nhân biết hành động với các phẩm chất của trí thông minh, tiêu biểu là biết nhận thức môi trường xung quanh và biết hướng các hành động tới việc đạt mục đích Một robot hút bụi sẽ là thông minh nếu biết tìm đến các chỗ bẩn trong phòng để hút bụi và không đi tới những chỗ đã làm
1.1.2 Đối tượng và mục tiêu nghiên cứu của TTNT
TTNT nghiên cứu về cách hành xử thông minh với mục tiêu là xây dựng lý thuyết đầy đủ để có thể giải thích được hoạt động thông minh của sinh vật và áp dụng được các hiểu biết vào các máy móc nói chung, nhằm phục vụ cho con người
- Về mặt kỹ thuật: Tạo ra các máy thông minh để giải quyết vấn đề thực tế dùng các
kỹ thuật TTNT
- Về mặt khoa học: Phát triển các khái niệm và thuật ngữ để hiểu được các hành xử
thông minh của sinh vật
1.1.3 Những tiền đề cơ bản của TTNT
Những tiền đề ban đầu cho sự ra đời của TTNT là những nghiên cứu lý thuyết sâu sắc của các chuyên gia về logic hình thức, tâm lý học nhận thức (cognitive Psychology) và điều khiển học (Cybernetics)
A Turing, người đặt nền móng lý thuyết cho tin học, tác giả của mô hình máy tính vạn năng đã đưa ra mô hình máy tính dựa trên những phép tính logic cơ bản: AND,
OR và NOT Khi đó dự án này không được chấp nhận Do chịu ảnh hưởng của các chuyên gia Mỹ, người ta đã tiến hành chế tạo ra những máy tính đầu tiên, thực hiện các phép tính số học cơ bản Dầu vậy, một nhóm các chuyên gia tin học vẫn tiếp tục nghiên cứu khả năng của máy tính xử lý các dữ liệu phi số, các ký hiệu
Một cách độc lập, các chuyên gia tâm lý học nhận thức cũng đã tạo dựng những mô hình dùng máy tính để mô phỏng hành vi của con người khi giải quyết những bài toán đòi hỏi sự sáng tạo Lúc đó, các chương trình TTNT lại quá phức tạp, quá tốn kém nên không thể đưa ra áp dụng trong thực tiễn
Trang 9Những tiến bộ trong kỹ thuật vi điện tử đã tạo nên tiền đề vật chất có tính chất quyết định, làm thay đổi toàn bộ sự phát triển và ứng dụng các kỹ thuật TTNT
Hình 1.1 Những tiền đề cơ bản của TTNT
1.2 Khái niệm về TTNT
1.2.1 Trí tuệ của con người
Trí tuệ con người (Human Intelligence): Cho đến nay có hai khái niệm về trí tuệ con
Trang 10(3) Thu gọn (pruning) quá trình suy luận nhằm xác định tập các suy diễn có thể sử dụng được
(4) Áp dụng các cơ chế suy diễn cụ thể (inference mechanisms) để đưa các sự kiện ban đầu đi đến đích
1.2.2 Trí tuệ nhân tạo
Có nhiều khái niệm được đưa ra về trí tuệ nhân tạo:
•"Sự nghiên cứu các năng lực trí tuệ thông qua việc sử dụng các mô hình tính toán"(“The study of mental faculties through the use ò computational models"– Charniak and McDormott, 1985)
•"Nghệ thuật tạo ra các máy thực hiện các chức năng đòi hỏi sự thông minh khi được thực hiện bởi con người"(“The art of creating machies that perform functions that require intelligence when performed by people"– Kurzweil, 1990)
•"Lĩnh vực nghiên cứu tìm cách giải quyết và mô phỏng các hành vi thông minh trong thuật ngữ các quá trình tính toán"(“A field of study that seeks to explain and emulate intelligent behavior in terms of computational processes"– Schalkoff, 1990)
•"Sự nghiên cứu các tính toán để có thể nhận thức, lập luận và hành động"(“The study of computations that make it possible to perceive, reason, and act"– Winston, 1992)
•"Một nhánh của khoa học máy tính liên quan tới sự tự động hoá các hành vi thông minh"(“The branch of computer science that is concerned with the automation of intelligent behavior"– Luger and Stubblefield, 1993)
Sau đây là một số định nghĩa gần đây nhất:
•"TTNT là sự thiết kế và nghiên cứu các chương trình máy tính ứng xử một cách thông minh Các chương trình này được xây dựng để thực hiện các hành vi mà khi ở người hoặc động vật chúng ta xem là thông minh"(“Artificial Intelligence is the design and study of computer programs that behave intelligently.These programs are constructed to perform as would a human or an animal whose behvior we consider intelligent"– Dean, Allen and Aloimonos, 1995)
•"TTNT là sự nghiên cứu các tác nhân tồn tại trong môi trường, nhận thức và hành động"(“Artificial Intelligence is the design of agents that exists in an environment and act"– Russell and Norvig, 1995)
•"TTNT là sự nghiên cứu ác thiết kế các tác nhân thông minh"(“Computational Intelligence is the study of the design of Intelligent agents"– Pulle, Mackworth and Goebel, 1998)
Trang 11• Hiện nay nhiều nhà nghiên cứu quan niệm rằng, TTNT là lĩnh vực nghiên cứu sự thiết kế các tác nhân thông minh (intelligent agent)
1.3 Vai trò của TTNT trong công nghệ thông tin
TTNT bao quát rất nhiều lĩnh vực nghiên cứu hẹp Nó nghiên cứu từ các lĩnh vực tổng quát như máy nhận biết, suy luận logic, đến các bài toán như chơi cờ, chứng minh định lý Thường thì các nhà khoa học ở các lĩnh vực khác tìm đến với TTNT ở các kỹ thuật hệ thống hoá và tự động hoá các xử lý tri thức cũng như các phương pháp thuộc lĩnh vực mang tính người
TTNT nghiên cứu kỹ thuật làm cho máy tính có thể"suy nghĩ một cách thông minh"và mô phỏng quá trình suy nghĩ của con người khi đưa ra những quyết định, lời giải Trên cơ sở đó, thiết kế các chương trình cho máy tính để giải quyết bài toán
Sự ra đời và phát triển của TTNT đã tạo ra một bước nhảy vọt về chất trong kỹ thuật và kỹ nghệ xử lý thông tin TTNT chính là cơ sở của công nghệ xử lý thông tin mới, độc lập với công nghệ xử lý thông tin truyền thống dựa trên văn bản giấy tờ Điều này được thể hiện qua các mặt sau:
- Nhờ những công cụ hình thức hoá (các mô hình logic ngôn ngữ, logic mờ, ), các tri thức thủ tục và tri thức mô tả có thể biểu diễn được trong máy Do vậy quá trình giải bài toán được tiến hành hữu hiệu hơn
- Mô hình logic ngôn ngữ đã mở rộng khả năng ứng dụng của máy tính trong lĩnh vực đòi hỏi tri thức chuyên gia ở trình độ cao, rất khó như: y học, sinh học, địa lý, tự động hóa
- Một số phần mềm TTNT thể hiện tính thích nghi và tính mềm dẻo đối với các lớp bài toán thuộc nhiều lĩnh vực khác nhau
- Khi máy tính được trang bị các phần mềm TTNT ghép mạng sẽ cho phép giải quyết những bài toán cỡ lớn và phân tán
Trang 12Các kỹ thuật TTNT cơ bản bao gồm:
Lý thuyết giải bài toán và suy diễn thông minh: Lý thuyết giải bài toán cho phép
viết các chương trình giải câu đố, chơi các trò chơi thông qua các suy luận mang tính người; các hệ thống chứng minh định lý Ngoài ra các hệ thống hỏi đáp thông minh còn cho phép lưu trữ và xử lý khối lượng lớn các thông tin
Lý thuyết tìm kiếm may rủi: Lý thuyết này bao gồm các phương pháp và kỹ thuật
tìm kiếm với sự hỗ trợ của thông tin phụ để giải bài toán một cách có hiệu quả
Các ngôn ngữ về TTNT: Để xử lý các tri thức người ta không chỉ sử dụng các ngôn
ngữ lập trình dùng cho các xử lý dữ liệu số, mà cần có ngôn ngữ khác Các ngôn ngữ chuyên dụng này cho phép lưu trữ và xử lý thông tin ký hiệu Một số ngôn ngữ được nhiều người biết đến là IPL.V, LISP, PROLOG
Lý thuyết thể hiện tri thức và hệ chuyên gia: TTNT là khoa học về thể hiện và sử
dụng tri thức Mạng ngữ nghĩa, lược đồ, logic vị từ, khung là các phương pháp thể hiện tri thức thông dụng Việc gắn liền cách thể hiện và sử dụng tri thức là cơ sở hình thành hệ chuyên gia
Lý thuyết nhận dạng và xử lý tiếng nói: Giai đoạn phát triển đầu của TTNT gắn với
lý thuyết nhận dạng Các phương pháp nhận dạng chính gồm: nhận dạng hình học, nhận dạng dùng tâm lý học, nhận dạng theo phương pháp hàm thế, dùng máy nhận dạng, ứng dụng của phương pháp này trong việc nhận dạng chữ viết, âm thanh
Người máy: Người máy có bộ phận cảm nhận và các cơ chế hoạt động được nối
ghép theo sự điều khiển thông minh Khoa học về cơ học và TTNT được tích hợp trong khoa học người máy
Tâm lý học xử lý thông tin: Các kết quả nghiên cứu của tâm lý học giúp TTNT xây
dựng các cơ chế trả lời theo hành vi, có ý thức; nó giúp cho việc thực hiện các suy diễn mang tính người
Xử lý danh sách, kỹ thuật đệ quy, kỹ thuật quay lui và xử lý cú pháp hình thức: là
những kỹ thuật cơ bản của tin học truyền thống có liên quan trực tiếp đến TTNT
1.5 Các thành phần trong hệ thống TTNT
Hai thành phần cơ bản trong bất kỳ một hệ thống TTNT là:
- Các phương pháp biểu diễn vấn đề, các phương pháp biểu diễn tri thức;
- Các phương pháp tìm kiếm trong không gian bài toán, các chiến lược suy diễn Hai khía cạnh này trong một hệ thống TTNT tương hỗ với nhau rất chặt chẽ, Việc lựa chọn một phương pháp biểu diễn tri thức sẽ quyết định phương pháp giải quyết tương ứng để có thể áp dụng được Chẳng hạn, nếu tri thức được biếu diễn dưới dạng các công thức của logic vị từ, khi đó phương pháp hợp giải (resolution) của Robinson
Trang 13khá phù hợp và thường được dùng để suy diễn Ngược lại, nếu phương pháp biễu diễn tri thức là mạng ngữ nghĩa thì các thủ tục tìm kiếm sẽ hiệu quả hơn
Mặc dù phương pháp biểu diễn tri thức sử dụng cú pháp chặt chẽ thường rất hiệu quả cho việc biểu diễn và điều khiển quá trình suy diễn, nhưng chúng lại không đủ mạnh để khắc phục bùng nổ tổ hợp khi giải những bài toán khó Trong trường hợp đó, các thủ tục tìm kiếm heuristics dựa trên các tri thức đặc tả nảy sinh từ chính bản thân cấu trúc của bài toán trở nên rất cần thiết
Có thể phân chia các hệ thống TTNT như sau:
1 Các hệ tìm kiếm thông tin, các hệ thống hỏi đáp thông minh cho phép hội thoại giữa những người sử dụng đầu cuối không chuyên tin với CSTT và cơ sở dữ liệu thông qua ngôn ngữ chuyên ngành gần với ngôn ngữ tự nhiên
2 Các hệ thống suy diễn – tính toán, cho phép giải quyết những bài toán phức tạp dựa trên các mô hình toán học và tri thức chuyên gia
3 Các hệ chuyên gia, cho phép sử dụng các tri thức chuyên gia trong các lĩnh vực tri thức chuyên biệt
1.6 Các lĩnh vực nghiên cứu và ứng dụng cơ bản của TTNT
Hai mối quan tâm nền tảng nhất của các nhà nghiên cứu TTNT là biểu diễn tri thức (knowledge representation) và tìm kiếm (search) Biểu diễn tri thức chú ý đến diễn tả vấn đề theo một ngôn ngữ hình thức, tức là một dạng thức thích hợp để máy tính vận hành, phạm vi tri thức đầy đủ mà hành vi thông minh đòi hỏi Tìm kiếm là kỹ thuật giải quyết vấn đề theo cách khảo sát có hệ thống không gian trạng thái bài toán (problem state)
Giống như hầu hết các ngành khoa học khác, TTNT cũng được phân thành những ngành con Trong khi chia sẻ một tiếp cận giải quyết vấn đề cơ bản, các ngành con này
có các mối quan tâm đến các ứng dụng khác nhau Dưới đây là tổng thể một vài lĩnh vực ứng dụng chính và những đóng góp của chúng cho TTNT
1.6.1 Trò chơi
Ngay từ thời kỳ đầu của việc nghiên cứu vấn đề tìm kiếm trong không gian trạng thái, người ta đã tiến hành nhiều thử nghiệm bằng cách sử dụng các trò chơi thông dụng có bàn cờ như cờ đam (checker), cờ vua và trò đố 15 ô (15 puzzule) Hầu hết các trò chơi đều sử dụng một tập hợp các luật chơi được xác định rõ ràng Điều này làm cho việc phát sinh không gian tìm kiếm trở nên dễ dàng và giải phóng nhiều nghiên cứu khỏi những sự mơ hồ và phức tạp vốn có trong các bài toán ít cấu trúc hơn Hình dạng của những bàn cờ sử dụng trong các trò chơi này được biểu diễn vào máy tính,
Trang 14trong khi không đòi hỏi một hình thức khó hiểu cần thiết nào để nắm bắt những tinh tế
và ngữ nghĩa trong những lĩnh vực bài toán phức tạp hơn
Các trò chơi có thể phát sinh ra một số lượng không gian tìm kiếm cực kỳ lớn Những không gian này đủ lớn và phức tạp để đòi hỏi những kỹ thuật mạnh nhằm quyết định xem những chọn lựa nào cần được khảo sát trong không gian bài toán Những kỹ thuật này được gọi là các heuristic và chúng tạo thành một lĩnh vực lớn trong nghiên cứu TTNT Một heuristic là một chiến lược giải quyết vấn đề tốt nhưng tiềm ẩn khả năng thất bại, chẳng hạn như việc kiểm tra để biết chắc rằng một thiết bị không nhạy
đã được cắm vào trước khi giả định rằng nó bị hỏng, hay cố gắng bảo vệ quân cờ hoàng hậu khỏi bị bắt trong trò chơi cờ vua Nhiều thứ mà chúng ta gọi là thông minh thuộc về các heuristic được người ta sử dụng để giải quyết các vấn đề
Hầu hết chúng ta đều có một số kinh nghiệm với những trò chơi đơn giản, nên chúng ta cũng có khả năng nghĩ ra và kiểm nghiệm tính hiệu quả của những heuristic của chính mình Chúng ta không cần đi tìm và hỏi ý kiến chuyên gia trong một số lĩnh vực chuyên môn sâu như là y học hay toán học Vì những lý do đó, các trò chơi cung cấp một không gian mênh mông cho việc nghiên cứu các tìm kiếm heuristic Các chương trình chơi trò chơi, trái ngược với tính đơn giản của chúng, đưa ra những thử thách riêng của chúng, bao gồm các đấu thủ mà các nước đi của anh ta có thể không
dự đoán trước được một cách chắc chắn Sự có mặt này của đấu thủ càng làm phức tạp hơn mô hình chương trình do sự thêm vào một yếu tố không dự đoán trước được và sự cần thiết phải tính đến những yếu tố tâm lý cũng như là chiến thuật trong chiến lược của trò chơi
1.6.2 Suy luận và chứng minh định lý tự động
Chúng ta có thể cho rằng chứng minh định lý tự động là một nhánh nghiên cứu có
từ lâu đời nhất của Trí tuệ nhân tạo khi tìm lại nguồn gốc của nó qua các tác phẩm"Nhà lý luận logic (logic theorist)"(Newell và Simon, 1963) và"Công cụ giải quyết vấn đề tổng quát (General problem solver)"(Newell và Simon, 1965) của Newell
và Simon Trong bất cứ trường hợp nào, nó chắc chắn vẫn là một trong những ngành phong phú nhất của lĩnh vực này Nghiên cứu chứng minh định lý đã đạt được nhiều thành tích trong thời kỳ đầu của việc hình thức hoá các giải thuật tìm kiếm và phát triển các ngôn ngữ biểu diễn hình thức như phép tính vị từ Người ta có thể khảo sát một số lượng lớn những bài toán khác nhau, bằng cách biểu diễn mô tả của bài toán và những thông tin cơ sở liên quan như là tiên đề logic, và xem những trường hợp bài toán là những định lý cần phải chứng minh Sự hiểu biết thấu đáo này là cơ sở cho việc nghiên cứu chứng minh định lý tự động và các hệ suy luận toán học Một lý do khác
Trang 15cho việc tiếp tục quan tâm đến các máy chứng minh định lý tự động là sự nhận thức rằng một hệ thống kiểu như vậy không nhất thiết phải có khả năng giải quyết những bài toán cực kỳ phức tạp một cách độc lập mà không có sự trợ giúp nào của con người Nhiều máy chứng minh định lý hiện đại hoạt động như những trợ lý viên thông minh khi chúng cho phép con người thực hiện những công tác đòi hỏi trình độ cao hơn là phân tích một bài toán lớn thành nhiều bài toán con và đặt ra những heuristic để tìm kiếm trong không gian những chứng minh có thể chọn Máy chứng minh định lý sau
đó thực hiện công tác đơn giản hơn nhưng cũng quan trọng là chứng minh các bổ đề, kiểm chứng những giải quyết nhỏ hơn, và hoàn thành những khía cạnh hình thức của một chứng minh đã được phác thảo bởi sự hợp tác của nó với con người (Boyer và More, 1979)
1.6.3 Các hệ chuyên gia
Kể từ lúc khoa học giải quyết vấn đề được nghiên cứu, người ta đã sớm ý thức một cách sâu sắc và cơ bản về tầm quan trọng của tri thức chuyên ngành Lấy ví dụ một bác sĩ không thể chẩn đoán bệnh tốt chỉ nhờ vào một số kỹ năng giải quyết vấn đề tổng quát bẩm sinh; mà bác sĩ đã chẩn đoán tốt là vì có nhiều kiến thức y học Tương tự như thế, một nhà địa chất giỏi phát hiện các mỏ khoáng vì biết áp dụng một cách hiệu quả nhiều tri thức lý thuyết và thực nghiệm về địa lý Tri thức chuyên gia về lĩnh vực là sự kết hợp giữa kiến thức lý thuyết về vấn đề đó và một tập hợp các quy tắc giải quyết vấn đề theo kiểu heuristic mà khi sử dụng những quy tắc này đã tỏ ra hiệu quả trong lĩnh vực đó Các hệ chuyên gia được người ta xây dựng bằng cách thu thập các kiến thức từ chuyên gia người và mã hoá nó thành dạng thức mà máy tính có thể áp dụng cho những bài toán tương tự
Sự tin cậy vào tri thức của chuyên gia chuyên ngành trong các chiến lược giải quyết vấn đề của hệ là một đặc trưng chính của các hệ chuyên gia Người ta đã viết ra một số chương trình mà ở đó người thiết kế cũng là nguồn tri thức chuyên ngành, nhưng sẽ điển hình hơn nhiều nếu chúng ta xem xét những chương trình được phát sinh từ sự cộng tác giữa một chuyên gia chuyên ngành chẳng hạn như một bác sĩ, một nhà hoá học, một nhà địa chất học hay một kỹ sư, với một chuyên gia riêng về trí tuệ nhân tạo Chuyên gia chuyên ngành cung cấp kiến thức cần thiết về chuyên ngành thông qua những cuộc thảo luận tổng quát về các phương pháp giải quyết vấn đề của anh ta, và bằng cách biểu diễn những kỹ năng đó trên một tập hợp các bài toán mẫu được chọn lựa cẩn thận Chuyên gia TTNT, hay còn gọi là kỹ sư tri thức (knowledge engineer), như người ta vẫn thường gọi là các nhà thiết kế hệ chuyên gia, có trách nhiệm thể hiện tri thức này vào một chương trình mà chương trình đó phải vừa hiệu quả vừa có vẻ
Trang 16thông minh trong các hành vi của nó Một chương trình như thế vừa hoàn thành xong, cần phải tinh chế kiến thức chuyên môn của nó thông qua một quá trình cung cấp cho
nó những bài toán mẫu để giải, để cho chuyên gia chuyên ngành phê bình hành vi của
nó và thực hiện bất cứ thay đổi hay cải biến nào cần thiết đối với tri thức của chương trình Quá trình này lặp đi lặp lại cho đến khi chương trình đạt được mức độ hoàn thiện mong muốn
Một trong các hệ chuyên gia sớm nhất khai thác tri thức chuyên ngành để giải quyết vấn đề là DENDRAL được phát triển tại Stanford vào cuối những năm 1960 (Lindsay
et al,1980) DENDRAL được thiết kế để phỏng đoán cấu trúc của các phân tử hữu cơ
từ công thức hoá học của chúng và các thông tin về khối quang phổ có liên quan đến các liên kết hoá học có mặt trong các phân tử Vì các phân tử hữu cơ thường rất lớn, nên số lượng cấu trúc có khả năng tồn tại đối với những phân tử này thường là khổng
lồ DENDRAL chú ý vào bài toán của không gian tìm kiếm rộng lớn này bằng cách áp dụng tri thức heuristic của các chuyên gia hoá học vào bài toán làm sáng tỏ cấu trúc Các phương pháp của DENDRAL đã tỏ ra có một sức mạnh đáng kể Khi thường xuyên tìm thấy cấu trúc đúng trong hàng triệu khả năng khác nhau chỉ sau có vài phép thử Phương pháp này tỏ ra thành công đến mức người ta đã sử dụng những phiên bản của hệ chuyên gia nói trên trong các phòng thí nghiệm hoá học khắp nơi trên thế giới Trong khi DENDRAL là một trong số những chương trình đầu tiên sử dụng tri thức chuyên ngành một cách hiệu quả để đạt được khả năng giải quyết vấn đề cấp chuyên gia, thì MYCIN là hệ chuyên gia đã thiết lập nên phương pháp luận cho các hệ chuyên gia hiện đại (contemporary expert systems) (Buchanan and Shortliff, 1984) MYCIN
sử dụng tri thức y khoa chuyên gia để chẩn đoán và kê đơn điều trị cho bệnh viêm màng não tuỷ sống và những trường hợp nhiễm trùng vi khuẩn trong máu
MYCIN, được các nhà nghiên cứu phát triển ở Stanford vào giữa những năm 1970,
là một trong những chương trình đầu tiên chú ý đến những bài toán suy luận bằng thông tin không chắc chắn hoặc không đầy đủ MYCIN cung cấp những giải quyết rõ ràng và logic về quá trình suy luận của nó, sử dụng một cấu trúc kiểm tra thích hợp với lĩnh vực chuyên môn của vấn đề, và nhận biết đặc tính để đánh giá một cách tin cậy hoạt động của nó Nhiều kỹ thuật xây dựng hệ chuyên gia đang dùng hiện nay đã được người ta phát triển lần đầu trong dự án MYCIN
Những hệ chuyên gia cổ điển khác bao gồm chương trình PROSPECTOR dùng để tìm ra những nơi có chứa quặng mỏ và xác định loại quặng mỏ, dựa trên thông tin địa
lý về một địa điểm nào đó, chương trình INTERNIST dùng để chẩn đoán trong lĩnh vực nội khoa, Dipmeter Advisor dùng để phiên dịch các kết quả của các máy khoan
Trang 17giếng dầu (Smith and Baker, 1983) và XCON dùng để định hình các máy tính hệ VAX XCON được sử dụng từ năm 1981, tất cả các máy VAX và Digital Equipment Corporation bán thời bấy giờ đều được định hình bằng XCON
Rất nhiều hệ chuyên gia khác ngày nay đang giải quyết những bài toán trong nhiều lĩnh vực khác nhau như y học, giáo dục, kinh doanh, thiết kế và khoa học Một điều thú vị mà chúng ta có thể nhận thấy là hầu hết các hệ chuyên gia được viết cho những lĩnh vực khá chuyên biệt và ở cấp độ chuyên gia Nói chung những lĩnh vực này đều được nghiên cứu kỹ và chúng có những chiến lược giải quyết vấn đề đã xác định một cách rõ ràng Mặc dù còn tồn tại những hạn chế này các hệ chuyên gia vẫn đang chứng minh giá trị của chúng trong nhiều ứng dụng quan trọng
1.6.4 Hiểu và mô hình hoá ngữ nghĩa ngôn ngữ tự nhiên
Một trong những mục tiêu có từ lâu đời của Trí tuệ nhân tạo là tạo ra các chương trình có khả năng hiểu ngôn ngữ của con người Khả năng hiểu ngôn ngữ tự nhiên không chỉ là một trong những biểu hiện căn bản nhất của trí thông minh con người mà
sự tự động hoá nó một cách thành công sẽ gây ra một tác động ngoài sức tưởng tượng đối với năng lục và hiệu quả chính của những chiếc máy tính Người ta đã bỏ ra nhiều công sức để viết các chương trình có khả năng hiểu ngôn ngữ tự nhiên Tuy những chương trình này đã có được một số thành công trong những ngữ cảnh hạn chế, nhưng các hệ thống có khả năng sử dụng ngôn ngữ tự nhiên một cách linh hoạt và tổng quát theo cách như con người vẫn còn ở ngoài tầm tay những phương pháp luận hiện nay Hiểu ngôn ngữ tự nhiên liên quan đến nhiều thứ hơn nhiều so với chỉ phân tích các câu thành các phần riêng rẽ những nhóm câu của chúng và tìm những từ đó trong từ điển Khả năng hiểu thực sự tuỳ thuộc vào kiến thức nền tảng rộng lớn về lĩnh vực của bài văn và những thành ngữ dùng trong lĩnh vực đó, cũng như là khả năng ứng dụng những kiến thức tổng quát tuỳ thuộc theo ngữ cảnh để giải quyết những trường hợp bỏ sót hay tối nghĩa, là một đặc điểm bình thường trong lối nói con người
Công việc tập hợp và tổ chức kiến thức nền tảng này được tiến hành theo cách mà sao cho cách ấy có thể áp dụng được cho sự lĩnh hội ngôn ngữ, đã hình thành nên vấn
đề chủ yếu của việc tự động hoá quá trình hiểu ngôn ngữ tự nhiên Để đáp ứng yêu cầu này, các nhà nghiên cứu đã phát triển nhiều kỹ thuật dùng để cấu trúc hoá ý nghĩa ngữ nghĩa, các kỹ thuật này được dùng xuyên suốt khoa học TTNT
Do việc hiểu ngôn ngữ tự nhiên đòi hỏi những khối lượng kiến thức khổng lồ, hầu hết các công trình được người ta thực hiện trong những lĩnh vực vấn đề đã được hiểu
rõ và chuyên môn hoá Một trong những chương trình khai thác sớm nhất phương pháp luận"thế giới qui mô"này là SHRDLU của Winograd, một hệ ngôn ngữ tự nhiên
Trang 18có khả năng"trò chuyện"về hình dáng đơn giản của các khối có nhiều hình dạng và màu sắc khác nhau (winograd, 1973) Mặc dù SHRDLU thành công với việc trò chuyện về sự sắp xếp của các khối, nhưng phương pháp của nó đã không đủ khái quát được để vượt ra khỏi thế giới các khối Những kỹ thuật biểu diễn được sử dụng trong chương trình này quá đơn giản nên không đủ để tổ chức nắm bắt ngữ nghĩa của nhiều lĩnh vực phong phú và phức tạp hơn một cách có kết quả
Nhiều sự đầu tư nghiên cứu về hiểu ngôn ngữ tự nhiên trong thời gian gần đây được người ta dành hết cho việc tìm ra những hình thức biểu diễn, mà về cơ bản đủ dùng trong một phạm vi rộng lớn các ứng dụng mà những ứng dụng này tự bản thân chúng còn chưa thích nghi tốt với cấu trúc đặc thù của lĩnh vực đó Người ta khảo sát một số lượng những kỹ thuật khác nhau (hầu hết đều là những mở rộng hay cải tiến của kỹ thuật mạng ngữ nghĩa) cho mục đích này và dùng chúng vào việc phát triển những chương trình có khả năng hiểu ngôn ngữ tự nhiên trong những lĩnh vực tri thức cấp bách nhưng lý thú Chẳng hạn, chức năng trợ lý ảo"Siri"trên hệ điều hành IOS,"Cortana"trên hệ điều hành Windows phone là những minh chứng về khả năng hiểu ngôn ngữ tự nhiên (tiếng Anh) đã có nhiều tiến bộ vượt bậc
Tuy nhiên, hiểu ngôn ngữ tự nhiên một cách tổng quát là vấn đề vẫn còn vượt quá giới hạn hiện nay của chúng ta
1.6.5 Mô hình hoá hoạt động của con người
Mặc dù khá nhiều vấn đề đã nói ở trên dùng trí tuệ con người làm điểm tựa tham khảo để xem xét TTNT, thực tế đã không diễn biến theo cách mà những chương trình cần phải lấy sự tổ chức của trí óc con người làm kiểu mẫu cho chúng Thực ra nhiều chương trình TTNT được thiết kế để giải một số bài toán cần thiết mà không cần chú ý đến tính tương tự của chúng so với kiến trúc trí óc con người Ngay cả các hệ chuyên gia, trong khi nhận được nhiều tri thức từ các chuyên gia con người, cũng không thực
sự cố gắng bắt chước những quá trình trí tuệ bên trong của con người Nếu như sự hoạt động chỉ là những đặc tính mà theo đó một hệ thống sẽ được đánh giá, thì có thể là không có mấy lý do để mô phỏng các phương pháp giải quyết vấn đề của con người Trong thực tế, những chương trình sử dụng các phương pháp không theo kiểu con người để giải quyết các bài toán thường thành công hơn những chương trình theo kiểu con người Tuy nhiên, mô hình của những hệ thống rõ ràng bắt chước một số khía cạnh của cách giải quyết vấn đề theo kiểu con người vẫn là một mảnh đất màu mỡ trong nghiên cứu cho cả hai ngành khoa học TTNT và tâm lý học Mô hình hóa hoạt động con người, ngoài việc cung cấp cho TTNT nhiều phương pháp luận cơ bản, đã chứng tỏ được rằng nó là một dụng cụ mạnh để công thức hóa và thử nghiệm những lý
Trang 19thuyết về sự nhận thức của con người Những phương pháp luận giải quyết vấn đề được các nhà khoa học máy tính phát triển đã đem đến cho các nhà tâm lý học một sự
ẩn dụ mới để khảo sát trí tuệ con người Hơn cả việc mở rộng được các lý thuyết về sự nhận thức trong thứ ngôn ngữ không rõ ràng sử dụng vào đầu thời kỳ nghiên cứu hay
là từ bỏ được bài toán mô tả toàn bộ những hoạt động bên trong của trí óc con người (như đề nghị của các nhà hành vi học), nhiều nhà tâm lý học đã đưa ngôn ngữ và lý thuyết khoa học máy tính vào để công thức hóa các mô hình trí tuệ con người Những
kỹ thuật này không chỉ cung cấp một vốn từ vựng cho việc mô tả trí tuệ con người mà
sự thể hiện trên máy tính những lý thuyết này đã tạo cho các nhà tâm lý học một cơ hội
để thử nghiệm, phê bình và cải tiến một cách thực nghiệm những ý tưởng của họ (luger, 1994)
1.6.6 Lập kế hoạch và robotics
Lập kế hoạch (planning) là một khía cạnh quan trọng trong những cố gắng nhằm chế tạo ra các robot có thể thực hiện được nhiệm vụ của chúng với một trình độ nhất định và khả năng linh hoạt và phản ứng với thế giới bên ngoài Nói một cách khác ngắn gọn, việc lập kế hoạch giả định rằng robot có khả năng thực hiện những hành động sơ cấp (atomic action) nhất định Nó cố gắng tìm ra một chuỗi các hành động cho phép hoàn thành một công tác ở cấp độ cao hơn, chẳng hạn như đi qua một căn phòng chứa đầy những chướng ngại vật
Có nhiều những lý do khiến cho việc lập kế hoạch trở thành một bài toán khó khăn
Ví dụ, chúng ta hãy tưởng tượng rằng, một robot có khả năng di chuyển về phía trước, phía sau, bên phải, bên trái và cần xem xét có bao nhiêu cách khác nhau mà robot đó
có thể dùng để di chuyển quanh căn phòng đó và robot phải lựa chọn một đường đi quanh chúng theo một phương pháp nào đó có hiệu quả Viết một chương trình có khả năng tìm ra đường đi tốt nhất một cách thông minh với điều kiện như vậy, mà không bị chôn vùi bởi khối lượng khổng lồ các khả năng dự kiến, đòi hỏi phải có những kỹ thuật phức tạp để biểu diễn tri thức về không gian và kiểm soát việc tìm kiếm trong môi trường cho phép
Một phương pháp mà con người vẫn áp dụng để lập kế hoạch là phân rã vấn đề từng bước (hierarchical problem decoposition) Nếu bạn đang lập kế hoạch cho chuyến du lịch đến Pari, thì nói chung những vấn đề như sắp xếp chuyến bay, đến sân bay, liên hệ với hãng hàng không, vận chuyển đường bộ tại Pari sẽ được bạn xem xét một cách riêng lẻ, cho dù tất cả chúng đều là bộ phận của một kế hoạch toàn thể lớn hơn Từng vấn đề này có thể được tiếp tục phân rã thành những vấn đề con (subproblem) nhỏ hơn như tìm một bản đồ thành phố, xem xét hệ thống giao thông, và tìm một nơi ăn ở phù
Trang 20hợp điều kiện về tài chính Cách làm này không những làm giảm bớt một cách hiệu quả không gian tìm kiếm mà nó còn cho phép chúng ta tiết kiệm được những kế hoạch con có thể dùng trong tương lai Trong khi con người lập kế hoạch một cách chẳng mấy khó khăn, thì việc tạo ra một chương trình máy tính có thể làm được công việc như vậy là một thách thức ghê gớm Một công tác có vẻ đơn giản là phân rã một vấn
đề lớn thành nhiều vấn đề con liên quan thực sự cần đến những heuristic phức tạp và kiến thức bao quát về lĩnh vực đang lập kế hoạch Quyết định xem cần giữ lại những
kế hoạch con nào và tổng quát hóa chúng như thế nào cho sự sử dụng trong tương lai
có những giác quan thích hợp để định vị tất cả những chướng ngại vật trên con đường
đi đã vạch ra Một robot như vậy phải bắt đầu di chuyển qua căn phòng dựa vào những
gì mà nó"nhận thức"được và điều chỉnh đường đi của nó khi phát hiện ra những chướng ngại vật khác Thiết lập cho các kế hoạch cho phép có thể phản ứng lại với những điều kiện của môi trường là một nhiệm vụ chủ yếu khác trong lập kế hoạch Nói chung, thiết kế robot là một trong những lĩnh vực nghiên cứu của TTNT đã mang lại nhiều hiểu biết sâu sắc hỗ trợ cho phương pháp giải quyết vấn đề theo kiểu hướng tác nhân (agent - oriented) Bị thất bại bởi những phức tạp trong việc bảo đảm
độ lớn của không gian biểu diễn cũng như bởi mô hình của các thuật toán tìm kiếm dùng cho việc lập kế hoạch theo kiểu truyền thống, các ngành nghiên cứu, gồm cả agre
và chapman (1987) và brooks (1991), đã phát biểu lại vấn đề lớn hơn này dựa trên các thuật ngữ về sự tương tác lẫn nhau giữa nhiều tác nhân (agent) theo kiểu bán tự quản Mỗi thành viên chịu trách nhiệm về phần đóng góp của chính nó trong nhiệm vụ của bài toán và thông qua sự phối hợp giữa chúng lời giải tổng quát sẽ hiện ra
1.6.7 Các ngôn ngữ và môi trường dùng cho TTNT
Nghiên cứu TTNT đã tạo ra một số những tiến bộ trong các ngôn ngữ lập trình và các môi trường phát triển phần mềm Vì nhiều lý do, bao gồm cả qui mô tổng thể của hầu hết các chương trình TTNT, khuynh hướng phát sinh ra các không gian khổng lồ của các thuật toán tìm kiếm, và những khó khăn trong việc tiên đoán các hành vi của các chương trình điều khiển bằng heuristics, các nhà lập trình TTNT đã bị thúc ép phải xây dựng nên một tập hợp các phương pháp lập trình
Trang 21Các môi trường lập trình bao gồm cả các kỹ thuật cấu tạo tri thức (knowledge – structuring) như lập trình hướng đối tượng (object-oriented programming) và các cơ cấu tổ chức hệ chuyên gia Các ngôn ngữ cấp cao như Lisp và Prolog, là các ngôn ngữ tích cực hỗ trợ kiểu phát triển theo module, khiến cho việc quản lý tính đồ sộ và phức tạp của chương trình dễ dàng hơn Các gói chương trình lần tìm cho phép người lập trình tạo dựng lại quá trình thực thi của một thuật toán phức tạp và cho phép tháo gỡ những phức tạp khi tìm kiếm bằng điều khiển của heuristics Không có công cụ kỹ thuật đó, khó mà tin được rằng người ta có thể xây dựng nên những hệ thống TTNT gây chú ý
1.6.8 Máy học
Tuy thành công trong vai trò những máy giải quyết vấn đề, học vẫn còn là một sự nan giải đối với các chương trình TTNT Khuyết điểm này dường như rất nghiêm trọng, đặc biệt là khi khả năng học là một trong những thành phần quan trọng nhất làm nên hành vi thông minh Một hệ chuyên gia có thể thực hiện những tính toán lớn và rất tốn kém nhằm giải quyết một bài toán Tuy thế không giống như con người, nếu đưa cho nó cùng bài toán ấy hoặc một bài toán tương tự lần thứ hai, nó sẽ không nhớ lời giải lần trước Nó thực hiện lại chuỗi tính toán đó lần nữa Điều này đúng cho cả lần thứ hai, thứ ba, thứ tư, và bất cứ khi nào nó giải quyết bài toán đó – hầu như không thể gọi đó là hành vi của một máy giải quyết vấn đề thông minh
Hầu hết các hệ chuyên gia đều bị cản trở bởi tính cứng nhắc trong các chiến lược giải quyết vấn đề của chúng và sự khó khăn khi phải thay đổi khối lượng lớn mã chương trình Giải pháp dễ thấy đối với những khó khăn này là hoặc để cho các chương trình học tập trên chính kinh nghiệm, sự tương tự, và những ví dụ của chúng, hoặc là"nói"cho chúng biết phải làm gì
Tuy rằng học là một lĩnh vực khó khăn trong nghiên cứu, một vài chương trình được viết đã đề xuất rằng đây không phải là một mục tiêu không thể đạt được Có thể một chương trình như thế gây chú ý nhất là AM - Automated Mathematician - được thiết kế để khám phá các quy luật toán học (lenat 1977, 1982) Ban đầu người ta đưa cho AM các khái niệm và tiên đề của lý thuyết tập hợp, sau đó nó đã tìm ra những khái niệm toán học quan trọng như là lực lượng (cardinality) và số học số nguyên, và nhiều kết quả khác của lý thuyết số AM đã phỏng đoán các lý thuyết mới bằng cách cập nhật cơ sở tri thức hiện hành của nó, và sử dụng các heuristic để theo đuổi"khả năng đáng quan tâm"nhất trong hàng loạt các lựa chọn có thể
Một nghiên cứu khác của winston về sự quy nạp các khái niệm cấu trúc, chẳng hạn như"hình cung"từ một tập hợp các ví dụ trong trò chơi thế giới của khối (winston,
Trang 221975) Thuật toán ID3 đã tỏ ra thành công trong việc học các mẫu tổng quát từ các ví
dụ (quinlan, 1986) Menta-dendral học các luật để phiên dịch dữ liệu quang phổ khối trong hóa học hữu cơ từ các mẫu dữ liệu về các hợp chất của cấu trúc đã biết Teiresias, một đại diện khá thông minh của các hệ chuyên gia có thể chuyển đổi lời chỉ đạo cấp cao thành các luật mới cho cơ sở dữ liệu của nó (Davis, 1982) Hacke nghĩ ra các kế hoạch để thực hiện các thao tác trong trò thế giới các khối thông qua một quá trình lặp lại nhiều lần việc đặt ra một kế hoạch, thử nghiệm nó, và hiệu chỉnh bất cứ lỗ hỏng nào phát hiện ra trong kế hoạch dự tuyển (sussman 1975) Những nghiên cứu trong việc học trên cơ sở giải thích đã cho thấy tính hiệu quả của tri thức ưu tiên trong quá trình học (mitchell et al 1986, dejong and mooney 1986)
Sự thành công của các chương trình học máy thuyết phục rằng có thể tồn tại một tập hợp các nguyên tắc học tổng quát cho phép xây dựng nên các chương trình có khả năng học tập trong nhiều lĩnh vực thực tế
1.6.9 Xử lý phân tán song song
Một cách tiếp cận khác là tìm cách xây dựng các chương trình thông minh bằng cách sử dụng các mô hình tương tự như cấu trúc nơ-ron (neuron) của bộ não con người Một sơ đồ neuron đơn giản gồm có một thân tế bào có rất nhiều những chỗ nhô
ra theo nhánh, gọi là các tổ chức cây (dendrite), và một nhánh đơn gọi là trục (axon) Các tổ chức cây nhận tín hiệu từ các neuron khác Khi những xung lực kết hợp này vượt quá một ngưỡng nhất định nào đó, thì neuron phát động và một xung lực, hay còn gọi là"cụm"(spike), chạy xuống trục Các nhánh ở cuối trục hình thành nên các khớp thần kinh (synapse) với những tổ chức cây của các neuron; các khớp thần kinh có thể thuộc loại kích thích (excitatory) hay ngăn chặn (inhibitory) Một khớp thần kinh kích thích sẽ cộng thêm vào tổng số tín hiệu đi đến neuron; còn khớp thần kinh ngăn chặn thì trừ bớt đi tổng số này
Mô tả một neuron như vậy tuy khá đơn giản nhưng nó thâu tóm tất cả những đặc trưng liên quan đến các mô hình tính toán neuron Đặc biệt mỗi nơ ron tính toán một
số chức năng đầu vào của nó rồi chuyển kết quả đến các đơn vị liên hệ trong mạng Thay vì sử dụng các ký hiệu và phép toán rõ ràng, tri thức của các hệ này nảy sinh ra khỏi toàn bộ mạng các kết nối neuron và các giá trị ngưỡng
Vì nhiều lý do, cấu trúc neuron hiện đang hết sức hấp dẫn để dùng làm cơ chế cài đặt trí tuệ Các chương trình TTNT truyền thống có khuynh hướng dễ gãy vỡ và nhạy cảm quá đáng khi phải đương đầu với sự nhiễu loạn: thay vì giảm giá trị một cách từ
từ, những chương trình như vậy thường thành công hoàn toàn hoặc thất bại hoàn toàn Trí tuệ con người linh hoạt hơn nhiều; chúng ta có thể tiếp nhận được tốt đầu vào
Trang 23nhiễu loạn, chẳng hạn như nhận ra một khuôn mặt trong một căn phòng tối từ góc nhìn hẹp hay theo dõi duy nhất một cuộc đối thoại trong bữa tiệc ồn ào Ngay cả khi không thể giải quyết được một số vấn đề, chúng ta nói chung vẫn có thể đưa ra một sự phỏng đoán có lý và coi đó như lời giải của bài toán Do các cấu trúc neuron thâu tóm tri thức vào trong một số lượng lớn các đơn vị được nghiền thật nhỏ, nên chúng tỏ ra có triển vọng hơn trong việc đối sánh một cách toàn phần các dữ liệu nhiễu loạn và không đầy
đủ
Cấu trúc neuron cũng vững chắc hơn vì tri thức phân bố khá đồng đều xung quanh mạng Kinh nghiệm của những người đã bị mất một phần não bộ do bệnh tật hay tai nạn đã cho thấy rằng họ không bị mất các vùng nhớ riêng biệt, mà đúng hơn là các quá trình trí não của họ phải chịu đựng nhiều sự giảm sút tổng thể
1.7 Những thách thức đối với TTNT
Những thành tựu nghiên cứu và ứng dụng các kỹ thuật TTNT đã khẳng định tính thực tiễn của các dự án xây dựng máy tính có khả năng suy nghĩ Tuy vậy trong một số
phạm vi, máy tính còn thua xa so với hoạt động của hệ thần kinh con người
Xử lý song song: mặc dù công nghệ điện tử hiện đại cho phép xây dựng các bộ đa
xử lý, song máy tính chưa thể hoạt động song song như bộ não con người được
Khả năng diễn giải: con người có thể xem xét cùng một vấn đề theo những
phương pháp khác nhau, từ đó diễn giải theo cách dễ hiểu nhất Ngược lại, sự linh hoạt này không dễ mô phỏng được trong các hệ thống TTNT
Lôgic rời rạc và tính liên tục: một thách đố lớn với các hệ thống TTNT là khả năng
kết hợp các phương pháp xử lý thông tin trong môi trường liên tục với các thao tác xử
lý thông tin rời rạc
Khả năng học: mặc dù hiện nay một số chương trình máy tính có khả năng học
nhưng cũng chưa thể mô phỏng được hoàn toàn khả năng học giống bộ não con người
Khả năng tự tổ chức: khó tạo lập được các hệ thống TTNT có khả năng tự tổ chức,
tự điều khiển hoạt động của nó để thích nghi với môi trường
Những nghiên cứu và ứng dụng của TTNT tập trung vào các vấn đề lớn sau:
- Nghiên cứu và thử nghiệm các mạng Neuron, các hệ thống TTNT mô phỏng chức năng hoạt động của bộ não với các khả năng học, tự tổ chức, tự thích nghi, tổng quát hoá, xử lý song song, có khả năng diễn giải, xử lý thông tin liên tục và rời rạc;
- Nghiên cứu và tạo lập các hệ thống có giao tiếp thân thiện giữa người và máy trên
cơ sở nghiên cứu nhận thức máy, thu thập và xử lý tri thức, xử lý thông tin hình ảnh, tiếng nói;
Trang 24- Nghiên cứu các phương pháp biểu diễn tri thức và các phương pháp suy diễn thông minh, các phương pháp giải quyết vấn đề đối với những bài toán phụ thuộc không gian, thời gian;
Ngày nay, thế giới đang chuyển mình trong những nghiên cứu về TTNT Chắc chắn rằng máy tính với trí tuệ như con người sẽ tác động mạnh đến cuộc sống xã hội
Trang 25CÂU HỎI CHƯƠNG 1
1 Trình bày mục tiêu của TTNT
2 Trình bày khái niệm cơ bản về TTNT
3 Nêu các tiền đề cơ bản của TTNT
4 Nêu các kỹ thuật trong TTNT
5 Nêu vai trò của TTNT trong công nghệ thông tin
6 Nêu các thành phần của TTNT
7 Nêu những lĩnh vực nghiên cứu và ứng dụng cơ bản của TTNT
8 Nêu những vấn đề đang được giải quyết của TTNT
Trang 26CHƯƠNG 2: CÁC CHIẾN LƯỢC TÌM KIẾM 2.1 Biểu diễn vấn đề trong không gian trạng thái
Bài toán tìm kiếm, một cách tổng quát, có thể hiểu là tìm một đối tượng thỏa mãn một số yêu cầu trong một tập hợp các đối tượng Có rất nhiều vấn đề mà việc giải quyết nó được quy về bài toán tìm kiếm, do đó cần phải xác định không gian tìm kiếm Không gian tìm kiếm bao gồm tất cả các đối tượng mà ta cần quan tâm tìm kiếm Nó
có thể là không gian liên tục, chẳng hạn không gian các véctơ thực n chiều; nó cũng có thể là không gian các đối tượng rời rạc
Trong mục này ta sẽ xét việc biểu diễn một vấn đề trong không gian trạng thái sao cho việc giải quyết vấn đề được quy về việc tìm kiếm trong không gian trạng thái
2.1.1 Không gian trạng thái của bài toán
Muốn biểu diễn một vấn đề trong không gian trạng thái, cần xác định các yếu tố sau: (1) Trạng thái ban đầu;
(2) Một tập hợp các toán tử, trong đó mỗi toán tử R mô tả một hành động hoặc một phép biến đổi có thể đưa một trạng thái u tới một trạng thái v
Tập hợp tất cả các trạng thái có thể đạt tới từ trạng thái ban đầu bằng cách áp dụng
một dãy toán tử, lập thành không gian trạng thái của vấn đề
Ta sẽ ký hiệu không gian trạng thái là U, trạng thái ban đầu là uo (uoU) Mỗi toán
tử R có thể xem như một ánh xạ R: UU
Một tập hợp T các trạng thái kết thúc (trạng thái đích) TU
Khi biểu diễn một vấn đề thông qua các trạng thái và các toán tử thì việc tìm nghiệm của bài toán được quy về việc tìm đường đi từ trạng thái ban đầu tới trạng thái đích (Một đường đi trong không gian trạng thái là một dãy toán tử dẫn một trạng thái tới một trạng thái khác)
Do đó, không gian trạng thái có thể biểu diễn bằng đồ thị định hướng, trong đó mỗi đỉnh của đồ thị tương ứng với một trạng thái Nếu có toán tử R biến đổi trạng thái u thành trạng thái v, thì có cung gán nhãn R đi từ đỉnh u tới đỉnh v (trạng thái v được gọi
là kề với trạng thái u) Khi đó một đường đi trong không gian trạng thái sẽ là một đường đi trong đồ thị này
Ví dụ 2.1: Xét không gian trạng thái có uo=A, T={B} và được miêu tả bằng đồ thị
sau:
Trang 27Hình 2.1 Mô tả không gian trạng thái bằng đồ thị định hướng
Trang 28phải, sang trái, lên trên hoặc xuống dưới sao cho ô trống không ra ngoài bảng để đưa bảng A về bảng B (Hình 2.2)
Hình 2.2 Trò chơi 8 số
Trong bài toán này, trạng thái ban đầu là Bảng A, còn trạng thái kết thúc là Bảng B
Tương ứng với các quy tắc chuyển dịch các quân, ta có bốn toán tử: up (đẩy quân lên trên), down (đẩy quân xuống dưới), left (đẩy quân sang trái), right (đẩy quân sang
phải) Chẳng hạn, từ trạng thái ban đầu (bảng A), ta chỉ có thể áp dụng các toán tử
down, left, up
Trong Ví dụ 2.2 việc tìm ra một biểu diễn thích hợp để mô tả các trạng thái của vấn
đề là khá dễ dàng và tự nhiên Song trong nhiều vấn đề việc tìm được biểu diễn thích hợp cho các trạng thái của vấn đề là hoàn toàn không đơn giản Việc tìm ra dạng biểu diễn tốt cho các trạng thái đóng vai trò hết sức quan trọng trong quá trình giải quyết một vấn đề Có thể nói rằng, nếu ta tìm được dạng biểu diễn tốt cho các trạng thái của vấn đề, thì vấn đề hầu như đã được giải quyết
Ví dụ 2.3: Nhà buôn và kẻ cướp
Có ba nhà nhà buôn và ba kẻ cướp cùng một chiếc thuyền chở được một hoặc hai người ở bên bờ tả ngạn một con sông Hãy tìm cách để chở 3 kẻ cướp và 3 nhà buôn đi thuyền từ tả ngạn sang hữu ngạn sông sao cho ở mỗi bờ sông, số nhà buôn ở mọi thời điểm luôn không nhỏ hơn số kẻ cướp (trừ trường hợp bên một bờ sông không có nhà buôn nào) Nhà buôn và kẻ cướp có thể qua lại hai bên bờ sông nhiều lần
Để biểu diễn các trạng thái, ta sử dụng bộ ba (a, b, k), trong đó a là số nhà buôn, b là
số kẻ cướp ở bên bờ tả ngạn, k = 1 nếu thuyền ở bờ tả ngạn và k = 0 nếu thuyền ở bờ
Trang 29hữu ngạn Như vậy, không gian trạng thái cho bài toán nhà buôn và kẻ cướp được xác định như sau:
- Trạng thái ban đầu là (3, 3, 1)
- Các toán tử: Có năm toán tử tương ứng với hành động thuyền chở qua sông 1 nhà buôn, hoặc 1 kẻ cướp, hoặc 2 nhà buôn, hoặc 2 kẻ cướp, hoặc 1 nhà buôn và 1 kẻ cướp (do thuyền chỉ chở được tối đa 2 người)
- Trạng thái kết thúc là (0, 0, 0)
- Một lời giải cho bài toán như sau:
1 (3, 3, 1) Bắt đầu
2 (3, 1, 0) Chở 2 kẻ cướp sang sông từ tả ngạn sang hữu ngạn
3 (3, 2, 1) Chở 1 kẻ cướp sang sông từ hữu ngạn sang tả ngạn
4 (3, 0, 0) Chở 2 kẻ cướp sang sông từ tả ngạn sang hữu ngạn
5 (3, 1, 1) Chở 1 kẻ cướp sang sông từ hữu ngạn sang tả ngạn
6 (1, 1, 0) Chở 2 nhà buôn sang sông từ tả ngạn sang hữu ngạn
7 (2, 2, 1) Chở 1 kẻ cướp, 1 nhà buôn sang sông từ hữu ngạn
sang tả ngạn
8 (0, 2, 0) Chở 2 nhà buôn sang sông từ tả ngạn sang hữu ngạn
9 (0, 3, 1) Chở 1 kẻ cướp sang sông từ hữu ngạn sang tả ngạn
10 (0, 1, 0) Chở 2 kẻ cướp sang sông từ tả ngạn sang hữu ngạn
11 (0, 2, 1) Chở 1 kẻ cướp sang sông từ hữu ngạn sang tả ngạn
12 (0, 0, 0) Chở 2 kẻ cướp sang sông từ tả ngạn sang hữu ngạn
Ví dụ 2.4:
Cho 2 bình A và B lần lượt có dung tích 3 lít và 5 lít và không có vạch chia độ Ban đầu 2 bình không có nước Có thể rót nước đổ đầy các bình, có thể đổ hết nước từ một bình đi, có thể rót nước từ bình này sang bình khác
Hãy xây dựng không gian trạng thái của bài toán để rót được đúng 4 lít nước trong bình B và hãy chỉ ra 1 cách rót
Sử dụng bộ (a, b) để biểu diễn mỗi trạng thái, trong đó a là lượng nước của bình A, b
là lượng nước của bình B tại thời điểm đang xét
- Trạng thái ban đầu là (0, 0);
- Tập trạng thái kết thúc là T={(x, 4), 0≤x≤3}
- Các toán tử:
Trang 30STT Toán tử Giải thích
1 (a, b) (0, b) (a>0) Đổ hết nước ở bình A
2 (a, b) (a, 0) (b>0) Đổ hết nước ở bình B
3 (a, b) (3, b) (a<3) Đổ đầy nước ở bình A
4 (a, b) (a, 5) (b<10) Đổ đầy nước ở bình B
5 (a, b) (a+b, 0) (a+b3) Đổ hết nước ở bình B sang bình A
6 (a, b) (0, a+b) (a+b5) Đổ hết nước ở bình A sang bình B
7 (a, b) (3, a+b-3) (a<3, a+b>3) Đổ một phần nước từ bình B sang
bình A sao cho bình A đầy nước
8 (a, b) (a+b-5, 5) (b<5, a+b>5) Đổ một phần nước từ bình A sang
bình B sao cho bình B đầy nước Không gian trạng thái có thể biểu diễn dạng đồ thị như sau:
Hình 2.3 Đồ thị biểu diễn cách rót nước
- Tìm một cách rót:
1 (0, 0) Trạng thái ban đầu
2 (0, 5) Đổ đầy nước vào bình B
Trang 31(0, 0) (0, 5) (3, 2) (0, 2) (2, 0) (2, 5) (3, 4)
Ví dụ 2.5 Bài toán tháp Hà Nội
Cho ba cọc 1, 2, 3 Ở cọc 1 ban đầu có 3 đĩa sắp xếp theo thứ tự to dần từ trên xuống dưới Hãy dịch chuyển 3 đĩa đó sang cọc thứ 3 sao cho:
- Mỗi lần chỉ chuyển một đĩa;
- Trong mỗi cọc không cho phép đĩa to nằm trên đĩa nhỏ hơn
Để biểu diễn các trạng thái, ta ký hiệu các đĩa là 1, 2, 3, trong đó đĩa 1 là lớn nhất và đĩa 3 là nhỏ nhất Một trạng thái được biểu diễn bởi bộ (i, j, k) trong đó: đĩa 1 ở vị trí i, đĩa 2 ở vị trí j và đĩa 3 ở vị trí k
Trạng thái đầu uo = (1, 1, 1);
Tập trạng thái kết thúc: T={(3, 3, 3)}
Không gian trạng thái của bài toán có thể miêu tả dạng đồ thị như sau:
Hình 2.4 Biểu diễn không gian trạng của bài toán Tháp Hà Nội
Trang 32đấu thủ thứ hai đến lượt mình đi sẽ có thể đặt ký hiệu"0"của mình vào ô trống và sẽ cứ luân phiên như thế Người nào đặt được k ô (3 k) thẳng hàng, cột hoặc đường chéo liền nhau là thắng (Hình 2.5)
Hình 2.5 Một phần không gian trạng thái của bài toán với n=3
2.2 Giới thiệu các chiến lược tìm kiếm
Có thể phân các chiến lược tìm kiếm thành hai loại:
2.2.1 Các chiến lược tìm kiếm mù
Trong các chiến lược tìm kiếm này, không có một sự hướng dẫn nào cho sự tìm kiếm, mà ta chỉ phát triển các trạng thái ban đầu cho tới khi gặp một trạng thái đích nào đó Có hai kỹ thuật tìm kiếm mù, đó là tìm kiếm theo bề rộng và tìm kiếm theo chiều sâu
Kỹ thuật tìm kiếm theo bề rộng là tìm kiếm trên tất cả các nút của một mức trong không gian bài toán trước khi chuyển sang các nút của mức tiếp theo Tư tưởng của tìm kiếm theo bề rộng là các trạng thái được phát triển theo thứ tự mà chúng được sinh
ra, tức là trạng thái nào được sinh ra trước sẽ được phát triển trước Kỹ thuật tìm kiếm theo bề rộng bắt đầu từ mức thứ nhất của không gian bài toán, theo hướng dẫn của luật trọng tài, chẳng hạn"đi từ trái sang phải” Nếu không thấy lời giải tại mức này, nó chuyển xuống mức sau để tiếp tục… đến khi tìm được lời giải (nếu có)
Kỹ thuật tìm kiếm sâu trong không gian bài toán được bắt đầu từ một nút rồi tiếp tục cho đến khi hoặc đến ngõ cụt hoặc đến đích Tại mỗi nút có luật trọng tài, chẳng hạn,"đi theo nút cực trái”, hướng dẫn việc tìm Nếu không đi tiếp được, gọi là đến ngõ cụt, hệ thống quay lại một mức trên đồ thị và tìm theo hướng khác, chẳng hạn, đến nút"sát nút cực trái” Hành động này gọi là quay lui Thuật toán tìm kiếm theo chiều
Trang 33sâu được hình dung như việc khảo sát một cây bắt đầu từ gốc đi theo mọi cành có thể được, khi gặp cành cụt thì quay lại xét cành chưa đi qua
Trong nhiều vấn đề, dù chúng ta phát triển các trạng thái theo hệ thống nào (theo bề rộng hoặc theo chiều sâu) thì số lượng các trạng thái được sinh ra trước khi ta gặp trạng thái đích thường là cực kỳ lớn Do đó các thuật toán tìm kiếm mù kém hiệu quả, đòi hỏi rất nhiều không gian và thời gian Trong thực tế, nhiều vấn đề không thể giải quyết được bằng tìm kiếm mù
2.2.2 Các chiến lược tìm kiếm kinh nghiệm (tìm kiếm heuristic)
Trong rất nhiều trường hợp, chúng ta có thể dựa vào sự hiểu biết của chúng ta về vấn đề, dựa vào kinh nghiệm, trực giác, để đánh giá các trạng thái Sử dụng sự đánh giá các trạng thái để hướng dẫn sự tìm kiếm: trong quá trình phát triển các trạng thái,
ta sẽ chọn trong số các trạng thái chờ phát triển, trạng thái được đánh giá là tốt nhất để phát triển Do đó tốc độ tìm kiếm sẽ nhanh hơn Các phương pháp tìm kiếm dựa vào
sự đánh giá các trạng thái để hướng dẫn sự tìm kiếm gọi chung là các phương pháp tìm kiếm kinh nghiệm
Như vậy chiến lược tìm kiếm được xác định bởi chiến lược chọn trạng thái để phát triển ở mỗi bước Trong tìm kiếm mù, trạng thái được chọn để phát triển theo thứ tự
mà chúng được sinh ra; còn trong tìm kiếm kinh nghiệm việc chọn trạng thái dựa vào
sự đánh giá các trạng thái
2.3 Cây tìm kiếm
Chúng ta có thể nghĩ đến quá trình tìm kiếm như quá trình xây dựng cây tìm kiếm
Cây tìm kiếm là cây mà các đỉnh được gắn bởi các trạng thái của không gian trạng thái Gốc của cây tìm kiếm tương ứng với trạng thái ban đầu Nếu một đỉnh ứng với trạng thái u, thì các đỉnh con của nó ứng với các trạng thái v Hình 2.6(a) là đồ thị biểu diễn một không gian trạng thái với trạng thái ban đầu là A, Hình 2.6(b) là cây tìm kiếm tương ứng với không gian trạng thái đó
Trang 34Hình 2.6 Đồ thị không gian trạng thái và cây tìm kiếm tương ứng
Mỗi chiến lược tìm kiếm trong không gian trạng thái tương ứng với một phương pháp xây dựng cây tìm kiếm Quá trình xây dựng cây bắt đầu từ cây chỉ có một đỉnh là trạng thái ban đầu Giả sử tới một bước nào đó trong chiến lược tìm kiếm, ta đã xây dựng được một cây nào đó, các lá của cây tương ứng với các trạng thái chưa được phát triển Bước tiếp theo phụ thuộc vào chiến lược tìm kiếm mà một đỉnh nào đó trong các
lá được chọn để phát triển Khi phát triển đỉnh đó, cây tìm kiếm được mở rộng bằng cách thêm vào các đỉnh con của đỉnh đó Kỹ thuật tìm kiếm theo bề rộng (theo chiều sâu) tương ứng với phương pháp xây dựng cây tìm kiếm theo bề rộng (theo chiều sâu)
2.4 Các chiến lược tìm kiếm mù
2.4.1 Tìm kiếm theo bề rộng
a) Thuật toán
Input: Không gian trạng thái có uo là trạng thái đầu, T là tập trạng thái kết thúc
Output: Tìm kiếm thành công (có đường đi từ uo đến một trạng thái kết thúc) hoặc thất bại Trong trường hợp tìm kiếm thành công thi đưa ra đường đi
{thông báo tìm kiếm thất bại; stop};
2.2 Loại trạng thái u ở đầu danh sách L;
2.3 if u T then {thông báo tìm kiếm thành công; stop};
2.4 for (mỗi trạng thái v kề u) and (DD(v) =false) do
Trang 35- Mảng logic DD để đảm bảo mỗi đỉnh không được xét quá 1 lần;
- Mảng Father để tìm lại 1 đường đi trên con đường từ uo đến đích;
Giả sử mỗi trạng thái khi được phát triển sẽ sinh ra b trạng thái kề, b được gọi là
nhân tố nhánh Giả sử nghiệm của bài toán là đường đi có độ dài d Bởi nhiều nghiệm
có thể được tìm ra tại một đỉnh bất kỳ ở mức d của cây tìm kiếm, do đó số đỉnh cần xem xét để tìm ra nghiệm là: 1 + b + b2 + + bd-1 + k, trong đó k có thể là 1, 2, , bd
Do đó số lớn nhất các đỉnh cần xem xét là: 1 + b + b2 + + bd
Như vậy, độ phức tạp thời gian của thuật toán tìm kiếm theo bề rộng là O(bd
) Độ phức tạp không gian cũng là O(bd), bởi vì ta cần lưu vào danh sách L tất cả các đỉnh của cây tìm kiếm ở mức d, số các đỉnh này là bd
+ Cần nhiều bộ nhớ theo số nút cần lưu trữ;
+ Cần nhiều công sức xử lý các nút, nhất là khi các nhánh cây dài làm cho số nút tăng lên;
+ Dễ thực hiện các thao tác không thích hợp, thừa, đưa đến việc tăng đáng kể số nút phải xử lý
+ Không hiệu quả nếu lời giải ở mức quá sâu trên cây tìm kiếm
Trang 36Ví dụ 2.7:
Cho đồ thị biểu diễn không gian trạng thái như sau (Hình 2.7):
Hình 2.7 Đồ thị không gian trạng thái
Hãy tìm đường đi xuất phát từ trạng thái A đến trạng thái B bằng phương pháp tìm kiếm theo bề rộng theo thứ tự bảng chữ cái của nhãn các đỉnh
Bài toán rót nước (xem Ví dụ 2.4) với bình A có dung tích 5 lít, bình B có dung tích
4 lít, yêu cầu đong được 3 lít nước
Trang 38Bước u Đỉnh kề với u và chưa đánh dấu L Father
8 I=B
Vậy lời giải của bài toán là: B D A
2.4.2 Tìm kiếm theo chiều sâu
a) Thuật toán
Input: Không gian trạng thái có uo là trạng thái đầu, T là tập trạng thái kết thúc Output: Tìm kiếm thành công (có đường đi từ uo đến một trạng thái kết thúc) hoặc thất bại Trong trường hợp tìm kiếm thành công thi đưa ra đường đi
{thông báo tìm kiếm thất bại; stop};
2.2 Loại trạng thái u ở đầu danh sách L;
2.3 if u T then {thông báo tìm kiếm thành công; stop};
2.4 for (mỗi trạng thái v kề u) and (DD(v) =false) do
{ DD(v) true;
Đặt v vào đầu danh sách L;
Father(v) u}
End;
Trang 39Ghi chú:
- Mảng logic DD để đảm bảo mỗi đỉnh không được xét quá 1 lần;
- Mảng Father để tìm lại 1 đường đi trên con đường từ uo đến đích;
- Danh sách L được xử lý như ngăn xếp
- Thuật toán tìm kiếm theo chiều sâu là hoàn toàn tương tự như thuật toán tìm kiếm
theo bề rộng, chỉ có một điều khác là, ta xử lý danh sách L các trạng thái chờ phát triển không phải như hàng đợi mà như ngăn xếp Cụ thể là trong bước 2.4 của thuật toán tìm
kiếm theo bề rộng, ta cần sửa lại là"Đặt v vào đầu danh sách L”
Sau đây chúng ta sẽ đưa ra các nhận xét so sánh hai chiến lược tìm kiếm mù:
Thuật toán tìm kiếm theo bề rộng luôn luôn tìm ra nghiệm nếu bài toán có nghiệm Song không phải với bất kỳ bài toán có nghiệm nào thuật toán tìm kiếm theo độ sâu cũng tìm ra nghiệm Nếu bài toán có nghiệm và không gian trạng thái hữu hạn thì thuật toán tìm kiếm theo độ sâu sẽ tìm ra nghiệm Tuy nhiên, trong trường hợp không gian trạng thái vô hạn (chẳng hạn như độ thị trạng thái chứa chu trình), thì có thể nó không tìm ra nghiệm, lý do là nếu ta đi theo một nhánh vô hạn mà nghiệm không nằm trên nhánh đó thì thuật toán sẽ không dừng Do đó không nên áp dụng tìm kiếm theo dộ sâu cho các bài toán có cây tìm kiếm chứa các nhánh vô hạn
b) Đánh giá độ phức tạp của thuật toán tìm kiếm theo độ sâu
Giả sử rằng, nghiệm của bài toán là đường đi có độ dài d, cây tìm kiếm có nhân tố nhánh là b và có chiều cao là d Có thể xảy ra, nghiệm là đỉnh ngoài cùng bên phải trên mức d của cây tìm kiếm, do đó độ phức tạp thời gian của tìm kiếm theo độ sâu trong trường hợp xấu nhất là O(bd
), tức là cũng như tìm kiếm theo bề rộng Tuy nhiên, trên thực tế đối với nhiều bài toán, tìm kiếm theo độ sâu thực sự nhanh hơn tìm kiếm theo
bề rộng Lý do là tìm kiếm theo bề rộng phải xem xét toàn bộ cây tìm kiếm tới mức
d-1, rồi mới xem xét các đỉnh ở mức d Còn trong tìm kiếm theo độ sâu, có thể ta chỉ cần xem xét một bộ phận nhỏ của cây tìm kiếm thì đã tìm ra nghiệm
Để đánh giá độ phức tạp không gian của tìm kiếm theo độ sâu ta có nhận xét rằng, khi ta phát triển một đỉnh u trên cây tìm kiếm theo độ sâu, ta chỉ cần lưu các đỉnh chưa được phát triển mà chúng là các đỉnh con của các đỉnh nằm trên đường đi từ gốc tới đỉnh u Như vậy đối với cây tìm kiếm có nhân tố nhánh b và độ sâu lớn nhất là d, ta chỉ
cần lưu ít hơn db đỉnh Do đó độ phức tạp không gian của tìm kiếm theo độ sâu là
O(db), trong khi đó tìm kiếm theo bề rộng đòi hỏi không gian nhớ O(bd)!
c) Ưu và nhược điểm của phương pháp tìm kiếm sâu
*Ưu điểm
Trang 40- Nếu bài toán có lời giải, và không gian trạng thái là hữu hạn thì phương pháp tìm
kiếm sâu bảo đảm tìm ra lời giải
- Kỹ thuật tìm kiếm sâu tập trung vào đích, con người cảm thấy hài lòng khi các câu
hỏi tập trung vào vấn đề chính
- Do cách tìm của kỹ thuật này, nếu lời giải ở rất sâu, kỹ thuật tìm sâu có thể sẽ tiết
kiệm thời gian
* Nhược điểm
Không phù hợp với không gian bài toán lớn, kỹ thuật tìm kiếm sâu có thể không đến lời giải trong khoảng thời gian vừa phải
d) Ví dụ
Ví dụ 2.10: Cho đồ thị biểu diễn không gian trạng thái như Hình 2.8
Hình 2.8 Đồ thị không gian trạng thái
Hãy tìm đường đi xuất phát từ trạng thái A đến trạng thái B bằng phương pháp tìm kiếm theo chiều sâu theo thứ tự tăng dần của nhãn các đỉnh