Tải bản đầy đủ (.pdf) (240 trang)

Muïc luïcCHÖÔNG 1 1.MÔÛ ÑAÀU1 1 1 2 2 3 3 6 7 8 13 13 13 15 17 17 18 19 22 23 23 25 29 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (775.63 KB, 240 trang )

Mục lục
CHƯƠNG 1 MỞ ĐẦU 1
1. Hệ thống thông minh 1
1.1. Kiểm soát tình huống và lựa chọn 1
1.2. Học 2
1.3. Sử dụng tri thức 2
2. Giới thiệu trí tuệ nhân tạo 3
2.1. Một số ví dụ 3
2.2. Khái niệm 6
2.3. Hệ cơ sở tri thức 7
3. Một số bài toán 8
CHƯƠNG 2 GIẢI QUYẾT VẤN ĐỀ BẰNG TÌM KIẾM 13
1. Khái niệm 13
1.1. Không gian trạng thái 13
1.2. Tìm kiếm trên không gian trạng thái 15
2. Các nguyên lý tìm kiếm 17
2.1. Các nguyên lý cơ bản 17
2.2.
Các nguyên lý thử sai 18
2.3. Các nguyên lý heuristic 19
2.4. Cài đặt các nguyên lý 22
3. p dụng 23
3.1.
Cài đặt thuật giải 23
3.2.
Giải quyết vấn đề 25
CHƯƠNG 3 TÌM KIẾM VỚI HEURISTIC 29
1. Khái niệm 29
2. Thuật giải A* 31
3. Thuật giải A0* 34
3.1.


Tìm kiếm trên cây AND/OR 35
3.2. Thêm heuristic - Thuật giải AO* 38
CHƯƠNG 4 TRÒ CHƠI ĐỐI KHÁNG VÀ PHƯƠNG PHÁP GPS 43
1. Trò chơi đối kháng 43
1.1. Khái niệm 43
1.2. Thuật giải 44
1.3. Bàn thêm về heuristic 49
2.
Phương pháp giải quyết vấn đề tổng quát (GPS) 50
2.1. Khái niệm 50
2.2.
Thuật giải 51
CHƯƠNG 5 SUY LUẬN LOGIC 63
1. Suy luận 63
2. Suy luận với logic mệnh đề 64
2.1. Khái niệm 64
2.2. Một số cơ chế phát sinh sự kiện (quy tắc suy diễn) 65
2.3. Suy luận 67
3. Suy luận với logic cấp 1 71
3.1. Khái niệm 71
3.2. Suy luận 72
CHƯƠNG 6
SUY LUẬN VỚI THÔNG TIN KHÔNG CHẮC CHẮN 79
1. Phân bố xác suất 79
1.1. Khái niệm 79
1.2.
Suy luận 81
2. Suy luận xấp xỉ 83
2.1.
Khái niệm 83

2.2. Suy luận 85
3.
Giới thiệu một số suy luận khác 87
3.1.
Phân bố khả xuất 87
3.2.
Logic mờ 88
CHƯƠNG 7 BIỂU DIỄN TRI THỨC 97
1. Tri thức 97
1.1.
Khái niệm 97
1.2. Biểu diễn tri thức 99
2. Biểu diễn bằng logic vò từ 100
2.1. Biểu diễn các tri thức đơn giản 100
2.2. Biểu diễn mối quan hệ Instance và isa 101
2.3. Suy diễn bằng hợp giải (resolution) 101
3.
Biểu diễn bằng luật sản xuất 103
3.1. Khái niệm 103
3.2.
Biểu diễn 105
3.3. Suy diễn 105
3.4. Bàn thêm 106
4. Lập trình logic 107
4.1. Các thành phần 107
4.2. Sự kiện và luật 107
4.3. Hợp giải và prolog 108
4.4. Một số ví dụ 109
CHƯƠNG 8 CÁC BIỂU DIỄN CÓ CẤU TRÚC 117
1. Mạng ngữ nghóa 117

1.1. Khái niệm 117
1.2. Biểu diễn 118
1.3.
Suy diễn 120
1.4. Đồ thò khái niệm 121
1.5.
Chuyển về logic vò từ 123
1.6. Một ví dụ phức tạp 124
2.
Giới thiệu một số biểu diễn khác 127
2.1. Biểu diễn bằng khung (Frames) 127
2.2.
Biểu diễn tri thức bằng bộ ba OAV 128
2.3. Bộ nhớ kết hợp (biểu diễn tri thức mô phỏng hệ thần kinh) 129
CHƯƠNG 9 THU NẠP TRI THỨC 135
1. Mở đầu 135
2. Tổng quan về thu nhận tri thức 136
2.1.
Khái niệm 136
1.1. Các cách tiếp cận 138
3. Phương pháp cây quyết đònh 139
3.1. Khái niệm 139
3.2. Tiếp cận cực tiểu Entropy trung bình 139
4. Phương pháp không gian thế hệ 141
4.1. Khái niệm 141
4.2. Thuật toán 141
5.
Phương pháp xây dựng một giải thích 144
5.1.
Khái niệm 144

5.2. Thuật toán 144
CHƯƠNG 10 MỘT SỐ CHỦ ĐỀ 151
1. Mạng neuron nhân tạo 151
1.1. Khái niệm 151
1.2. Giới thiệu một số luật học 154
2. Thuật toán di truyền 158
2.1. Khái niệm 158
2.2. Mô hình và Thuật toán 158
3. Xử lý ràng buộc 161
3.1. Khái niệm 161
3.2.
Thuật giải 164
4. Máy vector hỗ trợ (Supported Vector Machine - SVM) 167
4.1.
Khái niệm 167
4.2.
Thuật toán 167
4.3. Tách phi tuyến 168
PHỤ LỤC 2
NGÔN NGỮ PROLOG 175
1.
Giới thiệu prolog 175
1.1.
Các thành phần của chương trình 175
1.2. Sự kiện và luật 175
1.3.
Quan hệ 176
1.4. Các kiểu đối tượng 177
1.5. Cơ chế tìm kiếm 180
1.6. Vài ví dụ lập trình prolog 182

2. Thảo luận 185
2.1. Biểu diễn cây 185
2.2. Dùng đại số quan hệ 188
PHỤ LỤC 3 NGHIÊN CỨU TÌNH HUỐNG 191
1. Thiết kế hướng đối tượng dùng C++ 191
1.1.
Một thiết kế đơn giản 191
1.2.
Một thiết kế tổng quát 194
2. Cài đặt thuật toán A
*
bằng prolog 201
3. Xây dựng hệ chuyên gia đơn giản bằng prolog 203
3.1. Cơ sở tri thức 203
3.2. Cài đặt bằng prolog 203
4. Xây dựng một cơ chế thu nhận tri thức 205
4.1. Cơ sở tri thức 205
4.2. Minh họa cơ chế học 206
5. Đối sánh 208
5.1. Khái niệm 208
5.2. Đối sánh biểu thức 208



Lời nói đầu
Ngày nay, hầu hết các lónh vực đều có sự tham gia của máy tính. Trong
một số lónh vực, vai trò của máy tính là rất quan trọng. Thế nhưng, vẫn
còn đó nhiều công việc, dù giản đơn, dù nguy hiểm, dù nhàm chán, con
người vẫn cứ phải đảm nhiệm.
Liệu có thể xây dựng những hệ có khả năng hành động như con người, suy

nghó như con người. Những hệ như vậy sẽ làm thay con người nhiều việc,
cũng như hỗ trợ con người một cách hiệu quả; để con người tập trung vào
những hoạt động mang tính sáng tạo.
Trí tuệ nhân tạo (AI – Artificial Intelligence) là một nhánh của công nghệ
thông tin nghiên cứu các phương pháp xây dựng trí tuệ cho máy. Tài liệu
này giới thiệu cho sinh viên những khía cạnh cơ sở quan trọng của AI. Tài
liệu gồm 10 chương được chia làm 4 phần chính. Chương 1 giới thiệu về AI.
Phần 1, gồm các chương 2, 3 và 4, giới thiệu các phương pháp giải quyết
vấn đề. Phần 2, gồm các chương 5 và 6, giới thiệu các phương pháp suy
luận, các phương pháp xử lý thông tin không chắc chắn. Phần 3, gồm các
chương 7, 8 và 9, giới thiệu các phương pháp biểu diễn và thu nhận tri
thức. Phần 4, gồm chương 10 và hai phụ lục, giới thiệu một số chủ đề như
mạng neuron nhân tạo, thuật toán di truyền, xử lý ràng buộc; cũng giới
thiệu về prolog và thử giải quyết một số tình huống.
Dù rất cố gắng, tài liệu được viết ra không khỏi có thiếu sót. Rất mong sự
góp ý của bạn đọc để lần tái bản sau được tốt hơn.
Nhân dòp này tôi xin chân thành cảm ơn Ban chủ nhiệm khoa Công nghệ
thông tin trường Đại học Kỹ thuật Công nghệ đã tạo điều kiện cho tôi
hoàn thành tài liệu này.
Mọi ý kiến đóng góp xin gởi về Xin chân thành cảm
ơn.


TpHCM, Tháng 07/2006
Tác giả
Chương 1
Mở đầu
Mục tiêu của AI là xây dựng những hệ thống suy nghó và hành động như
con người. Khi ấy hệ thống sẽ được gọi là thông minh. Nó phải có khả
năng giải quyết vấn đề như con người khi đứng trước những tình huống

tương tự.
1. Hệ thống thông minh
1.1. Kiểm soát tình huống và lựa chọn
Xét hệ giải phương trình bậc hai. Yêu cầu hệ giải những phương trình sau:
1) x
2
– 3x – 4 = 0
2) x
2
– 4x + 3 = 0
3) x
2
– 4x + 4 = 0
4) x
2
– 4 = 0
5) x
2
+ 1 = 0
6) x
2
– 4x + 5 = 0
Trường hợp 1
Với hệ luôn luôn tính theo một thủ tục cho trước, chẳng hạn với phương
trình thứ 1:
Tính
Δ
= 25
Suy ra x
1

= -1, x
2
= 4
Ta không thể cho rằng hệ là thông minh.
Trường hợp 2
Với hệ có những trả lời bất ngờ, chẳng hạn với
Phương trình thứ 1: Vì a – b + c = 0, ta có x
1
= -1 và x
2
= -c/a = 4;
Phương trình thứ 2: Vì a + b + c = 0, ta có x
1
= 1 và x
2
= c/a = 3;
Phương trình thứ 3: Biến đổi thành (x – 2)
2
= 0, ta có x
1
= x
2
= 2;
Phương trình thứ 4: Biến đổi thành (x – 2)(x + 2) = 0, ta có x
1
= 2, x
2

= -2
Phương trình thứ 5: Vì x

2
+ 1 > 0, phương trình vô nghiệm;
Phương trình thứ 6: Vì
Δ
= -4<0, phương trình vô nghiệm.
Và ta có thể cho rằng hệ là thông minh.
1.2. Học
Xét một trò chương trình chơi cờ vua đơn giản. Với những ván cờ đầu tiên,
chúng ta thua nó và ta nghó nó là thông minh. Cho đến khi ta tìm được
một cách thắng và phát hiện thấy dù thua, nó vẫn cứ thực hiện những
nước đi cũ. Thế là ta thất vọng, vì nó chơi quá máy móc, chương trình
chẳng còn tí gì là thông minh. Nếu như nó có khả năng rút ra kinh
nghiệm từ những ván cờ thua thì lại khác. Tức hệ đã có khả năng học.
Trở lại hệ giải phương trình bậc hai. Ta lại yêu cầu hệ giải phương trình
x
2
– x + 6 = 0
Ta chờ đợi hệ giải như sau:
Tìm thấy x = 3 là nghiệm, suy ra x
1
= 3, x
2
= -2.
Tuy nhiên hệ không biết cách giải này. Ta sẽ dạy hệ tri thức sau: thử xem
x có là nghiệm với x = -3, -2, -1, 0, 1, 2, 3. Rồi yêu cầu hệ giải lại. Và hệ
giải như sau:
Tìm thấy x = -2 là nghiệm, suy ra x
1
= -2, x
2

= 3.
Bây giờ yêu cầu hệ giải phương trình 1 ở trên
x
2
– 3x – 4 = 0
Có khả năng hệ sẽ giải khác với cách giải cũ
Tìm thấy x = -1 là nghiệm, suy ra x
1
= -1, x
2
= 4.
1.3. Sử dụng tri thức
Tiếp tục với hệ giải phương trình bậc hai. Bây giờ chúng ta yêu cầu hệ giải
một phương trình bậc ba
x
3
– 2x
2
– x + 2 = 0
Có thể hệ không giải được. Tuy nhiên giả sử hệ có tri thức: nếu a là một
nghiệm của phương trình f(x) = 0 thì nghiệm của nó gồm a và các nghiệm
của phương trình g(x) = 0, trong đó f(x) = (x – a)g(x).
Bây giờ ta cung cấp cho hệ một nghiệm x = 1. Lúc này hệ có thể giải như
sau:
Vì 1 là nghiệm, biến đổi x
3
– 2x
2
– x + 2 = (x – 1)(x
2

– x – 2)
Phương trình x
2
– x – 2 = 0 có a – b + c = 0 nên có hai nghiệm là 1
và 2
Vậy phương trình có 3 nghiệm: x
1
= -1, x
2
= 1, x
3
= 2
Muốn sử dụng được tri thức chương trình phải có khả năng nhận biết các
sự kiện, các mối liên hệ và suy luận. Rõ ràng một hệ giải phương trình bậc
hai như vậy xứng đáng được gọi là thông minh.
2. Giới thiệu trí tuệ nhân tạo
2.1. Một số ví dụ
Ví dụ 1.1
Tìm đường đi ngắn nhất từ N đến L với bảng dữ liệu được cho như sau
N → C 10 N → D 19 T → C 5 H → L 15
C → D 10 T → G 15 D → U 10 D → L 10
N → T 8 T → L 18 D → H 15
• Ta thấy từ đỉnh N có thể đi đến đỉnh C, T hoặc D.





Nên chọn đỉnh nào? lý do? Có khả năng thu được đường đi tối ưu
không?

Giả sử ta chọn đỉnh C, và từ C có thể đi đến đỉnh D.







• Có nên đi tiếp và chọn D hay quay lui để chọn T hoặc D?
• Dù ta có chọn phương án nào đi nữa thì cũng phải giải thích được là vì
sao?
• Rõ ràng ta cần một chiến lược lựa chọn mà ta gọi là suy diễn. Chẳng
hạn nếu suy diễn theo hướng ưu tiên khoảng cách ngắn nhất (toàn cục
trên tất cả các nhánh) thì đường đi tìm thấy sẽ là N

T

L. Còn nếu
suy diễn tham lam (cục bộ tại đỉnh chọn) thì đường đi tìm thấy sẽ là
N

C

D

L
Ví dụ 1.2
Chứng minh mệnh đề (⎤ a+⎤ b+c) ( ⎤ b+⎤ c+d) a b → d.
Nếu cách giải quyết là tương tự như ở ví dụ 1 thì cái gì đóng vai trò đỉnh?
Hơn nữa từ đỉnh hiện hành ta có thể đi đến các đỉnh nào? Làm sao phát

sinh ra các đỉnh mới?
Thử áp dụng phương pháp chứng minh phản chứng cho ví dụ này. Thay vì
chứng minh α → β ta đi chứng minh α ⎤ β → 0. Như vậy mệnh đề trên là
tương đương với
(

a+

b+c) (

b+

c+d) a b

d → 0.
Khác với ví dụ 1, ở đây ta phải sử dụng tri thức. Với tri thức ( α + ⎤ β ) β →
α, ta coi như là từ 2 đỉnh α +
⎤ β và β phát sinh ra đỉnh mới α. Như vậy
đỉnh ở đây là biểu thức và luật dẫn
là cơ chế phát sinh ra đỉnh mới. Bắt
đầu suy diễn với các đỉnh (⎤ a+⎤ b+c), ( ⎤ b+⎤ c+d), a, b và ⎤ d.
• Từ 2 đỉnh (⎤ a+⎤ b+c) và a sinh ra đỉnh ⎤ b+c





• Rồi từ ⎤ b+⎤ c+d và b cho ta ⎤ c+d









• Cứ như vậy cho đến đích (goal) cuối là đỉnh rỗng ∅.
• Các đỉnh ở đây ta gọi là sự kiện. Các tri thức dùng để phát sinh đỉnh
mới như ( α + ⎤ β ) β → α ta gọi là luật. Và một lần nữa, câu hỏi “chiến
lược phát sinh là gì?” Lại được đặt ra. Trong tình huống này, nếu lựa
chọn phương án phát sinh tất cả các đỉnh sau mỗi bước sẽ dễ dẫn đến
tình trạng bùng nổ tổ hợp, là tình trạng mà chúng ta không hề mong
muốn. Ta không chờ đợi một thuật toán giúp giải các bài toán như thế
này mà chỉ hy vọng có thêm những tri thức giúp tránh tình trạng bùng
nổ tồi tệ nói trên. Các tri thức như vậy được gọi là các heuristic
.
Ví dụ 1.3
Trò chơi tic-tac-toe (giống trò chơi caro quen thuộc nhưng giới hạn trên
bảng 3×3). Mỗi đối thủ có 3 quân, nhiệm vụ của họ là xếp cho 3 quân
thẳng hàng đồng thời ngăn cản đối phương thực hiện nhiệm vụ. Trò chơi
được chia làm 2 giai đoạn. Giai đoạn đặt quân giống với trò chơi caro, giai
đoạn di chuyển quân chỉ được phép dòch chuyển quân sang ô trống lân cận
(dùng lân cận 4).
Trò chơi được bắt đầu với bảng rỗng



• Người thứ 1 sẽ chọn nước đi nào trong số 3 nước đi sau để đặt quân?
X X
X


phải chăng nên suy diễn theo hướng ưu tiên số đường mở khả dó? Nếu
vậy thì phương án cuối sẽ là phương án được chọn. Thật ra, ta biết là
với các trò chơi loại này, người chơi cần phải tính sâu hơn trước khi có
quyết đònh.
• Quả vậy, những suy diễn ban đầu có thể không còn chính xác nữa khi
người đi chòu khó đánh giá thêm các thế biến ở các mức sâu hơn. Ngoài
ra, trong ví dụ này ta còn quan sát thấy sự kém tường minh của đích.
Ví dụ 1.4
Chứng minh biểu thức R(⎤ P → Q) = (Q+P)R bằng cách áp dụng các luật
như giao hoán ab = ba, a+b=b+a; kết hợp (ab)c = a(bc), (a+b)+c = a+(b+c)
v v
Làm cách nào có thể áp dụng một luật? Muốn áp dụng luật, chẳng hạn,
a+b = b+a lên (Q+P)R trước tiên cần nhận diện (đối sánh) Q là a và P là b
và thu được kết quả (P+Q)R.
• Như vậy bằng cách đối sánh
một bộ phận hoặc toàn thể các sự kiện ta
tìm thấy các luật có thể áp dụng được. Áp dụng các luật này sẽ cho ta
kết quả mới là các sự kiện được phát sinh. Quá trình suy diễn ở đây có
thể đi theo hướng làm giảm dần sự khác biệt giữa kết quả tìm được và
đích.
2.2. Khái niệm
(a) Trí tuệ nhân tạo là gì
Các ví dụ nêu trên đưa ra cho chúng ta một số khái niệm mới, tạo tình
huống dẫn chúng ta đi tìm hiểu một nhánh thú vò của khoa học máy tính
đó là ngành trí tuệ nhân tạo.
Những khái niệm mới được giới thiệu ở đây là:
1 Tri thức;
2 Heuristic;
3 Luật;

4 Sự kiện;
5 Đối sánh;
6 Suy diễn;
7 Chương trình thông minh.
Đònh nghóa 1.1
AI là một nhánh của khoa học máy tính nghiên cứu và tạo ra các chương
trình thực hiện các công việc như người.
Chương trình được tạo ra nhằm thực hiện các công việc như người, tức là
thực hiệïn một cách thông minh: kiểm soát tình huống và lựa chọn. Nó thể
hiện hành vi tương tự con người khi phải đương đầu với những vấn đề
tương tự. Nó có khả năng nhận biết các sự kiện, các mệnh đề, các mối liên
hệ và suy luận. Tuy nhiên, khi nghiên cứu cấu trúc bên trong, các nhà
nghiên cứu trí tuệ nhân tạo vẫn muốn xây dựng hệ có suy nghó giống
người. Đi vào chi tiết các chương trình như vậy hướng đến các tiêu chí sau:
1. Có suy nghó giống con người – liên quan đến mô hình hoá nhận thức
2. Có suy nghó hợp lý – liên quan đến logic hình thức
3. Có hành vi giống con người – liên quan đến thí nghiệm Turing
4. Có hành vi hợp lý – liên quan đến luật
(b) Cơ sở của trí tuệ nhân tạo
Trí tuệ nhân tạo được phát triển dựa trên:
1. Triết học (từ năm 428 trước công nguyên đến nay): với hầu hết các ý
tưởng quan trọng của AI;
2. Toán học (từ năm 800): bao gồm tính toán, logic và xác suất;
3. Tâm lý học (từ năm 1879): bao gồm nhận thức và hành vi;
4. Công nghệ máy tính (từ năm 1940);
5. Ngôn ngữ học (từ năm 1957).
(c) Một số lónh vực trí tuệ nhân tạo
1. Hệ chuyên gia chứa thông tin về một lónh vực nhất đònh và nếu được
phỏng vấn sẽ trả lời như một chuyên gia;
2. Xử lý ngôn ngữ tự nhiên;

3. Chứng minh tự động;
4. Nhận dạng;
5. Các ngôn ngữ trí tuệ nhân tạo (như LISP, PROLOG,…) là các ngôn ngữ
mà bên trong có gắn liền một cơ sở dữ liệu cùng các thủ tục truy ngược
cần thiết cho nhiều tình huống giải quyết vấn đề.

Trong giáo trình này, chúng ta không đi sâu vào một lónh vực nào cả mà
chỉ khảo sát các vấn đề cơ bản trong quá trình làm việc với AI như
1. Các phương pháp giải quyết vấn đề
2. Các kỹ thuật biểu diễn tri thức.
3. Cách suy diễn và thu nhận tri thức trong mỗi loại biểu diễn
4. Tìm hiểu ngôn ngữ Prolog
2.3. Hệ cơ sở tri thức
(a) Cơ sở tri thức
Như chúng ta đã thấy, một hệ muốn hoạt động hiệu quả phải sử dụng được
tri thức. Tri thức phải được tổ chức tốt để có thể sử dụng. Hệ sử dụng tri
thức để đưa ra các sự kiện mới. Thành phần đưa ra các sự kiện mới được
gọi là mô tơ suy diễn.
Đònh nghóa 1.2
1. Tri thức là hiểu biết.
2. Cơ sở tri thức là tri thức được mã hoá thành sự kiện, luật, heuristic,
thủ tục
Các vấn đề liên quan đến mã hoá tri thức là
1. Tổ chức tri thức là chìa khoá để truy xuất được hiệu quả. Tuy nhiên
việc biểu diễn tri thức phụ thuộc bài toán và phương pháp suy diễn
2. Thu nhận tri thức là một trong những khó khăn lớn nhất. Máy phải tự
học và tự cải thiện.
(b) Hệ cơ sở tri thức
Đònh nghóa 1.3
Hệ cơ sở tri thức là một hệ phần mềm phức tạp giúp thu nhận tri thức và

giải quyết các bài toán liên quan đến các lónh vực AI
Nó có các thành phần như
1. Bộ thu nạp
2. Bộ giải thích
3. Bộ giao diện xử lý ngôn ngữ tự nhiên
4. Cơ sở tri thức
5. Mô tơ suy diễn
6. Cơ sở dữ liệu
3. Một số bài toán
Các bài toán sau dùng để minh họa cho việc khảo sát các mục tiêu đặt ra.
Bài toán 1
Tìm đường đi giữa 2 thành phố (ví dụ 1)
Bài toán 2
Chứng minh mệnh đề (ví dụ 2)
Bài toán 3
Tic-tac-toe (ví dụ 3)
Bài toán 4
Chứng minh biểu thức (ví dụ 4)
Bài toán 5
Tô màu bản đồ với số màu tối thiểu sao cho hai thành phố kề nhau bất kỳ
được tô bởi những màu khác nhau.
Bài toán 6
Đặt 8 quân hậu lên bàn cờ 8×8 sao cho 2 quân hậu bất kỳ không ăn lẫn
nhau
Bài toán 7
Bài toán rót nước : làm thế nào lấy được đúng 2 lít nước bằng cách dùng 2
can với dung tích thứ tự là 3 lít và 4 lít.
Bài toán 8
Điền chữ. Thay các ký tự bởi các chữ số khác nhau, ví dụ SEND + MORE =
MONEY.

Bài toán 9
Tháp Hà Nội. Chuyển chồng đóa (xếp như cái tháp) từ cọc A sang cọc C có
sử dụng cọc trung gian B.
Bài toán 10
Có 3 tu só và 3 kẻ ăn thòt ngưòi cần sang sông. Chỉ cần số lượng áp đảo là
những kẻ ăn thòt người sẽ làm thòt các tu só. Làm thế nào đưa họ sang
sông nếu đò chở tối đa được 2?
Bài toán 11
Trò chơi Puzzle 8 số: Di chuyển các số vào ô trống đưa bàn cờ về một
trạng thái cho trước, chẳng hạn



Bài toán 12
Tính tích phân bất đònh
Bài toán 13
Con khỉ và nải chuối. Có 1 con khỉ, 1 nải chuối, 1 cái ghế và 1 chiếc gậy.
Nải chuối treo trên trần nhà. Làm thế nào để con khỉ lấy được nải chuối?
Bài toán 14
Hệ thức lượng trong tam giác. Chẳng hạn cho tam giác ABC, biết góc A
cạnh b và đường cao h
a
hãy chỉ ra quá trình tính cạnh c.
BÀI TẬP
Bài tập 1.1
Xây dựng hệ giải phương trình bậc hai có khả năng
1. Kiểm soát tình huống và lựa chọn;
2. Học được những tình huống mới;
3. Giải được phương trình bậc 3 khi cho trước một nghiệm.
Bài tập 1.2

Với bài toán được cho trong ví dụ 1, hãy cho biết đường đi tìm thấy là gì
nếu suy diễn:
1. Theo chiều sâu;
2. Theo chiều rộng.
Bài tập 1.3
Giải bài toán được cho trong ví dụ 2
1. Tiếp tục phần dỡ dang;
2. Thêm ít nhất một tri thức rồi mới giải.
Bài tập 1.4
Xét trò chơi tic-tac-toe được cho trong ví dụ 3, tìm một cách đi để người đi
trước luôn thắng. Bạn giải bằng tìm kiếm hay có sử dụng tri thức riêng?
Tri thức đó là gì, nếu có?
Bài tập 1.5
Giải bài toán được cho trong ví dụ 4. Đưa ra một hàm so sánh hai biểu
thức là gần nhau.
Bài tập 1.6
Tìm hiểu hệ cơ sở tri thức prolog (xem phần phụ lục). Cài đặt hệ giải
phương trình bậc hai.
Bài tập 1.7
Hãy liệt kê một số tri thức trong hình học phẳng. Phát biểu một bài toán.
Giải nó bằng các tri thức đã nêu. Thử cài đặt bằng prolog.
PHẦN 1
GIẢI QUYẾT VẤN ĐỀ
Cuộc sống là một chuỗi các vấn đề mà
chúng ta cần giải quyết (Socrates).
Có một thời kỳ dài trong quá khứ, các nhà
khoa học đều cho rằng: “mọi vấn đề đều có
thể được biểu diễn dưới dạng một bài
toán”. Descartes đã từng phát biểu “tất cả
mọi bài toán đều có thể quy về bài toán đại

số, từ đó việc giải bài toán chỉ là vấn đề
của giải phương trình”. David Hilbert cũng
đã từng đặt ra câu hỏi: “liệu có tồn tại một
phương pháp cho phép giải quyết mọi loại
vấn đề không?”.
Dưới góc nhìn khoa học, vấn đề thường
được thể hiện dưới dạng một bài toán.
Trong phần này chúng ta sẽ tìm hiểu một
số phương pháp giải quyết vấn đề và áp
dụng vào giải các bài toán đã nêu ở chương
mở đầu.
Chương 2
Giải quyết vấn đề bằng tìm kiếm
1. Khái niệm
1.1. Không gian trạng thái
Thường thì chúng ta nhận biết các đối tượng thông qua một tập các thuộc
tính nào đó mà chúng ta sẽ gọi là biểu diễn hay mô hình. Các giá trò cụ
thể của nhữõng thuộc tính này cho phép chúng ta xác đònh được trạng thái
của đối tượng. Vì chúng ta chỉ làm việc chủ yếu trên các biểu diễn nên
chúng ta sẽ coi trạng thái của đối tượng chính là tập các giá trò này. Các
giá trò này sẽ bò thay đổi dưới tác động của một tập các thao tác nào đó. Ví
du,ï tình trạng bệnh của bệnh nhân được xác đònh qua một số kết quả xét
nghiệm, và việc uống thuốc sẽ làm tình trạng bệnh đạt đến một trạng thái
tốt hơn; cũng vậy khả năng làm việc của nhân viên được xác đònh qua một
số tiêu chí nào đó, và việc đào tạo sẽ làm khả năng làm việc đạt đến một
trạng thái hiệu quả hơn.
Với đối tượng, việc xác đònh trạng thái của nó cũng như việc xác đònh tập
các thao tác làm thay đổi trạng thái của nó là những bài toán cơ bản quan
trọng.
Trong trí tuệ nhân tạo chúng ta sẽ biểu diễn vấn đề bằng các cấu trúc rời

rạc như ma trận, đồ thò, …. Qua đó mà vấn đề được chuyển thành những
bài toán cụ thể. Trong chương này, chúng ta tìm cách đưa vấn đề về bài
toán tìm kiếm trong không gian trạng thái. Cấu trúc đồ thò được dùng và
bài toán là tìm đường đi ngắn nhất. Chúng ta sẽ xây dựng các cây tìm
kiếm và trong nhiều trường hợp cây này là loại cây AND/OR.
Đònh nghóa 2.1
Trạng thái
là một biểu diễn của vấn đề. Phép biến đổi chuyển vấn đề từ
trạng thái này sang trạng thái khác. Tập các trạng thái cùng với các phép
biến đổi trên chúng tạo thành không gian trạng thái
.
Ví dụ 2.1
Một vấn đề thực tế nào đó có thể đưa về việc giải phương trình sau
5x
2
– 4x – 9 = 0
Thực hiện các phép biến đổi tương đương
5x
2
– 4x – 9 = 0
⇔ 5x
2
– 4x – (5 + 4) = 0
⇔ 5x
2
– 4x – 5 – 4 = 0

⇔ (x+1) (5x – 9) = 0
Với biểu diễn sau cùng này xem như vấn đề đã được giải quyết
Khi không gian trạng thái là hữu hạn chúng ta có thể mô hình nó bởi các

cấu trúc rời rạc như ma trận, đồ thò, …
Ví dụ 2.2
Trong trò chơi Puzzle 8 số có thể xem một cách sắp xếp 9 số từ 0 đến 8
trong bảng 3×3 là một trạng thái. Mỗi thao tác dòch chuyển đúng luật (đổi
chỗ số 0 và một số kề với nó) là một phép biến đổi.
7 2 5
4 3 1
0 6 8


7 2 5
0 3 1
4 6 8
7 2 5
4 3 1
6 0 8
Ví dụ 2.3
Với bài toán tính tích phân bất đònh, sau khi phân rã thành các bài toán
con đúng luật (dùng các công thức), chúng ta phải giải tất cả những bài
toán con thì mới có lời giải cho bài toán ban đầu.

(
)

+ dxex
x
1
2





dxex
x2


dxe
x




dxe
x


dxxe
x
2

1.2. Tìm kiếm trên không gian trạng thái
Không gian trạng thái tự nó không có cơ chế tìm kiếm. Tập các thao tác
giúp chúng ta xây dựng một không gian tìm kiếm, nghóa là trang bò một
cấu trúc cho không gian trạng thái.
Tuy nhiên, không gian tìm kiếm thường là rất lớn, do đó chúng ta sẽ phát
triển một cây tìm kiếm cho đến khi tìm thấy lời giải cho bài toán.
(a) Bài toán tìm đường đi
Ví dụ 2.4
Xét bài toán tìm đường đi ngắn nhất từ a đến e trên đồ thò sau
a 4 c

2 3 2 4
b 1 d 3
5 e
Coi đỉnh là trạng thái, cạnh là phép biến đổi, bằng cách mô tả các đồ thò
con:
a b c d e
2 4 2 3 1 5 4 3 2 4 1 2 3 5 4 3
b c a c d e a b d e b c e b c d
chúng ta xây dựng cây tìm kiếm biểu diễn tất cả các đường đi từ a đến e:
a
b c
c d e
(7)
b d e
(8)

d e
(9)
c e
(6)
d e
(12)
b e
(9)

e
(10)
e
(9)
e

(11)
e
(12)

tìm thấy đường đi ngắn nhất là a → b → d → e (là đường nét đôi) với tổng
khoảng cách bằng 6.
Ở đây mỗi nút lá xác đònh một đường đi, các số gắn với nút lá cho biết
khoảng cách của đường đi tương ứng. Theo đó chúng ta có tất cả 9 đường đi
(tập phương án) và một đường đi ngắn nhất (phương án tối ưu).
(b) Bài toán tìm cây lời giải
Ví dụ 2.5
Cho tam giác ABC, biết đường cao h
a
và hai góc A, C. Hãy tính cạnh c dựa
vào các công thức A + B + C = π, h
a
= csinB, h
b
= csinA và h
c
= asinB.
Giải: Chúng ta sẽ không xây dựng trực tiếp đồ thò mà chỉ mô tả các đồ thò
con; qua đó sẽ xây dựng cây tìm kiếm.
c B
h
a
B h
b
A A C h
c

a
và chúng ta có cây tìm kiếm AND/OR cùng với cây lời giải như sau:
c
h
a
B h
b
A
A C h
c
a
Ví dụ 2.6
Kiểm tra ab
→ m, biết
ab → c; ah → d; ad → m; bc → e; ab → o; o → m; e → m.
Giải: Từ các đồ thò con mô tả luật:
c d e m o
a b a h b c a d o e a b
Ta xây dựng cây tìm kiếm
m
a d o e
a h a b b c
a b
và tìm thấy cây lời giải tối ưu có chiều cao thấp nhất. Khác với cây thông
thường, mỗi nút lá của cây AND/OR không xác đònh được cây lời giải.
2. Các nguyên lý tìm kiếm
2.1. Các nguyên lý cơ bản
(a) Nguyên lý mê cung
Một đỉnh không được phép xuất hiện 2 lần trên một đường đi. Nguyên lý
này nhằm bảo đảm không xuất hiện chu trình trong quá trình tìm kiếm.

(b) Nguyên lý vét cạn (nguyên lý Edison)
Không được loại bỏ bất kỳ một đường đi nào. Nguyên lý này nhằm bảo
đảm luôn tìm thấy lời giải nếu nó tồn tại.
(c) Nguyên lý quay lui
Nguyên lý này nhằm bảo đảm cho nguyên lý vét cạn vì trong quá trình
tìm kiếm chúng ta chỉ có thể xem xét từng đỉnh một. Khi ấy quá trình tìm
kiếm giống như quá trình duyệt cây và nhất thiết phải biết quay lui.
Ví dụ 2.7
Khi xây dựng cây tìm kiếm: ở ví dụ 4 chúng ta đã dùng nguyên lý mê cung
và nguyên lý vét cạn; ở ví dụ 6 chúng ta đã dùng nguyên lý vét cạn; còn ở
ví dụ 5 chúng ta đã dùng nguyên lý quay lui.
Việc lựa chọn một trình tự để phát triển cây là hết sức quan trọng, ngoài
ra cần phải loại bỏ những đỉnh mà việc xét nó là không cần thiết. Thuật
toán Dijkstra là một minh họa cho điều này. Nó chỉ giữ lại những đỉnh cần
thiết và ưu tiên xét các đỉnh có tổng khoảng cách bé nhất.
Ví dụ 2.8
a
1

(0)

b
2

(2)
c
4

(4)


c
(5)
d
3

(3)
e
(7)
b
(7)
d
(6)
e
(8)

c
(5)
e
5

(6)

Ở đây, đường đứt nét là nhánh bò tỉa và chỉ số trên là thứ tự mở rộng cây.
2.2. Các nguyên lý thử sai
Các hình minh họa sau đây đều sử dụng bài toán cho ở ví dụ 4. Cây tìm
kiếm được phát triển theo nguyên lý mê cung và nguyên lý quay lui (và do
đó nguyên lý vét cạn, xảy ra trong trường hợp xấu nhất khi bài toán
không có lời giải hoặc khi phải vét cạn cây tìm kiếm mới thấy lời giải)
(a) Nguyên lý lựa chọn theo chiều sâu
a

1

b
2
c
c
3
d e

×