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”.

1

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
2

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ìnhCó thể giải thích hành vi hệ thống trong quá
thực hiện
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ý

3

do 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ổng
quá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ăng
cầ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 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ề 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ô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: 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á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: 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ân
tạ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 cho
việ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.
4

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 Trí tuệ nhân tạo ra đời đó là Hệ chuyên gia. phù hợp với các nhu cầu xử lý đặc trưng của trí tuệ nhân tạo . … đưa ra khái niêm “trí tuệ nhân tạo”.Mc Carthy. Shannon.đó là ngôn ngữ lập trình đầu tiên dùng cho trí tuệ nhân tạo. 1966: Chương trình phân tích và tổng hợp tiếng nói 1968: Chương trình điều khiển người máy (Robot) theo đồ án “Mắt – tay”. • 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. 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ự”. được đem áp dụng trong các lĩnh vực khác nhau (Hệ chuyên 5 . 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.2. Theo các mốc phát triển. biểu diễn tri thức và giải quyết vấn đề. 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. • Tháng 8/1956 J. 1964: Chương trình giải phương trình đại số sơ cấp. Simon . • 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. 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.1. • Vào những năm 60. chương trình học nói. • Vào những năm 70. do giới hạn khả năng của các thiết bị. • Vào khoảng năm 1960 tại Đại học MIT (Massachussets Institure of Technology) ngôn ngữ LISP ra đời. chương trình chơi cờ của Samuel. A. • 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ĩ. M. 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ý). 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. 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 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). Minsky. Newell.

nhận biết.. • Trí tuệ nhân tạo xét đến những thông tin không đầy đủ..máy đi đôi với nhận biết tự động là cần thiết trong Trí tuệ nhân tạo. ứng dụng sau: 6 .1. * 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. về các mô hình tương tác. việc học và hệ thống cơ sở tri thức.3. đặc biệt là nghiên cứu về cơ chế suy lý. Các thông tin gồm: khái niệm. 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áy ảnh. Phương pháp này cho phép giải hai lớp bài toán khó. khoa học về tổ chức. thần kinh học. tri giác và cả quá trình tư duy thông qua các hành vi.. Những vấn đề chung Khoa học Trí tuệ nhân tạo liên quan đến cảm giác. có vẻ mâu thuẫn. Một số vấn đề trí tuệ nhân tạo quan tâm 1. 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ờ). Khái niệm cơ bản trong Trí tuệ nhân tạo là sự thể hiệ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 đó. khoa học nhận biết. 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ứu mới. • Những năm 90. tiếng nói. 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. 1. tương tự LISP nhưng nó có cơ sở dữ liệu đi kèm. Tuy vậy. Trí tuệ nhân tạo còn nằm trong các lĩnh vực nghiên cứu nâng cao. ngôn ngữ học. ra quyết định). giao tiếp. Các hệ thống nhận dạng và xử lý ảnh. suy lý. gọi chung là cài đặt trí tuệ nhân tạo. 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. • Việc tương tác người. Các bài toán nhận dạng là ví dụ về yêu cầu này. về Trí tuệ nhân tạo phân tạo. 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. • Vào những năm 80. • Trí tuệ nhân tạo liên quan đến nhiều lĩnh vực. Nó có các định hướng nghiên cứu. luật.3. như các kỹ thuật mới. các đề án nghiên cứu quan trọng. không chính xác. • Phương pháp may rủi hay được dùng trong Trí tuệ nhân tạo. logic học. ở một trình độ như một chuyên gia con người có kinh nghiệm khá lâu năm). các đối tượng ? dùng cho suy lý. • Một sự kiện quan trọng vào những năm 70 là sự ra đời ngôn ngữ Prolog. sử dụng Trí tuệ nhân tạo. các kết quả của Trí tuệ nhân tạo là cụ thể.

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 động sáng tạo. . 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ý. xử lý ngôn ngữ tự nhiên. Tuy vậy trong một số phạm vi. 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.3.. song máy tính không thể hoạt động song song như bộ não con người được. 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ường liên tục với các thao tác xử lý thông tin rời rạc. Các hoạt động lớn trong Trí tuệ nhân tạo bao gồm: chứng minh định lý. tiếp thu và chuyển hoá sang dạng có thể xử lý được. .Dùng ngôn ngữ tự nhiên. chức năng và sử dụng công nghệ thông tin. hiểu tiếng nói. phân tích ảnh và hình. Công việc sáng tạo được thực hiện trên mô hình theo cấu trúc. 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.Hình thức hoá các khía cạnh. từ đó diễn giải theo cách dễ hiểu nhất. Trước hết là ngôn ngữ được dùng để thể hiện tri thức. đặc biệt là trong các hệ thống tin học. 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.2. điều này thể 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). 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ĩ. Những vấn đề đặt ra trong tương lai của trí tuệ nhân tạo 7 .3. 1. 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.3. 1. người máy và hệ chuyên gia. các hành vi liên quan đến Trí tuệ nhân tạo. 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. tự điều khiển hoạt động của nó để thích nghi với môi trường. sự linh hoạt này không thể mô phỏng được trong các hệ thống Trí tuệ nhân tạo. Ngược lại. Do vậy có thể xây dựng các bài toán mang tính người và thông minh. Khả năng tự tổ chức: cho tới nay.

Á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. tự tổ chức. những nghiên cứu và ứng dụng của Trí tuệ nhân tạo 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. .Trong tương lai. 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. Ngày nay. xử lý thông tin hình ảnh. .Thu thập các sự kiện (facts) và các luật suy diễn (inference rules) để đạt được đích đặt ra. thu thập và xử lý tri thức. thời gian. thế giới đang chuyển mình trong những nghiên cứu về Trí tuệ nhân tạo. 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. có khả năng diễn giải.Xác định tập đích (goals).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. xử lý song song. tổng quát hoá.4. Những nghiên cứu các chuyên gia tâm lý học nhận thức chỉ ra rằng quá trình hoạt động trí tuệ của con người bao gồm 4 thao tác cơ bản: . đó 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ông minh” * Khái niệm trí tuệ đưa ra trong tụ điển bách khoa toàn thư: “Trí tuệ là khả năng: Phản ứng một cách thích hợp những tình huống mới thông qua hiệu chỉnh hành vi một cách thích đáng. tiếng nó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. 8 . 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. . 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. Hiểu rõ những mối liên hệ qua lại của các sự kiện của thế giới bên ngoài nhằm đưa ra những hành động phù hợp đạt tới một mục đích nào đó. 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. 1. tự thích nghi.

Khả năng học.5. 1.Trí tuệ máy: cũng không có một định nghĩa tổng quat.Các phương pháp tìm kiếm lời giải . . . . .Khả năng xử lý các thông tin không đầy đủ.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 vi thông minh. . .Khả năng trừu tượng hoá. Trí tuệ nhân tạo (AI . các thuật toán cần thiết để áp dụng những tri thức đó. .Khả năng sử dụng tri thức heuristic.Hệ chuyên gia . 9 .Xử lý ngôn ngữ tự nhiên . 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. nhưng cũng có thể nêu các đặc trưng chính: .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. Một số chuyên ngành (lĩnh vực ứng dụng) của trí tuệ nhân tạo . AI là một bộ phận của khoa học máy tính và do đó nó phải được đặt trên những nguyên lý. không chính xác. có khả năng ứng dụng được.Khả năng mô phỏng hành vi của con người. lý thuyết vững chắc.Các mô hình thần kinh (Mạng Neuron và giải thuật di truyền) …. tổng quát hoá và suy diễn .Máy học .Khả năng tự giải thích hành vi. cùng các ngôn ngữ và kỹ thuật lập trình dùng cho việc cài đặt chúng.Khả năng thích nghi tình huống mới kể cả thu nạp tri thức và dữ liệu..Lập kế hoạch và Người máy (Robot) .Lý thuyết nhận dạng .

Với nguồn nước không hạn chế. véctơ. chẳng hạn không gian các véctơ thực n chiều. Tại mỗi thời điểm xác định. 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).Trạng thái cuối: (x. danh sách). 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. mảng hai chiều. nó cũng có thể là không gian các đối tượng rời rạc. 0 ≤ y ≤ n Ví dụ 2: Bài toán trò chơi 8 số 10 . 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.1.0) . Như vậy.y). 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ới cách mô tả như vậy.n). chúng ta thường xuyên phải đối đầu với vấn đề (bài toán) tìm kiếm. Một phương pháp biểu diễn vấn đề phù hợp là sử dụng các khái niệm trạng thái (state) và toán tử (operator) [Phép biến đổi trạng thái]. Nó có thể là không gian liên tục. lượng nước hiện có trong mỗi bình phản ánh bản chất hình trạng của bài toán ở thời điểm đó. Phương pháp giải quyết vấn đề dựa trên khái niệm trạng thái và toán tử được gọi là cách tiếp cận giải quyết vấn đề nhờ không gian trạng thái. các trạng thái đặc biệt của bài toán sẽ là: . Không mất tính tổng quát có thể giả thiết k <= min(m. Mỗi trạng thái chính là mỗi hình trạng của bài toán. cây.Trạng thái đầu: (0. 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) đó. 0 ≤ x ≤ m . dùng 2 bình trên để đong k lit nước.y) có thể xem là trạng thái của bài toán.2. Đặt vấn đề Trong các lĩnh vực nghiên cứu của Trí Tuệ Nhân Tạo. Như vậy bộ có thứ tự (x. 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. 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 kiếm. . Mô tả trạng thái Giải bài toán trong không gian trạng thái.Chương 2 BIỂU DIỄN VẤN ĐỀ TRONG KHÔNG GIAN TRẠNG THÁI 2. Khi giải quyết bài toán bằng phương pháp tìm kiếm.Gọi x là lượng nước hiện có trong bình dung tích m và y là lượng nước hiện có trong bình dung tích n.k) hoặc (k.

2 Giá trị các phần tử trong bảng xác định trạng thái bài toán. có một ô trong bảng bị trống (không chứa giá trị nào cả. Ví dụ 3: Bài toán tháp Hà Nội Cho ba cọc 1. A B A B c C 1 2 3 1 2 Hình 2. Hình 2.Trạng thái đầu của bài toán là ma trận: 2  1 7  8 6 0 3  4 5  . sang trái-left..1 Hình 2. 3 cột . aij < > akl. aij∈{0. Ở 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. Xuất phát từ một sắp xếp nào đó các số trong bảng. hãy dịch chuyển ô trống sang phải-right. 3.Trong bảng ô vuông 3 hàng. Bài toán tháp Hà Nội (n=3) 11 3 .1 trên đây là bảng xuất phát và Hình 2.Mỗi lần chỉ chuyển một đĩa. 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.Trong mỗi cọc không cho phép đĩa to nằm trên đĩa nhỏ hơn. . Chẳng hạn Hình 2. ∀i<>k.2 là bảng mà ta phải thực hiện các bước di chuyển ô trống để đạt được.8}. . 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ị. j<> l.3.Trạng thái cuối là ma trận: 1  8 7  2 0 6 3  4 5  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ì 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). 2. Hãy dịch chuyển n đĩa đó sang cọc thứ 3 sao cho: .

. 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ái này sang trạng thái khác. 2. Có hai cách dùng để biểu diễn các toán tử: . .y) (x. .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ạng thái S thì có thể đưa đến trạng thái A.y) (x..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 thứ nhất ta phải dùng 3 danh sách động vì số đĩa trên mỗi cọc là khác nhau trong từng thời điểm khác nhau. Như vậy. nếu gọi xi là cọc chứa đĩa lớn thứ i.0) nếu x+y < = m (m.1) .1. trong đó xi∈{1. cách này mô tả bài toán hiệu quả hơn. vấn đề là chọn cách mô tả nào để đạt được mục đích dễ dàng nhất.Bài toán xác định khi biết được từng đĩa đang nằm ở cọc nào.n) (0. Thật vậy. 3}. i∈{1 . nếu trạng thái đang xét là (x.. đổ nước từ bình này sang bình khác.Cọc 1 hiện đang chứa những đĩa nào? Cọc 2 hiện đang chứa những đĩa nào? Và cọc 3 đang chứa những đĩa nào.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. đổ hết nước trong một bình ra ngoài. .y) (0. x+ y) nếu x+y < = n (x+y -n. Với cách mô tả này thì: . x2.3) 2.0) (x.3..y) thì các trạng thái kế tiếp có thể chuyển đến sẽ là: (m.. . Theo trên. 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. . . . x+y-m) nếu x+y > m Ví dụ 2: Trò chơi 8 số 12 . .n) nếu x+y > n (x+ y. Cách thứ hai. có hai cách xác định: .Trạng thái cuối là (3. Hay nói cách khác.3. Khi đó bộ có thứ tự (x1.Trạng thái đầu là (1.Đĩ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. 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.n}.

j0) và i0 >1 ai0-1. j. j) = (i0. j0-1). qua phải fr như sau: aij ∀ (i. j0) và (i. i0 <3 fl(aij) = aij aij ai0-1. Mỗi trạng thái là một bộ ba (i. k). j) = (i0. i0 <3 ai0. j) nếu i0 = 3 fd(aij) = aij nếu (i. i0 >1 Tương tự. j0) và j0 < 3 ai0-1. j0-1) và (i. j0). j0 < 3 ai0. j) nếu j0 = 1 nếu (i. giả sử ô trống đang ở vị trí (i0.Biểu diễn theo quy tắc sản xuất: 1342587 6 1325487 6 1342587 6 1342568 7 . j0) và j0 > 1 nếu (i. j) ≠ (i0. j) = (i0. j0 nếu (i. j) ≠ (i0+1. j) ≠ (i0-1. j) = (i0. j0). j) = (i0. j0). j0 > 1 aij ∀ (i. j0) và i0 <3 ai0-1. xuống nếu có thể được. j0). 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. i0 >1 ai0. j) = (i0-1. j0+1). j0 < 3 Ví dụ 3: Bài toán Tháp Hà Nội với n=3. lên. j) = (i0+1. j) = (i0. có thể xác định các phép chuyển ô trống xuống dưới fd. j0) và (i. j0 nếu (i. j) nếu j0 = 3 fr(aij) = aij nếu (i. j0). j0 > 1 nếu (i. j) ≠ (i0. j) ≠ (i0. j0+1) và (i. j) nếu i0 = 1 fu(aij) = aij nếu (i. Có các trường hợp như sau: 13 . sang trái. j) ≠ (i0. j0 nếu (i. j) ≠ (i0. j0) (hay nói cách khác ai0 j0 = 0) thì hàm f được xác định như sau: aij ∀ (i. qua trái fl. j0 ∀ (i. j0 nếu (i. nghĩa là: B= fu(A). j0 ai0. j0).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. j0 nếu (i. j) ≠ (i0.Các thao tác để chuyển trạng thái tương ứng với việc chuyển ô trống sang phải. j0 nếu (i. .

i. i) (i. 3)} F = Tập các khả năng có thể chuyển đĩa đã xác định trong phần trước. i. (j. i) 2. i) (j. i. i. i) (i. k) (i. 2. G.4. j) (i. j. i.k) hoặc (k. S. j. k) (i. k) (i. i) (i. 1) G = {(3.Hai đĩa cùng nằm trên một cọc: (i. j) (i. i. i) . (i. i.Ba đĩa nằm trên ba cọc phân biệt: (i. j) (i. Ví dụ 2: Không gian trạng thái của bài toán Tháp Hà nội với n = 3: T = { (x1.0) 6 G = { (x. i. i.y) / 0 <= x <= m. i). i. 0 <= y <= n} 7 F = Tập các thao tác đong đầy. F xác đinh như sau: 4 T = { (x. x3)/ xi ∈ {1. G. j. 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. j. 1. i. k) (k. 0 <= y <= n } 5 S = (0. i) (i. 3. i. S. 14 . j) (i. i) (j. 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.y) / 0 <= x <= m. j. 3} } S = (1. j) (i. j.. F). x2. k) (i. j) (j. đổ ra hoặc đổ sang bình khác thực hiện trên một bình. k. i. j. k) (i. k. Không gian trạng thái là một bộ bốn. j). i) .Ba đĩa cùng nằm trên một cọc: (i. Ký hiệu: K= (T. i. j. k) (i.

. Ví dụ: Xét đồ thị vô hướng G1 và đồ thị có hướng G2 1 2 1 4 2 4 G1 G2 3 3 • Tập đỉnh kề: ∀n∈V..E) trong đó V:tập đỉnh.Một tập hợp các toán tử. Như vậy. j)∈E thì (j.. k -1. . dựa vào toán tử chuyển trạng thái để xác định các trạng thái tiếp theo cho đến khi gặp được trạng thái đích. lập thành không gian trạng thái của vấn đề. . Biểu diễn không gian trạng thái dưới dạng đồ thị 2.m) ∈E} được gọi là tập các đỉnh kề của n.Trạng thái ban đầu.5. ta cần xác định các yếu tố sau: . E) gọi là cây nếu tồn tại một đỉnh n0∈V có những tính chất sau: 15 . ni+1)∈E ∀i=1. j) là một cạnh cũng như là (j.G là đồ thị vô hướng thì (i.1. i). ∀i=1. Các khái niệm • Đồ thị G = (V.5.Nếu G là đồ thị có hướng thì cung (i. fr. E: tập cung (E⊂V*V) Chú ý: . • Đường đi: p = (n1. • Cây là đồ thị có đỉnh gốc n0∈V thoả: Một đồ thị G=(V. Trong đó mỗi toán tử 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 tới một trạng thái khác. j) hoàn toàn khác với cung (j. muốn biểu diễn một vấn đề trong không gian trạng thái. 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ử.k (ni. T(n)={m∈V/ (n. i) (tức là:(i.Ví dụ 3: Không gian trạng thái của bài toán trò chơi 8 số: T = { (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. 2.i)∈E).nk) được gọi là đường đi từ đỉnh n1 → nk nếu ni ∈V.. 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ất phát từ trạng thái ban đầu.

E). 2. Biểu diễn đồ thị Cho đồ thị G = (V.∀n∈V. * Biểu diễn bằng ma trận kề Đồ thị G được biểu diễn bởi ma trận kề A=(aij)nxn với n là số đỉnh của đồ thị. Để thấy rõ mối tương quan. giả sử V={1. m được gọi là cha của n. Có hai cách thường dùng để biểu diễn đồ thị G lưu trữ trong máy tính. n∈T(n0).3. ta có một danh sách tất cả các đỉnh kề với i.n}. không gian trạng thái tương ứng với một đồ thị định hướng trong đó: Các trạng thái tương ứng với các đỉnh trong đồ thị. 4] 16 . ta có bảng sau: KGTT Đồ thị Trạng thái Đỉnh Toán tử Cung Dãy các trạng thái liên tiếp Đường đi 2. ..5.∧ ∧ . t). Ví dụ với đồ thị G1.2. trong đó: aij = 1 nếu (i. 3. ∃!m∈V sao cho n∈T(m)... 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). Biểu diễn không gian trạng thái bằng đồ thị Theo ngôn ngữ đồ thị.∀n∈V.. ta có List(1)= [2. kiểu tập hợp hay kiểu con trỏ. 2. ta ký hiệu là List(i). j) ∈E 0 trong trường hợp ngược lại Nếu G là đồ thị vô hướng thì ma trận kề A là ma trận đối xứng. nếu tồn tại toán tử chuyển trạng thái thì có cung (s.5.. Ví dụ: Với đồ thị vô hướng G1 và đồ thị có hướng G2 ở trên ta có các ma trận kề sau: G1: G2: 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 * Biểu diễn bằng danh sách kề Với mỗi đỉnh i của đồ thị. Để thể hiện List(i) ta có thể dùng mảng.

2) (1.2) (3.0) (0.2) (1. k=1 (0.0) (3.2) (3.0) (2.0) (0. n=2.1) (2.Ví dụ 1: Bài toán đong nước m=3.1) Ví dụ 2: Tháp Hà Nội với n = 3 111 (112) 112 (111) (113) (132) (133) (123) (131) (121) (122) (233) (231) (221) (222) (223) (322) (232) (323) (212) (213) (321) (313) (211) 17 (311) (331) (312) (332) (333) .

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 đó. Khi áp dụng các phương pháp tìm kiếm trong không gian trạng thái. không có một sự hướng dẫn nào cho sự tìm kiếm. để đánh giá các trạng thái.Tìm kiếm kinh nghiệm (tìm kiếm heuristic): Trong rất nhiều vấn đề.Kỹ thuật tìm kiếm lời giả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. đó 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).v. Có hai kỹ thuật tìm kiếm mù cơ bản.Phương pháp luận của việc tìm kiếm .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ống nào đó tất cả các đối tượng để phát hiện ra đối tượng cần tìm.1. dựa vào kinh nghiệm. không phải các phương pháp này có thể áp dụng để giải quyết cho tất cả các bài toán phức tạp mà chỉ cho từng lớp bài toán.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ây dựng nên hàm đánh giá hướng dẫn sự tìm kiếm. ta sẽ chọn trong số các trạng 18 . người ta thường quan tâm đến các vấn đề sau: . * Chúng ta lần lượt nghiên cứu các kỹ thuật sau: . . lần lượt đến các trạng thái tiếp theo cho đế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. thông qua các toán tử chuyển trạng thái. chúng ta có thể dựa vào sự hiểu biết của chúng ta về vấn đề. trực giác. xuất phát từ trạng thái ban đầu.Chươ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. Ở 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.Chiến lược tìm kiếm Tuy nhiê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.v… * Các chiến lược tìm kiếm có thể phân thành hai loại: . Đặ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 gian trạng thái được xem như quá trình dò tìm trên đồ thị.

Giải thuật Input: Cây/Đồ thị G = (V.2. Như vậy.2. Nếu không thấy lời giải tại mức này. * Các thủ tục tìm kiếm điển hình bao gồm: .1.Tìm kiếm với tri thức bổ sung (Heuristic Search). Trong tìm kiếm kinh nghiệm: ta chọn trạng thái dựa vào sự đánh giá các trạng thái.thái chờ phát triển. theo hướng dẫn của luật trọng tài. nó chuyển xuống mức sau để tiếp tục … đến khi định vị được lời giải nếu có.Tìm kiếm theo chiều sâu (Depth – First Search) . trạng thái được đánh giá là tốt nhất để phát triển.2. Kỹ thuật tìm kiếm rộng bắt đầu từ mức thứ nhất của không gian bài toán.2. 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. chẳng hạn “đi từ trái sang phải”. Kỹ thuật tìm kiếm rộng Kỹ thuật tìm kiếm 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. (Breadth First Search) 19 . Phương pháp tìm kiếm theo chiều rộng 3. A . 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.Tìm kiếm theo chiều rộng (Breadth – First Search) .E) với đỉnh gốc là n0 (trạng thái đầu) Tập đích Goals Output: Một đường đi p từ n0 đến một đỉnh n* ∈ Goals Method: Sử dụng hai danh sách hoạt động theo nguyên tắc FIFO (queue) MO và DONG Procedure BrFS. 3. Do đó tốc độ tìm kiếm sẽ nhanh hơn.Tìm kiếm cực tiểu hoá giá thành (Cost minimization Search).TÌM KIẾM MÙ 3. .Tìm kiếm sâu dần (Depthwise Search) .

20 . • Không phù hợp với không gian bài oán kích thước lớn. Độ phức tạp không gian cũng là O(kd). 3. Hàm Take(MO) lấy một phần tử trong queue MO.2. Chú ý: Thủ tục Append(MO. Như vậy. For m∈ T(n) and m∉DONG+MO do Append(MO. Như vậy độ phức tạp thời gian của giải thuật là O(kd). Đối với loại bài toán này. không nhận ra ngay lời giải. đỉnh đích sẽ nằm ở mức d. • Thuận lợi khi muốn tìm nhiều lời giải. do đó số đỉnh cần xét lớn nhất là: 1 + k + k2 + .Begin Append(MO.n0) bổ sung một phần tử vào queue MO. 3. n). Append(DONG. mỗi trạng thái khi được xét sẽ sinh ra k trạng thái kế tiếp. * Nhược điểm: • Tìm kiếm lời giải theo thuật toán đã định trước.4.3. . vì tất cả các đỉnh của cây tìm kiếm ở mức d đều phải lưu vào danh sách.no) DONG=null.Cần nhiều bộ nhớ theo số nút cần lưu trữ. end. phương pháp tìm rộng đối mặt với các nhu cầu: . End. • Đường đi tìm được đi qua ít đỉnh nhất. Write (‘Không có lời giải’). khi không có thông tin hổ trợ cho quá trình tìm kiếm. Đánh giá độ phức tạp của giải thuật tìm kiếm rộng Giả sử rằng. m). . While MO <> null do begin n:= Take(MO). Ư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ó. if n∈ DICH then exit. Khi đó ta gọi k là nhân tố nhánh. + kd. do vậy tìm kiếm một cách máy móc. Nếu bài toán tìm được nghiệm theo phương pháp tìm kiếm rộng có độ dài d.2.

0) (5. (0.0).4) (0.4) (1.1) (5.0) (4.4) (5.4) (0.0) (1. Phương pháp này không phù hợp cho trường hợp có nhiều đường dẫn đến kết quả nhưng đều sâu.0) (1.0) (5.4) (5. n= 4.0) → (4.3) (1.3) vì vậy có được lời giải như sau: (0.4) (5.2.0) (0.0) (0.0) (4.4) (1.0) (5. (1.4) (0.0) (5.0) (5.4) (0.1) (5.3) Ở mức 5 ta gặp trạng thái đích là (5.4) (5.4) (1.4) (4.0) (0. Các ví dụ Ví dụ 1: Bài toán đong nước với m = 5.3) (5.0) (5.4) (1.Dễ thực hiện các thao tác không thích hợp.0) (4.0) (5.0) (5.0) Mức 2: Các trạng thái (5.4) (4.1) (5.5.0) (5.1).0) (0.1) (0.4) (5.4) (0.4) (0.0) (1.4) (5.4) (0.4) (4.0) Mức 4: (1.4) (0.4) (0. thừa. (4.1) (0.4) → (5.4) (4.4) (4.1) (0.0) (0.4) (5.4) (0.0) (0.0) (0. (5. việc tìm kiếm không tập trung vào một chủ đề.4) (5. Do duyệt qua tất cả các nút.4).4) (1.0) (0.4) Mức 3: (5.0) (5.0) (1.0) (0.0) (5.4) (0. đưa đến việc tăng đáng kể số nút phải xử lý.0) (0. • Giao tiếp với người dùng không thân thiện.3) (0.0) (0.0) (0. k =3.0) (0.4) (0.4) (1.0) (5. (4.4) (4.4) (4. nhất là khi các nhánh cây dài.0) (5.0) (1.0) (5. Mức 1: Trạng thái đầu (0.Cần nhiều công sức xử lý các nút.0) (0.4) (5.4) (1. .0) (4.4) Mức 5: (0.4) (0.0) (1.0) (0. • Không hiệu qủa nếu lời giải ở sâu.0) (1.4) (5.4) (1.4) (0.0) (5.1) (4. có thể trình bày quá trình tìm kiếm dưới dạng bảng sau: i T(i) DONG ↑MO ↓ (0.0) (4.4) (0.4) (1.0)→ (0. số nút tăng. 3..0) (4.3) Để có được lời giải này ta phải lưu lại vết của đường đi.4) → (4.4) (5.0) (5.0) (5.3) 21 .4) (5.0) (1.0) (1.4) (5.4) (0.0).0) (4.4).

0) (5.0) (5.0) Mức 4 (0.4)(0.4) (0.0) (1.4) (5.0)(1.4) (0.4) (5.4) (0.4) Mức 5 (5.4) (5.0) (1.4)(4.1) (0.0) (5.4)(1.3) (5.0)(0.0) Đích Ví dụ 2: Bài toán trò chơi 8 số.0) (0.0) Mức 1 Mức 2 Mức 3 (5.0) (4.1) (5.4) (0.0) (5.0) (4.4)(0.Ta có thể biểu diễn dưới dạng đồ thị sau: (0. Bảng xuất phát 2 8 3 1 6 4 7 5 Bảng kết thúc 1 2 3 8 4 7 6 5 Mức 1: Có một trạng thái 2 8 3 1 6 4 7 5 Mức 2: Có ba trạng thái 2 8 3 1 4 7 6 5 Mức 3: Có năm trạng thái 2 8 3 1 4 7 6 5 2 1 8 6 7 3 4 5 2 1 8 6 7 3 4 5 2 1 7 2 1 7 8 4 6 3 2 1 7 2 1 7 8 6 5 3 22 5 4 8 6 5 8 6 3 4 3 4 5 .4) (0.

Mức 4: Có mười trạng thái 8 3 2 1 4 7 6 5 2 7 8 1 6 3 4 5 8 4 6 3 5 2 1 1 8 4 7 3 5 2 1 7 1 7 2 8 6 3 4 5 2 1 7 3 8 6 3 4 5 2 6 1 8 2 1 8 6 7 2 1 7 8 6 5 3 4 2 1 7 8 6 5 3 4 Mức 5: Có 12 trạng thái 1 2 3 8 4 7 6 5 2 1 7 3 8 6 4 1 6 3 4 5 2 7 6 8 1 3 4 5 4 6 8 3 5 2 1 7 8 4 3 5 6 6 7 3 4 5 2 6 1 3 4 5 2 1 7 8 2 7 2 1 7 8 2 1 2 6 1 8 7 7 4 5 3 4 5 5 8 7 3 4 5 6 5 8 3 4 23 .

3. 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ục cho đến khi hoặc đến ngõ cụt hoặc đến đích. Phương pháp tìm kiếm theo chiều sâu 3.1. chẳng hạn.E) với đỉnh gốc là n0 (trạng thái đầu) Tập đích Goals Output: Một đường đi p từ n0 đến một đỉnh n* ∈ Goals Method: Sử dụng hai danh sách hoạt động theo nguyên tắc LIFO (Stack) MO và DONG 24 . gọi là đến ngõ cụt. khi gặp cành cụt thì quay lại xét cành chưa đi qua.. Nếu không đi tiếp được. đến nút “sát nút cực trái”.2.3. khi đó các đỉnh kề với i có các trườ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. Tại mỗi nút có luật trong tài. “đi theo nút cực trái”.Ở bước tổng quát. 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ột cây bắt đầu từ gốc đi theo mọi cành có thể được.3. Ở mức này ta gặp được trạng thái đích 1 2 3 8 4 7 6 5 3. Giải thuật Input: Cây/Đồ thị G = (V..2 3 2 8 3 1 8 3 1 5 6 7 5 4 7 4 Mức 6: Có 24 trạng thái 1 2 3 1 2 3 8 4 7 8 4 7 6 5 6 5 . Hành động này gọi là quay lui.3. chẳng hạn. . hệ thống quay lại một mức trên đồ thị và tìm theo hướng khác.. + 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. hướng dẫn việc tìm. giả sử đang xét đỉnh i.

Ư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. Có thể xảy ra nghiệm là đỉnh cuối cùng được xét ở mức d+1 theo luật trọng tài. Kỹ thuật tìm kiếm sâu tập trung vào đích. 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ản một cách cứng nhắc.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. nếu lời giải ở rất sâu. cây tìm kiếm có nhân tố nhánh là k. Khi đó độ phức tạp thời gian của thuật toán tìm kiếm theo chiều sâu trong trường hợp xấu nhất là O(kd). End. if n∈ DICH then exit. m). Đá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.4. Để đánh giá độ phức tạp không gian của thuật toán tìm kiếm sâu ta có nhận xét ràng: Khi xét đỉnh j.3. 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. 3. n). Write (‘Không có lời giải’). push (DONG. kỹ thuật tìm sâu sẽ tiết kiệm thời gian. 25 . 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.no) DONG=null. Chú ý: Thủ tục Push(MO. end.3. Do cách tìm của kỹ thuật này. 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. phương pháp tìm kiếm sâu bảo đảm tìm ra lời giải.Procedure DFS. While MO <> null do begin n:=pop (MO). For m∈ T(n) and m∉DONG+MO do Push (MO. Vì vậy chỉ cần lưu tối đa la k*d. Do đó độ phức tạp không gian của thuật toán là O(k*d). 3. 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. (Depth First Search) Begin Push (MO.3.

1)(1.2) (3.2.0) (4.2.4) (0.3)(1.2.1.3.3) Lời giải tìm được: (0.0) (5.1) (3.1.1.2.2) (1.2.2) (1.4) → (5.3) (1.2) (1.2.2) (3.1)(1.1.3.0) (0. Nhắc lại.3) (1.1.3) (1.1.2) (3.2. i T(i) DONG MO ↓↑ (1.1.2) (1.2.2.4) (0.0) (0.• Không phù hợp với không gian bài toán lớn.3) (1.2.0) (5.2.1.2.2) (3.1)(3.1.3)(1.1) (1.2) → (3.0) (5.3) (1.2.2) (3.0) (0.3) (5. 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.2.3) (1.1.0) (4.1.3)(1.4) (4.1.2.3) Ví dụ 2: Bài toán Tháp Hà nội với n = 3.2.3.0) → (4.1.2) (1.0) (0.2) (1.2. n = 4.1) (1.0) (0. 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ải rất nhanh.2) (1.4) (5.2.0) (5.2.0) (5.3) Lời giải của bài toán: (1.3. x3) biểu diễn trạng thái bài toán.2) (3.4) (0. Các ví dụ Ví dụ 1: Bài toán đong nước với m = 5.1) (3.3) (1.3.1)(1.1) → (1.3.2.1.4) (5.2.1) (1.1.3)(1.3) → (1.2.2.1) (3.4) (0.0) (4.0) → (0.1) → (3.4) (4.1) (1. i T(i) DONG MO ↓↑ (0.1) (3.1.1.0) (0. dùng bộ ba (x1.1) (1.3)(1.1.1) (3.1) (1.2.2)(1.2) (1.1)(1.1) (1.2.1.4) (4.2) (3.1.1)(1.1.0) (4.1)(1.1.3) 26 .1)(3.2)(1.4) (5.1)(3.1.1)(3.1.0) (0.3) (5.2.3)(1.3)(1.4) (0.2) → (3.1) → (3.1) (3.3) (1.3.2.4) → (4.2.3.2.2.2.2.1.0) (0.4) (4.2.2.2)(1.2)(1.3) (1.5.2) (3.2.4) (0.2) (3.2.3)(1.2.1.4) (0.3) (1.1.3) → (1.3) (1. x2.0) (5.1)(1.4) (5.4) (4.2.2) (3.2)(1.1.3.2)(1.2.1.0) (5.2.3. với xi là cọc chứa đĩa lớn thứ i.1) (3. Quá trình tìm kiếm có thể trình bày bằng bảng sau.1) (3.2.2.3) (3.3) (1.3)(1.3.2.4) (4. 3.1.2) (1.1)(1.3) (1.0) (5. k = 3.1.

. Như vậy n =3.4. Quá trình trên được lặp lại với d lần lượt là 1. và nếu sử dụng tìm kiếm theo độ sâu ta có thể mắc kẹt ở một nhánh nào đó (thuật toán không dừng) và không tìm ra nghiệm... Với cách tìm kiếm theo theo thuật toán một cách máy móc như vậy thì rõ ràng không bao giờ đạt được đích.an được gọi là hợp lý nếu thoả hai điều kiện: . Vì vậy có thể mô tả trạng thái bài toán tương ứng với giá trj ak tại thòi điểm đang xét. 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ứa nhánh vô hạn. chúng ta đều thấy. a2 = 52.. a2.. a3 = 53. chăng hạn: a1 = 26. 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. Trong khi chúng ta dễ dàng nhận được lời giải.an là số nguyên tố . Nếu không tìm ra nghiệm ta tăng độ sâu lên d+1 và lại tìm kiếm theo độ sâu tới mức d+1. 2.4. 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ức giưói hạn d nào đó. ….đến độ sâu max nào đó. n0 d 27 . tìm kiếm theo chiều sâu đều cho lời giải tốt và nhanh. Phương pháp tìm kiếm theo chiều sâu dần 3. Ta có thể chỉ ra một cách tìm kiếm theo chiều sâu như sau I T(i) DONG MO ↓↑ 26 26 27 52 27 52 26 52 53 104 27 53 104 26 52 104 105 208 27 53 105 208 26 52 104 208 209 416 27 53 105 209 416 26 52 104 208 .1.Cả hai ví dụ trên. 3. khi biết ak thì ta xác định được ak+1.ak+1 = ak+1 hoặc 2*ak Như vậy.

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: Procedure Depth_deepening_search.no). {hàm depth ghi lại độ sâu mỗi đỉnh} DONG=null.Có độ phức tạp thời gian là O(kd) (giống tìm kiếm rộng). if depth(n)<=d then For m∈ T(n) and m∉DONG do begin Push (MO. . . push (DONG. Write (‘Không có lời giải’).4. miễn là chọn max đủ lớn (giống như tìm kiếm theo chiều rộng).2. 28 . Depth(n0)=0. End.Luôn tìm ra nghiệm (nếu bài toán có nghiệm). While MO <> null do begin n:=pop (MO).3. Thủ tục tìm kiếm sâu hạn chế (depth_limitedsearch) Procedure Depth_limited_search(d). end. 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. end.3. End. m).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ông gian trạng thái lớn và độ sâu của nghiệm không biết trước. {d là tham số độ sâu} Begin Push (MO. Đó 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.Có độ phức tạp không gian là O(k*d) (giống tìm kiếm sâu). if n∈ DICH then exit. depth(m)=depth(n)+1. Begin For d:=0 to max do Depth_limited_search(d). If thành công then exit. n). . 3.4. Nhận xét .

Với mỗi trạng thái u.B . Ví dụ 2: Bài toán 8 số. 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á. 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. nó có thể dẫn ta đi chệch hướng và do đó tìm kiếm kém hiệu quả. đó là các phương pháp sử dụng hàm đánh giá để hướng dẫn sự tìm kiếm. tri thức của chúng ta về vấn đề đó để đánh giá các trạng thái của vấn đề.Xây dựng hàm đánh giá . * Hàm đánh giá và tìm kiếm kinh nghiệm: Trong nhiều vấn đề. 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á. số này đánh giá “sự gần đích” của trạng thái u. ta sẽ xác dịnh một giá trị số h(u). ta có thể sử dụng kinh nghiệm. 29 . 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. kém hiệu quả và trong nhiều trường hợp không thể áp dụng được . Như vậy. hàm đánh giá đóng vai trò cực kỳ quan trọng. 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.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ài toán. 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ếm nhưng không phổ biến. Hàm h(u) được gọi là hàm đánh giá. Hàm đánh giá được xây dựng tùy thuộc vào vấn đề.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 . 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: . Chúng ta có xây dựng được hàm đánh giá cho ta sự đánh giá đúng các trạng thái thì tìm kiếm mới hiệu quả. Trong quá trình tìm kiếm.Thiết kế chiến lược chọn trạng thái ở mỗi bước Hàm đánh giá Trong tìm kiếm kinh nghiệm. 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). Nếu hàm đánh giá không chính xác. 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.

thì h1(u) = 4.Tìm kiếm tốt nhất đầu tiên = Tìm kiếm theo bề rộng + Hàm đánh giá .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ần dị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ới trạng thái đí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ức hiện tại để sinh ra các nút ở mức tiếp theo.Tìm kiếm leo đồi = Tìm kiếm theo độ sâu + Hàm đánh giá 3. Có thể xác định các chiến lược này như sau: . 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). 6 và 1. 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ỗ: .5. 8.1. Thông thường.Chúng ta có thể đưa ra hai cách xây dựng hàm đánh giá. 30 . Giá trị này được xem xét trong lúc tìm kiếm. gọi là trọng số của nút. Kỹ thuật tìm kiếm tốt nhất đầu tiên (Best First Search) 3. nút này có thể ở mức hiện tại hoặc ở các mức trên. 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 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. . . vì các quân không đúng vị trí là 3. Ta có: h2(u)=2+3+1+3= 9 (vì quân 3 cần ít nhất 2 dịch chuyển. nút có trọng số nhỏ (lớn) nhất sẽ được chọn trong quá trình tìm kiếm. quân 8 cần ít nhất 3 dịch chuyển.5. quân 6 cần ít nhất 1 dịch chuyển và quân 1 cần ít nhất 3 dịch chuyển).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ốt nhấ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). Hàm này dùng các thô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ị cho nút này.

5.5.3. Ưu và nhược điểm của phương pháp tìm kiếm tốt nhất đầu tiên * Ưu điểm: .3.2. Kỹ thuật này chỉ xét một phần của không gian và coi đó là phần hứa hẹn hơn cả. Giá trị của hàm đánh giá là các trọng số ghi cạnh mỗi nút.Ưu điểm chủ yếu của phương pháp tìm kiếm tốt nhất đầu tiên là dùng tri thức để dẫn dắt việc tìm kiếm. Procedure BFS. 3. if i ∈ Goals then danh sách MO được sắp theo thứ tự exit. 31 . Sort(MO). end. write(‘Khong co loi giai’). . . Tri thức này giúp người ta bắt đầu từ đâu là tốt nhất và cách tốt nhất để tiến hành tìm lời giải.j). {Best First Search} Begin Push(MO.Phương pháp tìm kiếm tốt nhất đầu tiên tổ hợp các ưu điểm của phương pháp tìm kiếm rộng và tìm kiếm sâu.n0).Quá trình tìm kiếm có thể đi xa khỏi lời giải. Giải thuật Dữ liệu tương tự như giải thuật tìm kiếm rộng và sâu. {theo thứ tự của hàm đánh giá} end. trong đó trạng thái ban đầu là A. tăng dần của hàm đánh giá (hay for j ∈ T(i) do trọng số) Push(MO.5. while MO <> null do begin i := Pop(MO). Do đó có thể thấy rõ đường đi hơn tìm kiếm rộng và tìm kiếm sâu. sử dụng danh sách MO để lưu các đỉnh sẽ xét.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. Ví dụ Xét không gian trạng thái được biểu diễn bởi đồ thị trong hình sau. 3. * Nhược điểm: . trạng thái kết thúc là B.4.

nó được chọn để phát triển và sinh ra F. I. Phương pháp tìm kiếm leo đồi (Hill-Climbing Search) 3.6. Kết quả: 3.6. đỉnh này được xác định bởi hàm đánh giá. . . 3. 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. E. Trong ba nút này. khi phát triển một đỉnh u thì bước tiếp theo ta chọn trong số các đỉnh con của u. phát triển G sinh ra B.Trong số các nút chưa được phát triển thì G tốt nhất.2.6. F.* Quá trình tìm kiếm tốt nhất đầu tiên diễn ra như sau: . 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. K.Trong số các nút chưa được phát triển C. nó được chọn để phát triển và sinh ra các đỉnh G.1. đỉnh có hứa hẹn nhiều nhất để phát triển. D và E. 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 đánh giá.Đầu tiên phát triển nút A sinh ra các nút kề là C. nút D có giá trị hàm đánh giá nhỏ nhất. Song khác với tìm kiếm theo độ sâu. I thì nút E có giá trị đánh giá nhỏ nhất. Tuy nhiên phương pháp này không được cải thiện so với các phương pháp khác trong một số trường hợp sau: 32 . 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 đánh giá) nào đó nhằm đánh giá mức độ gần đích của nó. Đến đây ta đã đạt tới trạng thái kết thúc. H. Điều đó có nghĩa là nếu trạng thá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).

Các ví dụ Ví dụ 1: Xét không gian trạng thái được biểu diễn bởi đồ thị trong hình sau. Tập đỉnh đích DICH. ví vậy có thể phải quay lui về nút trước để đi theo hướng khác. while MO <> null do begin i = Pop(MO).6. {Hill Climbing Search} begin Push(MO. Output: Đường đi từ đỉnh n0 đến DICH. Hàm đánh giá h(n) đối với mỗi đỉnh n. end.6. 3. Dữ liệu tương tự như giải thuật tìm kiếm sâu. Procedure HLC. nhưng đó không phải là phương án tốt nhất trong toàn thể.4. sử dụng danh sách MO để lưu các đỉnh sẽ xét. end. không xác định được ngay hướng nào là tốt hơn trong vùng lân cận. for j ∈ T(i) do if j chưa xét then đưa j vào danh sách L sắp xếp L theo thứ tự hàm đánh giá. 33 . 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.. write(‘Khong co loi giai’).Cao nguyên bằng phẳng: Các giá trị của các phương án như nhau.3. Giải pháp này đòi hỏi ghi nhớ lại nhiều đường đi. 3. if T(i) ∩ DICH <> null then begin L:= null. chuyển danh sách L vào đầu danh sách MO. đỉnh xuất phát n0. .n0).Cực trị địa phương: nút đang xét tốt hơn các nút lân cận.E). Giải thuật Input: Đồ thị G = (V.

E. nếu ta chọn phương án kia thì chắc chắn quá trình tìm kiếm sẽ khác đi nhiều. 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. Trong các đỉnh này chọn D để phát triển. và nó sinh ra các đỉnh con B. D. G. Quá trình tìm kiếm kết thúc.* 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. Minh hoạ cây tìm kiếm cho trò chơi này theo giải thuật leo đồi với hướng chọn như sau: 34 .

Với mỗi phép chuyển trạng thái ni→ni+1 tốn chi phí c(ni. ni+1)∈E 35 .7.Thuật giải AT 3. Đặt vấn đề Cho đồ thị G= (V.2 1 7 8 6 3 4 5 h(u) = 4 2 1 8 3 6 4 7 5 h(u) = 5 2 8 3 1 4 7 6 5 h(u) = 3 2 8 3 1 6 4 7 5 h(u) = 5 2 8 3 1 4 7 6 5 h(u) = 3 2 3 1 8 4 7 6 5 h(u) = 3 2 8 3 1 4 7 6 5 h(u) = 4 2 3 1 8 4 7 6 5 h(u) = 2 2 3 1 8 4 7 6 5 h(u) = 4 1 2 3 8 4 7 6 5 h(u) = 1 1 8 7 2 6 3 4 5 3. ni+1 ) ký hiệu c(u) với u= (ni. Tìm kiếm đường đi có giá thành cực tiểu .7.1. E) biểu diễn bài toán với đỉnh xuất phát n0 và tập đích DICH xác định.

Đỉnh xuất phát n0 Hàm chi phí c: E → R+ c(i. ta có: g (m) = min { g (n) + c (n. khi đó bài toán có thể phát biểu như sau: * Tìm đường đi từ đỉnh n0 → nk ∈ DICH sao cho: g (nk ) = min { g (n) / n ∈ DICH } g ( n0 ) = 0 Lúc đó. Độ dài đường đi được xác định là tổng độ dài các cung trên đường đi. While MO<>null do 36 . Thuật giải AT Input: Đồ thị G = (V. m )∈E Dùng 2 danh sách MO. m)} ( n . push(MO. giá của cung (i.c(u) ni ni+1 * Vấn đề: n* ∈ DICH sao cho Tìm đường đi p: n0 c ( p ) = ∑c (u ) → min u∈p (Giá của đường đi là tổng giá các cung tham gia vào đường đi và vấn đề là tìm đường đi có giá min). * Phương pháp giải . Tại mỗi thời điểm chọn đỉnh n trong MO ra xét là đỉnh thoả.Nếu c(u ) = k (const ) ∀u ∈ E thì c( p) → m ⇔ i #np → m ⇒i n Dùng phương pháp tìm kiếm theo chiều rộng. 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.2. n0). { Dùng g0(n) là chi phí cực tiểu của đường đi từ đỉnh xuất phát đến đỉnh n tại thời điểm đang xét và xem như hàm g} Begin g(n0):= 0.E). 3. . Procedure AT.j) ∈ E Tập các đỉnh đích DICH Output: Đường đi từ đỉnh n0 đến đỉnh n* ∈ DICH sao cho g(n*) = c(p) = min{g(n)| n∈DICH}.j) chính là độ dài của đường nối thành phố i với thành phố j. DONG như trên.j): xác định chi phí chuyển từ đỉnh i sang đỉnh j với (i.Gọi g(n) là giá của đường đi cực tiểu từ đỉnh n0 đến n. Chẳng hạn trong bài toán tìm đường đi trong bản đồ giao thông.7.

m).m) then begin g(m):=g(n)+c(n. writeln(‘Khong co duong di’). Các ví dụ Ví dụ 1: 8 n0=A DICH={F.begin g ( n) := min g ( m) m∈MO if n∈DICH then exit {xay dung duong di cuc tieu} push(DONG. g(m):=g(n)+c(n. n). cha(m):=n. if T(n) <>null then for m∈T(n) do if m∉MO+DONG then begin push(MO. end.m). end else if g(m) >g(n)+c(n. cha(m):=n. Ký hiệu giá trị g(n) là chỉ số dưới tương ứng đỉnh n: ng(n) i T(i) MO A0 DONG 37 .7. End.m).3.K} A 5 4 2 B E 3 F 1 G C 9 H D 1 I 2 K Có thể trình bày quá trình tìm kiếm bằng bảng dưới đây. 3. end.

ta có g(1.1). Khi xét đỉnh (1.1.1) = 0.1) ta có các đỉnh kề và chi phí tương ứng : 38 .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. Chi phí của đường đi là 14. Ví dụ 3: Bài toán Tháp Hà Nội .1. DICH = {G} A 5 B 7 6 3 1 C 4 4 8 E 2 i T(i) A C B D E F G BCD ABEFD ACE ACFG BCF CDEG MO A0 B5 C3 D6 B4 D6 E7 F11 D6 E7 F11 E7 F9 G15 F9 G15 G14 F D 9 3 5 G DONG A AC ACB ACBD ACBDE ACBDEF Đường đi tìm được p: A → D → F → G.A C D G I B K BCD G HI K EF B8 C4 D5 B8 D5 G5 B8 G5 H14 I6 B8 H14 I6 B8 H14 K8 H14 K8 E10 F11 A AC ACD ACDG ACDGI ACDGIB Lời giải của bài toán là A → D → I → K và chi phí của đường đi tìm được là 8 Ví dụ 2: n0 = A.1.

2. Đối với việc tìm kiếm đường đi với chi phí cực tiểu. chọn đỉnh (1.3.3) = 2 (ở đây giá của đỉnh (1.1. g(1. g(1.Gọi h(n): giá cực tiểu đường đi từ n→DICH.3) = 3.2) = 3 + 8 = 11.2.1.Thuật giải A* 3.2.3) = 2. Việc chọn giá trị xấp xỉ h0(n) của h(n) không có một phương pháp tổng quát và được xem như một nghệ thuật. Trong đó: + g0(n) là chi phí của đường đi từ đỉnh xuất phát đến đỉnh n tại thời điểm đang xét (hay là giá trị ước lượng dựa trên sự khai thác thông tin kinh nghiệm quá khứ). 3.3).2. 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. chọn đỉnh (1.3. . 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. Đặt vấn đề Đối với nhiều bài toán.8. người ta sử dụng hàm đánh giá heuristic như sau: . lại chọn đỉnh (1.1) = 3 +1 = 4 (được tính lại). Chỉ số “0” ám chỉ đây là giá trị ước lượng chứ không phải giá trị chính xác.2. Giá trị chính xác chỉ biết được khi ta đến đích tức giải xong bài toán. + h0(n) là ước lượng (dự đoán) chi phí đường đi từ đỉnh n đến đích (hay là giá trị ước lượng dựa trên sự khai thác thông tin của nút hướng tới tương lai). giá trị này sẽ do các chuyên gia đưa ra.1. Ta chú ý h0(n) càng lớn thì càng tốt.2. 39 .2) = 5.3) được tính lại).1.1. như vậy đỉnh (1. g(3.Gọi g(n): giá cực tiểu đường đi từ n0→n.2) = 1.1. Tìm kiếm đường đi cực tiểu .8.3).2) = 2 + 1 = 3. g(1.1) Cứ tiếp tục như vậy cho đến khi xét đỉnh (3.3).2. Tại đỉnh n. chi phí của các đỉnh kề với nó: g(1. h(n) không xác định được ⇒ người ta tìm cách ước lượng giá trị này.g(1.2) có giá trị hàm g: g(1. chọn đỉnh (1. Đặt f0(n)=g0(n)+h0(n): dự đoán chi phí cực tiểu của đường đi từ n0→DICH có đi qua đỉnh 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. g(n) xác định được. nếu sử dụng các thông tin đặc tả về bài toán gọi là các heuristic.2.2) g(1.1.1) = 2 + 3 = 5.1.2) được chọn Các đỉnh kề của (1. Để 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ương tự g)) Tập các đỉnh đích DICH Output: Đường đi từ đỉnh n0 đến đỉnh n* ∈ DICH Procedure A* . cha(m):=n. Begin g(n0):= 0.j) ∈ E h: V → R+.2. h0=0: phương án tồi nhất). (ký hiệu h thay cho h0.m). end.8. tính f(m). h(n) xác định dự đoán chi phí tối ưu của đường đi từ đỉnh n đến đích.j): xác định chi phí chuyển từ đỉnh i sang đỉnh j với (i.E). push(MO. cha(m):=n.Tuy 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. end. n). end else if fmới(m) > fcũ(n) then begin f(m):= fmới(m). Thuật giải A* Input: Đồ thị G = (V. 3. Đỉnh xuất phát n0 Hàm chi phí c: E → R+ c(i. While MO<>null do begin f ( n) := min f (m) m∈MO if n∈DICH then exit {xay dung duong di cuc tieu} push(DONG. 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ết mục trước) bởi hàm f. if T(n) <>null then for m∈T(n) do if m∉MO+DONG then begin push(MO. n0). writeln(‘Khong co duong di’). 40 .

các số ghi cạnh các cung là độ dài đường đi. f(C) = 9 + 15 = 24. g(F) = 20. Các ví dụ Ví dụ 1: Trạng thái ban đầu là trạng thái A. thì đỉnh E với đánh giá f(E) = 19 là đỉnh tốt nhất. trạng thái đích là B. Chúng ta tiếp tục quá trình trên cho tới khi đỉnh được chọn để phát triển là đỉnh kết thúc B.End.8.3. Đường đi tới E qua D có độ dài: g(E) = g(D) + Độ dài cung (D. Phát triển D. f(F) = 20 +7 = 27 Như vậy đỉnh tốt nhất là D (vì f(D) = 13 là nhỏ nhất). D. Tính giá trị của hàm f tại các đỉnh này ta có: g(C) = 9. ta nhận được các đỉnh con H và E. Vậy đỉnh E mới có đánh giá là f(E) = g(E) + h(E) = 11 + 8 = 19. các số cạnh các đỉnh là giá trị của hàm h Đầu tiên. f(D) = 7 + 6 = 13 g(E) = 13. H) = 7 + 8 = 15. f(E) = 13 + 8 = 21. độ dài đường đi ngắn nhất tới B là g(B) = 19. Trong số các đỉnh cho phát triển. KL: A  D  E  I  B 41 . E) = 7 + 4 = 11. ta nhận được các đỉnh con của nó là K và I. trong đó các số cạnh các đỉnh là các giá trị của hàm đánh giá f. g(D) = 7. phát triển đỉnh A sinh ra các đỉnh con C. Quá trình tìm kiếm trên được mô tả bởi cây tìm kiếm sau. f(H) = 15 + 10 = 25. E và F. Ta đánh giá H và E (mới): g(H) = g(D) + Độ dài cung (D. Phát triển đỉnh này. 3.

f(G) không đổi. f(H) = 17. chọn B. f(B) = 15. f(E) = 18. Tính lại f(H) = 15 và dừng. G. B và f(B). 42 . Các đỉnh kề của E là C. ta tính lại f(C) và tính f(E): f(C) không thay đổi.Ví dụ 2: Cho đồ thị biểu diễn bài toán và giá trị dự đoán h0 như sau: n A B C D E F G H h0(n) 14 10 10 5 5 4 4 0 B A 5 3 3 G H F C 4 7 12 7 2 D 6 E 5 2 3 Tìm đường đi từ đỉnh A đến đỉnh H. G. chọn đỉnh C. g(C) = 3. (đưa A vào danh sách DONG) ta có các đỉnh kề B. H. f(G) = 16. chọn E. f(E) = g(D) +c(D. D. Trước tiên đỉnh A được đưa vào danh sách MO g(A) = 0. Xét đỉnh D (đưa D vào danh sách DONG) có các đỉnh kề A. D: g(B) = 5. g(D) = 7. Tính lại f(E) = 12. có các đỉnh kề A. chọn F. C.E) + H(E) = 7 + 6 + 5 = 18. F. h(A) = 14. Các đỉnh kề của B là F. f(A) = 14 Xét đỉnh A. C. Đỉnh A đã ở trong danh sách DONG. Tính f(F) = 14. f(C) = 13. chọn G. Đường đi tìm được là p: A  C  E  G  H với chi phí đường đi là 15. E. f(D) = 12  chọn đỉnh D. D. E. Các đỉnh kề của F là E.

d.3) (0. Việc tạo lời giải ban đầu có thể thực hiện ngẫu nhiên. . f <= 9.0) h=2 (4.3) (1.3) h=2 (4.3) (0.3) (0.0) (4.Tiếp theo.0)(2.0) Đích Đích 3.0) (1. 43 . 0 <= b.Trước hết tạo ra một giải pháp. Phương pháp sinh và thử Chiến lược này đơn giản. không thể không tính đến chỉ một vài hướng đi được cảm nhận là tốt.1) h=2 (4.0) (4.Thứ hai. Bài toán trở thành (4. ngước lại.0) (0.3) (2. nếu lời giải đạt được thì dừng.3) h=2 (4. thử xem lời giải đó có thích hợp không bằng cách so sánh phương án khác hay so sanh với điểm cuối cần suy diễn.3)(4. e.1)(4.0) h=2 h=2 h=1 h=1 (0. Với phương pháp này nếu bài toán có lời giải thì sẽ đưa đến đích.2) h=2 (0. bởi vậy. lặp lại từ bước đầu với nút khác. e.2)(4.3) h=1 h=1 (4.3)(3. f thì 0 < a <= 9 . d.0)(3.3) (4.0)(0.0) h=0 (0. c.0) (0. Trong vài bài toán cụ thể đó là việc chọn một lời giải trong không gian các lời giải hay tạo ra một đường đi.2)(0.0) (2. 1 bình dung tích 3 lít.0) (3.0)(1. b.Ví dụ 3: Cho 1 bình dung tích 4 lít. Làm thế nào để bình 4 có 2 lít. Tuy nhiên kích thước bài toán lớn sẽ tăng khối lượng tính toán. Giai đoạn sinh: tạo ra số có 6 chữ số và ta gọi các chữ số từ trái qua phải lần lượt là a. Ví dụ 1: Tìm số có 6 chữ số mà tổng bình phương các chữ số chia hết cho3.9.3)(0. và cũng hy vọng ngẫu nhiên mà đạt được lời giải.0)(3.3)(0. g: là độ dài mức đường đi từ nút gốc tới n Ta có thể biểu diễn dưới dạng đồ thị sau: g=0 (4.3)(0.0)(4.3)(0. c.y) Cho h: độ lệch của mức nước hiện có trong bình 4lít so với đích (2lít).3) (4.3) h=2 g=1 g=2 g=3 g=4 g=5 g=6 (4.3) h=0 (4.1) (0. và loại trừ trước các hướng không dẫn đến lời giải.3) (1. . gồm ba bước: .

e) Áp dụng các luật biến đổi không gian trạng thái tương ứng để tạo ra lời giải bộ phận. nếu đúng là dương tính thì kết luận và điều trị bệnh lao phổi.Giai đoạn thử: nểu a*a + b*b + c*c + d*d + e*e + f*f chia hết cho 3 thì chon. a) Chọn một đỉnh chưa được xét trong đồ thị tìm kiếm. khi chú ý tới một số ràng buộc áp đặt lên các nút trong không gian bài toán. Nội dung của phương pháp như sau: Thực hiện các bước từ a) đến e) dưới đây cho đến khi tìm được lời giải đày đủ của bài toán hoặc tất cả các đương đều đã duyệt qua nhưng không cho kết quả. . * Ví dụ: Xét bài toán điền các chữ số phân biệt thay cho các chữ cái S. D. Y sao cho phép cộng sau là đúng: SEND MORE MONEY Các ràng buộc ban đầu: . sang bước sau. E.Các chữ cái khác nhau không nhận cùng một giá trị. b) Áp dụng các luật suy diễn trên các ràng buộc đối với đỉnh đã chọn để tạo ra tập các ràng buộc mới. tương hợp với tập các ràng buộc hiện thời.Tìm kiếm trong không gian các bài toán ban đầu. O. v. Do vậy quá trình tìm kiếm lời giải bao gồm hai phần liên quan chặt chẽ với nhau: . ngược lại.Tìm kiếm trong không gian các ràng buộc. chẳng hạn: sốt cao về buổi chiều.Các ràng buộc số học (cộng có nhớ hoặc không có nhớ. Mục đích đặt ra là xác định đường đi trong đồ thị không gian bài toán. Phương pháp thoả mãn ràng buộc Phương pháp thoả mãn ràng buộc hỗ trợ cho phương pháp sinh và thử. Giải 44 . Bác sĩ có chẩn đoán nghi bị lao phổi. tạo ra số khác.10. ngược lai. Ví dụ 2: Một bệnh nhân có một vài triệu chứng. R.…. người ta sẽ cho làm ngay xét nghiệm. M. d) Nếu tập ràng buộc mô tả lời giải đầy đủ của bài toán thì dừng và đưa ra thông báo thành công. bắt buộc bác sĩ phải chuyển hướng suy nghĩ sang một bệnh khác. c) Nếu tập các ràng buộc mới có mâu thuẫn thì đưa ra thông báo đường đi hện thời tới nút đang xét dẫn tới bế tắc. N.v… 3. đường đi từ trạng thái đầu đến trạng thái cuối đáp ứng một vài ràng buộc nào đó. ho và mệt mỏi . Thêm các lời giải bộ phận này vào đồ thị tìm kiếm. Ngược lai. .

Đến bước này ta có thể khẳng định các giá trị của D. E = 5. suy ra C2 = 1 và E+1=N (11-1) Từ ràng buộc (5). Ngoài ra D + E >= 12. Từ ràng buộc (6) ta có E + C2 = N +10 45 . E. M thuộc tập {1. Từ ràng buộc (7) ta có S = O + 8. Y thuộc tập {0 . 6. Từ ràng buộc (11-1) suy ra N=7 = D mâu thuẫn. Phương án 2: C3 = 1.D = 5 và E = 7 .O. ta có R + C1 = 9. R = 8. O = 0. 7}. R. như vậy S = 9 và O = 0 (10-1) Từ ràng buộc (6) ta có E + C2 = N. C3. khi đó ta có S = O + 9. Xét khả năng thứ hai. suy ra S = 8 và O = 0 (10-2) (vì M=1 và S <= 9).D = 7 và E = 5 (hai truờng hợp này Y = 2) . N= 6. C3. Xét khả năng thứ ba. 4. 5. Từ ràng buộc (11-1) ta suy ra N = 8 mâu thuẫn với (12-1) nên bị loại. D.. Vậy ta có nghiệm là: S = 9. C4 thuộc tập {0. lúc này có hai phương án để lựa chọn: Phương án 1: C3 = 0. 3.D = 7 và E = 6 (hai trường hợp sau Y = 3) Xét khả năng thứ nhất. Từ ràng buộc (11-1) ta suy ra N= 6. Khi đó ta xây dựng các ràng buộc cụ thể như sau: E. D = 7. C2. Y chỉ có thể nhận trong tập {2.1} (3) D + E = Y + 10*C1 (4) N + R + C1 = E + 10*C2 (5) E + O + C2 = N + 10*C3 (6) S + M + C3 = O + 10*C4 (7) M = C4 (8) Từ ràng buộc (2) (3) và (8) suy ra M = 1 và C4=1 (9) Từ ràng buộc (7) và (9) suy ra S +C3 = O + 9.9} (1) S. Xét khả năng thứ tư. M= 1. C4 lần lượt lá số nhớ của các cột từ phải sang trái.D = 6 và E = 7 . Vì vậy chỉ có các khả năng sau có thể xảy ra: . Kiểm tra điều kiện bài toán đều thoả mãn.. như vậy R = 8 và C1 = 1 (12-1) (do kết hợp với các ràng buộc (2) (3) và (10-1)).9} (2) C1.Gọi C1. Từ ràng buộc (4) ta có D + E = Y +10. C2. N. Y = 2. Từ ràng buộc (11-1) suy ra N = 8 mâu thuẫn với (12-1).

C2=1 thì E= N+9 mâu thuẫn với ràng buộc (1) và (10-2). C2=0 thì E=N+10 mâu thuẫn với ràng buộc (1). Vậy phương án 2 không có lời giải. 46 .

quá trình này tiếp tục đối với các bài toán con cho đến khi gặp các bài toán sơ cấp (bài toán có lời giải ngay). quy tắc tích phân từng phần hay các phép biến đổi v. chúng ta đã nghiên cứu việc biểu diễn bài toán thông qua các trạng thái và các toán tử. Ý tưởng chủ yếu là xuất phát từ bài toán ban đầu. Ví dụ 2: Bài toán tìm đường đi trên bản đồ giao thông. Trong chương này chúng ta sẽ nghiên cứu một phương pháp luận khác để giải quyết vấn đề. dựa trên việc quy vấn đề về các vấn đề con. Áp dụng quy tắc tích phân từng phần ta đưa tích phân ∫ xlnx về tích phân ∫ xdx.1. Thông thường để tính tích phân bất định. 47 . Đặt vấn đề Trong chương 2. Quá trình trên có thể biểu diễn bởi đồ thị trong Hình 4. áp dụng quy tắc tích phân của tổng ta đưa về hai tích phân ∫ xlnxdx và tích phân ∫ x3dx.1 Trong bài toán tích phân. các tích phân cơ bản là các trạng thái kết thúc. chúng ta thường sử dụng các quy tắc tính tích phân: tích phân của tổng.v… để đưa tích phân cần tính về tích phân của các hàm số sơ cấp mà chúng ta đã biết cách tính.Chương 4 TÌM KIẾM LỜI GIẢI TRÊN ĐỒ THỊ VÀ/HOẶC 4. tách ra các bài toán con. Ví dụ 1: Xét bài toán tính tích phân ∫ x(ln x + x 2 )dx . Đối với tích phân trên. Khi đó việc tìm lời giải của bài toán được quy về việc tìm đường đi trong không gian trạng thái.1. 2 ∫ x(lnx+x )d x ∫ x3dx ∫ xlnxdx ∫ xdx Hình 4.

nối thành phố này với thành phố khác.2 Tìm đường đi từ G đến B.1 Tìm đường đi từ A đến G (và) 2. Ở đây mỗi bài toán tìm đường đi từ một thành phố tới một thành phố khác ứng với một trạng thái. Giả sử ta cần tìm đường đi từ thành phố A tới thành phố B. Như vậy bài toán tìm đường đi từ A đến B được quy về: 1) Bài toán tìm đường đi từ A đến B qua E (hoặc) 2) Bài toán tìm đường đi từ A đến B qua G. Bây giờ ta đưa ra một cách biểu diễn khác dựa trên việc quy vấn đề về các vấn đề con. chẳng hạn từ A đến C.. hoặc từ D đến E. 2) Bài toán tìm đường đi từ A đến B qua G được quy về: 2. trong đó mỗi trạng thái ứng với một thành phố. Có con sông chảy qua hai thành phố E và G và có cầu qua sông ở mỗi thành phố đó. Mỗi một trong hai bài toán trên lại có thể phân nhỏ như sau: 1) Bài toán tìm đường đi từ A đến B qua E được quy về: 1.1 Tìm đường đi từ A đến E (và) 1. mỗi toán tử ứng với một con đường. bởi vì đã có đường nối A với C. Quá trình rút gọn vấn đề như trên có thể biểu diễn dưới dạng đồ thị (đồ thị và/hoặc) trong hình sau. 48 . Các trạng thái kết thúc là các trạng thái ứng với các bài toán tìm đường đi. Mọi đường đi từ A đến B chỉ có thể qua E hoặc G. nối D với E.Bài toán này đã được phát biểu như bài toán tìm đường đi trong không gian trạng thái.2 Tìm đường đi từ E đến B.

.2. ngoài ra giữa các cung này cũng có đường nối với nhau.∩ nk ) 49 ..2...4... Nếu một toán tử quy bài toán về các bài toán con thì cũng có các cung nối từ bài toán xuất phát đến các bài toán con.. Chẳng hạn. T(n) hoặc các bài toán con của n (n gọi là các đỉnh VÀ) hoặc là tập các bài toán tương đương với n (n gọi là đỉnh HOẶC).... A A1 B1 A2 B2 Hình 4. Nếu có một toán tử quy bài toán về các bài toán tương đương thì sẽ có các cung đi từ bài toán xuất phát đến các bài toán tương đương đó. ta có biểu diễn như hình 4. nk n được gọi là đỉnh VÀ (n⇔ n1∩. Đồ thị này được xây dựng như sau: Mỗi bài toán ứng với một đỉnh của đồ thị... nk n được gọi là đỉnh HOẶC (n⇔ n1 ⇔. Cách biểu diễn như sau: n n1 n2 . Bài toán A1 lại được quy về hai bài toán con B1 và B2.. giả sử bài toán A được đưa về hai bài toán tương đương A1 và A2. E) được gọi là đồ thị VÀ/HOẶC nếu ∀n ∈V . Đồ thị Và/Hoặc Không gian trạng thái mô tả việc quy vấn đề về các vấn đề con có thể biểu diễn dưới dạng đồ thị định hướng đặc biệt gọi là đồ thị và/hoặc.2 Một cách hình thức ta có thể định nghĩa đồ thị và/hoặc như sau: Đồ thị G = (V.⇔ nk) n n1 n2 ...

n giải được. Các phương pháp tìm kiếm lời giải trên đồ thị Và/Hoặc 50 ..Khi đó để giải bài toán n ta phải tìm đồ thị con của G là một cây có gốc là đỉnh xuất phát n sao cho mọi đỉnh trên đồ thị con này đưa về được các bài toán sơ cấp (đỉnh kết thúc)... k . k ) sao cho ni . ⇒∃i ∈(1. nk}và nếu n là đỉnh HOẶC không giải được.. • Ta có sự tương quan: Phân rã bài toán Đồ thị Và/Hoặc Bài toán Chuyển bài toán thành các bài toán con Bài toán sơ cấp Các bài toán con phụ Các bài toán con độc lập Giải bài toán Đỉnh Cung Đỉnh cuối Đỉnh VÀ Đỉnh HOẶC Tìm đồ thị con lời giải bài toán 4. n2.Bài toán n được gọi là không giải được nếu: + hoặc n là đỉnh lá và n không phải là đỉnh kết thúc. k ) sao cho nj • Để tìm lời giải của bài toán khi được phân rã về đồ thị VÀ/HOẶC không phải tìm đường đi mà phải đi tìm đồ thị con gọi là đồ thị con lời giải (hay cây lời giải) Cây lời giải là đồ thị con G’ của G thoả: . ngược lại ni giải được ∀i =1. ngược lại ni không giải được ∀i =1...3. + hoặc T(n)={n1.. Nhận xét: Gọi VA: tập các đỉnh VÀ VO: tập các đỉnh HOẶC • Nếu VA= ∅ ⇒ tìm lời giải trên đồ thị biểu diễn bằng không gian trạng thái Khi đó: ....Đỉnh gốc (xuất phát) n0 ∈V ' .. k . nk} và nếu n là đỉnh HOẶC giải được.Bài toán n được gọi là giải được nếu: + hoặc n là đỉnh kết thúc + hoặc T(n)={n1. ⇒∃i ∈(1.∀n ∈V ' ...... n2.

ta phải kiểm tra xem đỉnh đầu có giải được hay không. trong trường hợp ngược lại thì tiếp tục xét các nút.Tìm kiếm theo chiều sâu.Sau khi lựa chọn mô tả bài toán và các toán tử quy bài toán về bài toán con. End. tức là đỉnh không giải được.Tìm kiếm cây lời giải có giá nhỏ nhất. Các phương pháp tìm kiếm trên đồ thị và/hoặc khác nhau chủ yếu ở phương pháp lựa chọn và sắp xếp đỉnh trước khi tháo chúng. Begin 51 .Tìm kiếm theo chiều rộng. . nếu đỉnh đầu giải được thì kết thúc công việc. chúng ta xây dựng các hàm kiểm tra một đỉnh n nào đó tại thời điểm đang xét có giải được hay không giải được không? Function giaiduoc(n):boolean. Begin If <n so cap> then giaiduoc:=true else if T(n)<>null then if T(n)⊂VA then giaiduoc = and ( giaiduoc ( m)) m∈T ( n ) else giaiduoc = or ( giaiduoc ( m)) m∈T ( n ) else giaiduoc:=false. Các quá trình này khác hẳn với các quá trình lựa chọn trong không gian trạng thái. . đồ thị và/hoặc có thể cho dưới dạng tường minh hoặc không tường minh trên cơ sở toán tử xây dựng. Trước khi tìm kiếm lời giải trong đồ thị VÀ/HOẶC. ở những thời điểm nhất định. Cũng như đồ thị trong không gian trạng thái. Lúc này phải kiểm tra đỉnh đầu có phải không giải được hay không. ta có thể xây dựng đồ thị Và/hoặc để giải quyết bài toán ban đầu hoặc chứng tỏ tính không giải được của nó. Tương tự như trong không gian trạng thái. Nếu đỉnh đang xét không phải là đỉnh kết thúc và nó là đỉnh lá. tiếp tục tìm kiếm. chúng ta phải tiến hành tìm kiếm đồ thị lời giải.. ta cung có các phương pháp sau: . nếu đúng thì dừng. Thay cho việc tìm kiếm đỉnh thoả mãn điều kện đích. Sự khác biệt chủ yếu là do việc kiểm tra tính kết thúc của quá trình tìm kiếm và các phương pháp sắp xếp và lựa chọn đỉnh để xét phức tạp hơn nhiều. Do đó. ngược lại. Function khonggd(n):boolean.

52 . Begin Push(n0. End. write(‘Khong ket luan’).If T(n)<>null then if T(n)⊂VA then khonggd = or ( khonggd ( m)) m∈T ( n ) else khonggd = and ( khonggd ( m)) m∈T ( n ) else if <T(n) khong so cap> then khonggd:=true else khonggd:=false. While MO<>null do begin n:=pop(MO). if T(n)<>null then for m ∈T (n) do begin push(m. End. push(DONG. MO). * Ví dụ: Phương pháp tìm kiếm chiều rộng Procedure TKR. end. MO). n). if T(m)=null then if giaiduoc(m) then if giaiduoc(n0) then exit else for k∈MO do if giaiduoc(k) then MO:=MO-[k] Else If khonggd(m) then If khonggd(n0) then Exit Else For k∈MO do if khonggd(k) then MO:=MO-[k] end.

* Nhận xét: Nếu tồn tại cây lời giải thì thủ tục tìm kiếm rộng sẽ dừng và cho kết quả là cây lời giải có độ cao nhỏ nhất. A E* B C F G J M* D H* K I L* N O* Hình 4. C. Quá trình tìm kiếm lời giải của đò thị trên bằng phương pháp tìm kiếm rộng có thể trình bày ở bảng sau n T(n) MO DONG A A B. Ví dụ.3 Các đỉnh kết thúc là các đỉnh đánh dấu *. I FGI ABCD F J GIJ ABCDF G K0 IJ ABCDFG I L* Dừng Cây lời giải ở hình sau: A D H* I L* (Xem thêm các ví dụ khác trong tài liệu tham khảo…) 53 . D BCD A B E*. F CDF AB C G DFG ABC D H*. Xét đồ thị Hình 4.3.

b và c là các câu.=)). Câu Câu trong phép tính mệnh đề được cấu tạo từ những ký hiệu sơ cấp theo các luật sau đây : .1. có thể chứng tỏ rằng một bài toán nào đó có thể giải được hay không?. phép tương đương (⇔.Tất cả các ký hiệu mệnh đề và ký hiệu chân lý đều là câu (sentences): true. Q. Ngoài ra.. Mệnh đề . .. 54 . phủ định (¬ . phép hội (∧ ). các kết luận logic rất cần ngay cả trong cách tiếp cận dựa trên không gian trạng thái và quy bài toán về bài toán con. Logic mệnh đề 5. Logic hình thức thường dùng để thu gọn quá trình tìm kiếm lời giải trước khi giải quyết vấn đề. nhờ phân tích logic. Phát biểu: "1+1=2" (có giá trị đúng). các kết luận logic dùng để kiểm tra một trạng thái nào đó có phải là trạng thái đích hay không?. Phát biểu: “Nước thì ướt”. ~.1.Các ký hiệu (symbol) của phép tính mệnh đề là các ký hiệu mệnh đề bởi chữ cái latinh (biến mệnh đề) : a.. phép kéo theo (⇒. q. c.Chương 5 BIỂU DIỄN BÀI TOÁN NHỜ LOGIC HÌNH THỨC Trong chương này sẽ trình bày phương pháp biểu diễn vấn đề nhờ logic hình thức và các phương pháp giải quyết vấn đề trên cách biểu diễn này. a.2. →). ≡ . Đây là một dạng quen thuộc nhất và được các chuyên gia TTNT quan tâm ngay từ đầu. 5. chẳng hạn như chứng minh một khẳng định nào đó là đúng khi biết những tiền đề ban đầu và các luật suy diễn. Chẳng hạn. b. Ví dụ: Phát biểu: “Chiếc xe hơi kia màu đỏ”. R ….chân trị (truth symbol) : true -1. Các ký hiệu mệnh đề biểu thị các mệnh đề (proposition) hay các phát biểu về thế giới thực mà giá trị của chúng có thể là đúng hoặc sai.Mệnh đề là một phát biểu có thể khẳng định tính đúng hoặc sai (hay giá trị của nó chỉ có thể hoặc là đúng hoặc là sai).1. các ký hiệu chân lý . 5. p. Logic hình thức có thể được sử dụng để giải quyết những bài toán chứng minh logic.. trong các phương pháp dựa trên không gian trạng thái.1. ). P. false -0 hay các phép toán kết nối (phép toán logic) như : (phép tuyển (∨).

các ký hiệu ( ) và [ ] dùng để nhóm các ký hiệu vào các biểu thức con và nhờ đó kiểm soát được thứ tự của chúng trong việc đánh giá biểu thức và diễn đạt. →. tuyển của hai câu là câu. Biểu thức logic dạng chuẩn: là biểu thức được xây dựng từ các biến mệnh đề và các phép toán ¬.4.1.Hội hay và của hai câu là một câu : P ∧¬ P là một câu . Ví dụ: (P ∨Q) ≡ R hoàn toàn khác với P ∨(Q ≡ R). tuyển của hai câu là câu. ∧. ¬ P và ¬ Q. Trong các câu phép tính mệnh đề. Biểu thức Một biểu thức là một câu hay công thức dạng chuẩn. R là các mệnh đề và do đó là các câu.Tuyển hay hoặc của hai câu là một câu : P ∨¬ P là một câu .Kéo theo của một câu để có một câu khác là một câu : P ⇒ Q là một câu . phủ định của các câu là câu. Ví dụ: p ∧(¬ q ∨r) Thứ tự ưu tiên của các phép toán logic: ¬. ¬ P ∧¬ Q ∧R.3. Q. ∨. Ngữ nghĩa của phép tính mệnh đề Phép gán giá trị chân lý cho các mệnh đề phức tạp thường được mô tả thông qua bảng chân trị như sau : 55 . (( P ∨Q) ⇒ R ≡ ¬ P ∧¬ Q ∧R . tương đương của hai câu là câu.Tương đương của hai câu là một câu : P ∨Q ≡ R là một câu Các câu hợp lệ được gọi là các công thức dạng chuẩn (well-formed formula) hay WFF. Ví dụ: (( P ∨Q) ⇒ R ≡ ¬ P ∧¬ Q ∧R là một câu dạng chuẩn trong phép tính mệnh đề vì : P. (P ∧Q) ⇒ R. ≡ 5. hội của hai câu là một câu. nó đã được xây dựng thông qua một loạt các luật hợp lệ và do đó nó có dạng chuẩn.. ∨. 5. của phép tính mệnh đề khi và chỉ khi nó có thể được tạo từ những ký hiệu hợp lệ thông qua một dãy những luật này. ¬ P ∧¬ Q. P ∧Q. ∧.1. Đây là câu xuất phát. kéo theo của một câu là một câu.Phủ định của một câu là một câu : ¬ P và ¬ false là các câu .

Do đó. người ta đã đưa vào khái niệm vị từ và lượng từ (∀: với mọi.2.1.P T T F F Q T F T F ¬P F F T T P ∧Q T F F F P ∨Q T T T F P ⇒Q T F T T P≡ Q T F F T Ví dụ : Chân trị của mệnh đề (¬ P ∨ ¬ Q) ≡ (P ⇒ Q) được cho như trong bảng sau : P Q ¬P ¬ P ∨¬ Q P ⇒Q (¬ P ∨¬ Q) ≡ (P ⇒ Q) T T F T T T T F F F F T F T T T T T F F T T T T . 56 . Hay nói một cách khác là mệnh đề không có cấu trúc . ∃ : tồn tại) để tăng cường tính cấu trúc của một mệnh đề. Khái niệm Biểu diễn tri thức bằng mệnh đề gặp phải một trở ngại cơ bản là ta không thể can thiệp vào cấu trúc của một mệnh đề. * Một số công thức biến đổi tương đương của các mệnh đề như sau: ¬(¬P) ≡ P (P∨Q) ≡ (¬P ⇒Q) Luật tương phản: (P ⇒Q) ≡ (¬Q ⇒ ¬P) Luật De Morgan: ¬(P ∨Q) ≡ (¬P ∧¬Q) ¬(P ∧Q) ≡ (¬P ∨¬Q) Luật giao hoán: (P ∧Q) ≡ (Q ∧P) (P∨Q) ≡ (Q∨P) Luật kết hợp: ((P ∧Q) ∧R) ≡ (P ∧(Q ∧R)) ((P ∨Q) ∨R) ≡ (P ∨(Q ∨R)) Luật phân phối: P ∨(Q ∧R) ≡ (P ∨Q) ∧(P ∨R) P ∧(Q ∨R) ≡ (P ∧Q) ∨(P ∧R) 5.Mọi biểu thức logic đều có thể chuyển về các biểu thức logic dạng chuẩn.Hai biểu thức trong phép tính mệnh đề là tương đương nhau nếu chúng có cùng giá trị trong mọi phép gán chân trị. Điều này làm hạn chế rất nhiều thao tác suy luận .2. . Logic vị từ 5.

like. “An”. rain. Cú pháp vị từ + Ký hiệu vị từ: là tập hợp gồm các chữ cái. Students. <đối tượng 2>. là những mệnh đề mà giá trị của nó được xác định thông qua các đối tượng tri thức cấu tạo nên nó. Ví dụ: Chẳng hạn tri thức : "A là bố của B nếu B là anh hoặc em của một người con của A" có thể được biểu diễn dưới dạng vị từ như sau : Bố (A. giá trị mệnh đề chính là kết quả của hàm (thuộc kiểu BOOLEAN). q. <đối tượng n>) Ví dụ: Để biểu diễn vị của các trái cây. 5.Hằng: chỉ một đối tượng. s. B) = Tồn tại Z sao cho : Bố (A. Xanh) Kiểu biểu diễn này có hình thức tương tự như hàm trong các ngôn ngữ lập trình.. U. Ký hiệu vị từ có thể là: . Z) và (Anh(Z. Ví dụ: p.. . ký hiệu “_”. People. .Vị từ: được biểu diễn bằng chuỗi ký tự bắt đầu bằng chữ cái thường. Ví dụ: X. V. Y. Mỗi vị từ là vị từ của n biến (n≥ 0).b. Các mệnh đề sẽ được biểu diễn dưới dạng: Vị từ (<đối tượng 1>. mệnh đề Bố(A.B) là một mệnh đề tổng quát Như vậy nếu ta có các mệnh đề cơ sở là : a) Bố ("An". Ví dụ: like(X. các mệnh đề sẽ được viết lại thành : Cam có vị Ngọt ⇒Vị (Cam.Y) là vị từ của hai biến u(X) là vị từ một biến r là vị từ không biến 57 .. thuộc tính. Z. Ví dụ: a. “Ba”. . blue. "Bình") có giá trị đúng (Tú là anh của Bình) thì mệnh đề c) Bố ("An"..2. …. thuộc tính được biểu diễn bằng chuỗi ký tự bắt đầu bằng chữ cái thường hoặc các chữ số hoặc chuỗi ký tự đặt trong bao nháy.Với vị từ.Z)) Trong trường hợp này. ta có thể biểu diễn các tri thức dưới dạng các mệnh đề tổng quát. "Tú") sẽ có giá trị là đúng. và được bắt đầu bằng chữ cái.. "Bình") có giá trị đúng (Anh là bố của Bình) b) Anh("Tú". (An là bố của Tú). chữ số. B) hoặc Anh(B. một mệnh đề được cấu tạo bởi hai thành phần là các đối tượng tri thức và mối liên hệ giữa chúng (gọi là vị từ). tên biến luôn bắt đầu bằng chữ cái viết hoa.Biến: chỉ một lớp tổng quát các đối tượng..Trong logic vị từ. c. Các ký hiệu vị từ không có biến là các ký hiệu mệnh đề..2.. Ngọt) Cam có màu Xanh ⇒ Màu (Cam.. r. các đối tượng tri thức chính là các tham số của hàm.

plus(two. cos. football).two).plus(two. p(X) nghĩa là với mọi giá trị của biến X đều làm cho biểu thức p đúng.five)= true. + Biểu thức hàm: là một ký hiệu hàm theo sau bởi n đối số. chocolat) ∧¬ likes(bart. marry). Ví dụ: father(david). ∃ Y friends(Y.Các lượng tử biến: o Lượng tử phổ biến: ∀(với mọi): dùng để chỉ một câu là đúng với mọi giá trị của biến lượng giá Ví dụ: ∀X. ∨ (tuyển). mother. chocolat). + Câu sơ cấp: là một hằng vị từ với n ngôi theo sau bởi n thành phần nằm trong cặp dấu ( ). .. ∃ X foo(X. sin. ⇒ (kéo theo). mary). 5. likes(helen. false là các câu sơ cấp. ¬(phủ định).Các phép kết nối logic: : ∧ (hội).three)) ∧equal(plus(three. sister(mary)). price(bananas).’.. p(Y) nghĩa là có ít nhất một giá trị của biến Y để làm cho biểu thức p đúng. + Các ký hiệu ngăn cách: dấu phẩy. Mỗi hàm là hàm của n biến (n≥ 1). dấu mở ngoặc và dấu đóng ngoặc. likes(X.tom). Ký hiệu vị từ trong các câu này là friends. ∀ X likes(X.. like(tom.’ .two. tương đương).3.. + Câu (hay công thức): được tạo ra bằng cách kết hợp các câu sơ cấp sử dụng: . sin là hàm một biến.2. Ngữ nghĩa phép tính vị từ 58 .Trị chân lý true. Ví dụ: cos. likes.five). Ví dụ: ∃ Y. và kết thúc với dấu ‘. ice-cream).Câu sơ cấp còn được gọi là: biểu thức nguyên tử. g. ice-cream) o Lượng tử tồn tại: ∃ (tồn tại): dùng để chỉ một câu là đúng với một số giá trị nào đó của biến lượng giá. likes(hellen. nguyên tử hay mệnh đề Ví dụ : friends(helen. + Mục hay hạng thức (term): là một hằng.three))) ⇒ (equal(plus(three. ⇔ hay ≡ (kéo theo nhau. cách nhau bởi dấu ‘. Ví dụ về câu: likes(helen.two). two. . (foo(two. một biến hay một biểu thức hàm.Hàm: f.

vị từ và hàm. tức là cả Lan và An đều là sinh viên. trong đó G là một công thức nào đó được xác định là ngữ nghĩa của công thức là hội của tất cả các công thức nhận được từ công thức G bằng cách thay X bởi một đối tượng trong miền đối tượng. Hoa} thì ngữ nghĩa của câu ∀x. Chân trị của các biểu thức phụ thuộc vào ánh xạ từ các hằng. 20) ∨ younger(“Hoa”. An} thì ngữ nghĩa của câu ∃ X younger(x. 20) là “X trẻ hơn 20 tuổi” và miền đối tượng gồm ba người {Lan.Giá trị của câu ∃ X <câu> là true nếu tồn tại một phép gán cho X làm cho <câu> có giá trị T. biến. nếu ngữ nghĩa của câu younger(X. công thức ∀x (G) là đúng nếu và chỉ nếu mọi công thức nhận được từ G bằng cách thay X bởi một đối tượng bất kỳ trong miền đối tượng đều đúng. 20) là ngữ nghĩa của câu younger(“Lan”. 20) ∨ younger(“An”. Ví dụ 2: Ngữ nghĩa của các câu ∀x (G). các biến. tức là cả Lan. Chẳng hạn. student(x) được xác định là ngữ nghĩa của câu student(“Lan”) ∧ student(“An”) ∧ student(“Hoa”). Hoa. tức là G đúng cho tất cả đối tượng X trong miền đối tượng. các vị từ và các hàm vào các đối tượng và quan hệ trong lĩnh vực được đề cập. An. Đối với các câu không nguyên tử. . ngữ nghĩa của phép tính vị từ cung cấp một cơ sở để xác định chân trị của các biểu thức dạng chuẩn. Hoa.Tương tự như phép tính mệnh đề. Hoa. An đều là sinh viên. 20). Giá trị chân lý của một câu sơ cấp được xác định qua sự thông dịch.Giá trị của câu ∀ X <câu> là true nếu <câu> là T cho tất cả các phép gán có thể được cho X. và: . Sự thông dịch (cách diễn giải) của một tập hợp các câu phép tính vị từ: là một sự gán các thực thể trong miền của vấn đề đang đề cập cho mỗi ký hiệu hằng. Câu này nhận giá trị True nếu và chỉ nếu ít nhất một trong ba người Lan. Câu này đúng khi và chỉ khi cả ba câu thành phần đều đúng. Chẳng hạn. An trẻ hơn 20 tuổi. nếu miền đối tượng gồm ba người {Lan. Ví dụ 1: Câu student(“Lan”) ∧student(“An”) nhận giá trị true nếu cả hai câu student(Lan) và student(An) đều có giá trị true. Ngữ nghĩa của công thức ∃ x (G) được xác định như là ngữ nghĩa của công thức là tuyển của tất cả các công thức nhận được từ công thức G bằng cách thay X bởi một đối tượng trong miền đối tượng. Như vậy. công thức ∃ x(G) là đúng nếu và chỉ nếu một trong các công thức nhận được từ G bằng cách thay X bởi một đối tượng trong miền đối tượng là đúng. Ví dụ 3: Cho trước một tập hợp các quan hệ gia đình như sau: 59 . Như vậy. sử dụng bảng chân lý cho cho các phép nối kết.

Y) Ta có thể suy luận: parent(eve. Phép tính vị từ bậc nhất Phép tính vị từ bậc nhất cho phép các biến lượng giá tham chiếu đến các đối tượng trong miền của vấn đề đang đề cập nhưng không được tham chiếu đến các vị từ và hàm. Ví dụ 2. ∃ X person(X) ∧likes(X.abel) sibling(cain.Ví dụ hợp lệ: Nếu ngày mai trời không mưa. tomorrow) ⇒ go(tom. ¬ ∃ X likes(X.cain) father(adam.Y) ⇒ sibling(X.Y) ∨mother(X.cain) parent(adam.Y) ∀X ∀Y ∃ Z parent(Z.cain) sibling(cain.3.abel) sibling(abel. ∀ X ( basketball_player(X) ⇒ tall(X) ) Có người thích coca-cola.abel) parent(adam. taxes) Hầu hết bất kỳ câu đúng ngữ pháp nào cũng có thể biểu diễn trong phép tính vị từ bậc nhất bằng cách sử dụng các ký hiệu.8 : .Y) ⇒ parent(X. ice-cream) . Tom sẽ đi biển.abel) mother(eve. Các luật suy diễn 60 .4.2. coca-cola) Không ai thích thuế. 5.X) ∧parent(Z. các phép kết nối và ký hiệu biến.cain) ∀X ∀Y father(X.mother (eve.cain) sibling(abel.abel) parent(eve. sea) Tất cả các cầu thủ bóng rổ đều cao.cain) ! Không có nghĩa Chúng ta có các tương đương sau đây: ∀x (G(x)) ≡ ∀y (G(y)) ∃ x (G(x)) ≡ ∃ y (G(y)) ¬ (∀x (G(x))) ≡ ∃ x (¬G(x)) ¬ ∃ x (G(x)) ≡ ∀x (¬G(x)) ∀x (G(x) ∧H(x)) ≡ ∀x (G(x)) ∧∀x (H(x)) ∃ x (G(x) ∨H(x)) ≡ ∃ x (G(x))∨∃ x (H(x)) 5.Ví dụ không hợp lệ: ∀(Likes) Likes(helen.abel) father(adam. ¬weather(rain.

Một biến kết buộc và một biến chưa kết buộc: xem (2) 61 .4. Khả năng suy ra những biểu thức đúng mới từ một tập hợp các khẳng định đúng là một đặc trưng quan trọng của phép tính vị từ. Logic vị từ dùng các luật suy diễn sau : Luật Modus Ponens (MP): P P ⇒Q Q Ví dụ: Nếu ta có quan sát sau đây “nếu trời mưa thì sân ướt” (P ⇒ Q) và “trời đang mưa” (P) thì ta dễ dàng suy ra được “sân ướt” (Q).1. Hai biến chưa kết buộc: luôn luôn đối sánh => Khi đó ta có phép thế {X/Y} b.(2) bằng luật UI. 5. Biến đã kết buộc : xem (1) (3) Biến X/ biến Y đối sánh: a. Luật Modus Tollens (MT): P ⇒ Q ¬Q ¬P Luật triển khai phổ biến (Universal Instantiation -UI): ∀X P(X) a thuộc miền xác định của X P(a) Ví dụ: “Tất cả mọi người đều chết và Socrates là người do đó Socrates sẽ chết” Cho trước: (1) ∀X (man(X) ⇒ mortal(X)) (2) man(socrates) => (3) man(socrates) ⇒ mortal(socrates) từ (1). Biến chưa kết buộc: biến trở thành kết buộc với hằng => Khi đó ta có phép thế {a/X} b.Ngữ nghĩa của phép tính vị từ cung cấp một cơ sở cho lý thuyết hình thức về suy diễn logic.4. (4) mortal(socrates) từ (3) và (2) bằng luật MP. Giải thuật đối sánh mẫu (1) Hằng / hằng đối sánh : chỉ khi chúng giống hệt nhau VD: tom không đối sánh với jerry (2) Hằng a / biến X đối sánh: a. Đối sánh mẫu và phép hợp nhất 5.

c. goo(Z)) {fred/X. VD: goo(X) .jack/Y} foo(Z.a.goo(Y)) với: foo(X.a.Y) . các phép hợp nhất theo sau và các suy luận kế tiếp phải giữ sự kết buộc này.Y) không đối sánh moo(X. Phép hợp nhất Phép hợp nhất (unification) là một thuật toán dùng để xác định những phép thế cần thiết để làm cho hai biểu thức vị từ đối sánh (match) nhau.2.goo(jack)) {W/X.a. Một khi biến đã bị kết buộc. Hợp nhất và các luật suy diễn khác như Modus ponens cho phép chúng ta tạo ra các suy diễn dựa trên một tập hợp các khẳng định logic. số ngôi giống nhau thì áp dụng đối sánh từng đối số một. Những biểu thức này tự thân chúng lại có thể chứa các biến.foo(Y)) không đối sánh foo(X. Một biến có thể thay thế bởi một mục bất kỳ: Thay thế bởi Biến Biến đã kết buộc (bound) Hằng Biến khác Biến chưa kết buộc (unbound) Biểu thức hàm có thể chứa các biến khác Ví dụ: Đối sánh foo(X. VD: man(X) => mortal(X) Nếu ta thế X bởi socrates thì ta được: man(socrates) => mortal(socrates) 5.a.goo(Y)) không đối sánh foo(fred. Hai biến kết buộc: xem (1) (4) Biểu thức / biểu thức đối sánh: chỉ khi các tên hàm hoặc vị từ. Phép hợp nhất phức tạp do có thể thay thế một biến với bất kỳ mục nào gồm cả những biến và những biểu thức hàm khác với độ phức tạp tùy ý.4. một hệ suy diễn phải có khả năng xác định khi nào thì hai biểu thức là một hay còn gọi là đối sánh (match).a.không đối sánh với foo(X) hay goo(X. Các chương trình giải quyết vấn đề 62 .đối sánh với goo(foo(Y)) với phép thế {foo(Y) / X} Lưu ý : Phạm vi của một biến là một câu.goo(moo(Z))) {Z/X. Z/Y} foo(W.b.moo(Z)/Y} Nói chung một quá trình giải quyết vấn đề sẽ đòi hỏi nhiều suy diễn và do đó cần nhiều phép hợp nhất nói tiếp nhau. Để áp dụng các luật như MP.

∧GTn → KL1 KL2. GT2.. Thủ tục Wong. KLm}. Hãy chứng minh tập kết luận KL={KL1..KLm Ra: Chứng minh GT1. Thậm chí điều này còn khó khăn với cả con người! Với công cụ máy tính. bạn có thể cho rằng ta sẽ dễ dàng chứng minh được mọi bài toán bằng một phương pháp "thô bạo" là lập bảng chân trị ... VP)}.. GT2.5.1......GTn → KL1.. KL2.GTn}. Sau đây chúng ta sẽ nghiên cứu các phương pháp chứng minh mệnh đề (hoặc vị từ) với độ phức tạp chỉ có O(n ): 5.5. Một số giải thuật chứng minh Một trong những vấn đề khá quan trọng của logic mệnh đề là chứng minh tính đúng đắn của phép suy diễn (a⇒b).GTn Các biểu thức mệnh đề kết luận KL1. . VP) While P ≠ φ do { (VT. //đưa từng GT về dạng chuẩn VP {KLi} ∪ VP. phương pháp lập bảng chân trị luôn cho được kết quả cuối cùng nhưng độ phức tạp của phương pháp này là quá lớn. O(2n) với n là số biến mệnh đề. Rõ ràng rằng với hai phép suy luận cơ bản của logic mệnh đề (Modus Ponens.2. } //đưa vào vế phải P {(VT.. } //đưa vào vế trái for i=1 to m do { Trans (KLi).. Tuy nhiên. Điều này được phát biểu trong giải thuật đối sánh mẫu....5.. (Xem thêm trong tài liệu tham khảo…) 5. 5. //đưa từng GT về dạng chuẩn VT {GTi} ∪ VT. VP) get (P).KLm) * Phương pháp: { for i=1 to n do { Trans (GTi). Tuy về lý thuyết. thao tác biến đối hình thức là rất khó cài đặt được trên máy tính.... //Lấy bài toán trong P 63 .. . Bài toán Cho tập các giả thiết dưới dạng các biểu thức logic mệnh đề (hoặc vị từ) GT={GT1. KL2. H (Vương Hạo) Vào: Cho các biểu thức mệnh đề giả thiết GT1.KLm: True (Thông báo “thành công” nếu GT1 ∧GT2 ∧. Modus Tollens) cộng với các phép biến đổi hình thức.. GT2. Đây cũng chính là bài toán chứng minh thường gặp trong toán học.logic phải duy trì tính nhất quán của các phép thế biến.. KL2... //P: tập chứa các bài toán (VT. ta cũng có thể chứng minh được phép suy diễn.

VP) then Exit (“ko thành công”). Nếu KLj có phép ∨ thì thay thế phép ∨bằng dấu ". p ∨r ⇒ s. ¬s . KLj ở dạng phủ định. ¬ p ⇒ q p. VP) mà có write (“thành công”). g. ¬ g. p ∨r. Ví dụ: p ∧q. q 64 . ¬ p ∨q ⇒ q tách thành 2 dòng: p.". ¬ p → p∨q.VP) nhận giá trị True. Ví dụ: p ∨q. if VT ∩ VP = φ then if not tach (VT. p ⇒ (r ∧s).Trans (BT:) là thủ tục đưa biểu thức BT về biểu thức chỉ chứa các phép toán ¬. q ⇒ q được chứng minh p. ¬ (r∧s). (a ∨c) ∧(a ∨d) ∧(¬b ∨c) ∧(¬b ∨d) . (a ∧¬b) ∨(c ∧d) 2. chuẩn tuyển: tuyển các hội). VP) thành 2 danh sách con nếu GTi có phép∨hoặc ở KLj có phép ∧. Chú ý: a ⇒ b = ¬a ∨b.tach (VT. ¬ p ∨s ⇒ ¬ q. ¬ s → p.Một dòng được chứng minh nếu tồn tại chung một mệnh đề ở ở cả hai phía. Nếu tách được thì thủ tục tach (VT. Ví dụ : p. VP): thủ tục tách (VT. Ví dụ : p. ∧. q. } } P : các bài toán con qua phép tach (VT. q ⇒ q ." . VP). VP): thủ tục chuyển các GTi . } * Chú ý: . ¬ (a ∧b) = ¬a ∨¬b Ví dụ: Biểu thức ¬ (a ⇒b) ∨(c ∧d) có thể đưa về thành: 1. ∨dưới dạng chuẩn (ví như chuẩn hội: hội các tuyển.if VT ∩ VP = φ then { chuyen (VT. ¬ p ⇒ q → p⇒ p.chuyen (VT. r ∧(¬p ∨s) ⇒ ¬q. s Và nếu GTi có phép ∧thì thay thế phép ∧bằng dấu ". r.

VP) ta có 2 dòng: VT1 = ¬a. VP) ta có kết quả bài toán được chứng minh (Xem hình sau). 65 . a .Cứ tiếp tục như vậy để xử lý (VT2. (VT2. a . a . . b → d VT VP .Một vấn đề được chứng minh nếu tất cả dòng dẫn xuất từ dạng chuẩn ban đầu đều được chứng minh. ¬b ∨¬c ∨d.Áp dụng thủ tục tách (VT. * Các ví dụ: VD1: Cần chứng minh rằng từ a ∧b → c và b ∧c → d và a và b. VP).Nếu một dòng không còn phép nối ∧hoặc ∨ở cả hai vế và ở 2 vế không có chung một biến mệnh đề thì dòng đó không được chứng minh. VP = d VT2 = ¬b ∨c . VP)} Áp dụng thủ tục chuyển (VT1 . a Lúc này VT1 ∩ VP ≠ φ tức là VT1 → VP . ¬b ∨¬c ∨d.Như vậy: P = {(VT1. ¬b ∨¬c ∨d. b. b. suy ra d Giải: Viết lại dưới dạng chuẩn: (¬a ∨¬b ∨c) ∧(¬b ∨¬c ∨d) ∧a ∧b → d ¬a ∨¬b ∨c .VP) đưa về dạng VT1 = ¬b ∨¬c ∨d. a . b.. VP = d . VP = d.

d. a . b → d c. a . a . b → d. a : CM ¬b. b → d ¬a . b → d ¬b ∨c.¬a ∨¬b ∨c . ¬b ∨¬c ∨d. b → d c. b → d c. a . a . a . ¬c. b → d ¬b ∨¬c ∨d.Ta phải chứng minh (r → u) ∧(u → ¬w) ∧(¬r → ¬w) → ¬w: True 66 . a . b : CM c. Hãy chứng minh rằng “Lan không bị ướt” bằng phương pháp Vương Hạo Giải a. a . ta có các biểu thức logic đúng sau: r →u u → ¬w ¬r → ¬w b. ¬b ∨¬c ∨d. a . ¬b ∨¬c ∨d. b : CM c. Xây dựng các câu trên bằng các biểu thức logic mệnh đề b. b → d. a . c : CM VD2: Xét các câu đúng sau: “Nếu trời mưa thì Lan mang theo dù” “Nếu Lan mang theo dù thì Lan không bị ướt” “Nếu trời không mưa thì Lan không bị ướt” a. ¬b ∨¬c ∨d. b → d c. a . ¬b ∨¬c ∨d. b → d. b → d ¬b ∨¬c ∨d. a . ¬c ∨d. b → d: CM c. a . r: “Trời mưa” u: “Lan mang theo dù” w: “Lan bị ướt” Lúc đó. ¬b. b→ d .

5. KL2. GT2... Để chứng minh rằng từ các GT={GT1. } if mt(P) then Exit (“thành công”). . . KL2.. hopgiai(P).Hợp giải: Nếu trong P mà có 2 mệnh đề: p1 = ¬a ∨b p2 = a ∨c thì ta bổ sung vào P thêm mệnh đề mới: p3 = b ∨c * Ví dụ: Cần chứng minh rằng từ a ∧b → c và b ∧c → d và a và b. } if mt(P) then Exit (“thành công”).... suy ra d 67 ... else Exit (“ko thành công”).Mâu thuẫn: Nếu trong P mà có 2 mệnh đề: p1 = ¬p2 hoặc ¬p1 = p2 ( với p1 ≠ p1) thì trong P có mâu thuẫn. P {¬KLi}.. . } for i=1 to m do { Trans (KLi). } * Chú ý: ..∧GTn → KL1∨KL2∨...GTn} suy ra một trong các kết luận KL={KL1. Thủ tục Robinson 1 (dùng cho logic mệnh đề) Thuật giải này do Robinson đề xuất và hoạt động dựa trên phương pháp chứng minh phản chứng..GTn Các biểu thức mệnh đề kết luận KL1..5. Vào: Cho các biểu thức mệnh đề giả thiết GT1... Nếu suy ra được mâu thuẫn thì quá trình chứng minh xong..3.∨KLm) * Phương pháp: { for i=1 to n do { Trans (GTi). ta chỉ cần lấy phủ định của KL1. GT2. While P ≠ P1 and ¬mt(P) do {P1: = P. KL2... KLm}.. KLm hợp cùng giả thiết. P {GTi}.. //nếu mâu thuẫn P P1 : = φ .KLm Ra: (Thông báo “thành công” nếu GT1∧GT2 ∧.

¬a ∨c Res(1B. (Xem hình sau) ¬a ∨¬b ∨c a b ¬b ∨¬c ∨d ¬d ¬b ∨c ¬a ∨c ¬c ∨d ¬b ∨¬c ¬c c Mâu thuẫn 5. ¬b ∨¬c ∨d 3. ¬a ∨¬b ∨c 2.3). ¬b ∨c (là kết quả hợp giải dòng 1 và dòng 3. b 5. 7. ¬d Quá trình hợp giải như sau: 6. a .5) 10. ¬c Res(4.4) 9. b. ¬d} Để đơn giản ta viết như sau: 1.9A) 12.4) 8. Mâu thuẫn giữa 10 và 11 Chứng minh xong. Thủ tục Robinson 2 (dùng cho logic vị từ) (Xem thêm trong tài liệu tham khảo…) 68 . b ∧c → d. ¬b ∨¬c ∨d.4.tức {a ∧b → c. ¬c ∨d Res(2A. b} → {d} Giải: P = {¬a ∨¬b ∨c . ký hiệu là Res(1A.7A) 11. c Res(3. a.5. ¬b ∨¬c Res(2C. a 4. chữ A chỉ ra rằng lấy thành phần đầu tiên trong trong 1).

và thường được hình thành thông qua kinh nghiệm.. (Chẳng hạn : mặt trời mọc ở đằng đông. suy diễn.... Chính vì vậy.là các tác nhân thông minh. cấu tạo như thế nào (một cái bàn thường có 4 chân. toán học. thuật giải là một dạng của tri thức thủ tục. các bước cần tiến hành. nhưng ngược lại phương pháp suy diễn chỉ có thể phù hợp cho một phương pháp biểu diễn tri thức nhất định. con người có thể đưa ra các hành động hợp lý cho công việc mà con người đang làm. văn học.Người ta thường phân loại tri thức ra làm các dạng như sau : + Tri thức sự kiện : là các khẳng định về một sự kiện. con người có 2 tay.1. sự kiện. Tác nhân thông minh là bất cứ cái gì có thể nhận thức được môi trường thông qua các bộ cảm nhận (sensors) và đưa ra hành động hợp lý đáp ứng lại môi trường thông qua bộ phận hành động (effectors)... cảm nhận. thường được xếp vào loại này. là tri thức .. softrobot (software robot). Phương pháp biểu diễn tri thức sẽ quyết định phương pháp suy diễn tương ứng. trình từ hay ngắn gọn là cách giải quyết một vấn đề.. 6. 2 mắt. Ví dụ: Hiểu biết về y học. được thấy. . + Tri thức mô tả : cho biết một đối tượng. . .. Trong khi đó mục tiêu của trí tuệ nhân tạo ứng dụng là thiết kế các tác nhân thông minh (intelligent agent) cũng có khả năng đó như con người... ta cần phải có các phương pháp đưa tri thức vào máy tính được gọi là biểu diễn tri thức.. 69 . phỏng đoán.. Tri thức và suy diễn là hai thành phần trong bất kỳ một hệ dựa trên tri thức nào. tam giác đều có 3 góc 600... khái niệm.Tri thức: là sự hiểu biết về một miền chủ đề (lĩnh vực) nào đó.Chương 6 BIỂU DIỄN TRI THỨC VÀ CÁC PHƯƠNG PHÁP SUY DIỄN Như ta đã biết con người sống trong môi trường có thể nhận được thế giới nhờ các giác quan và sử dụng tri thức tích luỹ được và nhờ khả năng lập luận. các hệ chuyên gia.) + Tri thức thủ tục : thường dùng để diễn tả phương pháp. khái niệm nào đó (trong một phạm vi xác định). vấn đề. Ví dụ: robots. Tri thức và dữ liệu . muốn xây dựng một trí thông minh nhân tạo. Các định luật vật lý..) + Tri thức Heuristic : là một dạng tri thức cảm tính. Các tri thức thuộc loại này thường có dạng ước lượng. Thuật toán.

Ví dụ: Đối với quả cam ta xét các dữ liệu như vỏ..Thu thập thông tin ta được dữ liệu và căn cứ vào tri thức ta có được những quyết định phán đoán. Như vậy. có thể nói rằng. màu sắc. cơ sở tri thức và động cơ suy diễn là một bước tiến hóa mới của dữ liệu và thuật toán của chương trình! Bạn có thể hình dung động cơ suy diễn giống như một loại động cơ tổng quát. ngon vừa. + Động cơ suy diễn : là phương pháp vận dụng tri thức trong cơ sở tri thức để giải quyết vấn đề. chương trình trí tuệ nhân tạo được cấu tạo từ hai thành phần là cơ sở tri thức (knowledge base) và động cơ suy diễn (inference engine). Khó phân biệt giữa tri thức và dữ liệu (không có ranh giới rõ ràng giữa chúng). cuống. Tuy nhiên ta có thể phân biệt theo bảng sau: Dữ liệu . + Cơ sở tri thức : là tập hợp các tri thức liên quan đến vấn đề mà chương trình quan tâm giải quyết.Không có cấu trúc hoặc có cấu trúc phức hợp ....của nó như thế nào? và dựa vào hiểu biết của ta mà xác định xem quả cam đó là ngon hay không ngon.Ở dạng phức hợp .Có cấu trúc đơn giản .Định tính .So với chương trình truyền thống (được cấu tạo từ hai "chất liệu" cơ bản là dữ liệu và thuật toán)..Định lượng ... được chuẩn hóa có thể dùng để vận hành nhiều loại xe máy khác nhau và cơ sở tri thức chính là loại nhiên liệu đặc biệt để vận hành loại động cơ này ! 70 . tri thức là dạng dữ liệu bậc cao. Nếu xét theo quan niệm biểu diễn tri thức thì cơ sở tri thức chỉ là một dạng dữ liệu đặc biệt và động cơ suy diễn cũng chỉ là một dạng của thuật toán đặc biệt mà thôi. Tuy vậy.Ở dạng đơn giản Tri thức .

Sau nhiều cố gắng. Trong đó. Biểu diễn tri thức nhờ mạng ngữ nghĩa Dùng một đồ thị G = (V. Ví dụ: 71 . cung là mối liên hệ giữa các đối tượng. ta có thể biểu diễn bài toán bằng các biểu thức logic (logic mệnh đề."a là b" nghĩa là đối tượng a thuộc vào tập đối tượng được biểu diễn bởi khái niệm b hoặc tập các đối tượng biểu diễn bởi khái niệm a là tập con của tập đối tượng biểu diễn khái niệm b (quan hệ is-a). Biểu diễn tri thức nhờ logic Như ta đã nghiên cứu ở chương 5. Có một cung nối giữa hai đối tượng a và đối tượng b. Khi có <a là b> (hoặc "b bao gồm a"). b. Đó là mục tiêu của biểu diễn tri thức. 6. sự kiện với nhau.Cấu trúc chung nhất của một chương trình trí tuệ nhân tạo 6.1. các thông tin cơ bản về các đối tượng được cho bởi b sẽ truyền lại cho a (nghĩa là a được thừa hưởng những gì b có). chúng ta cần phải biểu diễn tri thức dưới dạng thuận tiện cho máy tính.2. Có 2 loại quan hệ đặc biệt: . logic vị từ). 6. các nhà TTNT đã phát triển một số cách biểu diễn (thể hiện) tri thức có hiệu quả trong máy. Các phương pháp biểu diễn tri thức (mô tả tri thức) Để máy tính có thể sử dụng được tri thức.2. ký hiệu a b nếu có một quan hệ nào đó giữa hai đối tượng a. E) gồm tập đỉnh V và tập cung E. các sự kiện cụ thể. Ví dụ: Yến chim . có thể xử lý được tri thức.2.Ngược lại với quan hệ "là" là quan hệ "bao gồm". đỉnh (nút mạng) là các đối tượng.2.

cánh

is-a
Chíp chíp

Yến

is-a

Chim

is-a

Cánh cụt

Không khí
is-a

thở
Con vật

hoạt động
bay

hoạt động
đi

Ưu điểm:
- Cho phép biểu diễn một cách trực quan các sự kiện và các mối liên hệ giữa
chúng.
- Tính mô đun cao theo nghĩa các tri thức mới được thêm vào hoàn toàn độc
lập với các tri thức cũ.
- Là ngôn ngữ biểu diễn dạng mô tả.
- Có thể áp dụng một số cơ chế suy diễn trên mạng: cơ chế truyền và thừa
hưởng thông tin giữa các đối tượng (tính kế thừa), cơ chế "cháy" trên mạng.
Nhược điểm:
- Không có một phương pháp suy diễn chung nào cho mọi loại mạng ngữ
nghĩa.
- Khó kiểm soát quá trình cập nhật tri thức để dẫn đến mâu thuẫn trong cơ
sở tri thức.
6.2.3. Biểu diễn tri thức bằng khung (Frame)
Khung thực chất là sự tổng quát hoá của cấu trúc bản ghi trong Pascal và
tương tự như cấu trúc đối tượng trong C++
Một khung được mô tả bởi cấu trúc:
- Tên khung: Định danh đối tượng mô tả.
- Các khe (slot): trên mỗi khe lưu trữ các thông tin, miền giá trị, thuộc tính
và chiều mũi tên chỉ đến các khung khác.
Ví dụ: Xét khung (frame) mô tả tập học sinh HOCSINH
72

Frame HOCSINH
IS-A:
PART-OF: NGUOI-DI-HOC
A KIND OF: (HOCSINHCOSO, HOCSINHTRUNGHOC)
Cân nặng: 10-60kg
Chiều cao: 80-170cm
Cấu trúc frame này cho ta một "khung dữ liệu" để khoanh vùng các đối
tượng là học sinh. Trường hợp gặp một người cao 175cm, nặng 45kg thì ta có thể
khẳng định rằng đó không phải là học sinh vì không thoã mãn các ràng buộc đã có.
Ngoài ra, một trong những đặc trưng quan trọng của frame là khả năng thừa
kế các thông tin của các khe có cùng tên ở đối tượng bậc trên.
Ví dụ: Trong frame HOCSINHCOSO, HOCSINHTRUNGHOC có khe
chiều cao với giá trị mô tả miền, thì sau khi thừa kế thông tin ở mức trên Frame
HOCSINH, khe này cần phải lấy các giá trị trong khoảng 80-170cm.
6.2.4. Biểu diễn tri thức nhờ các luật sản xuất
Phương pháp biểu diễn tri thức nhờ logic (logic mệnh đề và logic vị từ) khá
trực quan song chỉ phù hợp khi không có quá nhiều luật suy diễn.
Một tri thức được thể hiện bằng một câu Horn dạng chuẩn:
p1 ∧p2 ∧....∧pn ⇒ q
Các câu Horn dạng này còn được gọi là luật if- then (luật nếu - thì) và được
biểu diễn như sau:
if P1 and....and Pn then Q
Các Pi (i = 1, ..., n) được gọi là các điều kiện, Q được gọi là kết luận của
luật.
Một câu Horn dạng tổng quát:
p1 ∧p2 ∧....∧pn ⇒ q1 ∨q2 ∨....∨qm
Lưu ý:
Nếu có luật dạng: p1 ∧p2 ∧....∧pn ⇒ q1 ∨q2 ∨....∨qm thì tương đương với m luật
sau:
p1 ∧p2 ∧....∧pn ∧¬ q2 ∧....∧¬qm ⇒ q1
p1 ∧p2 ∧....∧pn ∧¬ q1 ∧¬ q3...∧¬qm ⇒ q2
p1 ∧p2 ∧....∧pn ∧¬ q1....∧¬qm-1 ⇒ qm
Tuy nhiên ta chỉ xét câu Horn dạng chuẩn (m=1)
- Nếu n=0, m=1: câu Horn có dạng ⇒ q: gọi là sự kiện (fact) q.
- Nếu n>0, m=1: câu Horn có dạng: p1 ∧p2 ∧....∧pn ⇒ q: gọi là luật (rule).

73

Trong các hệ chuyên gia, cơ sở tri thức gồm 2 phần: tập các sự kiện (facts) và
tập luật (rules).
Ví dụ:
- Ta có các luật về kinh nghiệm dự báo thời tiết:
"Chuồn chuồn bay thấp thì mưa, bay cao thì nắng, bay vừa thì râm"
a: chuồn chuồn bay thấp, b: chuồn chuồn bay cao, c: chuồn chuồn bay vừa
d: trời mưa, e: trời nắng, f: trời râm
lúc đó ta có các luật sau:
a ⇒d
b ⇒e
c ⇒f
- Nhiều định lý trong toán học có thể biểu diễn bởi các luật, ví dụ:
Nếu tam giác có một góc bằng 600 và tam giác có hai cạnh bằng nhau thì
tam giác đó là tam giác đều.
6.3. Suy diễn trên luật sản xuất
6.3.1. Khái niệm
Suy diễn là quá trình suy luận dựa vào các quy luật đã cho, thiết lập các
thông tin mới từ các thông tin đã biết. Suy diễn sẽ sử dụng tập sự kiện làm tiên đề.
Các phương pháp suy diễn dần dần chuyển từ các giả thiết về các kết luận
bằng cách thêm vào giả thiết những sự kiện đã được khẳng định đúng, dựa trên 2
phương thức:
- Modus ponens:
A, A⇒B
B
nghĩa là nếu A đúng và A⇒B đúng thì B cũng đúng
- Modus tollens
¬B, A⇒B
¬A
nghĩa là nếu B sai và biết rằng A⇒B đúng thì A cũng sai.
Trong quá trình suy diễn, ta cần quan tâm đến các vấn đề sau:
- Xây dựng tập luật, câu hỏi nào được chọn để người sử dụng trả lời?
- Chọn quá trình tìm kiếm như thế nào?
- Thông tin nhận được có ảnh hưởng đến quá trình tìm kiếm không?
6.3.2. Bài toán
Cho tập sự kiện F= {f1, f2,...,fn} và tập luật R= {r1, r2,...,rm}. Chứng minh tập
kết luận G đúng.
6.3.3. Các phương pháp suy diễn
74

6.3.3.1. Suy diễn tiến (lập luận tiến - forward chaining hoặc forward
reasoning)
(Tư tưởng cơ bản của suy diễn tiến là áp dụng luật suy diễn Modus Ponens tổng
quát)
Là quá trình suy diễn bắt đầu từ tập sự kiện đã biết, rút ra những sự kiện
mới và cứ như vậy cho đến khi có được sự kiện cần chứng minh hoặc không có
luật nào sinh ra các sự kiện mới (tập sự kiện đúng là cực đại).
* Phương pháp:
GỌi T là tập các sự kiện (mệnh đề) tại thời điểm đang xét (khởi tạo tập T=F:
tập sự kiện đúng ban đầu ).
Xét các luật ri có dạng: p1 ∧p2 ∧....∧pn ⇒ q và pj∈T ∀ =1, n nghĩa là left
(ri) ∈T
thì T= T+ right (ri)
quá trình lặp lại cho đến khi G⊂ T hoặc không có luật nào sinh ra thêm sự
kiện mới.
* Giải thuật:
Procedure suydientien;
Begin
T:= F;
S:= loc(R, T);{ S: là tập luật có dạng p1 ∧ p2 ∧ ....∧ pn ⇒ q sao cho pj∈T
∀ =1, n }
While G ⊄ T and S<>φ do
Begin
r := get(S);
T:= T + right(r);
R:=R \ {r};
S:= loc(R,T);
End;
If G ⊂ T then write (“thành công”)
Else write (“không thành công”);
End;
* Ví dụ:
Cho trước tập sự kiện F={a,b}. Sử dụng các luật:
r1: a ⇒ c
r2: b ⇒ d
r3: c ⇒ e
r4: a ∧d ⇒ e
r5: b ∧c ⇒ f
r6: e ∧f ⇒ g
j

j

75

r5. r3 r1. Quá trình trên cứ lặp lại cho đến khi nào không có luật nào sinh ra sự kiện mới. c.. r3.. r5 r3. b. Trong mỗi bước của thủ tục. r6 r4 a. Quá trình xác định ai cũng tương tự như đối với b.. b. r4. Ngược lại. r3.. r6 r3 a.2.. Suy diễn lùi (lập luận lùi .. c.3. d. r5 r4.∧ an ⇒ b.. f. f r6 r6 r6 a. b r1. r6 r1 a. b.. So sánh mỗi điều kiện (ở vế trái) của tập luật với các sự kiện trong cơ sở sự kiện.. d. c.cần suy ra g Giải: Ta thể hiện trên bảng sau: r T S R a. Chính vì lẽ đó mà có tên là suy diễn tiến. r5. r2. r5. r3.. e. b. e r5 r5. Suy diễn tiến chỉ là quá trình suy ra các sự kiện mới từ các sự kiện có trong bộ nhớ làm việc. không hướng tới tìm ra câu trả lời cho một câu hỏi nào cả. r5. c. để có b. b. r6 r5 a. c. phải đưa ra các kết luận a1. b. nếu mọi ai đều dẫn xuất được giả thiết thì quá trình dẫn xuất ra b là đúng) * Giải thuật: 76 . người ta xét một luật trong tập luật.3. e r4. r4. r2. (Nghĩa là: để đưa ra kết luận b. ta thử tìm tất cả các luật có dạng: a 1 ∧.backward chaining hoặc backward reason) Là quá trình xuất phát từ sự kiện cần chứng minh và thay vào đó là những sự kiện ở vế trái của 1 luật có vế phải là sự kiện cần chứng minh. Quá trình suy diễn tiến không định hướng tới giải quyết một vấn đề nào cả. Nếu sự kiện này là sự kiện mới (không có trong bộ nhớ làm việc) thì nó được đưa vào bộ nhớ làm việc. với mỗi luật ta xét phần điều kiện (ở vế trái) tới phần kết luận (ở vế phải) và khi mà tất cả các điều kiện của luật đều thoã mãn thì ta suy ra sự kiện trong phần kết luận. d. r6 r2 a. r5 r2. nếu đến một lúc nào đó phát hiện được rằng có một ai nào đó không dẫn xuất được từ các giả thiết thì quay lui sang các luật sản xuất khác sinh ra b có dạng b1∧.∧bm ⇒ b. Quá trình này được thực hiện cho đến khi đưa về các sự kiện là tập sự kiện con của tập sự kiện giả thiết. c r2. g Vậy g∈T nên bài toán được chứng minh (g: true). e. d r3. 6. r4.. r4.an. d. nếu tất cả các điều kiện của luật được thoã mãn thì sự kiện trong phần kết luận được xem là sự kiện được suy ra. * Nhận xét: Quá trình suy diễn tiến là quá trình xem xét các luật.

* Ví dụ: Cho tập sự kiện F={p. + Suy diễn tiến là tiếp cận lý tưởng đối với các loại bài toán cần giải quyết các nhiệm vụ như lập kế hoạch.GỌi T là tập các sự kiện cần chứng minh tại thời điểm đang xét (khởi tạo T= G. Begin T:= {g}. End. + Cho ra khối lượng lớn các thông tin từ một số thông tin ban đầu. điều khiển và diễn dịch.Suy diễn tiến Ưu điểm: + Làm việc tốt khi bài toán có bản chất là đi thu thập thông tin rồi thấy điều cần suy diễn. T:= T + left(ri). For l∈T \ F do suydienlui(l). điều hành. và tập luật R: r1: p ⇒ q r2: q ∧r ⇒ s Chứng minh s p r T S(p) s s r2 q. Nhược điểm: 77 . S(p) ={ri∈R / right(ri) = p} ( là tập các luật trong R sao cho vế phải chứa p) Procedure suydienlui (g). If T⊂ F then write (‘g đã được chứng minh ‘) Else Begin p:=get(T). End. If S(p) = {} then write (‘g không chứng minh được ‘) Else For ri∈ S(p) do Begin T:= T \ right(ri). Nó sinh ra nhiều thông tin mới. End. Nhận xét .3. r}. p r 6. G là tập kết luận).4. r r2 q r1 r.

lúc đó cần suy diễn tiến. nó chỉ tìm trên một phần của cơ sở tri thức thích đáng đối với bài toán đang xét. dựa vào các ưu và nhược điềm của từng loại suy diễn mà ta nên chọn kỹ thuật suy diễn nào để áp dụng vào bài toán. Trước tiên. . Như vậy. ta xem xét các chuyên gia giải nó như thế nào?. + Khi suy diễn một điều gì từ thông tin đã biết . Nhược điểm: + Nhược điểm cơ bản của loại suy diễn này là nó thường tiếp theo dòng suy diễn thay vì đúng ra phải dừng ở đó mà sang nhánh khác. Nó tạo ra một loạt câu hỏi chỉ liên quan đến vấn đề đang xét. 78 . + Suy diễn lùi được đánh giá cao trong các bài toán như là chẩn đoán. dự đoán và tìm lỗi. thuận tiện đối với người dùng. hệ thống hỏi các câu hỏi có thể hỏi mà không biết rằng chỉ một ít câu đã đi đến kết luận được. còn nếu đã có giử thuyết và cần chứng minh cái đích này thì ta dùng suy diễn lùi.+ Không cảm nhận được rằng chỉ cần một vài thông tin quan trọng. Nếu cần thu thập dữ liệu rồi mới quyết định suy diễn cái gì thì ta chọn suy diễn tiến. Có thể các câu trả lời cũng quan trọng nhưng làm người dùng lúng túng khi phải trả lời các câu chẳng dính đến chủ đề. + Hệ thống có thể hỏi cả câu hỏi không liên quan. Ví dụ: Một bác sĩ có thể hiểu hàng trăm vấn đề có thể xảy ra với một cá nhân.Suy diễn lùi: Ưu điểm: + Phù hợp với bài toán đưa ra giả thuyết và liệu giả thuyết đó có đúng hay không? + Tập trung vào đích đã cho. Nguợc lại bác sĩ hầu như thấy được bệnh (ví dụ như viêm họng) thì ông ta dùng suy diễn lùi. nhưng vẫn phải tìm hiểu hiện trạng của bệnh nhân.

............................ Kỹ thuật tìm kiếm tốt nhất đầu tiên .3..........................4.......................... Kỹ thuật tìm kiếm sâu..............................................30 3.............................................2...................... Một số vấn đề trí tuệ nhân tạo quan tâm............3......................32 3.............................................1.........18 3........5 1.......................... Các ví dụ......................... Các khái niệm cơ bản............8 1................1................ Giải thuật........................3................2.................3.1 1...............................3.....................28 3.....3.................2...4.....24 3...................................2..............................................MỤC LỤC Chương 1...3.................3..............................................................5........1........ Đối tượng và mục tiêu nghiên cứu của trí tuệ nhân tạo...................................1....... Một số chuyên ngành (lĩnh vực ứng dụng) của trí tuệ nhân tạo ......3 1...........10 2...1 1.............................................................18 CÁC PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI TRONG ..............7 1.............24 3..............3......................... Biểu diễn không gian trạng thái bằng đồ thị.......5.........21 3.....5.......6.......... Toán tử chuyển trạng thái......2....................................15 2...1...14 2............2......................2.....16 Chương 3.2 1.6........ 31 3.....9 Chương 2......................... Các kỹ thuật trí tuệ nhân tạo...............18 KHÔNG GIAN TRẠNG THÁI................................................................19 3........................................25 3..............4.................... Phương pháp tìm kiếm leo đồi (Hill-Climbing Search)...... Các ví dụ..........5......................5.2................5...................................5....................1.........................................32 79 ...............................................2...............20 3..... Giải thuật...... Những vấn đề chưa được giải quyết trong trí tuệ nhân tạo ......2.19 3...............3............... Kỹ thuật tìm kiếm leo đồi ................... Giải thuật...............................3..28 3... Đánh giá độ phức tạp của giải thuật tìm kiếm rộng...................1...... Tổng quan về khoa học trí tuệ nhân tạo.......4.............24 3............5. Lịch sử phát triển của trí tuệ nhân tạo...................20 3............2... Các khái niệm................................4....3.. Phương pháp tìm kiếm theo chiều sâu dần..............................30 3....5......... Ưu và nhược điểm của phương pháp tìm kiếm tốt nhất đầu tiên..................................1........31 3........ Giải thuật...........................3............5.............................................31 3......................1 1...................................12 2.......... Những vấn đề chung ............ Đặt vấn đề. Ví dụ...10 2......................25 3.....1.....................................................................1.............................. Biểu diễn đồ thị........ Kỹ thuật tìm kiếm tốt nhất đầu tiên (Best First Search)..........................2...............2............................3..................3..4.................19 3....................... Đánh giá độ phức tạp của thuật toán tìm kiếm sâu............................ Nhận xét..................... Những vấn đề đặt ra trong tương lai của trí tuệ nhân tạo..........4.......................16 2.... Kỹ thuật tìm kiếm sâu dần............1 MỞ ĐẦU............1......... Ưu và nhược điểm của phương pháp tìm kiếm rộng......5................................4.................1...................................................................................2.............................................................. Vai trò của trí tuệ nhân tạo........................ Đặt vấn đề.....................................10 2.... Ưu và nhược điểm của phương pháp tìm kiếm sâu....................18 3...................2................................................................. Kỹ thuật tìm kiếm rộng.............27 3..............................................................3......................................4............5...........6 1...3.7 1.................................................... Phương pháp tìm kiếm theo chiều rộng....................1..3......10 BIỂU DIỄN VẤN ĐỀ TRONG KHÔNG GIAN TRẠNG THÁI....1.. Mô tả trạng thái...................... Không gian trạng thái của bài toán......................15 2...... Phương pháp tìm kiếm theo chiều sâu.............................................27 3....6 1...26 3......... Biểu diễn không gian trạng thái dưới dạng đồ thị.............

................1.......3..............................7. Ngữ nghĩa của phép tính mệnh đề...............................................5.....63 5....................47 4..............4.......................................2..........7.......6............61 5......32 3.....................................69 6.................................1...........3.............2.....55 5....2...........................3............ Đối sánh mẫu và phép hợp nhất...............................................63 5.................1......3................. Một số giải thuật chứng minh....................... Thuật giải AT...............2....................................................... Khái niệm......5.....3....................... Biểu diễn tri thức bằng khung (Frame)..................................3................................................................4....61 5.....................................3. Các ví dụ..3........3...............................................77 80 ..........................................................................41 3....................................................................................................... Biểu diễn tri thức nhờ mạng ngữ nghĩa........56 5.......Thuật giải A* ..54 5.......57 5..................2....... Khái niệm......2............37 3....................4.............. Cú pháp vị từ........ Thuật giải A*.........68 Chương 6.................................... Bài toán................. Logic vị từ .......... Nhận xét...............................56 5......................... Các luật suy diễn...60 5........43 3...... Đồ thị Và/Hoặc...... Nhận xét phương pháp tìm kiếm leo đồi ................ Bài toán........3........8..........................3.2.....2.............................................................1...........................71 6.....39 3...............54 BIỂU DIỄN BÀI TOÁN NHỜ LOGIC HÌNH THỨC........ Đặt vấn đề .....................2.. Tri thức và dữ liệu...................................8........................................... Phương pháp thoả mãn ràng buộc.............. Các phương pháp biểu diễn tri thức (mô tả tri thức)...............71 6......6..........................4....1..4...........................................54 5................................ Thủ tục Robinson 1 (dùng cho logic mệnh đề)...............................................1. Ngữ nghĩa phép tính vị từ.................47 4.69 6..................... Câu....49 4...........74 6..........................................................2.4..........6.3....35 3........................ Logic mệnh đề ..................2.......................................................1...................35 3..... Các ví dụ.........................................3..............33 3...71 6....................69 BIỂU DIỄN TRI THỨC VÀ CÁC PHƯƠNG PHÁP SUY DIỄN ..... Phương pháp sinh và thử...........5. Mệnh đề ....................................................................2...............47 TÌM KIẾM LỜI GIẢI TRÊN ĐỒ THỊ VÀ/HOẶC........2............................................................... Biểu diễn tri thức nhờ logic........................2...........74 6...................................4............ Các phương pháp suy diễn.........................3........................................................74 6...54 5........................... Các phương pháp tìm kiếm lời giải trên đồ thị Và/Hoặc.... Giải thuật......................67 5...........62 5.......................73 6.........................................................................7................................................................................1...........................................................................74 6............................Thuật giải AT ...3....63 5.............2..... Các ví dụ...................1.............1........ Tìm kiếm đường đi cực tiểu ........................................................................1.............39 3...........1...........................2...3................. Thủ tục Wong............................. Biểu thức...............................................................................9...........55 5..................................54 5...33 3............ Đặt vấn đề ................................................... Đặt vấn đề..10.............. Tìm kiếm đường đi có giá thành cực tiểu .............7.................4............................................................................................5....1.2.2...............58 5................ H (Vương Hạo)............2........1.........44 Chương 4.............4.. Suy diễn trên luật sản xuất........8............................................ Biểu diễn tri thức nhờ các luật sản xuất.................60 5....8.............2.... Thủ tục Robinson 2 (dùng cho logic vị từ)................................ Phép tính vị từ bậc nhất...........................................50 Chương 5....... Phép hợp nhất.........................40 3...5...........................1..... Giải thuật đối sánh mẫu......36 3..................................................72 6..........................................

81 .