You are on page 1of 281

 

TS. Lê Xuân Vinh


Trưӡng ĐH Quy Nhơn

|
Nӝi dung chương trình

ë Thӡi gian: 45 tiӃt


ë Nӝi dung: 3 phҫn
Phҫn 1: Giҧi quyӃt vҩn đӅ bҵng tìm kiӃm
Phҫn 2: BiӇu diӉn tri thӭc và lұp luұn
Phҫn 3: Logic mӡ và Lұp luұn xҩp xӍ
Các chương 1-7,11 trong TLTKhҧo [1]

=
Tài liӋu tham khҧo

[1] Trí tuӋ nhân tҥo ± Đinh Mҥnh Tưӡng


[2] Trí tuӋ nhân tҥo ± George F. Luger
[3] Trí tuӋ nhân tҥo ± NguyӉn Thanh Thӫy
[4] Giáo trình nhұp môn Trí tuӋ nhân tҥo ±
Hoàng KiӃm
[5] Artificial Intelligence, A Modern Approach -
Stuart J. Russell

u
  
   


0
I-Mӝt sӕ ӭng dөng cӫa trí tuӋ nhân tҥo

ë Nhӳng năm gҫn đây chúng ta thưӡng nghe


nói nhiӅu vӅ máy tính thӃ hӋ 5, hӋ chuyên
gia, lұp trình Prolog, logic mӡ, mҥng nơron
nhân tҥo, giҧi thuұt di truyӅn,«
ë Đây là mӝt sӕ thuұt ngӳ trong mӝt ngành
mӟi cӫa khoa hӑc máy tính: Trí tuӋ nhân
tҥo (TTNT).

G
Trò chơi:

ë Cӡ carô, cӡ vua, các ô sӕ,«


ë Mӛi mӝt bưӟc đi trên bàn cӡ là mӝt quyӃt
đӏnh trong sӕ rҩt nhiӅu khҧ năng có thӇ lӵa
chӑn.
ë Tҩt cҧ các khҧ năng sӁ sinh ra mӝt không
gian quá lӟn và phӭc tҥp.
ë SӁ rҩt khó khăn nӃu như sòng phҷng xét hӃt
tҩt cҧ các khҧ năng.




ë Vì lý do thӡi gian, mӝt ngưӡi đánh cӡ chӍ có thӇ cҧm


nhұn khҧ năng tӕt trong lӵa chӑn.
ë Chương trình thông minh phҧi có khҧ năng như vұy.
ë ChiӃn lưӧc lӵa chӑn mang tính cҧm nhұn nhưng có
cơ sӣ sӁ đưӧc gӑi là heuristic, nó không chҳc chҳn
mang lҥi kӃt quҧ nhưng nhiӅu khҧ năng mang đӃn
thành công, tuy nhiên vүn có thӇ hàm chӭa sӵ rӫi ro
đүn đӃn thҩt bҥi.

ù


ë Năm 1953, Samuel đã viӃt chương trình chơi


cӡ gây ҩn tưӧng lӟn khi nó đưӧc công chiӃu
trên tivi.
ë Chương trình này có khҧ năng hӑc và khi
đưӧc huҩn luyӋn có khҧ năng chơi hay hơn
ngưӡi viӃt ra nó.
ë Chương trình đánh cӡ cho máy tính Deep-
Blue (1997) cũng là mӝt ӭng dөng cӫa TTNT
vào trò chơi.
I
HӋ chuyên gia

ë Mӝt chuyên gia phҧi có nhiӅu tri thӭc chuyên môn và


kӻ năng sӱ dөng nhӳng tri thӭc đó đӇ giҧi quyӃt vҩn
đӅ.
ë Mӝt hӋ chương trình thay thӃ cho chuyên gia đưӧc
gӑi là hӋ chuyên gia.
ë Nó bao gӗm cơ sӣ tri thӭc và các quy tҳc suy luұn.
ë HӋ chuyên gia đang đưӧc ӭng dөng rӝng rãi trong
các lĩnh vӵc y tӃ, giáo dөc, thiӃt kӃ, kinh doanh,
khoa hӑc,«

`
  !




ë DENDRAL (Stanford, 1960) dùng đӇ phӓng


đoán cҩu trúc các phân tӱ hӳu cơ tӯ công
thӭc hóa hӑc cӫa chúng
ë MYCIN (Stanford, 1970) chҭn đoán và kê
đơn điӅu trӏ cho bӋnh viêm màng não và
nhiӉm trùng máu
ë PROSPECTOR (MIT, 1979) xác đӏnh vӏ trí,
loҥi quһng mӓ dӵa trên thông tin đӏa lý
|


ë Đòi hӓi cơ bҧn cӫa mӑi hӋ chuyên gia là biӇu


diӉn tri thӭc ngôn ngӳ như thӃ nào và tiӃp
cұn cách suy luұn cӫa con ngưӡi ra sao.
ë Cho đӃn nay, đó vүn là nhӳng vҩn đӅ nan
giҧi cҫn giҧi quyӃt.

||
Lұp kӃ hoҥch và robot

ë Lұp kӃ hoҥch là xác đӏnh mӝt dãy thao tác


đӇ đҥt đưӧc mөc đích đһt ra.
ë Đӕi vӟi con ngưӡi đây đã là mӝt yêu cҫu
phӭc tҥp, tuy nhiên có thӇ giҧi quyӃt đưӧc
do con ngưӡi có khҧ năng phán đoán, suy
luұn.

|=


ë Vӟi robot chúng ta gһp phҧi nhӳng khó khăn:


biӇu diӉn tri thӭc vӅ không gian, môi trưӡng
tác đӝng luôn biӃn đӝng, sӕ lưӧng các chuӛi
thao tác là rҩt lӟn, thông tin không đҫy đӫ,
thao tác sӱa chӳa hành vi khi gһp bҩt lӧi,«
ë Các robot cӫa Nhұt Bҧn là nhӳng minh
chӭng cho sӵ thành công trong viӋc giҧi
quyӃt nhӳng vҩn đӅ trên.

|u
ĐiӅu khiӇn mӡ

ë Tích hӧp các thiӃt bӏ điӅu khiӇn mӡ tӵ đӝng vào các


sҧn phҭm công nghӋ phөc vө đӡi sӕng bҳt đҫu tӯ
nhӳng năm 1990 tҥi Nhұt Bҧn.
ë ĐiӇn hình là các sҧn phҭm như máy giһt, máy điӅu
hòa nhiӋt đӝ cӫa Toshiba; máy ҧnh, máy quay phim
kӻ thuұt sӕ cӫa Canon; hưӟng dүn lùi xe tӵ đӝng
cӫa Nissan, Mitshubisi và các ӭng dөng trong điӅu
khiӇn tàu điӋn không ngưӡi lái, trong các dây
chuyӅn công nghiӋp, sҧn xuҩt xi măng,«

|0
|G
|


ë Đһc trưng cӫa kӻ thuұt này dӵa trên lý thuyӃt


mӡ cӫa L. A. Zadeh (1965)
ë Vӟi quan điӇm mӡ hóa đҫu vào các tác đӝng
cӫa môi trưӡng nhҵm đҥt đưӧc kӃt quҧ liên
tөc tӕt nhҩt
ë Phù hӧp vӟi quan điӇm sӱ dөng ngôn ngӳ
đӇ mô tҧ cho dӳ liӋu cӫa con ngưӡi.


 

"#$ %&

ë Trí tuӋ nhân tҥo (Artificial Intelligence ± AI) là thuұt


ngӳ do McCathy đưa ra tҥi hӝi thҧo Dartmount năm
1956 dùng đӇ chӍ cho mӝt ngành khoa hӑc mӟi trong
lĩnh vӵc khoa hӑc máy tính.
ë Nghiên cӭu nhӳng vҩn đӅ liên quan đӃn tư duy cӫa
con ngưӡi, TTNT kӃ thӯa nhiӅu ý tưӣng, quan điӇm,
kӻ thuұt tӯ nhiӅu ngành khoa hӑc khác như TriӃt
hӑc, Toán hӑc, Tâm lý hӑc,«

|I
ë Qui tҳc suy diӉn ³modus ponens´ (tam đoҥn
luұn) đưӧc sӱ dөng trong suy luұn hình thӭc
ngày nay đã đưӧc Aristotle đưa ra tӯ vài
nghìn năm trưӟc
ë Descartes cũng là nhân vұt trung tâm trong
sӵ phát triӇn các khái niӋm hiӋn đҥi vӅ tư
duy và tinh thҫn vӟi câu nói nәi tiӃng ³tôi tư
duy nghĩa là tôi tӗn tҥi´

|`
ë Các ngành logic, lý thuyӃt đӗ thӏ, xác suҩt
cӫa Toán hӑc đóng góp rҩt nhiӅu cho TTNT.
ë Logic kinh điӇn Boole, logic vӏ tӯ Frege là
nhӳng cơ sӣ quan trӑng đӇ biӇu diӉn tri
thӭc.
ë Lý thuyӃt đӗ thӏ cung cҩp công cө đӇ mô
hình mӝt vҩn đӅ, tìm kiӃm lӡi giҧi, phân tích
tính chính xác, tính hiӋu quҧ cӫa các chiӃn
lưӧc tìm kiӃm lӡi giҧi.
=
 "'
  

ë Khác vӟi các ngành khoa hӑc khác nghiên


cӭu vӅ trí tuӋ, TTNT nghiên cӭu và tҥo ra
nhӳng thӵc thӇ có mang tính trí tuӋ và ӭng
dөng trong sҧn xuҩt các thiӃt bӏ phөc vө cho
đӡi sӕng
ë Đây là mӝt xu thӃ tҩt yӃu cӫa thӡi đҥi công
nghӋ tri thӭc.

=|


ë TTNT là sӵ nghiên cӭu, thiӃt kӃ các chương


trình máy tính ӭng xӱ mӝt cách thông minh.
ë TTNT là sӵ nghiên cӭu, thiӃt kӃ các tác nhân
thông minh (Intelligent Agents).

==
$() =*(


ë Suy nghĩ, hành đӝng như con ngưӡi (think,


act like human): quan tâm đӃn yӃu tӕ kinh
nghiӋm
ë Suy nghĩ và hành đӝng hӧp lý (think, act
rationally) quan tâm đӃn yӃu tӕ logic cӫa vҩn
đӅ.

=u
+
 


ë ThӃ nào là máy tính hay mӝt chương trình máy tính
thông minh?
ë Trҳc nghiӋm Turing đưa ra dӵa trên viӋc so sánh vӟi
khҧ năng cӫa con ngưӡi, mӝt đӕi tưӧng đưӧc coi là
có hành vi thông minh và chuҭn mӵc nhҩt vӅ trí tuӋ.
ë Trҳc nghiӋm này có ngưӡi thҭm vҩn cách ly vӟi
ngưӡi trҧ lӡi thҭm vҩn và máy tính. NӃu ngưӡi thҭm
vҩn không phân biӋt đӵӧc câu trҧ lӡi cӫa máy tính
và ngưӡi thì máy tính đó đưӧc coi là thông minh.

=0



ë Tác nhân là bҩt cӭ cái gì có khҧ năng nhұn


thӭc và tác đӝng phҧn ӭng lҥi đӕi vӟi môi
trưӡng.
ë Ví dө robot tiӃp nhұn các trҥng thái cӫa môi
trưӡng thông qua các bӝ cҧm nhұn, hành
đӝng theo quyӃt đӏnh điӅu khiӇn.

=G
 
,

ë HiӇu ngôn ngӳ tӵ nhiên: tiӃng Anh hay mӝt


ngôn ngӳ nào đó.
ë Có khҧ năng biӇu diӉn tri thӭc: thu thұp, sӱ
dөng tri thӭc.
ë Lұp luұn tӵ đӝng: xӱ lý tri thӭc và đưa ra kӃt
luұn.
ë Hӑc máy: thích nghi vӟi hoàn cҧnh và khҧ
năng ngoҥi suy.

=
- (.(
 /0
1
23!  

ë Phҧi có nhӳng công cө hình thӭc hóa như


các mô hình logic ngôn ngӳ, logic mӡ, mҥng
ngӳ nghĩa,«đӇ biӇu diӉn tri thӭc trên máy
tính và quá trình giҧi quyӃt bài toán đưӧc
tiӃn hành hӳu hiӋu hơn.


ë Phҧi có tính mӅm dҿo, thích nghi vӟi nhӳng
tình huӕng mӟi nҧy sinh, chҷng hҥn như các
hӋ chuyên gia. Các cơ chӃ suy diӉn cũng
phҧi mӅm dҿo đưӧc áp dөng tùy tình huӕng,
chưa chҳc cơ chӃ nào tӕt hơn cơ chӃ nào.
ë Phҧi đưӧc trang bӏ tri thӭc heuristic do
chuyên gia con ngưӡi cung cҩp khác vӟi
chuơng trình thông thuӡng chӍ cҫn dӵa trên
thuұt toán là đӫ.

=I
ë ViӋc xây dӵng các chương trình TTNT phҧi
có sӵ tham gia cӫa các kӻ sư xӱ lý tri thӭc:
ë Phân tích phương pháp giҧi quyӃt bài toán
theo chuyên gia con ngưӡi, diӉn đҥt tri thӭc
và cơ chӃ suy diӉn đӇ dӉ mã hóa trong máy
tính.

=`
O , # O ,& 

Xӱ lý dӳ liӋu Xӱ lý tri thӭc ± dӳ liӋu thưӡng
mang tính đӏnh tính hơn là đӏnh
lưӧng
Dӳ liӋu đưӧc đánh đӏa Tri thӭc đưӧc biӉu diӉn theo
chӍ mӝt sӕ cҩu trúc nhҩt đӏnh
Xӱ lý theo thuұt toán Xӱ lý theo các giҧi thuұt
heuricstics và cơ chӃ lұp luұn
Xӱ lý tuҫn tӵ, theo lô Tính tương tác cao (robot)

Không cҫn giҧi thích Có thӇ giҧi thích lý do thӵc


viӋc thӵc hiӋn hiӋn

u
|
  4O 5  6 4

u|
7
2
"8(#& %


ë Vҩn đӅ là gì?
ë Mӝt bài toán nào đó cҫn giҧi quyӃt, chҷng
hҥn như mӝt trò chơi, c.minh mӝt đӏnh lý,«
ë Mӝt lӟp rӝng các bài toán có thӇ giҧi quyӃt
bҵng cách biӇu diӉn bӣi các trҥng thái và các
tóan tӱ (phép biӃn đәi trҥng thái).

u=
$29:;
I<

uu
,

ë Sӵ sҳp xӃp các sӕ tҥi mӛi thӡi điӇm là mӝt


TT.
ë Hình bên trái là trҥng thái ban đҫu.
ë Hình bên phҧi là trҥng thái kӃt thúc hay trҥng
thái đích (goal).
ë Trҥng thái đích cӫa mӝt bài toán có thӇ nhiӅu
hơn mӝt.

u0
ë Toán tӱ là mӝt phép biӇn đәi hӧp lӋ chuyӇn
tӯ trҥng thái này sang trҥng thái khác.
ë Bҵng các tóan tӱ, tӯ trҥng thái ban đҫu, tiӃp
tөc phát triӇn, cuӕi cùng thu đưӧc mӝt không
gian trҥng thái (KGTT).

uG


ë KGTT là mӝt bӝ bӕn (X, u0, F, G), trong đó:


X là tұp các trҥng thái
u0 là trҥng thái bҳt đҫu
F là tұp các toán tӱ, gӗm các phép biӃn đәi.
G là tұp trҥng thái đích.

u
7
2


ë Không gian trҥng thái có thӇ biӇu diӉn bҵng


đӗ thӏ có hưӟng: mӛi đӍnh là mӝt trҥng thái,
mӛi cung là mӝt toán tӱ.

ë NghiӋm cӫa bài toán nӃu như ta tìm đưӧc


đưӡng đi tӯ trҥng thái bҳt đҫu đӃn mӝt trong
các trҥng thái đích.


7
2
=>

ë Trong đӗ thӏ cӫa KGTT có thӇ xuҩt hiӋn chu


trình gây khó khăn cho viӋc tìm kiӃm, hҥn
chӃ các toán tӱ trong F có thӇ đưa đӗ thӏ trӣ
thành cây, mӝt cҩu trúc dӉ tìm kiӃm hơn.
ë VD. KGTT cӫa trò chơi caro là cây.

uI


?

ë Khi tìm kiӃm lӡi giҧi, tӯ mӝt trҥng thái nào đó chưa
phҧi là trҥng thái đích, ta dӵa theo toán tӱ sinh ra
tұp các trҥng thái mӟi: mӣ rӝng.
ë ĐӇ đưӧc lӡi giҧi, ta phҧi liên tөc chӑn trҥng thái mӟi,
mӣ rӝng, kiӇm tra cho đӃn khi tìm đưӧc trҥng thái
đích hoһc không mӣ rӝng đưӧc KGTT.
ë Tұp các trҥng thái đưӧc mӣ rӝng sӁ có nhiӅu phҫn
tӱ, viӋc chӑn trҥng thái nào đӇ tiӃp tөc mӣ rӝng
đưӧc gӑi là chiӃn lưӧc tìm kiӃm.

u`
 

?

m Tính đҫy đӫ: chiӃn lưӧc phҧi đҧm bҧo tìm


đưӧc lӡi giҧi nӃu có.
m Đӝ phӭc tҥp thӡi gian: mҩt thӡi gian bao lâu
đӇ tìm đưӧc lӡi giҧi.
m Đӝ phӭc tҥp không gian: tӕn bao nhiêu đơn
vӏ bӝ nhӟ đӇ tìm đưӧc lӡi giҧi.
m Tính tӕi ưu: tӕt hơn so vӟi mӝt sӕ chiӃn lưӧc
khác hay không.

0

@
?

m Nӝi dung trҥng thái mà nút hiӋn hành đang


biӇu diӉn.
m Nút cha đã sinh ra nó.
m Toán tӱ đã đưӧc sӱ dөng đӇ sinh ra nút hiӋn
hành.
m Đӝ sâu cӫa nút.
m Giá trӏ đưӡng đi tӯ nút gӕc đӃn nút hiӋn
hành.

0|
 

A

0=

A?

ë Trҥng thái đưӧc chӑn đӇ phát triӇn chӍ đơn


thuҫn dӵa theo cҩu trúc cӫa KGTT mà không
có thông tin hưӟng dүn nào khác.
ë Nói chung tìm kiӃm mù sӁ không hiӋu quҧ.
ë Đây là cơ sӣ đӇ chúng ta cҧi tiӃn và thu
đưӧc nhӳng chiӃn lưӧc hiӋu quҧ hơn.

0u
1. Tìm kiӃm theo chiӅu rӝng (BFS)

ë Trҥng thái đưӧc ưu tiên phát triӇn là trҥng


thái đưӧc sinh ra trưӟc.
ë Dùng danh sách &, chӭa các trҥng thái
sinh ra đang chӡ phát triӇn
ë Danh sách &<2 chӭa các trҥng thái đã
đưӧc khҧo sát.

00
$29

0G
 & 7B
procedure bfs;
begin
open:=[start]; closed:=[];
while open<>[] do
begin
loҥi tt ngoài cùng bên trái cӫa open, gӑi nó là u
if (u là mӝt đích) then thông báo kӃt quҧ, thoát
else begin
Đưa u vào closed
Phát sinh các con v cӫa u
Loҥi các con đã có trong openmclosed
Đưa các con còn lҥi vào bên phҧi open (1)
end
end
Thông báo thҩt bҥi
End
0
 /C

ë Các trҥng thái con phát sinh nhӡ các toán tӱ hӧp lӋ.
ë Danh sách open bә sung phҫn tӱ bên phҧi, lҩy phҫn
tӱ bên trái.
ë Thuұt tóan khҧo sát tҩt cҧ các nút ӣ đӝ sâu d sau đó
mӟi đӃn mӭc dm1 nên chҳc chҳn tìm đưӧc nghiӋm.
ë NӃu vô nghiӋm và KGTT hӳu hҥn thì thuұt toán sӁ
dӯng và thông báo vô nghiӋm.


 

ë Giҧ sӱ mӛi trҥng thái trung bình sinh ra b


trҥng thái con (kӅ), b - gӑi là  .
ë Giҧ sӱ đưӡng đi nghiӋm có đӝ dài d. Tình
trҥng xҩu nhҩt phҧi khҧo sát là ?
ë Đӝ phӭc tҥp thӡi gian là O(b^d), đӝ phӭc tҥp
không gian cũng là O(b^d).

0I
0`
=Tìm kiӃm theo chiӅu sâu (DFS)

ë Mӣ rӝng nút có đӝ sâu hơn trưӟc các nút


khác đang chӡ xӱ lý.
ë Khi nào không mӣ rӝng đưӧc nӳa thì mӟi
quay lҥi nút ӣ đӝ sâu thҩp hơn.
ë Do đó, các nút mӟi đưӧc sinh ra chӡ xӱ lý
phҧi đưӧc bӓ bên trái cӫa hàng đӧi open (tҥi
câu lӋnh 1).

G
 & DB
procedure bfs;
begin
open:=[start]; closed:=[];
while open<>[] do
begin
loҥi tt u ngoài cùng bên trái cӫa open
if (u là mӝt đích) then thông báo kӃt quҧ, thoát
else begin
Đưa u vào closed
Phát sinh các con v cӫa u
Loҥi các con đã có trong openmclosed
Đưa các con còn lҥi vào bên 
open (1)
end
end
Thông báo thҩt bҥi
End
G|
 /C

ë Khҧo sát nút ӣ đӝ sâu d thì DFS lưu trӳ b*d nút, khi
đó BFS phҧi lưu trӳ b^d nút.
ë Ӣ đӝ sâu d=12, DFS chӍ sӱ dөng 12KB trong khi
BFS dùng đӃn 111TB.
ë Đӝ phӭc tҥp thӡi gian cӫa DFS vүn là O(b^d) vì
trong trưӡng hӧp xҩu nhҩt các nút đưӧc khҧo sát
vүn như BFS.
ë Cơ hӝi đӇ tìm thҩy đích nhanh hơn nӃu nó nҵm ӣ
phҫn KGTT bên trái.

G=
%

ë Bӓ qua cơ hӝi tìm thҩy ngay trҥng thái đích khi trҥng
thái này nҵm gҫn gӕc.
ë NӃu KGTT vô hҥn có thӇ không tìm đưӧc trҥng thái
đích.
ë NghiӋm nói chung không phҧi là đưӡng đi ngҳn
nhҩt.
ë DFS là chiӃn lưӧc không đҫy đӫ, không tӕi ưu.
Không nên sӱ dөng khi KGTT có đӝ sâu lӟn hoһc
vô hҥn.

Gu
3. Tìm kiӃm vӟi đӝ sâu hҥn chӃ

ë Vүn như sӱ dөng chiӃn lưӧc tìm kiӃm theo


chiӅu sâu nhưng giӟi hҥn đӝ sâu cӫa đưӡng
đi nghiӋm trên cây.
ë Tӭc là sӁ không tiӃp tөc mӣ rӝng nӃu đã đӃn
mӝt đӝ sâu d cӕ đӏnh nào đó.
ë Sӕ d đưӧc gӑi là bán kính trên KGTT.

G0
 /C

ë ChiӃn lưӧc này sӁ tìm đưӧc nghiӋm hay


không phө thuӝc vào d.
ë NӃu d đưӧc chӑn thích hӧp thì nó tìm đưӧc
nghiӋm, khi đó chiӃn lưӧc là đҫy đӫ. Tuy
nhiên nó không là chiӃn lưӧc tӕi ưu.
ë Tương tӵ như DFS, đӝ phӭc tҥp thӡi gian là
O(b^d) và đӝ phӭc tҥp không gian là O(bd).

GG
 & 

procedure DFS(d);
begin
open:=[start]; closed:=[]; depth(start):=0;
while open<>[] do
begin
loҥi u ngoài cùng bên trái open
if (u là mӝt đích) then thbáo kӃt quҧ, thoát
else

G
begin
Đưa u vào closed
If depth(u)<d then begin
Phát sinh các con v cӫa u
Loҥi các con vӯa phát sinh đã có trong openm closed
Gán đӝ sâu cho các v bҵng depth(u)m1
Đưa các con v còn lҥi vào bên trái open
End;
End;
End; {while}
Thông báo thҩt bҥi
End.


2?

ë Vҩn đӅ khó khăn là xác đӏnh đӝ sâu hҥn chӃ


d.
ë Hҫu hӃt các bài tóan chúng ta không biӃt
trưӟc d bҵng bao nhiêu.
ë ChiӃn lưӧc sau đây giҧi quyӃt vҩn đӅ này.

GI
4. Tìm kiӃm sâu dҫn

ë Tӯng bưӟc tăng dҫn đӝ sâu hҥn chӃ đӇ tìm


nghiӋm.
ë Lҫn lưӧt cho d bҵng 1,2,«và tìm kiӃm vӟi đӝ
sâu hҥn chӃ ӭng vӟi d.
ë Tұn dөng đưӧc lӧi thӃ cӫa hai chiӃn lưӧc tìm
kiӃm rӝng và tìm kiӃm sâu vì nó tìm hӃt cây
đӝ sâu d đӃn dm1 giӕng như tìm kiӃm rӝng

G`
 /C

ë Chҳc chҳn tìm đưӧc nghiӋm nӃu có.


ë Do sӱ dөng tìm kiӃm sâu trong cây hҥn chӃ
nên ít tӕn kém bӝ nhӟ hơn.
ë ChiӃn lưӧc này là đҫy đӫ và nӃu KGTT là
cây thì nó là chiӃn lưӧc tӕi ưu.


 & 

procedure DFS1;
begin
for d:=0 to max do
begin
DFS(d);
If thành công then exit
End;
End;

|
 

ë Thӵc tӃ sӕ nút tăng lên nhưng đӝ phӭc tҥp


cӫa thuұt tóan vүn là O(b^d), trong khi đó đӝ
phӭc tҥp không gian vүn là O(bd).
ë Vì vұy, tìm kiӃm sâu dҫn đưӧc đánh giá là
chiӃn lưӧc tìm kiӃm thích hӧp hơn khi KGTT
lӟn và không biӃt trưӟc đưӧc đӝ sâu cӫa
trҥng thái đích.

=
=
  4O 5  6 4
 

u
 !

ë Các chiӃn lưӧc tìm kiӃm mù kém hiӋu quҧ và


không thӇ áp dөng đưӧc trong nhiӅu trưӡng
hӧp.
ë Sӱ dөng thông tin cӫa trҥng thái kӃt hӧp vӟi
nhұn xét dӵa theo kinh nghiӋm đӇ cҧi tiӃn là
quan điӇm chung cӫa các chiӃn lưӧc tìm
kiӃm kinh nghiӋm.

0
|( 

G


"#( 

ë Hàm đánh giá là mӝt hàm ưӟc lưӧng khҧ


năng vӅ đích cӫa mӛi trҥng thái.
ë ChӍ là ưӟc lưӧng vì nói chung chúng ta
không thӇ tính toán chính xác khҧ năng này,
nӃu tính đưӧc nghĩa là đã tìm đưӧc lӡi giҧi!
ë Tuy nhiên, nhӡ kinh nghiӋm trong nhiӅu bài
toán cө thӇ, có thӇ ưӟc lưӧng đưӧc g.trӏ này.


$29

ë NӃu đӃm các sӕ sai vӏ trí cӫa mӝt trҥng thái


so vӟi trҥng thái đích thì B là 3 và C là 1.
ë Như vұy, sӕ này càng nhӓ thì trҥng thái đó
càng có khҧ năng vӅ đích
ë Có thӇ dùng sӕ này làm giá trӏ cho hàm đánh
giá.




ë Trong đó ` là KGTTcӫa bài toán.


ë DӉ thҩy, nӃu u là trҥng thái đích thì h(u)=0. Mӛi u
ta có mӝt giá trӏ ưӟc lưӧng là h(u)
ë h(B)=3; h(C)=1
ë Hàm đánh giá còn đưӧc gӑi là hàm heuristic. Giá
trӏ hàm càng nhӓ thì khҧ năng vӅ đích cӫa trҥng
thái càng lӟn.

I
$:D:E

`

# FD

ë h(D)=h(E)=2
ë VӅ mһt đưӡng đi qua các ô ngang dӑc đӇ di chuyӇn
vӅ đúng vӏ trí thì (D) phҧi di chuyӇn đӑan đưӡng xa
hơn (E) nên có thӇ là (D) không tӕt bҵng (E).
ë Theo nhұn xét này, ta có thӇ xây dӵng hàm h bҵng
tәng khoҧng cách phҧi di chuyӇn cӫa các ô sai vӏ trí.
ë Ví dө: h1(D)=3m3 = 6, h1(E)=2m2=4
ë Mӝt ví dө khác là lҩy đӝ dài đưӡng chim bay !

ù
='

m BiӇu diӉn bài toán bҵng mӝt KGTT thích hӧp


m Xây dӵng hàm đánh giá
m ThiӃt kӃ chiӃn lưӧc chӑn trҥng thái

ù|
 






ù=
 
&(G
) 
 
=

:|`I0

ë Chӑn mӝt trҥng thái tӕt hơn trҥng thái đang khҧo sát
đӇ phát triӇn. NӃu không có thuұt tóan phҧi dӯng.
ë NӃu chӍ chӑn mӝt trҥng thái tӕt hơn: leo đӗi đơn
giҧn, trҥng thái tӕt nhҩt: leo đӗi dӕc đӭng.
ë Sӱ dөng hàm h đӇ biӃt trҥng thái nào tӕt hơn.
ë Khác vӟi tìm kiӃm sâu, leo đӗi không lưu tҩt cҧ các
con mà chӍ lưu đúng mӝt t.thái đưӧc chӑn nӃu có.

ùu
 &  
procedure hcs(start);
begin
open:=[start]; closed:=[];
while open<>[] do
begin
loҥi tt ngoài cùng bên trái cӫa open, gӑi nó là u
if (u là mӝt đích) then thông báo kӃt quҧ, thoát
else begin
Đưa u vào closed
Phát sinh các con v cӫa u
Loҥi các con đã có trong openmclosed
Chӑn con tӕt nhҩt và hơn u đưa vào bên 
open
end
end
Thông báo thҩt bҥi
End
ù0
ùG
8=%

ë HiӋu quҧ khi có mӝt hàm đánh giá tӕt. BӃ tҳc


nӃu
± Gһp điӇm cӵc đҥi đӏa phương.
± Khu vӵc bình nguyên.
ë Giҧi pháp xáo trӝn ngүu nhiên.
ë Không có giҧi pháp tәng quát. Cҧi tiӃn?

ù
Tìm kiӃm ưu tiên tӕt nhҩt ± Best First
Search (Best-FS)

ë Chӑn trҥng thái tӕt nhҩt trong open đӇ phát triӇn, kӇ


cҧ trҥng thái này không tӕt bҵng trҥng thái đã sinh ra
nó.
ë Lưu trӳ tҩt cҧ các trҥng thái anh em nên khi đi vào
ngõ cөt, chiӃn lưӧc này có thӇ lui ra đưӧc mà không
bӏ bӃ tҳc.
ë Best-FS kӃt hӧp tìm kiӃm sâu và rӝng.
ë Best-FS ³cҭn thұn´ hơn ghi nhӟ lҥi các mӝt sӕ trҥng
thái không tӕt hơn trưӟc đó đӇ còn có thӇ quay lҥi.

ùù
$29

ùI
ù`
 & 7<HB
procedure Best_FS;
begin
open:={u0}; closed:={ };
while open<>{ } do
begin
loҥi trҥng thái ngoài cùng bên trái cӫa open, gӑi nó là u
if (u là mӝt đích) then thông báo thҳng lӧi, thoát
else begin
Đưa u vào closed
Phát sinh các con v cӫa u
Loҥi các con v đã có mһt trong open m closed
Đưa các con còn lҥi vào open
Sҳp xӃp open sao cho phҫn tӱ tӕt nhҩt nҵm bên trái
end
end
Thông báo thҩt bҥi
end

I
 


ë Mӝt cách đҫy đӫ, đӇ có đưӧc kӃt quҧ là


đưӡng đi nghiӋm chúng ta phҧi lưu ý thêm
vӅ viӋc lưu giӳ các trҥng thái cha đӇ truy lҥi
vӃt cӫa đưӡng đi này.

I|
u
  4O 5  6 4 I 

I=
O12&

ë Trong các chiӃn lưӧc tìm kiӃm trên, chúng ta chưa


quan tâm đӃn đӝ dài hay chi phí cӫa đưӡng đi
nghiӋm.
ë Trong thӵc tӃ, đây là mӝt yӃu tӕ quan trӑng vì ý
nghĩa cӫa nghiӋm tìm đưӧc phө thuӝc vào yӃu tӕ
này.
ë Ví dө như sӕ bưӟc đi cӫa mӝt ngưӡi chơi cӡ. Chi
phí mӝt hành trình trong bài toán ngưӡi du lӏch.
ë Vì vұy chúng ta không chӍ quan tâm đӃn viӋc tìm ra
nghiӋm mà còn phҧi quan tâm đӃn viӋc nghiӋm đó
có tӕi ưu hay không.

Iu
ë KGTT trong bài toán tӕi ưu phҧi có thêm
trӑng sӕ cӫa các cung.
ë Chúng ta đã phân tích các chiӃn lưӧc tӯ tìm
kiӃm mù, tìm kiӃm kinh nghiӋm và biӃt đưӧc
nhӳng ưu nhưӧc điӇm cӫa tӯng chiӃn lưӧc.
ë Best-FS là chiӃn lưӧc tìm kiӃm linh hoҥt nhҩt
cho đӃn lúc này, cҧi tiӃn chiӃn lưӧc này đӇ
giҧi quyӃt vҩn đӅ tӕi ưu.
I0
|( 




ë Trong Best-FS, u đưӧc ưu tiên phát triӇn nӃu


như nó có giá trӏ h(u) nhӓ nhҩt trong các
trҥng thái trong open.
ë Tuy nhiên, chӍ riêng h(u) là không đӫ khi xét
đưӡng đi tӕi ưu.
ë Vӟi quan điӇm tӕi ưu, đӗng thӡi vӟi h(u) nhӓ
đӇ mau vӅ đích thì đӝ dài đưӡng đi tӯ trҥng
thái xuҩt phát đӃn u cũng phҧi nhӓ. Vì vұy,
ngưӡi ta dùng hàm đánh giá cҧi tiӃn sau:
IG
F(u)=h(u)mg(u)
ë Trong đó g(u) là đӝ dài đưӡng đi ngҳn nhҩt
tӯ u0 đӃn u
ë h(u) là đánh giá đӝ tӕt theo hàm heuristic.
ë Hàm h(u) đưӧc gӑi là chҩp nhұn đưӧc hay
hàm đánh giá thҩp nӃu như h(u) nhӓ hơn đӝ
dài đưӡng đi ngҳn nhҩt thӵc sӵ tӯ u đӃn
đích.

I


 JK

ë A* là giҧi thuұt tәng quát hơn BestFS, nó tìm kiӃm


trên KGTT là đӗ thӏ.
ë Vì là đӗ thӏ nên phát sinh nhiӅu vҩn đӅ khi tìm
đưӡng đi tӕi ưu.
ë ĐӇ ý rҵng nghiӋm là đưӡng đi nên ta phҧi lưu lҥi vӃt
cӫa đưӡng đi này.
ë Trong các giҧi thuұt trưӟc, đӇ tұp trung cho tư tưӣng
chính cӫa các giҧi thuұt đó chúng ta bӓ qua chi tiӃt
này, nhưng trong giҧi thuұt này chi tiӃt này đưӧc đӅ
cұp vì nó liên quan đӃn nghiӋm mӝt cách trӵc tiӃp.



@


ë Mӛi trҥng thái u tùy ý sӁ gӗm bӕn yӃu tӕ


(g(u), h(u), f(u), cha(u)). Trong đó:
ë G(u), h(u), f(u) đã biӃt
ë Cha(u) là nút cha cӫa nút u

II
&%(JK

I`
O %

Bưӟc Open closed


1 A(0,7,0,-)
2 B(3,3,6,A), D(1,6,7,A), C(5,4,9,A) A(0,7,0,-)
3 D(1,6,7,A), C(4,4,8,B) B(3,3,6,A)
4 B(2,3,5,D), C(4,4,8,B) D(1,6,7,A)
5 C(3,4,7,B) B(2,3,5,D)
6 G(5,0,5,C) C(3,4,7,B)

Giҧi thuұt dӯng ӣ bưӟc 6 và đưӡng đi thu đưӧc đӝ dài 5 như sau
A-D-B-C-G.
`


 ='

ë Ӣ bưӟc 2, mӑi viӋc xҧy ra bình thưӡng


ë Ӣ bưӟc 3, tìm đưӧc đưӡng đi đӃn C qua B
ngҳn hơn nên các giá trӏ cӫa C trong open
phҧi đưӧc sӱa đәi.
ë Ӣ bưӟc 4, mһc dù B đã nҵm trong closed,
tӭc đã xét xong nhưng đưӡng đi mӟi qua D
đӃn B ngҳn hơn nên B phҧi đưӧc lҩy khӓi
closed chuyӇn qua open chӡ xét lҥi vӟi giá trӏ
mӟi.
`|
ë Ӣ bưӟc 5, lҥi xҧy ra viӋc chӍnh sӱa các giá
trӏ cӫa C như ӣ bưӟc 3.
ë Giҧi thuұt dӯng ӣ bưӟc 6 và đưӡng đi thu
đưӧc đӝ dài 5 như sau A-D-B-C-G.

`=
1

ë Trҥng thái đã lưu trong open vүn có thӇ thay


đәi giá trӏ.
ë Thұm chí lưu trong closed cũng phҧi bӏ xóa
đi và chuyӇn qua open vӟi các giá trӏ mӟi.

`u


 JK

procedure A*(uo);
begin
g(uo)=0; f(uo)=h(uo);
open:=[uo]; closed:=[];

`0
while open<>[] do
begin
loҥi u ngoài cùng bên trái cӫa open
Đưa u vào closed;
if (u là mӝt đích) then thông báo thҳng lӧi,
thoát else

`G
begin
Sinh các con v cӫa u;
For v thuӝc con(u) do begin
g(v):=g(u)mc[u,v];
If v không thuӝc open hay closed
begin
f(v):=g(v)mh(v);
cha(v):=u;
Bӓ v vào open;
end

`
If v thuӝc open (tӗn tҥi v¶ thuӝc open, sao cho
v=v¶)
If g(v)<g(v¶) then
Begin
g(v¶):=g(v);
f(v¶):=g(v¶)mh(v¶);
Cha(v¶):=u;
End;

If v thuӝc closed (tӗn tҥi v¶ thuӝc closed, sao cho v=v¶)
If g(v)<g(v¶) then
Begin
f(v):=g(v)mh(v);
cha(v):=u;
Đưa v vào open;
Loҥi v¶ khӓi closed;
End;

`I
End;{for}
XӃp open đӇ t.thái tӕt nhҩt nҵm bên trái;
End{else}
End;{while}
Thông báo thҩt bҥi
End;{procedure}

``
Bài tұp: Tìm đưӡng đi nn tӯ A tӟi Z

100
Bài tұp

101
KӃt quҧ.

ë Mӝt hàm đánh giá h(u) đưӧc gӑi là chҩp


nhұn đưӧc hay là hàm đánh giá thҩp nӃu
như h(u)<=h*(u) vӟi moi u, ӣ đây h*(u) là
đưӡng đi ngҳn nhҩt tӯ u đӃn đích.
ë NӃu hàm đánh giá h(u) là chҩp nhұn đưӧc
thì thuұt toán A* là tӕi ưu.
ë A* là thuұt tóan hiӋu quҧ nhҩt trong các thuұt
toán đҫy đӫ và tӕi ưu.
|
=
0
  4O 5  6 4
I L

|
u
 ;
"
! ;

ë Đһc điӇm:
ë Hai ngưӡi thay phiên đi (xen kӁ)
ë Hai ngưӡi biӃt thông tin đҫy đӫ vӅ nhau
ë Mӛi ngưӡi tìm kiӃm nưӟc đi
ë Nưӟc đi tӕt nhҩt là nưӟc đi dүn đӃn phҫn
thҳng.
ë BiӇu diӉn KGTT bҵng cây: cây trò chơi.
|
0
 9

/=

ë Mӝt sӕ ví dө trên đã đӅ cұp đӃn trò chơi


nhưng chӍ khҧo sát vӟi trưӡng hӧp tӵ demo.
ë Bây giӡ, chúng ta sӁ quan tâm đӃn bài toán
trò chơi vӟi hai đӕi thӫ.

|
G
$29M;



ë Có n (n>2) đӗng xu.


ë Mӛi nưӟc đi, ngưӡi chơi chia các đӗng xu
này thành hai đӕng nhӓ có sӕ lưӧng mӛi
đӕng khác nhau.
ë Ngưӡi thua sӁ là ngưӡi cuӕi cùng không chia
đưӧc theo yêu cҫu cӫa bài toán.

|

$

ë Tính toán phҧn ӭng cӫa đӕi thӫ là khó khăn


chӫ yӃu cӫa bài toán này.
ë Thưӡng thì cách giҧi quyӃt là giҧ thiӃt đӕi thӫ
cũng sӱ dөng kiӃn thӭc vӅ không gian trҥng
thái như chúng ta.
ë Giҧ thiӃt có vҿ hҥn chӃ nhưng chúng ta sӱ
dөng đӇ có cơ sӣ dӵ đoán hành đӝng cӫa
đӕi thӫ.
|
ù
;

 ù

|
I
ë Hai đҩu thӫ: MIN và MAX.
ë Trong đó MAX luôn tìm cách tӕi đa ưu thӃ
cӫa mình và MIN tìm mӑi cách đӇ đưa MAX
vào thӃ khó khăn nhҩt.
ë Mӛi mӭc trên KGTT ӭng vӟi mӝt đҩu thӫ.
ë ĐӇ chӍ dүn đưӧc cách đi, chúng ta sӁ gán
cho các nút lá là 1 nӃu MAX thҳng, là 0 nӃu
MIN thҳng.
|
`
& 

||

 &?

ë TruyӅn ngưӧc các trӏ này tӯ các nút lá vӅ


gӕc theo qui tҳc sau:
ë NӃu đӍnh ӣ mӭc MAX, gán trӏ cho đӍnh này
bҵng giá trӏ lӟn nhҩt trong các giá trӏ cӫa các
con cӫa nó
ë NӃu đӍnh ӣ mӭc MIN, gán trӏ cho đӍnh này
bҵng giá trӏ bé nhҩt trong các trӏ cӫa các con
cӫa nó.
||
|
!,',JFM

Function MaxVal(u);
Begin
If u là nút lá then Val(u):=f(u)
Else MaxVal(u):=max{MinVal(v) | v là các
con cӫa u}
End;

||
=
!,',

Function MinVal(u);
Begin
If u là nút lá then MinVal(u):=f(u)
Else MinVal(u):=min{MaxVal(v) | v là các
con cӫa u}
End;

||
u
9"'(
&JF

Procedure Minimax(u, var v);


Begin
Val:= -oo;
For mӛi con w cӫa u do
If val<=MinVal(w) then begin
Val:=MinVal(w);
v:=w;
End;
End;
||
0
7
 ,

ë BiӇu diӉn KGTT trò chơi Nim vӟi n=6


ë Đánh giá các nút
ë Giҧ sӱ đӕi thӫ chӑn cách đi là con bên phҧi
ë Máy thҳng hay thua?

||
G


/"'
(<%

ë KGTT quá lӟn, không mӣ rӝng đưӧc đӃn các nút lá


ë Do đó ta chӍ tính đӃn mӝt mӭc n nào đó thôi.
ë Nên không thӇ gán cho mӝt đӍnh giá trӏ thҳng/thua
cuӝc mӝt cách chính xác mà chӍ bҵng khҧ năng
thҳng thua ± tӭc là mӝt heuristic nào đó.
ë TruyӅn ngưӧc giá trӏ cho các nút lӟp
ë Căn cӭ vào các giá trӏ này đӇ quyӃt đӏnh bưӟc đi.

||

$29M% (<2 u

||
ù
<2',JF

Function MaxVal(u, d);


Begin
If d=0 hoһc u là đӍnh lá then MaxVal(u):=f(u)
Else MaxVal(u):=max{MinVal(v, d-1) | v là
các con cӫa u}
End;

||
I
!,',

Function MinVal(u,d);
Begin
If d=0 hoһc u là đӍnh lá then MinVal(u):=f(u)
Else MinVal(u):=min{MaxVal(v,d-1) | v là
các con cӫa u}
End;

||
`
9"'(
&JF

Procedure Minimax(u, var v, d);


Begin
Val:= -oo;
For mӛi con w cӫa u do
If MinVal(w, d-1) >=Val then begin
Val:=MinVal(w,d-1);
v:=w;
End;
End;
|=


  &?

ë Dӵa vào sӵ chênh lӋch < các quân


ë Trӑng sӕ cho &%
quân cӡ
ë $ cӫa quân cӡ.

|=
|
$29M!"

ë Quân trҳng: tӕt hӋ sӕ 1; mã, tưӧng hӋ sӕ 3 ;


xe hӋ sӕ 5, hұu hӋ sӕ 9.
ë Quân đen nhұn giá trӏ âm ngưӧc lҥi đӕi vӟi
quân trҳng.
ë Tәng giá trӏ cҧ hai quân dùng đӇ đánh giá
trҥng thái đó.
ë Cách đánh giá này chưa tính đӃn vӏ trí cӫa
chúng.
|=
=

!

ë Heuristic là tәng các a_i x_i vӟi


ë Mӛi x_i là mӝt đһc trưng cӫa bàn cӡ như ưu
thӃ quân, vӏ trí quân, khҧ năng kiӇm sóat
trung tâm, cơ hӝi thí quân đӇ ăn quân cӫa
đӕi thӫ
ë a_i là hӋ sӕ cӫa đánh giá mӭc đӝ quan
trӑng cӫa yӃu tӕ này trong trҥng thái.

|=
u
;
D&2

|=
0
O 

ë Có hai quân trҳng và hai quân đen trên bàn cӡ 3x3.


ë Quân đen không qua đưӧc bên trái mà chӍ di chuyӇn
lên trên, xuӕng dưӟi hoһc qua phҧi.
ë Quân trҳng không đi xuӕng dưӟi mà chӍ lên trên qua
trái hoһc qua phҧi.
ë Quân đen chӍ đưӧc ra khӓi bàn cӡ nӃu đang đӭng ӣ
cӝt cuӕi cùng, quân trҳng chӍ đưӧc ra khӓi bàn cӡ
nӃu đang đӭng ӣ dòng trên cùng.
ë Đҩu thӫ thҳng cuӝc nӃu đưa hӃt 2 quân cӫa mình ra
khӓi bàn cӡ hoһc làm cho đӕi phương không đi
đưӧc.
|=
G


|=


&N(<2?

|=
ù
$/ ?

ë Mӛi quân trҳng cҧn trӵc tiӃp quân đen cӝng


40 điӇm, cҧn gián tiӃp cӝng 30 điӇm và
ngưӧc lҥi cho quân đen.

|=
I
*?

ë Ngoài ra, do sӕ quân cӡ càng ít thì khҧ năng


thҳng càng cao nên nӃu chӍ còn mӝt quân
trҳng thì đưӧc cӝng thêm như 50 chҷng hҥn,
ngưӧc lҥi chӍ còn mӝt quân đen thì -50.

|=
`
 9+ ,-=

ë Hҥn chӃ vӟi sӕ mӭc d đi nӳa thì sӕ trҥng thái


đã rҩt lӟn.
ë Cӡ vua: nhân tӕ nhánh b=35; d=3 có
35*35*35=42.785 trҥng thái (chưa kӇ ӣ các
mӭc 1, 2) cҫn tính mҩt khoҧng 150s.
ë Vӟi khҧ năng nhҩt đӏnh cӫa máy tính, giҧi
quyӃt vҩn đӅ thӡi gian như thӃ nào?

|u

9,-=

ë Giҧm bӟt các trҥng thái cҫn khҧo sát mà vүn


không ҧnh hưӣng gì đӃn viӋc giҧi quyӃt bài
toán.
ë Cҳt bӓ các nhánh không cҫn khҧo sát.
ë Ví dө

|u
|
$29

|u
=
<N9

ë NӃu val(v)< val(u) thì


bҩt kӇ val(a) bҵng bao
nhiêu thì val(c) cũng
bҵng val(u).
ë NӃu a thuӝc lӟp min?

|u
u
9

ë Khi cài đһt, ta dùng mӝt cһp biӃn alpha, beta.


ë Alpha - giá trӏ lӟn nhҩt trong các giá trӏ cӫa
các các nút con đã đánh giá cӫa mӝt nút max
ë Beta ± giá trӏ bé nhҩt trong các giá trӏ cӫa các
các nút con đã đánh giá cӫa mӝt nút min
ë Anpha>=beta cҳt nhánh đang xét

|u
0

&',/

Function MaxVal(u, anpha, beta);


begin
if (u là nút lá cӫa cây hoһc cây hҥn chӃ) then Maxval:=f(u)
else for w con cӫa u do
begin
alpha:=max{alpha, MinVal(w, alpha, beta)}
if anpha>beta then exit;
end;
MaxVal:=alpha;
end;

|u
G

&- ',


Function MinVal(u, anpha, beta);


begin
if (u là nút lá cӫa cây hoһc cây hҥn chӃ) then Minval:=f(u)
else
for w con cӫa u do
begin
beta:=min{beta, MaxVal(w, alpha, beta)}
if anpha>=beta then exit;
end;
MinVal:=beta;
end;
|u

9'2O'(
&/

Procedure Alpha_beta(u, var v)


begin
alpha:=-oo; beta:=moo;
for (w con u) do
if alpha<MinVal(w, alpha, beta) then
begin
alpha:=MinVal(w, anpha, beta);
v:=w;
end;
end;
|u
ù
=
7PDQ  R SOO

|u
I


"#=
2
"/01


|u
`

?

ë Dӳ liӋu là các con sӕ, ký hiӋu mà máy tính


có thӇ lưu trӳ, biӇu diӉn, xӱ lý. Bҧn thân dӳ
liӋu không có ý nghĩa.
ë ChӍ khi con ngưӡi cҧm nhұn, tư duy thì dӳ
liӋu mӟi có mӝt ý nghĩa nhҩt đӏnh, đó chính
là thông tin.
ë Tri thӭc là kӃt tinh, cô đӑng, chҳt lӑc cӫa
thông tin. Tri thӭc hình thành do quá trình xӱ
lý thông tin mang lҥi.
|0

&%

ë Các đӏnh lý tóan hӑc, đӏnh luұt vұt lý là các tri


thӭc mang tính khҷng đӏnh sӵ kiӋn.
ë Các phương pháp điӅu chӃ hóa hӑc, thuұt
toán là tri thӭc mang tính thӫ tөc.
ë Các nhұn đӏnh, kӃt luұn vӅ sӵ kiӋn, hiӋn
tưӧng là tri thӭc mô tҧ.
ë Các ưӟc lưӧng, suy đoán hình thành qua
kinh nghiӋm là tri thӭc heuristic
|0
|
/01
?

ë Trí tuӋ, sӵ thông minh phҧi dӵa trên nӅn


tҧng cӫa tri thӭc. Tuy nhiên, nó còn phө
thuӝc vào viӋc vұn dөng, xӱ lý tri thӭc.
ë BiӇu diӉn tri thӭc là viӋc đưa tri thӭc vào
máy tính. Và chӍ có ý nghĩa nӃu công viӋc
tiӃp theo: ³xӱ lý tri thӭc đưӧc thӵc hiӋn´.

|0
=
$29"# 


ë Cho 2 bình rӛng X, Y có thӇ tích lҫn lưӧt là


Vx, Vy. Dùng 2 bình này đӇ đong ra z lít
nưӟc.
ë Cө thӇ vӟi Vx=5, Vy=7 và z=4, ta làm như
sau:

|0
u
ë Múc đҫy bình 7
ë Đә qua cho đҫy bình 5.
ë Đә hӃt nưӟc trong bình 5
ë Đә phҫn còn lҥi trong bình 7 qua bình 5
ë Múc đҫy bình 7
ë Đә tӯ bình 7 qua cho đҫy bình 5
ë Phҫn còn lҥi trong bình 7 là 4 lít
|0
0


?

ë ³Khi bình 7 đҫy mà bình 5 chưa đҫy thì đә


nưӟc tӯ bình 7 qua cho đҫy bình 5´.
ë Thӱ truyӅn kinh nghiӋm này cho máy tính đӇ
nó vұn dөng cho trưӡng hӧp tәng quát.
ë Giҧ sӱ Vx<Vy, gӑi lưӧng nưӟc trong bình X
là x, trong bình Y là y. ĐiӅu kiӋn kӃt thúc bài
toán là x=z hoһc y=z. Ban đҫu x=y=0.

|0
G
7
2


=> 

ë NӃu bình Y rӛng thì đә nưӟc đҫy bình Y.


ë NӃu bình X đҫy thì đә hӃt ra.
ë NӃu bình Y không rӛng, bình X chưa đҫy thì
đә nưӟc tӯ bình Y sang bình X cho đӃn khi
hӃt nưӟc trong bình Y hoһc bình X đҫy.

|0

x:=0; y:=0;
While (x<>z) and (y<>z) do
begin
if y=0 then y:=Vy;
if x=Vx then x:=0;
if y>0 then
begin
k:=min(Vx-x, y);
y:=y-k;
x:=xmk;
End;
end;
|0
ù
$29M/ u 0T =

ë L1: x=0, y=4


ë L3: x=3, y=1
ë L2: x=0, y=1
ë L3: x=1, y=0
ë L1: x=1, y=4
ë L3: x=3, y=2

|0
I
%

ë 3 luұt đưӧc cài đһt trên đây đưӧc gӑi là cơ


sӣ tri thӭc.
ë Cách tìm kiӃm các luұt rӗi áp dөng nó đưӧc
gӑi là đӝng cơ suy diӉn.
ë Mӝt hӋ tri thӭc = Cơ sӣ tri thӭc m Đӝng cơ
suy diӉn

|0
`
7
2

  &?

ë SV nào đұu TN và xin đưӧc viӋc làm thì có


cuӝc sӕng әn đӏnh.
ë SV nào chăm hoһc may mҳn thì đұu TN
ë SV nào may mҳn thì xin đưӧc viӋc làm
ë Nam không chăm nhưng may mҳn.
? Cuӝc sӕng cӫa Nam có әn đӏnh không

|G

G
O&
 (#

|G
|
=
2


ë NNBDTT: ĐӇ biӇu diӉn sӵ hiӇu biӃt, kinh


nghiӋm cӫa con ngưӡi.
ë Chúng ta có thӇ dùng các câu trong ngôn
ngӳ tӵ nhiên.
ë ĐӇ thuұn tiӋn cho viӋc xӱ lý cӫa máy tính
phҧi dùng mӝt sӕ ngôn ngӳ hình thӭc.
ë NNBDTT là mӝt ngôn ngӳ hình thӭc gӗm hai
thành phҫn cơ bҧn: cú pháp và ngӳ nghĩa
|G
=
,

ë Cú pháp gӗm các ký hiӋu, qui tҳc liên kӃt (các phép
toán) đӇ tҥo thành các câu (các công thӭc).
ë Ngӳ nghĩa chӍ xuҩt hiӋn khi các ký hiӋu nhұn giá trӏ
trong mӝt miӅn nào đó.
ë Ngoài ra, ngôn ngӳ cҫn đưӧc trang bӏ mӝt cơ chӃ
lұp luұn. Cơ chӃ này sӱ dөng các luұt suy diӉn. Mӝt
luұt suy diӉn là cách đӇ suy ra mӝt công thӭc tӯ mӝt
tұp công thӭc nào đó.

|G
u
%

ë =
2

 
, ,U
U
  , 

|G
0
| , ,

ë Hҵng logic True, False


ë MӋnh đӅ P, Q,...công thӭc A, B,..
ë Phép toán logic: , ,¬,ĺ
ë Các dҩu (,)

|G
G
# +/ 23

ë Các mӋnh đӅ là công thӭc


ë NӃu A, B là công thӭc thì ¬A là công thӭc và
A*B là công thӭc vӟi * là mӝt phép toán logic
2 ngôi.

|G

# '

ë Các mӋnh đӅ là các câu đơn, còn lҥi là các


câu phӭc.
ë NӃu P là mӝt mӋnh đӅ thì P và đưӧc gӑi là
các literal và P là literal dương, ¬P là literal
âm.
ë Câu phӭc có dҥng sau gӑi là câu tuyӇn
A1 « An
|G
ù
=

ë Minh hӑa? Khi mӛi thành phҫn cơ bҧn (biӃn mӋnh


đӅ) cӫa mӝt công thӭc nhұn mӝt giá trӏ (khҷng đӏnh)
trên mӝt miӅn nào đó - nào đó - đó là mӝt minh hӑa
(interpretation) cӫa công thӭc.
ë Như vұy, mӝt minh hӑa là mӝt phép gán mӛi mӋnh
đӅ vӟi mӝt giá trӏ chân lý.
ë Khi đó mӛi câu sӁ có mӝt giá trӏ chân lý đưӧc tính
qua giá trӏ chân lý cӫa các thành phҫn bӣi các phép
toán logic gӑi là phương pháp bҧng chân lý.
|G
I
$(%

ë Công thӭc thӓa đưӧc là công thӭc đúng


trong mӝt minh hӑa nào đó(tӗn tҥi).
ë Ví dө. A B là mӝt công thӭc thӓa đưӧc.
ë Công thӭc không thӓa đưӧc nӃu nó sai trong
mӑi minh hӑa.
ë Ví dө. A ¬A là mӝt công thӭc không thӓa
đưӧc.
|G
`
>(

ë Công thӭc là hҵng đúng hay mӝt tautology


nӃu nó đúng vӟi mӑi minh hӑa.
ë Ví dө. A ¬A là công thӭc hҵng đúng.
ë Mô hình cӫa mӝt công thӭc? là mӝt minh
hӑa đӇ cho công thӭc đúng.

|

uD%V+

ë Nhҵm chuҭn hóa công thӭc, đưa vӅ dҥng


thuұn lӧi cho viӋc lұp luұn suy diӉn.
ë Mӝt công thӭc ӣ dҥng chuҭn hӝi nӃu nó là
hӝi cӫa các câu tuyӇn.

|
|
(

ë Hai công thӭc A, B là tương đương, kí hiӋu


là AŁB, nӃu chúng có cùng giá trӏ chân lý đӕi
vӟi mӑi minh hӑa.
ë Các đӗng nhҩt vӅ tính giao hóan, kӃt hӧp,
phân phӕi, De Morgan
ë AĺBŁ¬A B AļBŁ(AĺB) (BĺA)
ë ¬(¬A)=A
|
=
1) Bӓ các dҩu kéo theo bҵng cách dùng
AĺBŁ¬A B
2) ChuyӇn các dҩu phӫ đӏnh vào sát các biӃn
mӋnh đӅ bҵng luұt De Morgan hoһc ¬(¬A)=A
3) Áp dөng luұt phân phӕi thay các công thӭc
dҥng A (B C)Ł(A B) (A C)

|
u
$29

ë (A ¬B)ĺ(A C)

|
0
0 &

ë Mӑi công thӭc đӅu có thӇ đưa vӅ dҥng


chuҭn hӝi, tӭc là hӝi cӫa các tuyӇn.
ë Mӛi câu tuyӇn có dҥng
¬P1 « ¬Pm Q1 « Qn
ë Câu này tương đương vӟi câu (kowalski)
(P1 « Pm)ĺ(Q1 « Qn)

|
G
7
2
 <3


ë Khi n<=1 ta đưӧc là câu Horn.


ë Vӟi n=1 dҥng câu này trӣ thành
(P1 « Pm)ĺQ
ë Thưӡng gһp trong các hӋ chuyên gia hoһc
trong các bài toán lұp luұn xҩp xӍ.
ë Vӟi n=1, m=0 dҥng câu này trӣ thành
ĺQ đưӧc viӃt là Q ± câu sӵ kiӋn
|

GO < 2


ë HӋ quҧ logic? B đưӧc gӑi là mӝt hӋ quҧ logic


cӫa tұp {A1,«,An} nӃu bҩt kǤ mӝt minh hӑa
nào mà các Ai đúng thì B cũng đúng.
ë ViӃt dưӟi dҥng
A1,«,An
B
ë KiӇm tra tҩt cҧ các minh hӑa: khó khăn!
|
ù
< < 2
*"

|
I
|
`
O < 2
((+?

ë Mӝt luұt suy diӉn là đúng đҳn (sound) nӃu


vӟi bҩt kǤ mӝt mô hình nào cӫa giҧ thiӃt thì
đó cũng là mô hình cӫa kӃt luұn.
ë Có thӇ chӭng minh các luұt suy diӉn trên là
đúng đҳn.
ë Luұt phân giҧi là tәng quát cho cҧ 3 luұt MP,
MT và bҳc cҫu.



O < 2
( (?

ë Mӝt tұp luұt suy diӉn gӑi là đҫy đӫ nӃu mӑi


hӋ quҧ logic đӅu có thӇ suy ra tӯ tұp các tiên
đӅ chӍ bҵng các luұt suy diӉn cӫa tұp đó.


|

!(#(1
?

ë Tiên đӅ là mӝt tұp các CT cho trưӟc, thưӡng


là không suy ra tӯ các CT khác.
ë Đӏnh lý là tұp các công thӭc suy ra tӯ các
tiên đӅ bҵng các luұt suy diӉn.
ë Dãy các suy diӉn đưӧc sӱ dөng gӑi là chӭng
minh cӫa đӏnh lý.


=
$29"#


ë Cho
Q SĺG H (1)
PĺQ (2)
RĺS (3)
P (4)
R (5)
ë Chӭng minh G


u

= =$:,

ë Vì PĺQŁ (P ¬Q)ĺ0 nên đӇ cm PĺQ, ta sӁ


cm P ¬Q là mӝt công thӭc không thӓa
đưӧc.
ë Mӣ rӝng: đӇ cm Q là hӋ quҧ logic cӫa các
công thӭc P1,..,Pn ta sӁ cm P1 « Pn ¬Q
là không thӓa đưӧc.
ë Làm thӃ nào đӇ CM mӝt CT không thӓa
đưӧc?

0


$


ë Câu tuyӇn A chӭa P, câu tuyӇn B chӭa ¬P


thì áp dөng đưӧc luұt phân giҧi.
ë A và B: hai câu phân giҧi đưӧc.
ë KӃt quҧ thu đưӧc gӑi là giҧi thӭc cӫa chúng:
Res(A,B)
ë Res(P, ¬P ) là câu rӛng: Ƒ


G


 ,

ë G thӭc cӫa G={P1,«,Pn} là các câu trong P


và tҩt cҧ các câu sinh ra tӯ G bҵng cách chӍ
dùng luұt phân giҧi. Kí hiӋu: R(G)
ë Luұt phân giҧi là đҫy đӫ đӇ chӭng minh tұp
câu không thӓa đưӧc!



1,


ë Mӝt tұp câu tuyӇn G là không thӓa đưӧc khi


và chӍ khi Ƒ thuӝc R(G).
ë Nghĩa là: khi tính R(G) nӃu sinh đưӧc câu Ƒ
thì tұp công thӭc G là không thӓa đưӧc,
ngưӧc lҥi thì thӓa đưӧc.


ù
9,


procedure Resolution;
Input: Tap G cac cau tuyen
Output: G thoa duoc hay khong thoa duoc?
Begin
repeat
Chӑn 2 câu A,B thuӝc G
If A, B phân giҧi đưӧc then tính Res(A,B)
If Res(A,B) là câu mӟi then thêm Res(A,B) vào G
until nhұn đưӧc câu rӛng hoһc không có câu mӟi xuҩt hiӋn;
If nhұn đưӧc câu rӛng then G không thӓa đưӧc
else G thӓa đưӧc
end.

I
 /C

ë Thӫ tөc phân giҧi dӯng sau hӳu hҥn bưӟc.


ë ChӍ sӱ dөng luұt pg có thӇ cm mӝt CT bҩt kǤ
có là hӋ quҧ logic cӫa mӝt tұp CT cho trưӟc.
ë Vì vұy, luұt pg là đҫy đӫ cho chӭng minh bác
bӓ.


`
9 W

ë Thêm ¬H vào G
ë ChuyӇn các ct trong G thành dҥng chuҭn hӝi
ë Tӯ dҥng chuҭn hӝi th.lұp các câu tuyӇn G¶
ë Áp dөng thӫ tөc phân giҧi cho tұp câu G¶
ë NӃu G¶ không thӓa đưӧc thì GĺH, ngưӧc lҥi
H không là hӋ quҧ logic cӫa G.

|I

|I
|
|I
=

O
 X Y

|I
u
 !

ë Logic mӋnh đӅ chӍ biӇu diӉn đưӧc nhӳng sӵ


kiӋn, không thӇ biӇu diӉn đưӧc tính chҩt cӫa
mӝt lӟp đӕi tưӧng hoһc câu
ë Không có vұt gì là lӟn nhҩt, cũng không có
vұt gì là bé nhҩt«
ë Các ngôn ngӳ dùng cho suy luұn trong
TTNT đӅu dӵa trên cơ sӣ cӫa logic vӏ tӯ.

|I
0
ë Logic vӏ tӯ là sӵ mӣ rӝng cӫa logic mӋnh đӅ.
ë LGVT cho phép biӇu diӉn mӝt lӟp các đӕi
tưӧng trong mӝt miӅn nào đó.
ë Thuӝc tính cӫa đӕi tưӧng, mӕi quan hӋ giӳa
các đӕi tưӧng - biӇu thӏ bӣi các vӏ tӯ.
ë Thêm các lưӧng tӯ tӗn tҥi, vӟi mӑi đӇ biӇu
diӉn câu phӭc tҥp.
|I
G
| , ,

ë Hҵng: a,b,c,..
ë BiӃn: x,y,u,v,..
ë Vӏ tӯ: P(x,y), Q(x),..Vӏ tӯ không biӃn là MĐ.
ë Hàm: f,g
ë Phép toán logic
ë Kí hiӋu lưӧng tӯ: tӗn tҥi, vӟi mӑi
ë Dҩu câu, ngoһc,...
|I

%

ë Các hҥng thӭc (term): là các biӇu thӭc mô tҧ


đӕi tưӧng.
ë ĐN:
± Các hҵng, biӃn là hҥng thӭc.
± NӃu t1,...,tn là các hҥng thӭc và f là hàm thì
f(t1,...,tn) là hҥng thӭc

|I
ù
,0- (

ë ĐN
± MӋnh đӅ là công thӭc phân tӱ
± NӃu P là vӏ tӯ n biӃn và t1,...,tn là các hҥng thӭc
thì P(t1,...,tn) là công thӭc phân tӱ.
ë Thich là vӏ tӯ hai biӃn, Thich(An, Java) là
CTPT
ë Yeu(X,Y); t=chong(X); Yeu(X,chong(X))
ë X=lan: Lan yêu chӗng Lan!
|I
I


ë CT đưӧc xây dӵng tӯ CTPT bҵng các phép toán


logic, các lưӧng tӯ.

ë Các công thӭc phân tӱ là công thӭc
ë NӃu G và H là công thӭc thì ¬G và G*H là các
công thӭc vӟi * là phép toán logic.
ë NӃu G là công thӭc và x là biӃn thì
† †  # † †
là các công thӭc.
|I
`
=

ë Minh hӑa: hҵng, biӃn nhұn giá trӏ trên mӝt


miӅn cө thӇ; các vӏ tӯ nhұn các thuӝc tính,
quan hӋ cө thӇ, các hàm xác đӏnh cө thӇ.
ë Ý nghĩa cӫa các lưӧng tӯ như tên gӑi cӫa
nó.

|`

(

ë P(x) : x là phө nӳ
ë x=Lan vӟi minh hӑa này P(Lan) biӇu diӉn
cho câu Lan là phө nӳ.
ë Câu đơn có thӇ xuҩt hiӋn các hҥng thӭc
(term).
ë Ví dө Me(x) chӍ đӕi tưӧng là mҽ cӫa x nào
đó. Câu đơn P(Me(Lan)) có nghĩa là "Mҽ cӫa
Lan là mӝt phө nӳ".
|`
|
Z

ë Vӟi mӑi: Xđӏnh giá trӏ bҵng hӝi các giá trӏ cӫa
công thӭc khi biӃn nhұn mӛi đӕi tưӧng trong
miӅn xác đӏnh
ë Tӗn tҥi: Bҵng tuyӇn
ë Ví dө VxP(x) nӃu lҩy miӅn xác đӏnh là sinh
viên lӟp K1 thì là sai, ]xP(x) là đúng.

|`
=
,:

ë Xác đinh tӯ ý nghĩa cӫa các phép toán logic


và ý nghĩa cӫa các lưӧng tӯ.
ë VD. Mӑi SV nam đӅu thích...nhұu
ë Đúng khi nào? Sai khi nào?

|`
u
$(%

ë NӃu đã có cách xác đӏnh đưӧc giá trӏ chân lý


cӫa công thӭc ӭng vӟi mӝt minh hӑa thì ta
có thӇ đӏnh nghĩa:
± Công thӭc thӓa đưӧc, không thӓa đưӧc
± Công thӭc hҵng đúng,
± Mô hình như trong logic mӋnh đӅ.

|`
0
u (

ë Đӏnh nghĩa như trong logic mӋnh đӅ.


ë Các CT tương đương khác:
Đәi tên biӃn
Phӫ đӏnh công thӭc chӭa lưӧng tӯ
Phân phӕi lưӧng tӯ vӟi phép hӝi, tuyӇn.

|`
G
0D%V+

ë Đưa vӅ dҥng chuҭn tҳc hӝi, tӭc hӝi cӫa các câu
tuyӇn đӇ sӱ dөng đưӧc trong các khai báo cӫa ngôn
ngӳ prolog.
ë Thӫ tөc:
1. Bӓ các kéo theo
2. ChuyӇn các phӫ đӏnh đӃn các công thӭc phân tӱ
3. Bӓ lưӧng tӯ tӗn tҥi bҵng cách dùng hàm Skolem

|`

4. Đһt tên lҥi đӇ tránh nghĩa nhұp nhҵng khi lҩy
trùng miӅn xác đӏnh
5. Loҥi bӓ lưӧng tӱ vӟi mӑi, ngҫm hiӇu cho
toàn miӅn xác đӏnh
6. ChuyӇn các tuyӇn đӃn các CTPT
7. Loҥi bӓ hӝi, tách riêng các câu tuyӇn.
8. Đһt lҥi tên biӃn cho mӛi câu.
|`
ù
D7
2
 
<

ë SV nào đұu TN và xin đưӧc viӋc làm thì có


cuӝc sӕng әn đӏnh.
ë SV nào chăm hoһc may mҳn thì đұu TN
ë SV nào may mҳn thì xin đưӧc viӋc làm
ë Nam không chăm nhưng may mҳn.

|`
I
GCác luұt suy diӉn

ë Luұt thay thӃ phә dөng

† †
,† @ ð

|`
`
C,

ë Có dҥng
þ ,† @ ð †R @ ðR

ë Trong đó xi là các biӃn; ti là các hҥng thӭc


không chӭa biӃn.

ë Ñ là kí hiӋu khi thӃ vào công thӭc G

=

,8

ë NӃu tӗn tҥi mӝt phép thӃ mà áp dөng cho 2


công thӭc G, H ta thu đưӧc cùng mӝt kӃt
quҧ thì G, H đưӧc gӑi là hӧp nhҩt đưӧc bӣi
phép thӃ đó.
ë Ví dө: Thich(x,bongda); Thich(Nam,y)

=
|
O  * 

=
=
$29

ë SV(x) Nam(x)ĺThich(x,bongda)
ë SV(minh)
ë Nam(minh)
KL Thich(minh,bongda)

=
u
O ,

 * 

=
0
 
=> ,


ë PP còn đúng trong logic vӏ tӯ


ë ChӍ dùng luұt phân giҧi có thӇ CM đưӧc
GĺH? bҵng cách CM G và ¬H không thӓa
đưӧc.
ë ³Mӝt tâp công thӭc là không thoҧ đưӧc khi
và chӍ khi nó suy dүn ra câu rӛng bҵng luұt
phân giҧi´

=
G
9
= =$
Procedure P_Resolution;
Input: Tұp G, H
Output: H có suy ra đưӧc tӯ G hay không?
Begin
1. BiӃn đәi các câu trong G và ¬H vӅ dҥng chuҭn tҳc hӝi
2. Thành lұp các câu tuyӇn
3. Repeat
Chӑn 2 câu A, B
Tính giҧi thӭc Res(A,B)
Bә sung vào tұp công thӭc
Until xuҩt hiӋn câu rӛng hoһc không sinh câu mӟi
4. NӃu xuҩt hiӋn câu rӛng thì H đúng, ngưӧc lҥi thì H sai
End;
=

$29

ë SV nào đұu TN và xin đưӧc viӋc làm thì có


cuӝc sӕng әn đӏnh.
ë SV nào chăm hoһc may mҳn thì đұu TN
ë SV nào may mҳn thì xin đưӧc viӋc làm
ë Nam không chăm nhưng may mҳn.
CM cuӝc sӕng cӫa Nam әn đӏnh

=
ù
 , "Z 

1. TN(x) CoVL(x)ĺOndinh(x)
2. Cham(y) Mayman(y)ĺTN(y)
3. Mayman(z) )ĺCoVL(z)
4. ¬Cham(nam)
5. Mayman(nam)

=
I
ù
7PDQ  R 
7[ O SOO

=
`
O12&&2A&

ë LGVT rҩt mҥnh đӇ biӇu diӉn tri thӭc và có


thӇ CM chӍ dùng luұt phân giҧi.
ë Tuy nhiên CM có đӝ phӭc tҥp cao
ë ChӍ xét các câu Horn đӫ đӇ biӇu diӉn nhiӅu
tri thӭc
ë Áp dөng đưӧc nhiӅu thӫ tөc suy diӉn hiӋu
quҧ hơn có thӇ ӭng dөng trong nhiӅu lĩnh
vӵc khác nhau.
=|

|7
2

=> 

ë Mӝt luұt nӃu...thì có dҥng câu Horn


 R ­
ë VD
NӃu
bӋnh nhân ho lâu và
bӋnh nhân thưӡng sӕt vào buәi chiӅu
thì
bӋnh nhân có khҧ năng bӏ bӋnh lao.
=|
|
$29=

NӃu
Tam giác có mӝt góc bҵng 60 đӝ
Tam giác có hai cҥnh bҵng nhau
thì
Tam giác đó là tam giác đӅu.

=|
=
.

ë Các câu như vұy dùng đӇ bd tұp luұt và có


đһc trưng:
- Mӛi luұt mô tҧ mӝt phҫn tương đӕi đӝc lұp
cӫa tri thӭc
- Có thӇ bә sung loҥi bӓ các luұt mӝt cách dӉ
dàng mà không ҧnh hưӣng đӃn các luұt
khác.

=|
u
= 2



ë Mӝt CSTT có hai phҫn:


± Tұp các câu luұt: R
± Tұp các câu sӵ kiӋn: F
ë Tư tưӣng: KiӇm tra luұt nào thӓa mãn giҧ
thiӃt sinh ra sӵ kiӋn mӟi, bә sung vào tұp F
cho đӃn khi điӅu cҫn chӭng minh rơi vào F

=|
0
D

1. TN(x) CoVL(x)ĺOndinh(x)
2. Cham(x)ĺTN(x)
3. Mayman(x) ĺTN(x)
4. Mayman(x)ĺCoVL(x)
5. ¬Cham(nam)
6. Mayman(nam)

=|
G
9< 2


Procedure SDtien;
Input: R, F, H
Output: H đúng/sai
Begin
TG:=F; S:=Loc(R,TG);
While (H chua thuoc TG và S khac rong) do
Begin
r ĸ S;
TG:=TG m right(r);
R:=R-r;
S:=Loc(R,TG);
End;
If H thuӝc TG then H đúng Else H sai;
End;

=|

 /C

ë Tұp F đưӧc sinh ra khá lӟn


ë Trong F sӁ có nhiӅu sӵ kiӋn chҷng liên quan
gì đӃn H
ë Không có qui tҳc đӇ chӑn luұt

=|
ù
u 2
A

ë BiӇu diӉn thành đӗ thӏ và/hoһc


ë P1 « PnĺQ
ë Thay vì chӭng minh Q đi CM tҩt cҧ các giҧ
thiӃt sinh ra Q là đúng
ë ĐӇ cm các Pi ta cm các giҧ thiӃt cӫa Pi

=|
I
ë Mӝt giҧ thiӃt hiӇn nhiên là đúng nӃu nó thuӝc
tұp sӵ kiӋn F
ë NӃu tҩt cҧ các Pi đúng thì Q đúng
ë Ngưӧc lҥi nӃu có Pi không đúng thì quay lui
chӭng minh theo mӝt luұt khác có kӃt luұn là
Q.
ë NӃu không tìm đưӧc luұt nào như vұy thì Q
sai.
=|
`
9

Kí hiӋu S(q) chӍ cho tұp các luұt có vӃ phҧi là q


function sdlui(q): boolean;
{true nӃu q cm đưӧc, ngưӧc lҥi: false}
begin
if (q thuӝc F) then sdlui:=true
else if S(q)=[ ] then sdlui:=false
else
begin
S:=S(q);
==

while S<>[ ] do
begin
r ĸ S;
OK:=true;
for (l left(r)) do
if sdlui(l)=false then
begin
OK:=false;
beak; {for}
end;
if OK then break; {while}
S:=S ± {r};
end;
==
|
if OK then sdlui:=true
else sdlui:=false;
end;
end;

==
=
0R29

ë HӋ chuyên gia
ë Lұp trình Prolog

==
u
  !


ë VD HCG tư vҩn dinh dưӥng bӋnh nhân tiӇu


đưӡng.
ë Các thành phҫn:
± Cơ sӣ tri thӭc: tri thӭc luұt m tt sӵ kiӋn
± Bӝ suy diӉn
± Bӝ giҧi thích
± Giao diӋn

==
0
=O ,&&

ë Ngôn ngӳ lұp trình logic


ë CSTT các câu Horn bd bҵng vӏ tӯ
ë Thӫ tөc suy diӉn lùi: đã đưӧc cài đһt sҹn.

==
G
, ,

ë Hҵng: viӃt chӳ thưӡng a,b,an, nam,...


ë BiӃn: viӃt chӳ in đҫu tên: X, Y, Sinhvien,
Thaygiao
ë Các phép toán:
, chӍ phép and
; chӍ phép or
:- chӍ phép if...then....
not - phӫ đӏnh (không dùng trong kӃt luұn)
==

, ,%

ë Câu là thành phҫn đơn vӏ cӫa chương trình.


Mӝt câu có thӇ viӃt trên nhiӅu dòng. KӃt thúc
câu là dҩu chҩm. Có hai loҥi câu: câu sӵ
kiӋn và câu luұt (chӍ dùng câu Horn).
ë Câu Horn viӃt dưӟi dҥng q:-p1,p2,...,pn.
Trong đó q gӑi là đҫu (head), p1,...,pn gӑi là
thân.
ë Vӏ tӯ. bao gӗm tên vӏ tӯ và các biӃn. Mӝt vӏ
tӯ có thӇ có nhiӅu biӃn.
==
ù
029&&

ë ViӃt chương trình .pl


ë Dӏch: consult
ë Chҥy: Hӓi (goal)

==
I
% 

? cunhan(nam).
Yes
? cunhan(hung).
No

==
`
D

ë sinhvien(nam).
ë sinhvien(lan).
ë sinhvien(hoa).
ë hocvien(hung).
ë cunhan(X):-sinhvien(X).

=u

<>"Z(.=


ë write(.)
write(³Toi thich´), write(Y).
ë is
N is 5
ë not
khongcham(nam):-not cham(nam).
ë fail
cham(nam):- fail.
=u
|
<

ë Sinh viên
ë Tháp Hà Nӝi
ë Tính giai thӯa
ë Tính tәng
ë Ai là ngưӡi giӃt chӃt con mèo!

=u
=
&&- ,& O  \

ë Đһc tҧ các suy luұn


ë Suy diӉn lùi

=u
u
u
O
 'SOOF]F^

=u
0
I '

=u
G
| ,!

ë Tұp mӡ - fuzzy set: Zadeh (1965)


ë Tұp hӧp rõ: {3}, {3,4}, tұp nhӳng đӏa điӇm
cách TT không quá 1km.
ë Tұp hӧp mӡ: các sӕ gҫn bҵng 3, tұp nhӳng
đӏa điӇm gҫn TT, tұp nhӳng ngưӡi trҿ tuәi.

=u

ë X={1,2,3,4,5};
NӃu A={3}
ë A={(1,0),(2,0),(3,1),(4,0),(5,0) }
NӃu A là sӕ gҫn bҵng 3:
ë A={(1,0),(2,0.6),(3,1),(4,0.6),(5,0) }
A={(x,m(x)) |x thuӝc X}

=u
ù


ë Cho X là tұp khác rӛng. Mӝt tұp mӡ A trên X đưӧc


xác đӏnh bӣi hàm thành viên   `  ,
ë X - tұp vũ trө
Ký hiӋu:  † @ † 
ë NӃu X rӡi rҥc þ
Q †
u 
Q †R 
† †R
Q  †
ë NӃu X liên tөc þ  ï†

†

=u
I
$29/ ("
!

ë A: tұp sӕ gҫn bҵng 1 trên X=R

ë A: ³trҿ tuәi´

ë Tӕc đӝ xe hơi: chұm, nhanh, trung bình

=u
`
= 

=

ë Giá đӣ
ë Nhân
ë Biên
ë Đӝ cao
ë Tұp mӡ chuҭn
ë Lát cҳt anpha

=0

u ,C,& ! ,!

ë Hӧp A và B
ë Giao A và B
ë Phҫn bù cӫa A
± A con B
± Tұp mӡ 0x
± Tұp mӡ 1x

=0
|
C,& 

ë Tích Decac
ë Mӣ rӝng hình trө
ë Phép chiӃu

=0
=
0N ,C,& 

ë Giao A và B: Min(A(x),B(x))
ë Có thӇ thay min bҵng mӝt phép toán có tính
chҩt như min: t-norm
ë Đӏnh nghĩa: t-norm là hàm [0,1] [0,1] vào [0,1]
± Giao hoán, kӃt hӧp, có 1 là đơn vӏ, không giҧm
theo tӯng biӃn
ë Ví dө: x*y là mӝt t-norm
=0
u
-&:-&&

ë Hӧp A và B: Max(A(x),B(x))
ë Có thӇ thay max bҵng mӝt phép toán có tính
chҩt như max: s-norm
ë Đӏnh nghĩa: s-norm là hàm [0,1] [0,1] vào
[0,1]
± Giao hoán, kӃt hӧp, có 0 là đơn vӏ, không giҧm
theo tӯng biӃn
ë Ví dө: min(xmy,1) mӝt s-norm
=0
0
7A!

ë Mӣ rӝng cӫa 1-
ë N: [0,1] [0,1] thӓa N(0)=1; N(1)=0 và không
tăng.
ë Sugeno N(x)=(1-x)/(1mkx), k>-1

=0
G
G# !

Rõ pas VB Java
a 1 1 0
b 0 1 1
c 1 0 1
Mӡ pas VB Java
a 1 0.8 0.2
b 0.2 0.9 0.1
c 0.7 0.3 0.9
=0

, * !

y1
R S

x z

y2

R.S(x,z)=?
=0
ù
`O
 '

=0
I
|7


ë BiӃn có thӇ nhұn giá trӏ là ngôn ngӳ thay vì


sӕ như trưӟc
ë NhiӋt đӝ cao, tӕc đӝ nhanh,...
ë BiӃn NN X=(x,U,T(x),R,M)

=0
`
= (#!

ë Dҥng ³X is A´ ± ³NhiӋt đӝ là cao´


ë A: tұp mӡ - ³cao´: tұp mӡ
ë BiӃn NN X có biӃn cơ sӣ x
ë Vӟi mӛi x, A(x) ± GTCL cӫa ³X is A´ tҥi x
ë VD...

=G

u,  (#!

ë P= ³nhiӋt đӝ cao và áp suҩt thҩp´

ë A(x) B(y)=R(x,y)=min(A(x),B(y))
ë A(x) B(y)=R(x,y)=max(A(x),B(y))
ë ¬A(x)=1-A(x)
=G
|
 (#C&&!

=G
=
=G
u
C,C&&_2

=G
0
D

=G
G
C,C&&2

=G

2
$

=G
ù
D

=G
I
0#
+&O !

=G
`
J:/ 7: * :/ 

=

NJ`:/

=
|
F (7`: 

=
=
D

=
u
D

=
0
?

=
G
|
'

=

| 



ë ĐiӅu chӍnh tӵ đӝng van sao cho nưӟc trong


bình.
ë Dӵa theo mӝt sӕ nguyên tҳc gӑi là các luұt:
NӃu mӵc nưӟc thҩp thì mӣ van lӟn
NӃu mӵc trung bình thì mӣ van trung bình
NӃu mӵc nưӟc cao thì mӣ van nhӓ
NӃu mӵc nưӟc rҩt cao thì mӣ van rҩt nhӓ

=
ù
 (
#
!

ë Tӵ đӝng điӅu khiӇn theo luұt mӡ: HĐK mӡ


ë Đһc trưng:
Nguyên tҳc đk: các luұt (kinh nghiӋm)
Không cҫn mô hình tóan hӑc chính xác
Mӵc nưӟc: đҫu vào
Van: đҫu ra

=
I
%

ë Bӝ ĐK mӡ: tӵ đӝng hóa dӵa trên kinh


nghiӋm con ngưӡi.
ë HӋ mӡ là hӋ dӵa trên tri thӭc
ë Ӭng dөng thành công trong nhiӅu lĩnh vӵc:
hӋ chuyên gia y hӑc, quҧn lý, nhҩt là các hӋ
điӅu khiӇn.

=
`
= 8 !

CS luұt

x A¶ B¶ y
Mӡ hóa Bӝ suy diӉn Khӱ mӡ



u&%

ë SISO mӝt đҫu vào - mӝt đҫu ra


ë MISO nhiӅu đҫu vào - mӝt đҫu ra
ë MIMO nhiӅu đҫu vào nhiӅu đҫu ra
ChӍ cҫn quan tâm đӃn dҥng MISO?


|
0F 23=< 2
Z 
 

ë Luұt thӭ k trong CS luұt có dҥng:


if x1 is Ak1,...,xn is Akn then Y is Bk
ë ChuyӇn thành dҥng
if x is Ak then Y is Bk
Ӣ đây, x=(x1,...,xn); Ak=Ak1 x...xAkn, tính toán
cө thӇ theo min hoһc t-norm
ë Mӛi luұt xác đinh Rk theo Denies-Rescher,
Zadeh, Mamdani,...

=
 ,'< 2
<

ë KӃt hӧp các Rk thành mӝt R (có thӇ phө


thuӝc hoһc đӝc lұp)
ë Tính B¶=A¶ o R


u
= 2
' ,<

ë Mӛi luұt k: if x is Ak then Y is Bk,


ë Tính B¶k= A¶ o Rk
ë KӃt hӧp các B¶k thu đưӧc B¶


0
 /C

ë Có nhiӅu kӃt quҧ thu đưӧc khi tính B¶:


± Chӑn pp1 hay pp2
± Chӑn cách tính R nào
± Chӑn t-norm, s-norm nào
ë Tiêu chuҭn chung là phù hӧp vӟi mong
muӕn chӫ quan cӫa chuyên gia


G
G!:aTT
a

&

ë BiӃn đәi giá trӏ đҫu vào x thuӝc U thành tұp


mӡ A¶ trên U
ë Nguyên tҳc:
± x phө thuӝc cao vào A¶
± HiӋu quҧ trong tính toán



 !

ë Mӡ hóa đơn thӇ


ë Mӡ hóa Gauss A¶(x)=exp(-((u-x)/a)^2), a>0
ë Mӡ hóa tam giác


ù
 0!:2aTT
a

&

ë BiӃn đәi tұp mӡ B¶ thành sӕ y thuӝc V đҥi


diӋn cho B¶
ë Nguyên tҳc
± B¶(y) lӟn nhҩt
± HiӋu quҧ trong tính toán
± Liên tөc: B¶ thay đәi ít thì y thay đәi ít


I
 0!

ë Khӱ mӡ lҩy max


ë Khӱ mӡ lҩy trӑng tâm


`
 

ë HӋ mӡ là hӋ tính xҩp xӍ vҥn năng:


± Sӱ dөng đưӧc tri thӭc chuyên gia dҥng ngôn ngӳ
± Hӧp lý khi đҫu vào không chính xác
ë VӅ lý thuyӃt:

=I

1:b

ë Giҧ sӱ f: UĺV, U là bӝ phұn cӫa R^n, V là


bӝ phұn cӫa R.
ë NӃu f liên tөc trên tұp compac U thì luôn luôn
tӗn tҥi mӝt hӋ mӡ F
ë Sao cho vӟi mӑi e>0: sup|F(x)-f(x)|<e, vӟi
mӑi x thuӝc U.

=I
|

You might also like