Chương 1 MỞ ĐẦU 1.1. Tổng quan về khoa học trí tuệ nhân tạo Trong CNTT, Trí Tuệ Nhân Tạo (Artificial Intelligence) là một ngành mới, nhưng phát triển rất mạnh mẽ và đem lại nhiều kết quả to lớn. Con người thường tự cho mình là sinh vật thông minh vì khả năng trí tuệ đóng vai trò quan trong trong cuộc sống. Trong văn học cũng đã từng có những câu chuyện đề cao về trí thông minh của con người. Trí Tuệ Nhân Tạo chỉ mới hình thành từ năm 1956. Tuy nhiên, việc nghiên cứu trí tuệ đã có từ lâu. Trên 2000 năm trước, các nhà triết học đã tìm hiểu về cách thức nhìn nhận, học tập, nhớ và suy lý. Việc ra đời của máy tính điện tử vào những năm 50 của thế kỷ 20 đã sinh ra khuynh hướng đưa các lĩnh vực nghiên cứu trí tuệ về các vấn đề lý thuyết và thực nghiệm trên máy. 1.1.1. Đối tượng và mục tiêu nghiên cứu của trí tuệ nhân tạo + Đối tượng nghiên cứu: Trí tuệ nhân tạo nghiên cứu về cách hành xử (hay cơ chế của các hành vi) thông minh (intelligent behaviour) ở người và máy. + Mục tiêu: Xây dựng lý thuyết đầy đủ về thông minh để 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. (Hay nói cách khác tạo chiếc máy tính có khả năng nhận thức, suy luận và phản ứng). * Thế nào là máy thông minh? Là máy vượt qua được thử nghiệm (trắc nghiệm) Turing. * Trắc nghiệm Turing (Turing test): Năm 1950, một nhà toán học người Anh là Alan Turing đã viết những trang sách đầu tiên trả lời một cách cụ thể câu hỏi: trí tuệ máy có liên hệ như thế nào với máy tính kỹ thuật số hiện đại? Liệu có thể làm cho một máy tính thực sự có khả năng suy nghĩ hay không? Để giải quyết những mơ hồ trong câu hỏi này, ông đã đề xuất thay thế câu trả lời bằng kết quả của một trắc nghiệm mang tính thực nghiệm - trắc nghiệm Turing (Turing test) hay “trò chơi bắt chước”. Hình 1.1. Trắc nghiệm Turing Trong trắc nghiệm này: một máy tính và một người tham gia trắc nghiệm được đặt vào trong các căn phòng cách biệt với một người thứ hai (người thẩm vấn). Người thẩm vấn không biết được chính xác đối tượng nào là người hay máy tính, và cũng chỉ có thể giao tiếp với hai đối tượng đó thông qua các phương tiện kỹ thuật như một thiết bị soạn thảo văn bản, hay thiết bị đầu cuối. Người thẩm vấn có nhiệm vụ phân biệt người với máy tính bằng cách chỉ dựa trên những câu trả lời của họ đối với những câu hỏi được truyền qua thiết bị liên lạc này. Trong trường hợp nếu người thẩm vấn không thể phân biệt được máy tính với người (tức không cần ràng buộc máy làm gì, như thế nào miễn là máy đó làm cho người thẩm vấn tưởng máy là người) thì khi đó, theo Turing, máy tính này có thể được xem là thông minh. * Ưu điểm của trắc nghiệm Turing: Nó đưa ra một khái niệm khách quan về trí tuệ, tức là hành vi của một thực thể thông minh nào đó đáp ứng lại một tập hợp các câu hỏi đặc thù. Việc này cho chúng ta một chuẩn mực để xác định trí thông minh. Nó tránh cho chúng ta khỏi bị lạc đường bởi những câu hỏi rắc rối và hiện thời chưa thể trả lời được, chẳng hạn như máy tính có sử dụng những suy luận thích hợp bên trong nó hay không? hay máy tính thực sự có ý thức được những hành động của nó hay không? Nó loại trừ bất cứ định kiến thiên vị nào vì bắt buộc người thẩm vấn chỉ tập trung vào nội dung các câu trả lời. * Như vậy:: - 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 AI. - 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.2. Vai trò của trí tuệ nhân tạo Trí tuệ nhân tạo 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 trí tuệ nhân tạo ở 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. Trí tuệ nhân tạo 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 Trí tuệ nhân tạo đã 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. Trí tuệ nhân tạo 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ô hinh 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 trí tuệ nhân tạo 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 trí tuệ nhân tạo 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. So sánh kỹ thuật lập trình truyền thống và kỹ thuật xử lý tri thức trong TTNT Truyền thống TTNT Xử lý dữ liệu Xử lý tri thức Xử lý theo các thuật toán Xử lý theo các thuật giải Heuristics Xử lý tuần tự theo lô Xử lý theo chế độ tương tác cao (ngôn ngữ tự nhiên, có giao tiếp với bên ngoài) Không giải thích trong quá trình thực hiện Có thể giải thích hành vi hệ thống trong quá trình thực hiện 1.1.3. Các kỹ thuật trí tuệ nhân tạo Có nhiều kỹ thuật nghiên cứu, phát triển ngành khoa học Trí tuệ nhân tạo. Tuy vậy, các kỹ thuật Trí tuệ nhân tạo thường khá phức tạp khi cài đặt cụ thể, lý do là các kỹ thuật này thiên về xử lý các ký h
Trang 1Chương 1
MỞ ĐẦU 1.1 Tổng quan về khoa học trí tuệ nhân tạo
Trong CNTT, Trí Tuệ Nhân Tạo (Artificial Intelligence) là một ngành mới,nhưng phát triển rất mạnh mẽ và đem lại nhiều kết quả to lớn Con người thường
tự cho mình là sinh vật thông minh vì khả năng trí tuệ đóng vai trò quan trongtrong cuộc sống Trong văn học cũng đã từng có những câu chuyện đề cao về tríthông minh của con người
Trí Tuệ Nhân Tạo chỉ mới hình thành từ năm 1956 Tuy nhiên, việc nghiêncứu trí tuệ đã có từ lâu Trên 2000 năm trước, các nhà triết học đã tìm hiểu về cáchthức nhìn nhận, học tập, nhớ và suy lý Việc ra đời của máy tính điện tử vào nhữngnăm 50 của thế kỷ 20 đã sinh ra khuynh hướng đưa các lĩnh vực nghiên cứu trí tuệ
về các vấn đề lý thuyết và thực nghiệm trên máy
1.1.1 Đối tượng và mục tiêu nghiên cứu của trí tuệ nhân tạo
+ Đối tượng nghiên cứu: Trí tuệ nhân tạo nghiên cứu về cách hành xử (hay
cơ chế của các hành vi) thông minh (intelligent behaviour) ở người và máy
+ Mục tiêu: Xây dựng lý thuyết đầy đủ về thông minh để 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ácmáy móc nói chung, nhằm phục vụ cho con người (Hay nói cách khác tạo chiếcmáy tính có khả năng nhận thức, suy luận và phản ứng)
* Thế nào là máy thông minh?
Là máy vượt qua được thử nghiệm (trắc nghiệm) Turing
* Trắc nghiệm Turing (Turing test):
Năm 1950, một nhà toán học người Anh là Alan Turing đã viết những trangsách đầu tiên trả lời một cách cụ thể câu hỏi: trí tuệ máy có liên hệ như thế nào vớimáy tính kỹ thuật số hiện đại? Liệu có thể làm cho một máy tính thực sự có khảnăng suy nghĩ hay không?
Để giải quyết những mơ hồ trong câu hỏi này, ông đã đề xuất thay thế câutrả lời bằng kết quả của một trắc nghiệm mang tính thực nghiệm - trắc nghiệmTuring (Turing test) hay “trò chơi bắt chước”
Trang 2Hình 1.1 Trắc nghiệm TuringTrong trắc nghiệm này: một máy tính và một người tham gia trắc nghiệmđược đặt vào trong các căn phòng cách biệt với một người thứ hai (người thẩmvấn) Người thẩm vấn không biết được chính xác đối tượng nào là người hay máytính, và cũng chỉ có thể giao tiếp với hai đối tượng đó thông qua các phương tiện
kỹ thuật như một thiết bị soạn thảo văn bản, hay thiết bị đầu cuối
Người thẩm vấn có nhiệm vụ phân biệt người với máy tính bằng cách chỉdựa trên những câu trả lời của họ đối với những câu hỏi được truyền qua thiết bịliên lạc này
Trong trường hợp nếu người thẩm vấn không thể phân biệt được máy tínhvới người (tức không cần ràng buộc máy làm gì, như thế nào miễn là máy đó làmcho người thẩm vấn tưởng máy là người) thì khi đó, theo Turing, máy tính này cóthể được xem là thông minh
* Ưu điểm của trắc nghiệm Turing:
Nó đưa ra một khái niệm khách quan về trí tuệ, tức là hành vi của một thựcthể thông minh nào đó đáp ứng lại một tập hợp các câu hỏi đặc thù Việc này chochúng ta một chuẩn mực để xác định trí thông minh
Nó tránh cho chúng ta khỏi bị lạc đường bởi những câu hỏi rắc rối và hiệnthời chưa thể trả lời được, chẳng hạn như máy tính có sử dụng những suy luậnthích hợp bên trong nó hay không? hay máy tính thực sự có ý thức được nhữnghành động của nó hay không?
Nó loại trừ bất cứ định kiến thiên vị nào vì bắt buộc người thẩm vấn chỉ tậptrung vào nội dung các câu trả lời
* Như vậy::
- 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 AI
- 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.2 Vai trò của trí tuệ nhân tạo
Trang 3Trí tuệ nhân tạo 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 trí tuệ nhân tạo ở các kỹ thuật hệ thống hoá và tự động hoá các xử lý trithức cũng như các phương pháp thuộc lĩnh vực mang tính người
Trí tuệ nhân tạo nghiên cứu kỹ thuật làm cho máy tính có thể “suy nghĩ mộtcách thông minh” và mô phỏng quá trình suy nghĩ của con người khi đưa ra nhữngquyế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ảiquyết bài toán
Sự ra đời và phát triển của Trí tuệ nhân tạo đã 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 Trí tuệ nhân tạo chính là cơ sở củacô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ốngdự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ô hinh logic ngôn ngữ, logicmờ, ), các tri thức thủ tục và tri thức mô tả có thể biểu diễn được trong máy Dovậ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ínhtrong lĩnh vực đòi hỏi tri thức chuyên gia ở trình độ cao, rất khó như: y học, sinhhọc, địa lý, tự động hóa
- Một số phần mềm trí tuệ nhân tạo 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 trí tuệ nhân tạo 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
So sánh kỹ thuật lập trình truyền thống và kỹ thuật xử lý tri thức
trong TTNT
Xử lý theo các thuật toán Xử lý theo các thuật giải Heuristics
Xử lý tuần tự theo lô Xử lý theo chế độ tương tác cao (ngôn ngữ tự
nhiên, có giao tiếp với bên ngoài)Không giải thích trong quá trình
thực hiện
Có thể giải thích hành vi hệ thống trong quátrình thực hiện
1.1.3 Các kỹ thuật trí tuệ nhân tạo
Có nhiều kỹ thuật nghiên cứu, phát triển ngành khoa học Trí tuệ nhân tạo.Tuy vậy, các kỹ thuật Trí tuệ nhân tạo thường khá phức tạp khi cài đặt cụ thể, lý
Trang 4do là các kỹ thuật này thiên về xử lý các ký hiệu tượng trưng và đòi hỏi phải sửdụng những tri thức chuyên môn thuộc nhiều lĩnh vực khác nhau
Do vậy, các kỹ thuật Trí tuệ nhân tạo hướng tới khai thác những tri thức vềlĩnh vực đang quan tâm được mã hoá trong máy sao cho đạt được mức độ tổngquát; dễ hiểu, dễ diễn đạt thông qua ngôn ngữ chuyên môn gần gũi với ngôn ngữ
tự nhiên; dễ sửa đổi, hiệu chỉnh, dễ sử dụng, khai thác nhằm thu hẹp các khả năngcần xét để đi tới lời giải cuối cùng
* Các kỹ thuật Trí tuệ nhân tạo 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 suyluậ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ệuquả
- Các ngôn ngữ về Trí tuệ nhân tạo: Để 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ônngữ 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: Trí tuệ nhân tạo 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 Trí
tuệ nhân tạo 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áphà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ậndạng chữ viết, âm thanh
- Người máy: Cuối những năm 70, người máy trong công nghiệp đã đạt
được nhiều tiến bộ 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à Trí tuệ nhântạo đượ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
Trí tuệ nhân tạo xây dựng các cơ chế trả lời theo hành vi, có ý thức; nó giúp choviệc thực hiện các suy diễn mang tính người
- Ngoài ra, 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 Trí tuệ nhân tạo
Trang 51.2 Lịch sử phát triển của trí tuệ nhân tạo
Lịch sử của Trí tuệ nhân tạo cho thấy ngành khoa học này có nhiều kết quảđáng ghi nhận Theo các mốc phát triển, người ta thấy Trí tuệ nhân tạo được sinh
ra từ những năm 50 với các sự kiện sau:
Turing được coi là người khai sinh ngành Trí tuệ nhân tạo 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
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 ofTechnology) ngôn ngữ LISP ra đời, phù hợp với các nhu cầu xử lý đặctrưng của trí tuệ nhân tạo - đó là ngôn ngữ lập trình đầu tiên dùng cho trítuệ nhân tạo
Thuật ngữ Trí tuệ nhân tạo đượ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ínhbiế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
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ủaSamuel
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ói1968: Chương trình điều khiển người máy (Robot) theo đồ án “Mắt –tay”, chương trình học nói
Vào những năm 60, do giới hạn khả năng của các thiết bị, bộ nhớ và đặcbiệ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áthoá 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 nhanhnhưng các phương pháp tiếp cận Trí tuệ nhân tạo 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ểudiễn tri thức và giải quyết vấn đề Những kết quả đó đã tạo điều kiện chosản phẩm thương mại đầu tiên của Trí tuệ nhân tạo ra đời đó là Hệ chuyêngia, được đem áp dụng trong các lĩnh vực khác nhau (Hệ chuyên gia là mộtphầ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
Trang 6mức độ nào đó, ở một trình độ như một chuyên gia con người có kinhnghiệ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ảnphẩm ở trình đô cao như: máy giặt, máy ảnh, sử dụng Trí tuệ nhân tạo.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 minhtrong các hệ thống thông tin, gọi chung là cài đặt trí tuệ nhân tạo, làm rõhơn các ngành của khoa học Trí tuệ nhân tạo và tiến hành các nghiên cứumới, đặc biệt là nghiên cứu về cơ chế suy lý, về Trí tuệ nhân tạo phân tạo,
về các mô hình tương tác
* Những đặc trưng của Trí tuệ nhân tạo
Trí tuệ nhân tạo xử lý thông tin theo trật tự ký hiệu Các thông tin gồm: kháiniệm, luật, các đối tượng ? dùng cho suy lý Khái niệm cơ bản trong Trí tuệnhân tạo là sự thể hiện, suy lý, nhận biết, việc học và hệ thống cơ sở trithức
Phương pháp may rủi hay được dùng trong Trí tuệ nhân tạo Phương phápnày cho phép giải hai lớp bài toán khó Thứ nhất là những bài toán chưa cóthuật giải ( bài toán nhận biết, ra quyết định) Thứ hai là các bài toán đã cóthuật giải nhưng độ phức tạp lớn ( chẳng hạn bài toán chơi cờ)
Trí tuệ nhân tạo xét đến những thông tin không đầy đủ, không chính xác, có
vẻ mâu thuẫn Tuy vậy, các kết quả của Trí tuệ nhân tạo là cụ thể
Việc tương tác người- máy đi đôi với nhận biết tự động là cần thiết trong Trítuệ nhân tạo Các bài toán nhận dạng là ví dụ về yêu cầu này
Trí tuệ nhân tạo liên quan đến nhiều lĩnh vực, như các kỹ thuật mới, logichọc, khoa học nhận biết, ngôn ngữ học, khoa học về tổ chức, thần kinh học.Trí tuệ nhân tạo còn nằm trong các lĩnh vực nghiên cứu nâng cao, các đề ánnghiên cứu quan trọng
1.3 Một số vấn đề trí tuệ nhân tạo quan tâm
1.3.1 Những vấn đề chung
Khoa học Trí tuệ nhân tạo liên quan đến cảm giác, tri giác và cả quá trình tưduy thông qua các hành vi, giao tiếp Nó có các định hướng nghiên cứu, ứng dụngsau:
Trang 7- Tìm và nghiên cứu các thủ tục giúp con người tiến hành các hoạt độngsáng tạo Công việc sáng tạo được thực hiện trên mô hình theo cấu trúc, chức năng
và sử dụng công nghệ thông tin
- Dùng ngôn ngữ tự nhiên Trước hết là ngôn ngữ được dùng để thể hiện trithức, tiếp thu và chuyển hoá sang dạng có thể xử lý được
- Hình thức hoá các khía cạnh, các hành vi liên quan đến Trí tuệ nhân tạo
Do vậy có thể xây dựng các bài toán mang tính người và thông minh
Các hoạt động lớn trong Trí tuệ nhân tạo bao gồm: chứng minh định lý, xử
lý ngôn ngữ tự nhiên, hiểu tiếng nói, phân tích ảnh và hình, người máy và hệchuyên gia Về cài đặt hệ thống, khuynh hướng hiện tại của Trí tuệ nhân tạo là càiđặt các hệ Trí tuệ nhân tạo trong các hệ thống khác, đặc biệt là trong các hệ thốngtin học
1.3.2 Những vấn đề chưa được giải quyết trong trí tuệ nhân tạo
Những thành tựu nghiên cứu và ứng dụng các kỹ thuật Trí tuệ nhân tạo đã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:
Sự khác nhau trong hoạt động giữa máy tính và bộ não con người, điều nàythể hiện ưu thế của máy tính so với bộ não người vì khả năng tính toán rất lớn(nhất là trong các chương trình xử lý dữ liệu lớn)
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 không 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ự linhhoạt này không thể mô phỏng được trong các hệ thống Trí tuệ nhân tạo
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 Trí tuệ
nhân tạo là khả năng kết hợp các phương pháp xử lý thông tin trong môi trườngliê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áy tính có nhiều tính năng cao nhưng
cũng không 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: cho tới nay, người ta chưa thể tạo lập được các hệ
thống Trí tuệ nhân tạo 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
1.3.3 Những vấn đề đặt ra trong tương lai của trí tuệ nhân tạo
Trang 8Trong tương lai, những nghiên cứu và ứng dụng của Trí tuệ nhân tạo tập trungvà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 Trí tuệ nhân tạo 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íchnghi, 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áytrê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 tinhình ảnh, tiếng nói
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ễnthô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ộckhông gian, thời gian
Ngày nay, thế giới đang chuyển mình trong những nghiên cứu về Trí tuệ nhântạo 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ộcsống xã hội
1.4 Các khái niệm cơ bản
Trí tuệ con người (Human Intelligence): Cho đến nay có hai khái niệm về
trí tuệ con người được chấp nhận và sử dụng nhiều nhất, đó là:
* Khái niệm trí tuệ theo quan điểm của Turing:
“Trí tuệ là những gì có thể đánh giá được thông qua các trắc nghiệm thôngminh”
* Khái niệm trí tuệ đưa ra trong tụ điển bách khoa toàn thư:
Trang 9Trí tuệ máy: cũng không có một định nghĩa tổng quat, nhưng cũng có thể
nêu các đặc trưng chính:
- Khả năng học
- Khả năng mô phỏng hành vi của con người
- Khả năng trừu tượng hoá, tổng quát hoá và suy diễn
- Khả năng tự giải thích hành vi
- Khả năng thích nghi tình huống mới kể cả thu nạp tri thức và dữ liệu
- Khả năng xử lý các biểu diễn hình thức như các ký hiệu tượng trưng
- Khả năng sử dụng tri thức heuristic
- Khả năng xử lý các thông tin không đầy đủ, không chính xác
Trí tuệ nhân tạo (AI - Artificial Intelligence): có thể được định nghĩa như
một ngành của khoa học máy tính liên quan đến việc tự động hóa các hành vithông minh
AI là một bộ phận của khoa học máy tính và do đó nó phải được đặt trênnhững nguyên lý, lý thuyết vững chắc, có khả năng ứng dụng được Những nguyên
lý này bao gồm: các cấu trúc dữ liệu dùng cho biểu diễn tri thức, các thuật toáncần thiết để áp dụng những tri thức đó, cùng các ngôn ngữ và kỹ thuật lập trìnhdùng cho việc cài đặt chúng
1.5 Một số chuyên ngành (lĩnh vực ứng dụng) của trí tuệ nhân tạo
- Các phương pháp tìm kiếm lời giải
Trang 10Chương 2 BIỂU DIỄN VẤN ĐỀ TRONG KHÔNG GIAN TRẠNG THÁI
2.1 Đặt vấn đề
Trong các lĩnh vực nghiên cứu của Trí Tuệ Nhân Tạo, chúng ta thườngxuyên phải đối đầu với vấn đề (bài toán) tìm kiếm, vì thế chúng ta phải có những
kỹ thuật tìm kiếm áp dụng để giải quyết các vấn đề (bài toán) đó
Khi giải quyết bài toán bằng phương pháp tìm kiếm, trước hết ta phải xác
định không gian tìm kiếm bao gồm tất cả các đối tượng trên đó thực hiện việc tìm
Giải bài toán trong không gian trạng thái, trước hết phải xác định dạng mô
tả trạng thái bài toán sao cho bài toán trở nên đơn giản hơn, phù hợp bản chất vật
lý của bài toán (Có thể sử dụng các xâu ký hiệu, véctơ, mảng hai chiều, cây, danhsách)
Mỗi trạng thái chính là mỗi hình trạng của bài toán, các tình trạng ban đầu
và tình trạng cuối của bài toán gọi là trạng thái đầu và trạng thái cuối
Ví dụ 1: Bài toán đong nước
Cho 2 bình có dung tích lần lượt là m và n (lit) Với nguồn nước không hạnchế, dùng 2 bình trên để đong k lit nước Không mất tính tổng quát có thể giả thiết
- Trạng thái đầu: (0,0)
- Trạng thái cuối: (x,k) hoặc (k,y), 0 x m , 0 y n
Ví dụ 2: Bài toán trò chơi 8 số
Trang 11B
A
c B A
Trong bảng ô vuông 3 hàng, 3 cột , mỗi ô chứa một số nằm trong phạm vi từ
1 đến 8 sao cho không có 2 ô có cùng giá trị, có một ô trong bảng bị trống (khôngchứa giá trị nào cả Xuất phát từ một sắp xếp nào đó các số trong bảng, hãy dịchchuyển ô trống sang phải-right, sang trái-left, lên trên-up hoặc xuống dưới-down(nếu có thể được) để đưa bảng ban đầu về bảng qui ước trước
Chẳng hạn Hình 2.1 trên đây là bảng xuất phát và Hình 2.2 là bảng mà taphải thực hiện các bước di chuyển ô trống để đạt được
Hình 2.1 Hình 2.2Giá trị các phần tử trong bảng xác định trạng thái bài toán Vì vậy có thể mô
tả trạng thái của bài toán bằng một ma trận A3*3= (aij), aij{0 8}, aij < > akl, i<>k,j<> l
- Trạng thái đầu của bài toán là ma trận:
- Trạng thái cuối là ma trận:
Có thể phát biểu dạng tổng quát của bài toán này (Trò chơi n2-1 số)
Ví dụ 3: Bài toán tháp Hà Nội
Cho ba cọc 1, 2, 3 Ở cọc 1 ban đầu có n đĩa sắp xếp theo thứ tự to dần từdưới lên trên Hãy dịch chuyển n đĩ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
Hình 2.3 Bài toán tháp Hà Nội (n=3)
4 6 1
3 8 2
4 0 8
3 2 1
Trang 12Bài toán xác định khi biết được từng đĩa đang nằm ở cọc nào Hay nói cáchkhác, có hai cách xác định:
- Cọc 1 hiện đang chứa những đĩa nào? Cọc 2 hiện đang chứa những đĩanào? Và cọc 3 đang chứa những đĩa nào
- Đĩa lớn thứ i hiện đang nàm ở cọc nào? ( i = 1 … n )
Như vậy cách mô tả trạng thái bài toán không duy nhất, vấn đề là chọn cách
mô tả nào để đạt được mục đích dễ dàng nhất
Theo trên, với cách thứ nhất ta phải dùng 3 danh sách động vì số đĩa trênmỗi cọc là khác nhau trong từng thời điểm khác nhau
Cách thứ hai, nhìn qua thì khó mô tả nhưng dựa vào khái niệm về bộ có thứ
tự trong toán học, cách này mô tả bài toán hiệu quả hơn Thật vậy, nếu gọi xi làcọc chứa đĩa lớn thứ i, trong đó xi{1, 2, 3}, i{1 n} Khi đó bộ có thứ tự (x1, x2, ,xn) có thể dùng làm dạng mô tả trạng thái đang xét của bài toán Với cách mô tảnày thì:
- Trạng thái đầu là (1,1, .,1)
- Trạng thái cuối là (3,3, .,3)
2.3 Toán tử chuyển trạng thái
Toán tử chuyển trạng thái thực chất là các phép biến đổi đưa từ trạng tháinày sang trạng thái khác Có hai cách dùng để biểu diễn các toán tử:
- Biểu diễn như một hàm xác định trên tập các trạng thái và nhận giá trịcũng trong tập này
- Biểu diễn dưới dạng các quy tắc sản xuất S? A có nghĩa là nếu có trạngthái S thì có thể đưa đến trạng thái A
Ví dụ 1: Bài toán đong nước
Các thao tác sử dụng để chuyển trạng thái này sang trạng thái khác gồm:
Đổ đầy một bình, đổ hết nước trong một bình ra ngoài, đổ nước từ bình nàysang bình khác Như vậy, nếu trạng thái đang xét là (x,y) thì các trạng thái kế tiếp
có thể chuyển đến sẽ là:
(m,y)(x,n)(0,y)(x,0) (x,y) (0, x+ y) nếu x+y < = n
(x+y -n,n) nếu x+y > n(x+ y,0) nếu x+y < = m(m, x+y-m) nếu x+y > m
Ví dụ 2: Trò chơi 8 số
Trang 13Các thao tác để chuyển trạng thái tương ứng với việc chuyển ô trống sangphải, sang trái, lên, xuống nếu có thể được.
- Biểu diễn theo quy tắc sản xuất:
- Biểu diễn theo một hàm:
Gọi hàm fu là hàm biểu diễn cho toán tử chuyển ô trống lên trên; gọi B (B=(bij)) là trạng thái sau khi di chuyển ô trống ở trạng thái A (A= (aij)) lên trên, nghĩalà: B= fu(A), giả sử ô trống đang ở vị trí (i0, j0) (hay nói cách khác ai0 j0 = 0) thì hàm
f được xác định như sau:
aij (i, j) nếu i0 = 1
fu(aij) = aij nếu (i, j) (i0-1, j0) và (i, j) (i0, j0) và i0 >1
ai0-1, j0 nếu (i, j) = (i0, j0), i0 >1
ai0, j0 nếu (i, j) = (i0-1, j0), i0 >1Tương tự, có thể xác định các phép chuyển ô trống xuống dưới fd, qua trái fl,qua phải fr như sau:
aij (i, j) nếu i0 = 3
fd(aij) = aij nếu (i, j) (i0+1, j0) và (i, j) (i0, j0) và i0 <3
ai0-1, j0 nếu (i, j) = (i0, j0), i0 <3
ai0, j0 nếu (i, j) = (i0+1, j0), i0 <3
aij (i, j) nếu j0 = 1
fl(aij) = aij nếu (i, j) (i0, j0-1) và (i, j) (i0, j0) và j0 > 1
ai0-1, j0 nếu (i, j) = (i0, j0), j0 > 1
ai0, j0 nếu (i, j) = (i0, j0-1), j0 > 1
aij (i, j) nếu j0 = 3
fr(aij) = aij nếu (i, j) (i0, j0+1) và (i, j) (i0, j0) và j0 < 3
ai0-1, j0 nếu (i, j) = (i0, j0), j0 < 3
ai0, j0 nếu (i, j) = (i0, j0+1), j0 < 3
Ví dụ 3: Bài toán Tháp Hà Nội với n=3
Mỗi trạng thái là một bộ ba (i, j, k) Có các trường hợp như sau:
1342587 6
1325487 6
1342568 7
1342587 6
Trang 14- Hai đĩa cùng nằm trên một cọc: (i, i, j), (i, j, i), (j, i, i)
- Ba đĩa nằm trên ba cọc phân biệt: (i, j, k)
(i, i, i) (i, i, j)
(i, i, k)(i, i, j) (i, i, k)
(i, k, j)(i, i, i)(i, j, i) (i, j, k)
(i, j, j)(i, k, i) (j, i, i) (j, i, j)
(j, i, k)(k, i, i)(i, j, k) (i, i, k)
(i, j, j)(i, j, i)
2.4 Không gian trạng thái của bài toán
Không gian trạng thái là tập tất cả các trạng thái có thể có và tập các toán tửcủa bài toán
Không gian trạng thái là một bộ bốn, Ký hiệu: K= (T, S, G, F) Trong đó:T: tập tất cả các trạng thái có thể có của bài toán
S: trạng thái đầu
G: tập các trạng thái đích
F: tập các toán tử
Ví dụ 1: Không gian trạng thái của bài toán đong nước là bộ bốn T, S, G, F
xác đinh như sau:
F = Tập các khả năng có thể chuyển đĩa đã xác định trong phần trước
Ví dụ 3: Không gian trạng thái của bài toán trò chơi 8 số:
Trang 15T = { (aij)3x3 / 0<= aij <= 8 và aij <> akl với i<> j hoặc k <> l}
S = Ma trận xuất phát của bài toán
G = Ma trận cuối cùng của bài toán (các số nằm theo vị trí yêu cầu)
F = {fl, fr, fu, fd}Tìm kiếm lời giải trong không gian trạng thái là quá trình tìm kiếm xuấtphát từ trạng thái ban đầu, dựa vào toán tử chuyển trạng thái để xác định các trạngthái tiếp theo cho đến khi gặp được trạng thái đích
Như vậy, muốn biểu diễn một vấn đề trong không gian trạng thái, ta cần xác
định các yếu tố sau:
- Trạng thái ban đầu
- Một tập hợp các toán tử Trong đó mỗi toán tử mô tả một hành động hoặcmột phép biến đổi có thể đưa một trạng thái tới một trạng thái khác
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 đề
2.5 Biểu diễn không gian trạng thái dưới dạng đồ thị
- Nếu G là đồ thị có hướng thì cung (i, j) hoàn toàn khác với cung (j, i)
Ví dụ: Xét đồ thị vô hướng G1 và đồ thị có hướng G2
Tập đỉnh kề:
nV, T(n)={mV/ (n,m) E} được gọi là tập các đỉnh kề của n
Đường đi:
p = (n1, ,nk) được gọi là đường đi từ đỉnh n1 nk nếu ni V, i=1,k
(ni, ni+1)E i=1, k -1
Trang 16- nV, nT(n0), trong đó T(n0): tập các đỉnh thuộc dòng dõi của n0 (n0 là
tổ tiên của n)
- nV, mV sao cho nT(m), m được gọi là cha của n
2.5.2 Biểu diễn không gian trạng thái bằng đồ thị
Theo ngôn ngữ đồ thị, không gian trạng thái tương ứng với một đồ thị địnhhướng trong đó: Các trạng thái tương ứng với các đỉnh trong đồ thị, nếu tồn tạitoán tử chuyển trạng thái thì có cung (s, t)
Để thấy rõ mối tương quan, ta có bảng sau:
Trạng tháiToán tửDãy các trạng thái liên tiếp
ĐỉnhCungĐường đi
aij = 1 nếu (i, j) E
0 trong trường hợp ngược lạiNếu G là đồ thị vô hướng thì ma trận kề A là ma trận đối xứng
Ví dụ: Với đồ thị vô hướng G1 và đồ thị có hướng G2 ở trên ta có các matrận kề sau:
* Biểu diễn bằng danh sách kề
Với mỗi đỉnh i của đồ thị, ta có một danh sách tất cả các đỉnh kề với i, ta kýhiệu là List(i) Để thể hiện List(i) ta có thể dùng mảng, kiểu tập hợp hay kiểu contrỏ Ví dụ với đồ thị G1, ta có List(1)= [2, 3, 4]
Trang 17Ví dụ 1: Bài toán đong nước m=3, n=2, k=1
(0,0) (3,0) (0,2)
Trang 18Chương 3 CÁC PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI TRONG
KHÔNG GIAN TRẠNG THÁI 3.1 Đặt vấn đề
Quá trình tìm kiếm lời giải của bài toán được biểu diễn trong không giantrạng thái được xem như quá trình dò tìm trên đồ thị, xuất phát từ trạng thái banđầu, thông qua các toán tử chuyển trạng thái, lần lượt đến các trạng thái tiếp theocho đến khi gặp được trạng thái đích hoặc không còn trạng thái nào có thể tiếp tụcđược nữa
Khi áp dụng các phương pháp tìm kiếm trong không gian trạng thái, người
ta thường quan tâm đến các vấn đề sau:
- Kỹ thuật tìm kiếm lời giải
- Phương pháp luận của việc tìm kiếm
- Chiến lược tìm kiếm
Tuy nhiên, không phải các phương pháp này có thể áp dụng để giải quyếtcho tất cả các bài toán phức tạp mà chỉ cho từng lớp bài toán
Việc chọn chiến lược tìm kiếm cho bài toán cụ thể phụ thuộc nhiều vào cácđặc trưng của bài toán
* Chúng ta lần lượt nghiên cứu các kỹ thuật sau:
- Các kỹ thuật tìm kiếm mù: trong đó chúng ta không có hiểu biết gì về các
đối tượng để hướng dẫn tìm kiếm mà chỉ đơn thuần là xem xét theo một hệ thốngnào đó tất cả các đối tượng để phát hiện ra đối tượng cần tìm
- Các kỹ thuật tìm kiếm kinh nghiệm (tìm kiếm heuristic): trong đó chúng ta
dựa vào kinh nghiệm và sự hiểu biết của chúng ta về vấn đề cần giải quyết để xâydựng nên hàm đánh giá hướng dẫn sự tìm kiếm
- v.v…
* Các chiến lược tìm kiếm có thể phân thành hai loại:
- 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ù cơ
bản, đó là tìm kiếm theo bề rộng (chiều rộng) và tìm kiếm theo độ sâu (chiều sâu).
- Tìm kiếm kinh nghiệm (tìm kiếm heuristic): Trong rất nhiều vấn đề, 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ựcgiác, để đánh giá các trạng thái
Ở tìm kiếm kinh nghiệm 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
Trang 19thá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ù: ta chọn trạng thái để phát triển theo thứ tự mà chúngđược sinh ra
Trong tìm kiếm kinh nghiệm: ta chọn trạng thái dựa vào sự đánh giá cáctrạng thái
* Các thủ tục tìm kiếm điển hình bao gồm:
- Tìm kiếm theo chiều rộng (Breadth – First Search)
- Tìm kiếm theo chiều sâu (Depth – First Search)
- Tìm kiếm sâu dần (Depthwise Search)
- Tìm kiếm cực tiểu hoá giá thành (Cost minimization Search)
- Tìm kiếm với tri thức bổ sung (Heuristic Search)
A - TÌM KIẾM MÙ 3.2 Phương pháp tìm kiếm theo chiều rộng
Trang 20Chú ý: Thủ tục Append(MO,n0) bổ sung một phần tử vào queue MO.
Hàm Take(MO) lấy một phần tử trong queue MO
3.2.3 Đánh giá độ phức tạp của giải thuật tìm kiếm rộng
Giả sử rằng, mỗi trạng thái khi được xét sẽ sinh ra k trạng thái kế tiếp Khi
đó ta gọi k là nhân tố nhánh Nếu bài toán tìm được nghiệm theo phương pháp tìmkiếm rộng có độ dài d Như vậy, đỉnh đích sẽ nằm ở mức d, do đó số đỉnh cần xétlớn nhất là:
1 + k + k2 + + kd
Như vậy độ phức tạp thời gian của giải thuật là O(kd) Độ phức tạp khônggian cũng là O(kd), vì tất cả các đỉnh của cây tìm kiếm ở mức d đều phải lưu vàodanh sách
3.2.4 Ưu và nhược điểm của phương pháp tìm kiếm rộng
* Ưu điểm:
Kỹ thuật tìm kiếm rộng là kỹ thuật vét cạn không gian trạng thái bài toán vìvậy sẽ tìm được lời giải nếu có
Đường đi tìm được đi qua ít đỉnh nhất
Thuận lợi khi muốn tìm nhiều lời giải
* Nhược điểm:
Tìm kiếm lời giải theo thuật toán đã định trước, do vậy tìm kiếm một cáchmáy móc; khi không có thông tin hổ trợ cho quá trình tìm kiếm, không nhận
ra ngay lời giải
Không phù hợp với không gian bài oán kích thước lớn Đối với loại bài toánnày, phương pháp tìm rộng đối mặt với các nhu cầu:
- 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, số núttăng
Trang 21- 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
(1;0)
(5;3) (5;1) (0;0) (5;0) (0;4) (5;4) (1;4) (4;0)
(1;0) (0;1)
(5;3)
Trang 22(5;0) (0;4)
(1;4) (5;4) (0;0) (5;4) (0;0) (4;0)
(5;0) (0;4) (5;4) (0;4) (1;0) (5;0) (5;0) (4;4)(0;0) (0;4)
(1;4) (5;0) (0;1) (5;4) (0;4) (4;0) (5;3)
(0;4) (5;1) (0;0) (1;0)
Ta có thể biểu diễn dưới dạng đồ thị sau:
Ví dụ 2: Bài toán trò chơi 8 số.
Trang 243.3 Phương pháp tìm kiếm theo chiều sâu
3.3.1 Kỹ thuật tìm kiếm sâu
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ụccho đến khi hoặc đến ngõ cụt hoặc đến đích Tại mỗi nút có luật trong tài, chẳnghạ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à đếnngõ 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 sâu được hình dung như việc khảo sát mộtcâ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étcành chưa đi qua
- Ở bước tổng quát, giả sử đang xét đỉnh i, khi đó các đỉnh kề với i có cáctrường hợp:
+ Nếu tồn tại đỉnh j kề i chưa được xét thì xét đỉnh này (nó trở thànhđỉnh đã xét) và bắt đầu từ đó tiếp tục quá trình tìm kiếm với đỉnh này
+ Nếu với mọi đỉnh kề với i đều đã được xét thì i coi như duyệt xong
và quay trở lại tìm kiếm từ đỉnh mà từ đó ta đi đến được i
Trang 25Procedure DFS; (Depth First Search)
Chú ý: Thủ tục Push(MO,n0) thực hiện việc bổ sung n0 vào stack MO
Hàm Pop(MO) lấy phần tử đầu tiên trong Stack MO
3.3.3 Đánh giá độ phức tạp của thuật toán tìm kiếm sâu
Giả sử 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à k Có thể xảy ra nghiệm là đỉnh cuối cùng được xét ở mức d+1 theo luậttrọng tài Khi đó độ phức tạp thời gian của thuật toán tìm kiếm theo chiều sâutrong trường hợp xấu nhất là O(kd)
Để đánh giá độ phức tạp không gian của thuật toán tìm kiếm sâu ta có nhậnxét ràng: Khi xét đỉnh j, ta chỉ cần lưu các đỉnh chưa được xét mà chúng là nhữngđỉnh con của những đỉnh nằm trên đường đi từ đỉnh gốc đến j Vì vậy chỉ cần lưutối đa la k*d Do đó độ phức tạp không gian của thuật toán là O(k*d)
3.3.4 Ưu và nhược điểm của phương pháp tìm kiếm sâu
* Ưu điểm:
Nếu bài toán có lời giải, 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áccâ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 sẽ tiếtkiệm thời gian
Thuận lợi khi muốn tìm một lời giải
* Nhược điểm:
Tìm sâu khai thác không gian bài toán để tìm lời giải theo thuật toán đơn giảnmột cách cứng nhắc Trong quá trình tìm nó không có thông tin nào hổ trợ đểphát hiện lời giải Nếu chọn nút ban đầu không thích hợp có thể không dẫn đếnđích của bài toán
Trang 26 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.
3.3.5 Các ví dụ
Ví dụ 1: Bài toán đong nước với m = 5, n = 4, k = 3.
Chú ý: Nếu ta chọn nhánh ưu tiên đổ đầy bình thứ hai thì sẽ tìm thấy lời giảirất nhanh Quá trình tìm kiếm có thể trình bày bằng bảng sau
(0;0) (0;4) (4;0)
(4;4) (5;4) (0;4) (4;0)
(5;3)
(5;0) (5;4)(5;3)
(0;0) (0;4) (4;0) (4;4)
(5;3)
Lời giải tìm được: (0;0) (0;4) (4;0) (4;4) (5;3)
Ví dụ 2: Bài toán Tháp Hà nội với n = 3
Nhắc lại, dùng bộ ba (x1; x2; x3) biểu diễn trạng thái bài toán, với xi là cọcchứa đĩa lớn thứ i
Trang 27Cả hai ví dụ trên, chúng ta đều thấy, tìm kiếm theo chiều sâu đều cho lờigiải tốt và nhanh.
Ví dụ 3: Bài toán tìm dãy hợp lý với số hạng đầu a1 = 26
Nhắc lại: Dãy a1, a2, …,an được gọi là hợp lý nếu thoả hai điều kiện:
- an là số nguyên tố
- ak+1 = ak+1 hoặc 2*ak
Như vậy, khi biết ak thì ta xác định được ak+1 Vì vậy có thể mô tả trạng tháibài toán tương ứng với giá trj ak tại thòi điểm đang xét Ta có thể chỉ ra một cáchtìm kiếm theo chiều sâu như sau
a1 = 26; a2 = 52; a3 = 53 Như vậy n =3
3.4 Phương pháp tìm kiếm theo chiều sâu dần
3.4.1 Kỹ thuật tìm kiếm sâu dần
Kỹ thuật tìm kiếm sâu dần là thực hiện việc tìm kiếm với độ sâu ở mứcgiưói hạn d nào đó Nếu không tìm ra nghiệm ta tăng độ sâu lên d+1 và lại tìmkiếm theo độ sâu tới mức d+1 Quá trình trên được lặp lại với d lần lượt là 1,2, đến độ sâu max nào đó
Kỹ thuật tìm kiếm sâu dần thường được thực hiện khi cây tìm kiếm chứanhánh vô hạn, và nếu sử dụng tìm kiếm theo độ sâu ta có thể mắc kẹt ở một nhánhnào đó (thuật toán không dừng) và không tìm ra nghiệm
n0
d
Trang 283.4.2 Giải thuật
Thuật toán tìm kiếm sâu dần sử dụng thuật toán tìm kiếm sâu hạn chế nhưthủ tục con Đó là thủ tục tìm kiếm theo chiều sâu nhưng chỉ tới độ sâu d nào đórồi quay lên
Thủ tục tìm kiếm sâu hạn chế (depth_limitedsearch)
Procedure Depth_limited_search(d); {d là tham số độ sâu}
Thuật toán tìm kiếm sâu dần (Depth_deepening_search) sẽ sử dụng thủ
tục tìm kiếm sâu hạn chế như thủ tục con:
- Có độ phức tạp thời gian là O(kd) (giống tìm kiếm rộng)
- Có độ phức tạp không gian là O(k*d) (giống tìm kiếm sâu)
- Giải thuật tìm kiếm sâu dần thường áp dụng cho các bài toán có khônggian trạng thái lớn và độ sâu của nghiệm không biết trước
Trang 29B - TÌM KIẾM KINH NGHIỆM VÀ TỐI ƯU
(Tìm kiếm heuristic)
Kỹ thuật tìm kiếm mù là phương pháp cơ bản để khai thác không gian bàitoán Chúng đều vét cạn không gian để tìm ra lời giải theo thủ tục xác định trước.Mặc dù có sử dụng tri thức về trạng thái của bài toán để hướng dẫn tìm kiếmnhưng không phổ biến, kém hiệu quả và trong nhiều trường hợp không thể ápdụng được
Như vậy, chúng ta sẽ nghiên cứu các phương pháp tìm kiếm kinh nghiệm(tìm kiếm heuristic), đó là các phương pháp sử dụng hàm đánh giá để hướng dẫn
sự tìm kiếm
* Hàm đánh giá và tìm kiếm kinh nghiệm:
Trong nhiều vấn đề, ta có thể sử dụng kinh nghiệm, tri thức của chúng ta vềvấn đề đó để đánh giá các trạng thái của vấn đề
Với mỗi trạng thái u, ta sẽ xác dịnh một giá trị số h(u), số này đánh giá “sự
gần đích” của trạng thái u Hàm h(u) được gọi là hàm đánh giá.
Phương pháp tìm kiếm kinh nghiệm là phương pháp tìm kiếm có sử dụngđến hàm đánh giá
Trong quá trình tìm kiếm, tại mỗi bước ta sẽ chọn trạng thái để phát triển làtrạng thái có giá trị hàm đánh giá nhỏ nhất, trạng thái này được xem là trạng thái
có nhiều hứa hẹn nhất hướng tới đích
Quá trình tìm kiếm trong không gian trạng thái có sử dụng hàm đánh giá bao gồm
các bước cơ bản sau:
- Biểu diễn thích hợp các trạng thái và các toán tử chuyển trạng thái
Nếu hàm đánh giá không chính xác, nó có thể dẫn ta đi chệch hướng và do
đó tìm kiếm kém hiệu quả
Hàm đánh giá được xây dựng tùy thuộc vào vấn đề Sau đây là một số ví dụ
về hàm đánh giá:
Ví dụ 1: Trong bài toán tìm kiếm đường đi trên bản đồ giao thông, ta có thể
lấy độ dài của đường chim bay từ một thành phố tới một thành phố đích làm giá trị
của hàm đánh giá
Ví dụ 2: Bài toán 8 số
Trang 30Chúng ta có thể đưa ra hai cách xây dựng hàm đánh giá.
- Hàm h1: Với mỗi trạng thái u thì h1(u) là số quân không nằm đúng vị trí của nó trong trạng thái đích, thì h1(u) = 4, vì các quân không đúng vị trí là 3, 8, 6
và 1
- Hàm h2: Gọi h2(u) là là tổng khoảng cách giữa vị trí của các quân trong
trạng thái u và vị trí của nó trong trạng thái đích (khoảng cách được hiểu là số lầndịch chuyển ít nhất theo hàng hoặc cột để đưa một quân ở vị trí của hiện tại tớitrạng thái đích)
Ta có: h2(u)=2+3+1+3= 9 (vì quân 3 cần ít nhất 2 dịch chuyển, quân 8 cần
ít nhất 3 dịch chuyển, quân 6 cần ít nhất 1 dịch chuyển và quân 1 cần ít nhất 3 dịchchuyển)
Tìm kiếm kinh nghiệm
Hai chiến lược tìm kiếm kinh nghiệm quan trọng nhất là tìm kiếm tốt nhất đầu tiên (Best-First Search) và tìm kiếm leo đồi (Hill-Climbing Search) Có thểxác định các chiến lược này như sau:
Tìm kiếm tốt nhất đầu tiên = Tìm kiếm theo bề rộng + Hàm đánh giá
- Tìm kiếm leo đồi = Tìm kiếm theo độ sâu + Hàm đánh giá
3.5 Kỹ thuật tìm kiếm tốt nhất đầu tiên (Best First Search)
3.5.1 Kỹ thuật tìm kiếm tốt nhất đầu tiên
Sử dụng hàm đánh giá để hướng dẫn việc tìm kiếm Hàm này dùng cácthông tin hiện tại về mức độ quan trọng của bài toán tại nút đó để gán giá trị chonút này, gọi là trọng số của nút Giá trị này được xem xét trong lúc tìm kiếm.Thông thường, nút có trọng số nhỏ (lớn) nhất sẽ được chọn trong quá trình tìmkiếm
Tìm kiếm tốt nhất đầu tiên khác với tìm kiếm theo chiều rộng ở chỗ:
- Trong tìm kiếm theo chiều rộng ta lần lượt phát triển tất cả các nút ở mứchiện tại để sinh ra các nút ở mức tiếp theo
- Còn trong tìm kiếm tốt nhất đầu tiên ta chọn nút để phát triển là nút tốtnhất được xác định bởi hàm đánh giá (tức là nút có có trọng số nhỏ (lớn) nhất sẽđược chọn), nút này có thể ở mức hiện tại hoặc ở các mức trên
Trang 313.5.2 Ưu và nhược điểm của phương pháp tìm kiếm tốt nhất đầu tiên
và cách tốt nhất để tiến hành tìm lời giải
- Tìm kiếm tốt nhất đầu tiên tuân theo cách suy lý của một chuyên gia Do
đó có thể thấy rõ đường đi hơn tìm kiếm rộng và tìm kiếm sâu
danh sách MO được sắp theo thứ tự tăng dần của hàm đánh giá (hay trọng số)
Trang 32* Quá trình tìm kiếm tốt nhất đầu tiên diễn ra như sau:
- Đầu tiên phát triển nút A sinh ra các nút kề là C, D và E Trong ba nút này,nút D có giá trị hàm đánh giá nhỏ nhất, nó được chọn để phát triển và sinh ra F, I
- Trong số các nút chưa được phát triển C, E, F, I thì nút E có giá trị đánhgiá nhỏ nhất, nó được chọn để phát triển và sinh ra các đỉnh G, K
- Trong số các nút chưa được phát triển thì G tốt nhất, phát triển G sinh ra
B, H Đến đây ta đã đạt tới trạng thái kết thúc
Kết quả:
3.6 Phương pháp tìm kiếm leo đồi (Hill-Climbing Search)
3.6.1 Kỹ thuật tìm kiếm leo đồi
Tìm kiếm leo đồi là tìm kiếm theo độ sâu được hướng dẫn bởi hàm đánhgiá
Song khác với tìm kiếm theo độ sâu, khi phát triển một đỉnh u thì bước tiếptheo ta chọn trong số các đỉnh con của u, đỉnh có hứa hẹn nhiều nhất để phát triển,đỉnh này được xác định bởi hàm đánh giá
3.6.2 Nhận xét phương pháp tìm kiếm leo đồi
Phương pháp tìm kiếm leo đồi chú trọng tìm hướng đi dễ dẫn đến trạng tháiđích nhất Vấn đề quan trọng là biết khai thác khéo léo thông tin phản hồi để xácđịnh hướng đi tiếp và đẩy nhanh quá trình tìm kiếm
Thông thường ta gán mỗi trạng thái của bài toán với một số đo (hàm đánhgiá) nào đó nhằm đánh giá mức độ gần đích của nó Điều đó có nghĩa là nếu trạngthái hiện thời là u thì trạng thái v sẽ được phát triển tiếp theo nếu v kề với u vàhàm đánh giá của v đạt giá trị max (hoặc min)
Tuy nhiên phương pháp này không được cải thiện so với các phương phápkhác trong một số trường hợp sau:
Trang 33- Cực trị địa phương: nút đang xét tốt hơn các nút lân cận, nhưng đó khôngphải là phương án tốt nhất trong toàn thể, ví vậy có thể phải quay lui về nút trước
để đi theo hướng khác Giải pháp này đòi hỏi ghi nhớ lại nhiều đường đi
- Cao nguyên bằng phẳng: Các giá trị của các phương án như nhau, khôngxác định được ngay hướng nào là tốt hơn trong vùng lân cận
Đường đi từ đỉnh n0 đến DICH
Procedure HLC; {Hill Climbing Search}
Ví dụ 1: Xét không gian trạng thái được biểu diễn bởi đồ thị trong hình sau,
trong đó trạng thái ban đầu là A, trạng thái kết thúc là B Giá trị của hàm đánh giá
là các trọng số ghi cạnh mỗi nút
Trang 34* Quá trình tìm kiếm leo đồi diễn ra như sau:
Đầu tiên phát triển đỉnh A sinh ra các đỉnh con C, D, E Trong các đỉnh nàychọn D để phát triển, và nó sinh ra các đỉnh con B, G Quá trình tìm kiếm kết thúc.Cây tìm kiếm leo đồi được cho trong hình dưới đây:
Ví dụ 2: Bài toán trò chơi 8 số
Trạng thái được chọn đi tiếp ở hướng mũi tên
Ở mức 3 chúng ta thấy có hai trạng thái cùng giá trị hàm đánh giá (h = 3).Đây là trương hợp “cao nguyên băng phẳng” như nhận xét trên, nếu ta chọnphương án kia thì chắc chắn quá trình tìm kiếm sẽ khác đi nhiều
Minh hoạ cây tìm kiếm cho trò chơi này theo giải thuật leo đồi với hướngchọn như sau:
Trang 351 2 3
7 6 5 3.7 Tìm kiếm đường đi có giá thành cực tiểu - Thuật giải AT
Trang 36ni ni+1
* Vấn đề:
Tìm đường đi p: n0 n* DICH sao cho ( ) ( ) min
p u
u c p
đi được xác định là tổng độ dài các cung trên đường đi Vấn đề đặt ra là tìm đường
đi ngắn nhất từ trạng thái ban đầu đến trạng thái đích
) (
) , ( g n c n m m
g
E m
g
MO m
Trang 372
Trang 38Đường đi tìm được p: A D F G Chi phí của đường đi là 14.
Ví dụ 3: Bài toán Tháp Hà Nội - với chi phí chuyển đĩa như sau:
Chi phí chuyển đĩa nhỏ giữa 2 cọc gần 1
Chi phí chuyển đĩa nhỏ giữa 2 cọc xa 3
Chi phí chuyển đĩa vừa giữa 2 cọc gần 2
Chi phí chuyển đĩa vừa giữa 2 cọc xa 5
Chi phí chuyển đĩa lớn giữa 2 cọc gần 4
Chi phí chuyển đĩa lớn giữa 2 cọc xa 8
Xuất phát từ đỉnh (1,1,1), ta có g(1,1,1) = 0
Khi xét đỉnh (1,1,1) ta có các đỉnh kề và chi phí tương ứng :
g(1,1,2) = 1; g(1,1,3) = 3; như vậy đỉnh (1,1,2) được chọn
2
9 5
Trang 39g(1,1,3) = 2 (ở đây giá của đỉnh (1,1,3) được tính lại); g(1,3,2) = 5; chọn
đỉnh (1,1,3), ta lại tính tiếp giá trị hàm g của các đỉnh kề với đỉnh này:
g(1,2,3) = 2; lại chọn đỉnh (1,2,3); chi phí của các đỉnh kề với nó:
g(1,2,1) = 2 + 3 = 5; g(1,2,2) = 2 + 1 = 3; chọn đỉnh (1,2,2)
g(1,2,1) = 3 +1 = 4 (được tính lại); g(3,2,2) = 3 + 8 = 11, chọn đỉnh (1,2,1)
Cứ tiếp tục như vậy cho đến khi xét đỉnh (3,3,3)
3.8 Tìm kiếm đường đi cực tiểu - Thuật giải A*
3.8.1 Đặt vấn đề
Đối với nhiều bài toán, việc tìm kiếm đường đi cực tiểu sẽ được định hướng
tập trung xung quanh đường đi tốt nhất, nếu sử dụng các thông tin đặc tả về bài
toán gọi là các heuristic
Đối với việc tìm kiếm đường đi với chi phí cực tiểu, người ta sử dụng hàmđánh giá heuristic như sau:
- Gọi g(n): giá cực tiểu đường đi từ n0n Tại đỉnh n, g(n) xác định được
- Gọi h(n): giá cực tiểu đường đi từ nDICH, h(n) không xác định được người ta tìm cách ước lượng giá trị này
Để làm giảm không gian tìm kiếm ta dựa vào heuristic để ước lượng giá trịcác nút
Đặt f0(n)=g0(n)+h0(n): dự đoán chi phí cực tiểu của đường đi từ
n0DICH có đi qua đỉnh n
Chỉ số “0” ám chỉ đây là giá trị ước lượng chứ không phải giá trị chính xác.
Giá trị chính xác chỉ biết được khi ta đến đích tức giải xong bài toán
Ta chú ý h0(n) càng lớn thì càng tốt, tức là khai thác nhiều thông tin về
trạng thái hiện tại hướng tới tương lai
Trang 40Tuy nhiên người ta CM được rằng thuật toán A* chắc chắn dừng khi h0(n)
<= h(n) (h0=h: phương án tốt nhất, h0=0: phương án tồi nhất).
Lúc này giải thuật tìm kiếm cực tiểu sẽ thay việc xét hàm g (như đã biếtmục trước) bởi hàm f
3.8.2 Thuật giải A*
Input:
Đồ thị G = (V,E), Đỉnh xuất phát n0
Hàm chi phí c: E R+
c(i,j): xác định chi phí chuyển từ đỉnh i sang đỉnh j với (i,j) E
h: V R+; h(n) xác định dự đoán chi phí tối ưu của đường đi từ đỉnh n đếnđích (ký hiệu h thay cho h0, (tương tự g))
f
MO m