Muïc luïc

CHÖÔNG 1 MÔÛ ÑAÀU 1

1. Heä thoáng thoâng minh

1.1. Kieåm soaùt tình huoáng vaø löïa choïn 1.2. Hoïc 1.3. Söû duïng tri thöùc 1 1 2 2

2. Giôùi thieäu trí tueä nhaân taïo

2.1. Moät soá ví duï 2.2. Khaùi nieäm 2.3. Heä cô sôû tri thöùc 3 3 6 7

3. Moät soá baøi toaùn 8

CHÖÔNG 2 GIAÛI QUYEÁT VAÁN ÑEÀ BAÈNG TÌM KIEÁM 13

1. Khaùi nieäm

1.1. Khoâng gian traïng thaùi 1.2. Tìm kieám treân khoâng gian traïng thaùi 13 13 15

2. Caùc nguyeân lyù tìm kieám

2.1. Caùc nguyeân lyù cô baûn 2.2. Caùc nguyeân lyù thöû sai 2.3. Caùc nguyeân lyù heuristic 2.4. Caøi ñaët caùc nguyeân lyù 17 17 18 19 22

3. Aùp duïng

23 23 25 3.1. Caøi ñaët thuaät giaûi 3.2. Giaûi quyeát vaán ñeà

CHÖÔNG 3 TÌM KIEÁM VÔÙI HEURISTIC 29

1. Khaùi nieäm 29

2. Thuaät giaûi A* 31

3. Thuaät giaûi A0*

3.1. Tìm kieám treân caây AND/OR 3.2. Theâm heuristic - Thuaät giaûi AO* 34 35 38

CHÖÔNG 4 TROØ CHÔI ÑOÁI KHAÙNG VAØ PHÖÔNG PHAÙP GPS 43

1. Troø chôi ñoái khaùng 1.1. Khaùi nieäm 1.2. Thuaät giaûi 1.3. Baøn theâm veà heuristic 43 43 44 49

2. Phöông phaùp giaûi quyeát vaán ñeà toång quaùt (GPS)

2.1. Khaùi nieäm 2.2. Thuaät giaûi 50 50 51

CHÖÔNG 5 SUY LUAÄN LOGIC 63

1. Suy luaän 63

2. Suy luaän vôùi logic meänh ñeà

2.1. Khaùi nieäm 2.2. Moät soá cô cheá phaùt sinh söï kieän (quy taéc suy dieãn) 2.3. Suy luaän 64 64 65 67

3. Suy luaän vôùi logic caáp 1

3.1. Khaùi nieäm 3.2. Suy luaän 71 71 72

SUY LUAÄN VÔÙI THOÂNG TIN KHOÂNG CHAÉC CHAÉN 79 CHÖÔNG 6

1. Phaân boá xaùc suaát 1.1. Khaùi nieäm 1.2. Suy luaän 79 79 81

2. Suy luaän xaáp xæ 2.1. Khaùi nieäm 2.2. Suy luaän 83 83 85

3. Giôùi thieäu moät soá suy luaän khaùc

3.1. Phaân boá khaû xuaát 3.2. Logic môø 87 87 88

CHÖÔNG 7 BIEÅU DIEÃN TRI THÖÙC 97

1. Tri thöùc

1.1. Khaùi nieäm 1.2. Bieåu dieãn tri thöùc 97 97 99

2. Bieåu dieãn baèng logic vò töø

2.1. Bieåu dieãn caùc tri thöùc ñôn giaûn 2.2. Bieåu dieãn moái quan heä Instance vaø isa 2.3. Suy dieãn baèng hôïp giaûi (resolution) 100 100 101 101

3. Bieåu dieãn baèng luaät saûn xuaát

3.1. Khaùi nieäm 3.2. Bieåu dieãn 3.3. Suy dieãn 3.4. Baøn theâm 103 103 105 105 106

4. Laäp trình logic

Söï kieän vaø luaät

4.1. Caùc thaønh phaàn 4.2. 4.3. Hôïp giaûi vaø prolog 4.4. Moät soá ví duï 107 107 107 108 109

CHÖÔNG 8 CAÙC BIEÅU DIEÃN COÙ CAÁU TRUÙC 117

1. Maïng ngöõ nghóa 1.1. Khaùi nieäm 1.2. Bieåu dieãn 1.3. Suy dieãn 1.4. Ñoà thò khaùi nieäm 1.5. Chuyeån veà logic vò töø 1.6. Moät ví duï phöùc taïp 117 117 118 120 121 123 124

2. Giôùi thieäu moät soá bieåu dieãn khaùc

2.1. Bieåu dieãn baèng khung (Frames) 2.2. Bieåu dieãn tri thöùc baèng boä ba OAV 2.3. Boä nhôù keát hôïp (bieåu dieãn tri thöùc moâ phoûng heä thaàn kinh) 127 127 128 129

CHÖÔNG 9 THU NAÏP TRI THÖÙC 135

1. Môû ñaàu 135

2. Toång quan veà thu nhaän tri thöùc

2.1. Khaùi nieäm 1.1. Caùc caùch tieáp caän 136 136 138

3. Phöông phaùp caây quyeát ñònh

3.1. Khaùi nieäm 3.2. Tieáp caän cöïc tieåu Entropy trung bình 139 139 139

4. Phöông phaùp khoâng gian theá heä

4.1. Khaùi nieäm 4.2. Thuaät toaùn 141 141 141

5. Phöông phaùp xaây döïng moät giaûi thích

5.1. Khaùi nieäm 5.2. Thuaät toaùn 144 144 144

151 CHÖÔNG 10 MOÄT SOÁ CHUÛ ÑEÀ

1. Maïng neuron nhaân taïo

1.1. Khaùi nieäm 1.2. Giôùi thieäu moät soá luaät hoïc 151 151 154

2. Thuaät toaùn di truyeàn

2.1. Khaùi nieäm 2.2. Moâ hình vaø Thuaät toaùn 158 158 158

161 161 164 3. Xöû lyù raøng buoäc 3.1. Khaùi nieäm 3.2. Thuaät giaûi

4. Maùy vector hoã trôï (Supported Vector Machine - SVM)

167 167 167 168 4.1. Khaùi nieäm 4.2. Thuaät toaùn 4.3. Taùch phi tuyeán

PHUÏ LUÏC 2 NGOÂN NGÖÕ PROLOG 175

1. Giôùi thieäu prolog

Söï kieän vaø luaät

175 175 175 176 1.1. Caùc thaønh phaàn cuûa chöông trình 1.2. 1.3. Quan heä

1.4. Caùc kieåu ñoái töôïng 1.5. Cô cheá tìm kieám 1.6. Vaøi ví duï laäp trình prolog 177 180 182

2. Thaûo luaän

2.1. Bieåu dieãn caây 2.2. Duøng ñaïi soá quan heä 185 185 188

PHUÏ LUÏC 3 NGHIEÂN CÖÙU TÌNH HUOÁNG 191

1. Thieát keá höôùng ñoái töôïng duøng C++

1.1. Moät thieát keá ñôn giaûn 1.2. Moät thieát keá toång quaùt 191 191 194

201 2. Caøi ñaët thuaät toaùn A* baèng prolog

3. Xaây döïng heä chuyeân gia ñôn giaûn baèng prolog

3.1. Cô sôû tri thöùc 3.2. Caøi ñaët baèng prolog 203 203 203

4. Xaây döïng moät cô cheá thu nhaän tri thöùc

4.1. Cô sôû tri thöùc 4.2. Minh hoïa cô cheá hoïc 205 205 206

5. Ñoái saùnh

5.1. Khaùi nieäm 5.2. Ñoái saùnh bieåu thöùc 208 208 208

Lôøi noùi ñaàu

Ngaøy nay, haàu heát caùc lónh vöïc ñeàu coù söï tham gia cuûa maùy tính. Trong moät soá lónh vöïc, vai troø cuûa maùy tính laø raát quan troïng. Theá nhöng, vaãn coøn ñoù nhieàu coâng vieäc, duø giaûn ñôn, duø nguy hieåm, duø nhaøm chaùn, con ngöôøi vaãn cöù phaûi ñaûm nhieäm.

Lieäu coù theå xaây döïng nhöõng heä coù khaû naêng haønh ñoäng nhö con ngöôøi, suy

nghó nhö con ngöôøi. Nhöõng heä nhö vaäy seõ laøm thay con ngöôøi nhieàu vieäc, cuõng nhö hoã trôï con ngöôøi moät caùch hieäu quaû; ñeå con ngöôøi taäp trung vaøo nhöõng hoaït ñoäng mang tính saùng taïo.

Trí tueä nhaân taïo (AI – Artificial Intelligence) laø moät nhaùnh cuûa coâng ngheä thoâng tin nghieân cöùu caùc phöông phaùp xaây döïng trí tueä cho maùy. Taøi lieäu naøy giôùi thieäu cho sinh vieân nhöõng khía caïnh cô sôû quan troïng cuûa AI. Taøi lieäu goàm 10 chöông ñöôïc chia laøm 4 phaàn chính. Chöông 1 giôùi thieäu veà AI. Phaàn 1, goàm caùc chöông 2, 3 vaø 4, giôùi thieäu caùc phöông phaùp giaûi quyeát vaán ñeà. Phaàn 2, goàm caùc chöông 5 vaø 6, giôùi thieäu caùc phöông phaùp suy luaän, caùc phöông phaùp xöû lyù thoâng tin khoâng chaéc chaén. Phaàn 3, goàm caùc chöông 7, 8 vaø 9, giôùi thieäu caùc phöông phaùp bieåu dieãn vaø thu nhaän tri thöùc. Phaàn 4, goàm chöông 10 vaø hai phuï luïc, giôùi thieäu moät soá chuû ñeà nhö maïng neuron nhaân taïo, thuaät toaùn di truyeàn, xöû lyù raøng buoäc; cuõng giôùi thieäu veà prolog vaø thöû giaûi quyeát moät soá tình huoáng.

Duø raát coá gaéng, taøi lieäu ñöôïc vieát ra khoâng khoûi coù thieáu soùt. Raát mong söï goùp yù cuûa baïn ñoïc ñeå laàn taùi baûn sau ñöôïc toát hôn.

Nhaân dòp naøy toâi xin chaân thaønh caûm ôn Ban chuû nhieäm khoa Coâng ngheä thoâng tin tröôøng Ñaïi hoïc Kyõ thuaät Coâng ngheä ñaõ taïo ñieàu kieän cho toâi hoaøn thaønh taøi lieäu naøy.

Moïi yù kieán ñoùng goùp xin gôûi veà hvduc@hcm.vnn.vn. Xin chaân thaønh caûm ôn.

TpHCM, Thaùng 07/2006

Taùc giaû

Chöông 1

Môû ñaàu

Muïc tieâu cuûa AI laø xaây döïng nhöõng heä thoáng suy nghó vaø haønh ñoäng nhö con ngöôøi. Khi aáy heä thoáng seõ ñöôïc goïi laø thoâng minh. Noù phaûi coù khaû naêng giaûi quyeát vaán ñeà nhö con ngöôøi khi ñöùng tröôùc nhöõng tình huoáng töông töï.

1. Heä thoáng thoâng minh

1.1. Kieåm soaùt tình huoáng vaø löïa choïn

Xeùt heä giaûi phöông trình baäc hai. Yeâu caàu heä giaûi nhöõng phöông trình sau:

1) x2 – 3x – 4 = 0 4) x2 – 4 = 0

2) x2 – 4x + 3 = 0 5) x2 + 1 = 0

3) x2 – 4x + 4 = 0 6) x2 – 4x + 5 = 0

Tröôøng hôïp 1

Vôùi heä luoân luoân tính theo moät thuû tuïc cho tröôùc, chaúng haïn vôùi phöông trình thöù 1:

Tính Δ = 25

Suy ra x1 = -1, x2 = 4

Ta khoâng theå cho raèng heä laø thoâng minh.

Tröôøng hôïp 2

Vôùi heä coù nhöõng traû lôøi baát ngôø, chaúng haïn vôùi

Phöông trình thöù 1: Vì a – b + c = 0, ta coù x1 = -1 vaø x2 = -c/a = 4;

Phöông trình thöù 2: Vì a + b + c = 0, ta coù x1 = 1 vaø x2 = c/a = 3;

Phöông trình thöù 3: Bieán ñoåi thaønh (x – 2)2 = 0, ta coù x1 = x2 = 2;

Phöông trình thöù 4: Bieán ñoåi thaønh (x – 2)(x + 2) = 0, ta coù x1= 2, x2 = -2

Phöông trình thöù 5: Vì x2 + 1 > 0, phöông trình voâ nghieäm;

Phöông trình thöù 6: Vì Δ = -4<0, phöông trình voâ nghieäm.

Vaø ta coù theå cho raèng heä laø thoâng minh.

1.2. Hoïc

Xeùt moät troø chöông trình chôi côø vua ñôn giaûn. Vôùi nhöõng vaùn côø ñaàu tieân, chuùng ta thua noù vaø ta nghó noù laø thoâng minh. Cho ñeán khi ta tìm ñöôïc moät caùch thaéng vaø phaùt hieän thaáy duø thua, noù vaãn cöù thöïc hieän nhöõng nöôùc ñi cuõ. Theá laø ta thaát voïng, vì noù chôi quaù maùy moùc, chöông trình chaúng coøn tí gì laø thoâng minh. Neáu nhö noù coù khaû naêng ruùt ra kinh nghieäm töø nhöõng vaùn côø thua thì laïi khaùc. Töùc heä ñaõ coù khaû naêng hoïc.

Trôû laïi heä giaûi phöông trình baäc hai. Ta laïi yeâu caàu heä giaûi phöông trình

x2 – x + 6 = 0

Ta chôø ñôïi heä giaûi nhö sau:

Tìm thaáy x = 3 laø nghieäm, suy ra x1 = 3, x2 = -2.

Tuy nhieân heä khoâng bieát caùch giaûi naøy. Ta seõ daïy heä tri thöùc sau: thöû xem x coù laø nghieäm vôùi x = -3, -2, -1, 0, 1, 2, 3. Roài yeâu caàu heä giaûi laïi. Vaø heä giaûi nhö sau:

Tìm thaáy x = -2 laø nghieäm, suy ra x1 = -2, x2 = 3.

Baây giôø yeâu caàu heä giaûi phöông trình 1 ôû treân

x2 – 3x – 4 = 0

Coù khaû naêng heä seõ giaûi khaùc vôùi caùch giaûi cuõ

Tìm thaáy x = -1 laø nghieäm, suy ra x1 = -1, x2 = 4.

1.3. Söû duïng tri thöùc

Tieáp tuïc vôùi heä giaûi phöông trình baäc hai. Baây giôø chuùng ta yeâu caàu heä giaûi moät phöông trình baäc ba

x3 – 2x2 – x + 2 = 0

Coù theå heä khoâng giaûi ñöôïc. Tuy nhieân giaû söû heä coù tri thöùc: neáu a laø moät

nghieäm cuûa phöông trình f(x) = 0 thì nghieäm cuûa noù goàm a vaø caùc nghieäm cuûa phöông trình g(x) = 0, trong ñoù f(x) = (x – a)g(x).

Baây giôø ta cung caáp cho heä moät nghieäm x = 1. Luùc naøy heä coù theå giaûi nhö sau:

Vì 1 laø nghieäm, bieán ñoåi x3 – 2x2 – x + 2 = (x – 1)(x2 – x – 2)

Phöông trình x2 – x – 2 = 0 coù a – b + c = 0 neân coù hai nghieäm laø 1 vaø 2

Vaäy phöông trình coù 3 nghieäm: x1 = -1, x2 = 1, x3 = 2

Muoán söû duïng ñöôïc tri thöùc chöông trình phaûi coù khaû naêng nhaän bieát caùc söï kieän, caùc moái lieân heä vaø suy luaän. Roõ raøng moät heä giaûi phöông trình baäc hai nhö vaäy xöùng ñaùng ñöôïc goïi laø thoâng minh.

2. Giôùi thieäu trí tueä nhaân taïo

2.1. Moät soá ví duï

Ví duï 1.1

Tìm ñöôøng ñi ngaén nhaát töø N ñeán L vôùi baûng döõ lieä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 thaáy töø ñænh N coù theå ñi ñeán ñænh C, T hoaëc D.

Neân choïn ñænh naøo? lyù do? Coù khaû naêng thu ñöôïc ñöôøng ñi toái öu khoâng?

Giaû söû ta choïn ñænh C, vaø töø C coù theå ñi ñeán ñænh D.

• Coù neân ñi tieáp vaø choïn D hay quay lui ñeå choïn T hoaëc D?

• Duø ta coù choïn phöông aùn naøo ñi nöõa thì cuõng phaûi giaûi thích ñöôïc laø vì

sao?

• Roõ raøng ta caàn moät chieán löôïc löïa choïn maø ta goïi laø suy dieãn. Chaúng haïn neáu suy dieãn theo höôùng öu tieân khoaûng caùch ngaén nhaát (toaøn cuïc treân taát caû caùc nhaùnh) thì ñöôøng ñi tìm thaáy seõ laø N→ T→ L. Coøn neáu suy dieãn tham lam (cuïc boä taïi ñænh choïn) thì ñöôøng ñi tìm thaáy seõ laø N→ C→ D→ L

Ví duï 1.2

Chöùng minh meänh ñeà (⎤ a+⎤ b+c) ( ⎤ b+⎤ c+d) a b → d.

Neáu caùch giaûi quyeát laø töông töï nhö ôû ví duï 1 thì caùi gì ñoùng vai troø ñænh? Hôn nöõa töø ñænh hieän haønh ta coù theå ñi ñeán caùc ñænh naøo? Laøm sao phaùt sinh ra caùc ñænh môùi?

Thöû aùp duïng phöông phaùp chöùng minh phaûn chöùng cho ví duï naøy. Thay vì chöùng minh α → β ta ñi chöùng minh α ⎤ β → 0. Nhö vaäy meänh ñeà treân laø töông ñöông vôùi

(⎤ a+⎤ b+c) ( ⎤ b+⎤ c+d) a b⎤ d → 0.

Khaùc vôùi ví duï 1, ôû ñaây ta phaûi söû duïng tri thöùc. Vôùi tri thöùc ( α + ⎤ β ) β → α, ta coi nhö laø töø 2 ñænh α + ⎤ β vaø β phaùt sinh ra ñænh môùi α. Nhö vaäy ñænh ôû ñaây laø bieåu thöùc vaø luaät daãn laø cô cheá phaùt sinh ra ñænh môùi. Baét ñaàu suy dieãn vôùi caùc ñænh (⎤ a+⎤ b+c), ( ⎤ b+⎤ c+d), a, b vaø ⎤ d.

• Töø 2 ñænh (⎤ a+⎤ b+c) vaø a sinh ra ñænh ⎤ b+c

• Roài töø ⎤ b+⎤ c+d vaø b cho ta ⎤ c+d

• Cöù nhö vaäy cho ñeán ñích (goal) cuoái laø ñænh roãng ∅.

• Caùc ñænh ôû ñaây ta goïi laø söï kieän. Caùc tri thöùc duøng ñeå phaùt sinh ñænh môùi nhö ( α + ⎤ β ) β → α ta goïi laø luaät. Vaø moät laàn nöõa, caâu hoûi “chieán löôïc phaùt sinh laø gì?” Laïi ñöôïc ñaët ra. Trong tình huoáng naøy, neáu löïa choïn phöông aùn phaùt sinh taát caû caùc ñænh sau moãi böôùc seõ deã daãn ñeán tình traïng buøng noå toå hôïp, laø tình traïng maø chuùng ta khoâng heà mong muoán. Ta khoâng chôø ñôïi moät thuaät toaùn giuùp giaûi caùc baøi toaùn nhö theá naøy maø chæ hy voïng coù theâm nhöõng tri thöùc giuùp traùnh tình traïng buøng noå toài teä noùi treân. Caùc tri thöùc nhö vaäy ñöôïc goïi laø caùc heuristic.

Ví duï 1.3

Troø chôi tic-tac-toe (gioáng troø chôi caro quen thuoäc nhöng giôùi haïn treân baûng 3×3). Moãi ñoái thuû coù 3 quaân, nhieäm vuï cuûa hoï laø xeáp cho 3 quaân thaúng haøng ñoàng thôøi ngaên caûn ñoái phöông thöïc hieän nhieäm vuï. Troø chôi ñöôïc chia laøm 2 giai ñoaïn. Giai ñoaïn ñaët quaân gioáng vôùi troø chôi caro, giai ñoaïn di chuyeån quaân chæ ñöôïc pheùp dòch chuyeån quaân sang oâ troáng laân caän (duøng laân caän 4).

Troø chôi ñöôïc baét ñaàu vôùi baûng roãng

• Ngöôøi thöù 1 seõ choïn nöôùc ñi naøo trong soá 3 nöôùc ñi sau ñeå ñaët quaân?

X X

X

phaûi chaêng neân suy dieãn theo höôùng öu tieân soá ñöôøng môû khaû dó? Neáu vaäy thì phöông aùn cuoái seõ laø phöông aùn ñöôïc choïn. Thaät ra, ta bieát laø vôùi caùc troø chôi loaïi naøy, ngöôøi chôi caàn phaûi tính saâu hôn tröôùc khi coù quyeát ñònh.

• Quaû vaäy, nhöõng suy dieãn ban ñaàu coù theå khoâng coøn chính xaùc nöõa khi ngöôøi ñi chòu khoù ñaùnh giaù theâm caùc theá bieán ôû caùc möùc saâu hôn. Ngoaøi ra, trong ví duï naøy ta coøn quan saùt thaáy söï keùm töôøng minh cuûa ñích.

Ví duï 1.4

Chöùng minh bieåu thöùc R(⎤ P → Q) = (Q+P)R baèng caùch aùp duïng caùc luaät nhö giao hoaùn ab = ba, a+b=b+a; keát hôïp (ab)c = a(bc), (a+b)+c = a+(b+c) v..v..

Laøm caùch naøo coù theå aùp duïng moät luaät? Muoán aùp duïng luaät, chaúng haïn, a+b = b+a leân (Q+P)R tröôùc tieân caàn nhaän dieän (ñoái saùnh) Q laø a vaø P laø b vaø thu ñöôïc keát quaû (P+Q)R.

• Nhö vaäy baèng caùch ñoái saùnh moät boä phaän hoaëc toaøn theå caùc söï kieän ta tìm thaáy caùc luaät coù theå aùp duïng ñöôïc. AÙp duïng caùc luaät naøy seõ cho ta keát quaû môùi laø caùc söï kieän ñöôïc phaùt sinh. Quaù trình suy dieãn ôû ñaây coù theå ñi theo höôùng laøm giaûm daàn söï khaùc bieät giöõa keát quaû tìm ñöôïc vaø ñích.

2.2. Khaùi nieäm

(a) Trí tueä nhaân taïo laø gì

Caùc ví duï neâu treân ñöa ra cho chuùng ta moät soá khaùi nieäm môùi, taïo tình huoáng daãn chuùng ta ñi tìm hieåu moät nhaùnh thuù vò cuûa khoa hoïc maùy tính ñoù laø ngaønh trí tueä nhaân taïo.

Nhöõng khaùi nieäm môùi ñöôïc giôùi thieäu ôû ñaây laø:

1 Tri thöùc;

2 Heuristic;

3 Luaät;

4 Söï kieän;

5 Ñoái saùnh;

6 Suy dieãn;

7 Chöông trình thoâng minh.

Ñònh nghóa 1.1

AI laø moät nhaùnh cuûa khoa hoïc maùy tính nghieân cöùu vaø taïo ra caùc chöông trình thöïc hieän caùc coâng vieäc nhö ngöôøi.

Chöông trình ñöôïc taïo ra nhaèm thöïc hieän caùc coâng vieäc nhö ngöôøi, töùc laø thöïc hieäïn moät caùch thoâng minh: kieåm soaùt tình huoáng vaø löïa choïn. Noù theå hieän haønh vi töông töï con ngöôøi khi phaûi ñöông ñaàu vôùi nhöõng vaán ñeà töông töï. Noù coù khaû naêng nhaän bieát caùc söï kieän, caùc meänh ñeà, caùc moái lieân heä vaø suy luaän. Tuy nhieân, khi nghieân cöùu caáu truùc beân trong, caùc nhaø nghieân cöùu trí tueä nhaân taïo vaãn muoán xaây döïng heä coù suy nghó gioáng ngöôøi. Ñi vaøo chi tieát caùc chöông trình nhö vaäy höôùng ñeán caùc tieâu chí sau:

1. Coù suy nghó gioáng con ngöôøi – lieân quan ñeán moâ hình hoaù nhaän thöùc

2. Coù suy nghó hôïp lyù – lieân quan ñeán logic hình thöùc

3. Coù haønh vi gioáng con ngöôøi – lieân quan ñeán thí nghieäm Turing

4. Coù haønh vi hôïp lyù – lieân quan ñeán luaät

(b) Cô sôû cuûa trí tueä nhaân taïo

Trí tueä nhaân taïo ñöôïc phaùt trieån döïa treân:

1. Trieát hoïc (töø naêm 428 tröôùc coâng nguyeân ñeán nay): vôùi haàu heát caùc yù

töôûng quan troïng cuûa AI;

2. Toaùn hoïc (töø naêm 800): bao goàm tính toaùn, logic vaø xaùc suaát;

3. Taâm lyù hoïc (töø naêm 1879): bao goàm nhaän thöùc vaø haønh vi;

4. Coâng ngheä maùy tính (töø naêm 1940);

5. Ngoân ngöõ hoïc (töø naêm 1957).

(c) Moät soá lónh vöïc trí tueä nhaân taïo

1. Heä chuyeân gia chöùa thoâng tin veà moät lónh vöïc nhaát ñònh vaø neáu ñöôïc

phoûng vaán seõ traû lôøi nhö moät chuyeân gia;

2. Xöû lyù ngoân ngöõ töï nhieân;

3. Chöùng minh töï ñoäng;

4. Nhaän daïng;

5. Caùc ngoân ngöõ trí tueä nhaân taïo (nhö LISP, PROLOG,…) laø caùc ngoân ngöõ maø beân trong coù gaén lieàn moät cô sôû döõ lieäu cuøng caùc thuû tuïc truy ngöôïc caàn thieát cho nhieàu tình huoáng giaûi quyeát vaán ñeà.

Trong giaùo trình naøy, chuùng ta khoâng ñi saâu vaøo moät lónh vöïc naøo caû maø chæ khaûo saùt caùc vaán ñeà cô baûn trong quaù trình laøm vieäc vôùi AI nhö

1. Caùc phöông phaùp giaûi quyeát vaán ñeà

2. Caùc kyõ thuaät bieåu dieãn tri thöùc.

3. Caùch suy dieãn vaø thu nhaän tri thöùc trong moãi loaïi bieåu dieãn

4. Tìm hieåu ngoân ngöõ Prolog

2.3. Heä cô sôû tri thöùc

(a) Cô sôû tri thöùc

Nhö chuùng ta ñaõ thaáy, moät heä muoán hoaït ñoäng hieäu quaû phaûi söû duïng ñöôïc tri thöùc. Tri thöùc phaûi ñöôïc toå chöùc toát ñeå coù theå söû duïng. Heä söû duïng tri thöùc ñeå ñöa ra caùc söï kieän môùi. Thaønh phaàn ñöa ra caùc söï kieän môùi ñöôïc goïi laø moâ tô suy dieãn.

Ñònh nghóa 1.2

1. Tri thöùc laø hieåu bieát.

2. Cô sôû tri thöùc laø tri thöùc ñöôïc maõ hoaù thaønh söï kieän, luaät, heuristic,

thuû tuïc

Caùc vaán ñeà lieân quan ñeán maõ hoaù tri thöùc laø

1. Toå chöùc tri thöùc laø chìa khoaù ñeå truy xuaát ñöôïc hieäu quaû. Tuy nhieân vieäc bieåu dieãn tri thöùc phuï thuoäc baøi toaùn vaø phöông phaùp suy dieãn

2. Thu nhaän tri thöùc laø moät trong nhöõng khoù khaên lôùn nhaát. Maùy phaûi töï

hoïc vaø töï caûi thieän.

(b) Heä cô sôû tri thöùc

Ñònh nghóa 1.3

Heä cô sôû tri thöùc laø moät heä phaàn meàm phöùc taïp giuùp thu nhaän tri thöùc vaø giaûi quyeát caùc baøi toaùn lieân quan ñeán caùc lónh vöïc AI

Noù coù caùc thaønh phaàn nhö

1. Boä thu naïp

2. Boä giaûi thích

3. Boä giao dieän xöû lyù ngoân ngöõ töï nhieân

4. Cô sôû tri thöùc

5. Moâ tô suy dieãn

6. Cô sôû döõ lieäu

3. Moät soá baøi toaùn

Caùc baøi toaùn sau duøng ñeå minh hoïa cho vieäc khaûo saùt caùc muïc tieâu ñaët ra.

Baøi toaùn 1

Tìm ñöôøng ñi giöõa 2 thaønh phoá (ví duï 1)

Baøi toaùn 2

Chöùng minh meänh ñeà (ví duï 2)

Baøi toaùn 3

Tic-tac-toe (ví duï 3)

Baøi toaùn 4

Chöùng minh bieåu thöùc (ví duï 4)

Baøi toaùn 5

Toâ maøu baûn ñoà vôùi soá maøu toái thieåu sao cho hai thaønh phoá keà nhau baát kyø ñöôïc toâ bôûi nhöõng maøu khaùc nhau.

Baøi toaùn 6

Ñaët 8 quaân haäu leân baøn côø 8×8 sao cho 2 quaân haäu baát kyø khoâng aên laãn nhau

Baøi toaùn 7

Baøi toaùn roùt nöôùc : laøm theá naøo laáy ñöôïc ñuùng 2 lít nöôùc baèng caùch duøng 2 can vôùi dung tích thöù töï laø 3 lít vaø 4 lít.

Baøi toaùn 8

Ñieàn chöõ. Thay caùc kyù töï bôûi caùc chöõ soá khaùc nhau, ví duï SEND + MORE = MONEY.

Baøi toaùn 9

Thaùp Haø Noäi. Chuyeån choàng ñóa (xeáp nhö caùi thaùp) töø coïc A sang coïc C coù söû duïng coïc trung gian B.

Baøi toaùn 10

Coù 3 tu só vaø 3 keû aên thòt ngöoøi caàn sang soâng. Chæ caàn soá löôïng aùp ñaûo laø nhöõng keû aên thòt ngöôøi seõ laøm thòt caùc tu só. Laøm theá naøo ñöa hoï sang soâng neáu ñoø chôû toái ña ñöôïc 2?

Baøi toaùn 11

Troø chôi Puzzle 8 soá: Di chuyeån caùc soá vaøo oâ troáng ñöa baøn côø veà moät traïng thaùi cho tröôùc, chaúng haïn

Baøi toaùn 12

Tính tích phaân baát ñònh

Baøi toaùn 13

Con khæ vaø naûi chuoái. Coù 1 con khæ, 1 naûi chuoái, 1 caùi gheá vaø 1 chieác gaäy. Naûi chuoái treo treân traàn nhaø. Laøm theá naøo ñeå con khæ laáy ñöôïc naûi chuoái?

Baøi toaùn 14

Heä thöùc löôïng trong tam giaùc. Chaúng haïn cho tam giaùc ABC, bieát goùc A caïnh b vaø ñöôøng cao ha haõy chæ ra quaù trình tính caïnh c.

BAØI TAÄP

Baøi taäp 1.1

Xaây döïng heä giaûi phöông trình baäc hai coù khaû naêng

1. Kieåm soaùt tình huoáng vaø löïa choïn;

2. Hoïc ñöôïc nhöõng tình huoáng môùi;

3. Giaûi ñöôïc phöông trình baäc 3 khi cho tröôùc moät nghieäm.

Baøi taäp 1.2

Vôùi baøi toaùn ñöôïc cho trong ví duï 1, haõy cho bieát ñöôøng ñi tìm thaáy laø gì neáu suy dieãn:

1. Theo chieàu saâu;

2. Theo chieàu roäng.

Baøi taäp 1.3

Giaûi baøi toaùn ñöôïc cho trong ví duï 2

1. Tieáp tuïc phaàn dôõ dang;

2. Theâm ít nhaát moät tri thöùc roài môùi giaûi.

Baøi taäp 1.4

Xeùt troø chôi tic-tac-toe ñöôïc cho trong ví duï 3, tìm moät caùch ñi ñeå ngöôøi ñi tröôùc luoân thaéng. Baïn giaûi baèng tìm kieám hay coù söû duïng tri thöùc rieâng? Tri thöùc ñoù laø gì, neáu coù?

Baøi taäp 1.5

Giaûi baøi toaùn ñöôïc cho trong ví duï 4. Ñöa ra moät haøm so saùnh hai bieåu thöùc laø gaàn nhau.

Baøi taäp 1.6

Tìm hieåu heä cô sôû tri thöùc prolog (xem phaàn phuï luïc). Caøi ñaët heä giaûi phöông trình baäc hai.

Baøi taäp 1.7

Haõy lieät keâ moät soá tri thöùc trong hình hoïc phaúng. Phaùt bieåu moät baøi toaùn. Giaûi noù baèng caùc tri thöùc ñaõ neâu. Thöû caøi ñaët baèng prolog.

PHAÀN 1

GIAÛI QUYEÁT VAÁN ÑEÀ

Cuoäc soáng laø moät chuoãi caùc vaán ñeà maø chuùng ta caàn giaûi quyeát (Socrates).

Coù moät thôøi kyø daøi trong quaù khöù, caùc nhaø khoa hoïc ñeàu cho raèng: “moïi vaán ñeà ñeàu coù

theå ñöôïc bieåu dieãn döôùi daïng moät baøi toaùn”. Descartes ñaõ töøng phaùt bieåu “taát caû moïi baøi toaùn ñeàu coù theå quy veà baøi toaùn ñaïi soá, töø ñoù vieäc giaûi baøi toaùn chæ laø vaán ñeà cuûa giaûi phöông trình”. David Hilbert cuõng ñaõ töøng ñaët ra caâu hoûi: “lieäu coù toàn taïi moät phöông phaùp cho pheùp giaûi quyeát moïi loaïi vaán ñeà khoâng?”.

Döôùi goùc nhìn khoa hoïc, vaán ñeà thöôøng ñöôïc theå hieän döôùi daïng moät baøi toaùn. Trong phaàn naøy chuùng ta seõ tìm hieåu moät soá phöông phaùp giaûi quyeát vaán ñeà vaø aùp duïng vaøo giaûi caùc baøi toaùn ñaõ neâu ôû chöông môû ñaàu.

Chöông 2

Giaûi quyeát vaán ñeà baèng tìm kieám

1. Khaùi nieäm

1.1. Khoâng gian traïng thaùi

Thöôøng thì chuùng ta nhaän bieát caùc ñoái töôïng thoâng qua moät taäp caùc thuoäc tính naøo ñoù maø chuùng ta seõ goïi laø bieåu dieãn hay moâ hình. Caùc giaù trò cuï theå cuûa nhöõõng thuoäc tính naøy cho pheùp chuùng ta xaùc ñònh ñöôïc traïng thaùi cuûa ñoái töôïng. Vì chuùng ta chæ laøm vieäc chuû yeáu treân caùc bieåu dieãn neân chuùng ta seõ coi traïng thaùi cuûa ñoái töôïng chính laø taäp caùc giaù trò naøy. Caùc giaù trò naøy seõ bò thay ñoåi döôùi taùc ñoäng cuûa moät taäp caùc thao taùc naøo ñoù. Ví du,ï tình traïng beänh cuûa beänh nhaân ñöôïc xaùc ñònh qua moät soá keát quaû xeùt nghieäm, vaø vieäc uoáng thuoác seõ laøm tình traïng beänh ñaït ñeán moät traïng thaùi toát hôn; cuõng vaäy khaû naêng laøm vieäc cuûa nhaân vieân ñöôïc xaùc ñònh qua moät soá tieâu chí naøo ñoù, vaø vieäc ñaøo taïo seõ laøm khaû naêng laøm vieäc ñaït ñeán moät traïng thaùi hieäu quaû hôn.

Vôùi ñoái töôïng, vieäc xaùc ñònh traïng thaùi cuûa noù cuõng nhö vieäc xaùc ñònh taäp caùc thao taùc laøm thay ñoåi traïng thaùi cuûa noù laø nhöõng baøi toaùn cô baûn quan troïng.

Trong trí tueä nhaân taïo chuùng ta seõ bieåu dieãn vaán ñeà baèng caùc caáu truùc rôøi raïc nhö ma traän, ñoà thò, …. Qua ñoù maø vaán ñeà ñöôïc chuyeån thaønh nhöõng baøi toaùn cuï theå. Trong chöông naøy, chuùng ta tìm caùch ñöa vaán ñeà veà baøi toaùn tìm kieám trong khoâng gian traïng thaùi. Caáu truùc ñoà thò ñöôïc duøng vaø baøi toaùn laø tìm ñöôøng ñi ngaén nhaát. Chuùng ta seõ xaây döïng caùc caây tìm kieám vaø trong nhieàu tröôøng hôïp caây naøy laø loaïi caây AND/OR.

Ñònh nghóa 2.1

Traïng thaùi laø moät bieåu dieãn cuûa vaán ñeà. Pheùp bieán ñoåi chuyeån vaán ñeà töø traïng thaùi naøy sang traïng thaùi khaùc. Taäp caùc traïng thaùi cuøng vôùi caùc pheùp bieán ñoåi treân chuùng taïo thaønh khoâng gian traïng thaùi.

Ví duï 2.1

Moät vaán ñeà thöïc teá naøo ñoù coù theå ñöa veà vieäc giaûi phöông trình sau

5x2 – 4x – 9 = 0

Thöïc hieän caùc pheùp bieán ñoåi töông ñöông

5x2 – 4x – 9 = 0 5x2 – 4x – (5 + 4) = 0 5x2 – 4x – 5 – 4 = 0 … (x+1) (5x – 9) = 0 ⇔ ⇔ ⇔

Vôùi bieåu dieãn sau cuøng naøy xem nhö vaán ñeà ñaõ ñöôïc giaûi quyeát

Khi khoâng gian traïng thaùi laø höõu haïn chuùng ta coù theå moâ hình noù bôûi caùc caáu truùc rôøi raïc nhö ma traän, ñoà thò, …

Ví duï 2.2

Trong troø chôi Puzzle 8 soá coù theå xem moät caùch saép xeáp 9 soá töø 0 ñeán 8 trong baûng 3×3 laø moät traïng thaùi. Moãi thao taùc dòch chuyeån ñuùng luaät (ñoåi choã soá 0 vaø moät soá keà vôùi noù) laø moät pheùp bieán ñoå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í duï 2.3

dx

( x

) x12 e +

Vôùi baøi toaùn tính tích phaân baát ñònh, sau khi phaân raõ thaønh caùc baøi toaùn con ñuùng luaät (duøng caùc coâng thöùc), chuùng ta phaûi giaûi taát caû nhöõng baøi toaùn con thì môùi coù lôøi giaûi cho baøi toaùn ban ñaàu.

x

2 ex

dx

e x

dx

e x

dx

2

xe x

dx

1.2. Tìm kieám treân khoâng gian traïng thaùi

Khoâng gian traïng thaùi töï noù khoâng coù cô cheá tìm kieám. Taäp caùc thao taùc giuùp chuùng ta xaây döïng moät khoâng gian tìm kieám, nghóa laø trang bò moät caáu truùc cho khoâng gian traïng thaùi.

Tuy nhieân, khoâng gian tìm kieám thöôøng laø raát lôùn, do ñoù chuùng ta seõ phaùt trieån moät caây tìm kieám cho ñeán khi tìm thaáy lôøi giaûi cho baøi toaùn.

(a) Baøi toaùn tìm ñöôøng ñi

Ví duï 2.4

Xeùt baøi toaùn tìm ñöôøng ñi ngaén nhaát töø a ñeán e treân ñoà thò sau

a 4 c

2 3 2 4

b 1 d 3

e 5

Coi ñænh laø traïng thaùi, caïnh laø pheùp bieán ñoåi, baèng caùch moâ taû caùc ñoà thò con:

2

4

2 3

1 5

4 3 2 4

1 2 3

5 4 3

a b c d e

b c a c d e a b d e b c e b c d

chuùng ta xaây döïng caây tìm kieám bieåu dieãn taát caû caùc ñöôøng ñi töø a ñeán e:

a

b c

d c b e d e (7)

(8)

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

e (10) e (9) e (11) e (12)

tìm thaáy ñöôøng ñi ngaén nhaát laø a → b → d → e (laø ñöôøng neùt ñoâi) vôùi toång khoaûng caùch baèng 6.

ÔÛ ñaây moãi nuùt laù xaùc ñònh moät ñöôøng ñi, caùc soá gaén vôùi nuùt laù cho bieát khoaûng caùch cuûa ñöôøng ñi töông öùng. Theo ñoù chuùng ta coù taát caû 9 ñöôøng ñi (taäp phöông aùn) vaø moät ñöôøng ñi ngaén nhaát (phöông aùn toái öu).

(b) Baøi toaùn tìm caây lôøi giaûi

Ví duï 2.5

Cho tam giaùc ABC, bieát ñöôøng cao ha vaø hai goùc A, C. Haõy tính caïnh c döïa vaøo caùc coâng thöùc A + B + C = π, ha = csinB, hb = csinA vaø hc = asinB.

Giaûi: Chuùng ta seõ khoâng xaây döïng tröïc tieáp ñoà thò maø chæ moâ taû caùc ñoà thò con; qua ñoù seõ xaây döïng caây tìm kieám.

B c

B A A C a ha hb hc

vaø chuùng ta coù caây tìm kieám AND/OR cuøng vôùi caây lôøi giaûi nhö sau:

c

B A ha hb

a A C hc

Ví duï 2.6

Kieåm tra ab → m, bieát

ab → c; ah → d; ad → m; bc → e; ab → o; o → m; e → m.

Giaûi: Töø caùc ñoà thò con moâ taû luaät:

c d e m o

a b a h b c a d o e a b

Ta xaây döïng caây tìm kieám

m

a d o e

a h a b b c

a b

vaø tìm thaáy caây lôøi giaûi toái öu coù chieàu cao thaáp nhaát. Khaùc vôùi caây thoâng thöôøng, moãi nuùt laù cuûa caây AND/OR khoâng xaùc ñònh ñöôïc caây lôøi giaûi.

2. Caùc nguyeân lyù tìm kieám

2.1. Caùc nguyeân lyù cô baûn

(a) Nguyeân lyù meâ cung

Moät ñænh khoâng ñöôïc pheùp xuaát hieän 2 laàn treân moät ñöôøng ñi. Nguyeân lyù naøy nhaèm baûo ñaûm khoâng xuaát hieän chu trình trong quaù trình tìm kieám.

(b) Nguyeân lyù veùt caïn (nguyeân lyù Edison)

Khoâng ñöôïc loaïi boû baát kyø moät ñöôøng ñi naøo. Nguyeân lyù naøy nhaèm baûo ñaûm luoân tìm thaáy lôøi giaûi neáu noù toàn taïi.

(c) Nguyeân lyù quay lui

Nguyeân lyù naøy nhaèm baûo ñaûm cho nguyeân lyù veùt caïn vì trong quaù trình tìm kieám chuùng ta chæ coù theå xem xeùt töøng ñænh moät. Khi aáy quaù trình tìm kieám gioáng nhö quaù trình duyeät caây vaø nhaát thieát phaûi bieát quay lui.

Ví duï 2.7

Khi xaây döïng caây tìm kieám: ôû ví duï 4 chuùng ta ñaõ duøng nguyeân lyù meâ cung vaø nguyeân lyù veùt caïn; ôû ví duï 6 chuùng ta ñaõ duøng nguyeân lyù veùt caïn; coøn ôû ví duï 5 chuùng ta ñaõ duøng nguyeân lyù quay lui.

Vieäc löïa choïn moät trình töï ñeå phaùt trieån caây laø heát söùc quan troïng, ngoaøi ra caàn phaûi loaïi boû nhöõng ñænh maø vieäc xeùt noù laø khoâng caàn thieát. Thuaät toaùn Dijkstra laø moät minh hoïa cho ñieàu naøy. Noù chæ giöõ laïi nhöõng ñænh caàn thieát vaø öu tieân xeùt caùc ñænh coù toång khoaûng caùch beù nhaát.

Ví duï 2.8

a1 (0)

b2 (2) c4 (4)

e c (5) d3 (3) e (7) b (7) d (6)

(8)

c (5) e5 (6)

ÔÛ ñaây, ñöôøng ñöùt neùt laø nhaùnh bò tæa vaø chæ soá treân laø thöù töï môû roäng caây.

2.2. Caùc nguyeân lyù thöû sai

Caùc hình minh hoïa sau ñaây ñeàu söû duïng baøi toaùn cho ôû ví duï 4. Caây tìm kieám ñöôïc phaùt trieån theo nguyeân lyù meâ cung vaø nguyeân lyù quay lui (vaø do ñoù nguyeân lyù veùt caïn, xaûy ra trong tröôøng hôïp xaáu nhaát khi baøi toaùn khoâng coù lôøi giaûi hoaëc khi phaûi veùt caïn caây tìm kieám môùi thaáy lôøi giaûi)

(a) Nguyeân lyù löïa choïn theo chieàu saâu

a1

b2 c

d e c3

d4 e

e5 (10)

(b) Nguyeân lyù löïa choïn theo chieàu roäng

a1

b2 c3

d c4 d5 b e e6 (7)

d e c e

(c) Nguyeân lyù löïa choïn saâu daàn

Chieàu saâu toái ña laø 3, tröôùc khi duyeät theo chieàu roäng.

a1

c b2

d e c3

d4 e5 (9)

e

(d) Nguyeân lyù ngaãu nhieân

Nhaèm traùnh phaûi xöû lyù moät soá löôïng quaù lôùn caùc traïng thaùi, ñænh seõ ñöôïc choïn moät caùch ngaãu nhieân. Caùch choïn ngaãu nhieân tuyø thuoäc vaøo moät soá ñieàu kieän cuï theå cuûa baøi toaùn.

Ví duï 2.9

a1

b3 c2

d d c b e e4 (7)

2.3. Caùc nguyeân lyù heuristic

Thuaät giaûi laø khaùi nieäm môû roäng cuûa thuaät toaùn. Noù ñöôïc môû roäng döïa treân vieäc môû roäng hai ñaëc tröng cuûa thuaät toaùn laø tính xaùc ñònh vaø tính ñuùng.

Trong soá caùc thuaät giaûi thì thuaät giaûi heuristic cho pheùp tìm lôøi giaûi deã daøng vaø nhanh choùng, thöôøng thì noù tìm ra ñöôïc lôøi giaûi toát (nhöng khoâng chaéc laø toát nhaát, tuy nhieân caùch theå hieän cuûa noù laïi raát töï nhieân vaø gaàn guõi vôùi caùch suy nghó vaø haønh ñoäng cuûa con ngöôøi).

Ñònh nghóa 2.2

Heuristic laø nhöõng thoâng tin giuùp vieäc ñònh höôùng taäp trung xung quanh ñöôøng ñi toái öu. Haøm heuristic laø nhöõng haøm ñaùnh giaù giuùp vieäc löïa choïn höôùng ñeán ñöôøng ñi toái öu.

(a) Nguyeân lyù toái öu cuïc boä (nguyeân lyù greedy)

Laáy tieâu chuaån toái öu toaøn cuïc laøm tieâu chuaån choïn löïa trong phaïm vi cuïc boä.

a1

b2 (2) c (4)

c (5) d3 (3) e (7)

c4 (5) e (6)

e5 (9)

(b) Nguyeân lyù höôùng ñích

So saùnh traïng thaùi hieän taïi ñang xem xeùt vôùi traïng thaùi caàn ñaït ñeán laøm tieâu chuaån löïa choïn.

Ví duï 2.10

Xeùt troø chôi 8 soá chuyeån ñænh veà ñænh

Giaûi:

Xaây döïng caây tìm kieám duøng nguyeân lyù greedy vôùi giaù trò taïi moãi ñænh laø söï khaùc bieät (soá chöõ soá sai vò trí) so vôùi ñænh cuoái (nguyeân lyù höôùng ñích)

2 8 3 1 6 4 7 0 5

2 8 3 1 0 4 7 6 5 (3) 2 8 3 1 6 4 7 5 0 (5) 2 8 3 1 6 4 0 7 5 (5)

2 0 3 1 8 4 7 6 5 (3) 2 8 3 0 1 4 7 6 5 (3) 2 8 3 1 4 0 7 6 5 (4)

2 3 0 1 8 4 7 6 5 (4) 0 2 3 1 8 4 7 6 5 (2)

1 2 3 0 8 4 7 6 5 (1)

1 2 3 8 0 4 7 6 5 (0) 1 2 3 7 8 4 0 6 5 (2)

(c) Nguyeân lyù nhaùnh caän

Phaân hoaïch khoâng gian traïng thaùi. Vôùi moãi lôùp töông ñöông, duøng moät öôùc löôïng so saùnh vôùi moät ngöôõng cho tröôùc ñeå quyeát ñònh coù loaïi boû hay khoâng. Nhôø ñoù chuùng ta coù theå tæa nhaùnh hieäu quaû, chæ giöõ nhöõng traïng thaùi cho pheùp daãn ñeán lôøi giaûi toát nhaát.

Ví duï 2.11

Khi xaây döïng caây tìm kieám, coù theå xem taïi moãi böôùc phaùt trieån laø moät böôùc phaân hoaïch mòn hôn. Vaãn duøng ví duï 4, ñeå yù chieàu daøi ngaén nhaát cuûa moät caïnh noái vôùi e laø 3, boå sung nhaän xeùt naøy vaøo toång khoaûng caùch ta coù moät ñaùnh giaù vaø nhôø ñoù phaùt trieån caây tìm kieám nhö sau:

a1 (≥ 3)

b2 (≥ 5) c (≥ 7)

c (≥ 8) d3 (≥ 6) e (7)

c (≥ 8) e4 (6)

Keát quaû tìm ñöôïc ñöôøng ñi ngaén nhaát nhanh hôn nhieàu so vôùi thuaät toaùn Dijsktra. Nhöõng nhaùt caét naøy seõ raát hieäu quaû khi laøm vieäc treân moät khoâng gian tìm kieám roäng lôùn.

(d) Nguyeân lyù saép thöù töï

Saép xeáp khoâng gian traïng thaùi theo moät caáu truùc hôïp lyù

Ví duï 2.12

Moät saép xeáp hôïp lyù coù theå tìm ñöôïc ñöôøng ñi ngaén nhaát chæ vôùi thuû tuïc tìm kieám theo chieàu saâu ñôn giaûn

a

c b

c d e

c e (6)

2.4. Caøi ñaët caùc nguyeân lyù

Quan saùt quaù trình phaùt trieån caây tìm kieám ta thaáy vaán ñeà naèm ôû choã

1. Thöù töï thaùo caùc ñænh töùc laø quaûn lyù ñöôïc caùc nuùt laù.

2. Tröôøng hôïp neáu yeâu caàu moãi ñænh xuaát hieän treân caây khoâng quaù 1 laàn

ta caàn quaûn lyù caùc ñænh khoâng laø laù.

3. Phaûi coù cô cheá kieåm tra söï xuaát hieän chu trình.

Chuùng ta seõ giao nhieäm vuï quaûn lyù caùc nuùt laù cho moät ñoái töôïng ñöôïc goïi laø open; quaûn lyù caùc nuùt khoâng phaûi nuùt laù cho moät ñoái töôïng ñöôïc goïi laø close. Ñoàng thôøi moãi ñænh treân caây phaûi tham chieáu ñöôïc ñeán ñænh cha cuûa noù. Ñoái töôïng open coù vai troø chuû yeáu trong vieäc choïn ñænh tieáp theo ñoàng thôøi phoái hôïp vôùi close vaø ñænh hieän taïi ñeå quyeát ñònh coù löu traïng thaùi môùi hay khoâng.

Thoâng qua open vaø close ta caøi ñaët caùc nguyeân lyù tìm kieám nhö sau:

Caùc nguyeân lyù cô baûn

1. Nguyeân lyù quay lui vaø nguyeân lyù veùt caïn: open phaûi löu taát caû caùc khaû

naêng khi thaùo moät nuùt;

2. Nguyeân lyù meâ cung: open phaûi laàn theo caùc tham chieáu ñeå baûo ñaûm caùc

ñænh môùi khoâng laøm xuaát hieän chu trình;

Caùc nguyeân lyù thöû sai

3. Nguyeân lyù löïa choïn theo chieàu saâu: open haønh xöû nhö moät ngaên xeáp;

4. Nguyeân lyù löïa choïn theo chieàu roäng: open haønh xöû nhö moät haøng ñôïi;

5. Nguyeân lyù löïa choïn saâu daàn: open haønh xöû nhö ngaên xeáp hoaëc haøng ñôïi

phuï thuoäc vaøo chieàu saâu ñaõ ñaït möùc giôùi haïn hay chöa;

6. Nguyeân lyù ngaãu nhieân: open ñöôïc trang bò moät cô cheá choïn ngaãu nhieân;

Caùc nguyeân lyù heuristic

7. Nguyeân lyù greedy: open haønh xöû nhö moät ngaên xeáp vaø caùc nuùt phaùt sinh khi thaùo moät ñænh phaûi ñöôïc saép xeáp (töùc laø phaûi ñöôïc xöû lyù qua moät haøng ñôïi öu tieân);

8. Nguyeân lyù höôùng ñích: heä ñöôïc trang bò moät thuû tuïc so saùnh cho pheùp

ñaùnh giaù söï gaàn nhau giöõa caùc traïng thaùi;

9. Nguyeân lyù nhaùnh caän: heä ñöôïc trang bò moät thuû tuïc ñaùnh giaù; close ñöôïc

trang bò thuû tuïc vaø open haønh xöû nhö moät haøng ñôïi öu tieân;

10. Nguyeân lyù thöù töï: open ñöôïc trang bò moät thuû tuïc saép xeáp phuø hôïp.

3. Aùp duïng

3.1. Caøi ñaët thuaät giaûi

Muïc naøy chæ ñöa ra hai thuaät giaûi: tröôøng hôïp toång quaùt vaø moät tröôøng hôïp rieâng quan troïng (tìm kieám leo ñoài). Caùc thuaät giaûi quan troïng khaùc seõ ñöôïc trình baøy ôû caùc chöông sau.

(a) Toång quaùt

• Danh saùch môû Open, chöùa caùc traïng thaùi seõ ñöôïc xem xeùt vaø

• Danh saùch ñoùng Close, chöùa caùc traïng thaùi ñaõõ ñöôïc xem xeùt.

Cô baûn ta seõ söû duïng 2 danh saùch

• Traïng thaùi baét ñaàu s

• Traïng thaùi keát thuùc g

• Traïng thaùi ñang xeùt n

• Danh saùch B(n) chöùa caùc traïng thaùi ñöôïc bieán ñoåi töø traïng thaùi n

Theâm moät soá ñoái töôïng khaùc

Caùc böôùc cô baûn cuûa caùc thuaät toaùn tìm kieám ñöôïc trình baøy nhö sau:

Thuaät giaûi tìm kieám treân khoâng gian traïng thaùi

1. Open.Store(s)

2. While not Open.Empty() do

2.1. n = Open.Retrieve()

2.2. Close.Store(n)

2.3. if n = g then return true

2.4. for m ∈ B(n) do Open.Store(m)

3. return false

• Toác ñoä tìm thaáy lôøi giaûi vaø

• Ñoä toát cuûa lôøi giaûi

Chuùng ta seõ ñaùnh giaù tính hieäu quaû cuûa moãi thuaät toaùn qua hai thöôùc ño

(b) Tìm kieám leo ñoài

Caøi ñaët cuï theå nguyeân lyù greedy vaø nguyeân lyù meâ cung. Chuùng ta coi open laø moät ngaên xeáp; boå sung moät haøng ñôïi öu tieân q; cung caáp cho ñoái töôïng ñænh cuûa caây moät thao taùc truy ngöôïc exists() nhaèm kieåm tra xem moät traïng thaùi laø ñaõ coù maët trong moät ñænh tieàn boái naøo ñoù hay khoâng.

Thuaät giaûi 1: Tìm kieám leo ñoài

1. Open.Store(s)

2. While not Open.Empty() do

2.1. n = Open.Retrieve()

2.2. Close.Store(n)

2.3. if n = g then

return true

2.4. for m ∈ B(n) do if not n.exists(m) then q.Store(m);

2.5. for m = q.Retrieve() do Open.Store(m)

3. return false

Ví duï 2.13

Baøi toaùn toâ maøu baûn ñoà öu tieân toâ ñænh coù baäc cao tröôùc.

b c

d a

e

Giaûi:

Baét ñaàu töø ñænh d vôùi maøu caïnh soá thöù töï môû roäng caây:

d1 (1)

a2 (2) (2) b (2) c (1) e (1)

b (1) c3 (2) (1) e (0)

(0) e (0)

b4 (3)

e5 (3) (0)

chuù yù sau khi toâ moät ñænh ta thaùo noù ra khoûi ñoà thò vaø tính laïi baäc, ngoaøi ra khi choïn maøu ñeå toâ khoâng ñöôïc ñeå hai ñænh keà nhau coù cuøng maøu.

3.2. Giaûi quyeát vaán ñeà

Tröôùc heát bieåu dieãn vaán ñeà nhö laø baøi toaùn tìm kieám trong khoâng gian traïng thaùi, roài xaùc ñònh xem ñaây laø baøi toaùn tìm ñöôøng ñi hay tìm caây lôøi giaûi. Sau ñoù aùp duïng caùc nguyeân lyù tìm kieám, phaùt trieån caây vaø thöïc hieän tìm kieám.

Ví duï 2.14

Coù 3 tu só ñeán thuyeát giaùo taïi moät boä toäc aên thòt ngöôøi. Hoï gaëp 3 thoå daân thuoäc boä toäc naøy taïi bôø moät con soâng. Taò ñoù chæ coù moät chieác thuyeàn nhoû chôû toái ña ñöôïc 2 ngöôøi. Taát caû ñeàu muoán sang soâng. Haõy tìm moät giaûi

phaùp ñöa caû 3 tu só vaø 3 keû aên thòt ngöôøi cuøng qua soâng ñöôïc an toaøn, bieát raèng neáu soá löôïng nhöõng keû aên thòt ngöôøi nhieàu hôn soá tu só, chuùng seõ aên thòt hoï.

Giaûi:

Böôùc 1: bieåu dieãn

1 Kyù hieäu (a, b, t) nghóa laø ôû bôø beân naøy coù a tu só, b thoå daân vaø t cho

bieát coù thuyeàn hay khoâng.

2 Thao taùc hôïp leä chuyeån (a, b, k) → (a’, b’, 1 – k) laø thao taùc thoûa:

a’ + b’ nhieàu hôn a + b töø 1 ñeán 2 neáu k = 0

a’ + b’ ít hôn a + b töø 1 ñeán 2 neáu k = 1

b’ = a’ neáu a’ baèng 1 hoaëc 2

Minh hoïa moät tröôøng hôïp:

(2, 2, 0)

(3, 2, 1) (3, 3, 1)

Vaø baøi toaùn laø tìm ñöôøng ñi töø (3, 3, 1) ñeán (0, 0, 0)

Böôùc 2: Phaùt trieån caây tìm kieám theo chieàu saâu coù söû duïng caùc nguyeân lyù cô baûn vaø nguyeân lyù nhaùnh caän

(3, 3, 1)1

(3, 2, 0) 2 (3, 1, 0) 3 (2, 2, 0)

(3, 2, 1) 4

(3, 0, 0) 5

(3, 1, 1) 6

BAØI TAÄP

Baøi taäp 2.1

Xaùc ñònh traïng thaùi vaø caùc pheùp bieán ñoåi cuûa caùc baøi toaùn ñaõ ñöôïc giôùi thieäu trong chöông moät, vaø thöû phaùt trieån caây tìm kieám.

Baøi taäp 2.2

Toâ maøu baûn ñoà G vôùi ma traän keà ñöôïc cho nhö sau

A B C D E F G H 0 0 A 0 1 B 0 0 C 1 1 D 1 0 E 1 0 F 1 G 0 0 H 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1

Baøi taäp 2.3

Tìm ñöôøng ñi töø N ñeán L vôùi baûng döõ lieäu ñöôïc cho nhö sau (ví duï 1.1)

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

1. Tìm theo chieàu saâu

2. Tìm theo chieàu roäng

3. Tìm saâu daàn vôùi chieàu saâu toái ña laø 3.

4. Tìm ñöôøng ñi ngaén nhaát baèng veùt caïn

5. Tìm ñöôøng ñi ngaén nhaát baèng Dijkstra

6. Tìm ñöôøng ñi ngaén nhaát duøng nguyeân lyù nhaùnh caän vôùi nhaän xeùt khoaûng caùch nhoû nhaát cuûa caùc cung noái vôùi L laø 10 ñôn vò khoaûng caùch.

7. Tìm ñöôøng ñi ngaén nhaát baèng caùch loaïi boû nhöõng nhaùnh khoâng chöùa lôøi

giaûi toái öu (nguyeân lyù veùt caïn thoâng minh).

8. Tìm ñöôøng ñi ngaén nhaát duøng nguyeân lyù höôùng ñích vaø nguyeân lyù tham

lam vôùi haøm heuristic h(n) ñaùnh giaù khoaûng caùch töø n ñeán L nhö sau:

n C D G H L N T U

h 15 8 12 12 0 26 22 15

Baøi taäp 2.4

Giaû söû chuùng ta ñang thieát keá moät trình bieân dòch cho moät maùy coù moät thanh ghi vaø caùc chæ thò sau:

ONE ñaët giaù trò cuûa thanh ghi laø 1

DOUBLE nhaân ñoâi noäi dung thanh ghi

ADD coäng 1 vaøo noäi dung thanh ghi

SUB tröø 1 khoûi noäi dung thanh ghi

DIV chia giaù trò cuûa thanh ghi cho 3

Boán chæ thò ñaàu aùp duïng khi giaù trò cuûa thanh ghi khoâng chia heát cho 3, chæ thò DIV aùp duïng khi giaù trò cuûa thanh ghi chia heát cho 3. Giaû söû noäi dung cuûa thanh ghi laø 4, laøm theá naøo ñaët 9 vaøo noäi dung thanh ghi? Duøng baát kyø moät giaûi thuaät naøo ñaõ hoïc thöïc hieän coâng vieäc treân (höôùng daãn : duøng thuaät giaûi tìm kieám)

Baøi taäp 2.5

Duøng hai ñoàng hoà caùt, trong ñoù moät chieác ño 4 giaây vaø chieác coøn laïi ño 7 giaây. Chæ ra caùch ño khoaûng thôøi gian 9 giaây. Yeâu caàu phaùt bieåu luaät, baøi toaùn vaø trình baøy caùch giaûi quyeát.

Baøi taäp 2.6

Cho meâ cung (hình). Baøi toaùn laø tìm ñöôøng ñi töø A ñeán Z

1. Moâ taû traïng thaùi (söï kieän), pheùp bieán ñoåi (luaät);

2. Xaây döïng caây tìm kieám giaûi baøi toaùn treân.

Chöông 3

Tìm kieám vôùi heuristic

Trong chöông tröôùc ta ñaõ duøng open ñeå caøi ñaët caùc nguyeân lyù tìm kieám. Vai troø chuû yeáu vaø quan troïng cuûa open laø choïn ñænh tieáp theo trong quaù trình tìm kieám. Vôùi baøi toaùn tìm ñöôøng ñi, moãi ñænh maø open löu giöõ chính laø moät lôøi giaûi ñi qua ñænh naøy; do ñoù open ñuû söùc hoaøn thaønh nhieäm vuï khi maø noù quaûn lyù ñöôïc toaøn boä caùc lôøi giaûi. Tuy nhieân vôùi baøi toaùn tìm caây lôøi giaûi, moãi ñænh maø open löu giöõ khoâng theå xaùc ñònh ñöôïc lôøi giaûi ñi qua ñænh naøy; cho neân open phaûi phoái hôïp vôùi ñænh goác cuûa caây tìm kieám môùi coù theå xaùc ñònh ñöôïc toaøn boä caùc caây lôøi giaûi.

Chöông naøy giôùi thieäu lôùp thuaät giaûi hieäu quaû aùp duïng caùc nguyeân lyù heuristic baèng caùch xaây döïng moät haøm heuristic ñaùnh giaù traïng thaùi ñang xeùt vôùi traïng thaùi caàn ñaït ñeán (nguyeân lyù höôùng ñích). Chuùng ñöôïc caøi ñaët treân hai caáu truùc caây, caây cuûa lyù thuyeát ñoà thò vaø caây AND/OR, tuyø theo töøng loaïi baøi toaùn, tìm ñöôøng ñi ngaén nhaát hay tìm caây lôøi giaûi toái öu.

1. Khaùi nieäm

Moät lôøi giaûi toái öu laøm cöïc tieåu (cöïc ñaïi) moät haøm muïc tieâu naøo ñoù. Giaû söû toàn taïi lôøi giaûi toái öu. Goïi f laø giaù trò cöïc tieåu ñaït ñöôïc taïi lôøi giaûi toái öu naøy vaø f(n) laø giaù trò cuûa lôøi giaûi toát nhaát coù chöùa ñænh n. Nhöõng thoâng tin ta coù ñöôïc trong quaù trình tìm kieám ñeán ñænh n chöa cho pheùp chuùng ta xaùc ñònh ñöôïc f(n); chuùng ta caàn coù theâm nhöõng thoâng tin veà moái lieân quan giöõa n vaø ñích ñeán. Nhöõng thoâng tin naøy coù ñöôïc töø caùc öôùc löôïng hôïp lyù, töø nhöõng tri thöùc tröôùc ñoù cuõng nhö nhöõng kinh nghieäm saün coù cuûa caùc chuyeân gia. Ñeå laøm roõ tieáp caän naøy ta xeùt baøi toaùn tìm ñöôøng ñi ngaén töø a ñeán z treân ñoà thò G.

Ñònh nghóa 3.1

Xeùt ñænh n treân G sao cho coù ñöôøng ñi töø a ñeán z thoâng qua n, ñònh nghóa:

1. g(n) laø ñoä daøi ñöôøng ñi ngaén nhaát töø a ñeán n

2. h(n) laø ñoä daøi ñöôøng ñi ngaén nhaát töø n ñeán z

Khi aáy f(n) = g(n) + h(n) laø ñoä ñöôøng ñi ngaén nhaát töø a ñeán z coù ñi qua n. Hôn nöõa f = f(a) = h(a) = g(z). Thuaät toaùn Dijkstra tìm caùch tính g(n) cho ñeán khi tính ñöôïc g(z) vaø keát luaän tìm ñöôïc ñöôøng ñi toái öu. Moät öôùc löôïng h ≤ h giuùp söû duïng nguyeân lyù nhaùnh caän trong tìm kieám vôùi toác ñoä raát nhanh.

Ví duï 3.1

Giaûi laïi ví duï 4

2

4

2 3

1 5

4 3 2 4

1 2 3

5 4 3

a b c d e

b c a c d e a b d e b c e b c d

giaû söû ñaõ tính ñöôïc h nhö sau

n a b c d e

h 6 4 4 3 0

1. Trong chöông 1 ta duøng hÂ1(n) = 3 ≤ h(n), vaø tìm ñöôïc ñöôøng ñi ngaén

nhaát

a1 (f ≥ 3)

b2 (f ≥ 5) c (f ≥ 7)

c (f ≥ 8) d3 (f ≥ 6) e (f ≥ 7)

c (≥ 8) e4 (f ≥ 6)

2. Vôùi hÂ2(n) sau, vaãn coù hÂ2(n) ≤ h(n), neân vaãn tìm ñöôïc ñöôøng ñi ngaén

nhaát

n a b c d e

0 hÂ2 5 3 3 3

a1 (f ≥ 5)

b2 (f ≥ 5) c (f ≥ 7)

c (f ≥ 8) d3 (f ≥ 6) e (f ≥ 7)

c (≥ 8) e4 (f ≥ 6)

3. Vôùi hÂ3 = 4, ta khoâng coù hÂ3(n) ≤ h(n), neân khoâng theå aùp duïng nguyeân lyù nhaùnh caän (tröø phi muoán xaây döïng moät thuaät giaûi thay vì thuaät toaùn).

2. Thuaät giaûi A*

Tieáp caän naøy aùp duïng cho baøi toaùn tìm ñöôøng ñi ngaén nhaát treân ñoà thò. Moät caùch chính xaùc ñaây laø moät lôùp caùc thuaät giaûi phuï thuoäc vaøo öôùc löôïng h cuûa haøm heuristic h. Ñoä toát cuûa lôøi giaûi tuøy thuoäc vaøo ñoä chính xaùc cuûa öôùc löôïng.

Thuaät giaûi A* duøng haøm f  = g + h laøm öôùc löôïng cho haøm toång khoaûng caùch f. Noù duøng f Âlaøm tieâu chuaån löïa choïn. Cuï theå, chieán löôïc cuûa noù laø öu tieân choïn ñænh coù f  beù.

Thuaät giaûi ñöôïc trình baøy sau ñaây coù caøi ñaët cô cheá tæa nhaùnh.

Thuaät giaûi 2: Thuaät giaûi A*

1 Ñaët nuùt baét ñaàu vaøo Open

2 Trong luùc Open khaùc roãng thöïc hieän

2.1 Choïn nuùt n trong Open coù f  beù nhaát, laáy noù ra

2.2 Neáu n laø ñích thì keát thuùc thaønh coâng

2.3 Ñaët n vaøo Close

2.4 Vôùi moãi n’ con cuûa n

2.4.1 Tính f  cho n’

2.4.2 Neáu n’ chöa coù trong Open cuõng nhö Close thì ñaët noù vaøo

Open

2.4.3 Ngöôïc laïi, n’ coù trong Open hoaëc Close, ta so saùnh f  môùi vaø f

 cuõ; neáu f  môùi beù hôn f  cuõ thì

2.4.3.1 Neáu n’ cuõ coù trong Open thì ñieàu chænh f  vaø tham chieáu

2.4.3.2 Neáu n’ cuõ coù trong Close thì tæa caùc nhaùnh qua n’ cuõ naøy

tröôùc khi ñaët noù vaøo Open

3 Keát thuùc khoâng thaønh coâng.

Ví duï 3.2

Tìm ñöôøng ñi töø N ñeán L vôùi baûng döõ lieäu (vaãn ví duï 1.1 quen thuoäc)

19 T→C 5 H→L 15 N→C 10 N→D

C→D 10 T→G 15 D→U 10 D→L 10

N→T 8 T→L 18 D→H 15

vaø moät haøm öôùc löôïng h nhö sau

n C D G H L N T U

h 15 8 12 12 0 26 22 15

Giaûi:

N1 (0+26)

C2 (10+15) T(8+22) D3 (19+8)

D3 (20+8) U (29+15) H (34+12) L4

(29+0)

Hình treân minh hoaï quaù trình tìm lôøi giaûi toái öu baèng thuaät giaûi A*. Taïi moãi ñænh caëp giaù trò (g, hÂ) thay cho f vaø moät chæ soá cho bieát thöù töï thaùo ñænh.

Coù theå thaáy ñaây khoâng phaûi laø lôøi giaûi toái öu. Coù 2 caâu hoûi ñöôïc ñaët ra laø

1. Ñieàu gì baûo ñaûm thuaät giaûi tìm thaáy lôøi giaûi?

2. Thuaät giaûi naøo laø toát hôn, toát nhaát?

Ñònh nghóa 3.2

1. Thuaät giaûi A laø ñaày ñuû neáu noù luoân tìm thaáy ñöôïc lôøi giaûi (neáu coù lôøi

giaûi)

2. Thuaät giaûi A laø chaáp nhaän ñöôïc neáu noù ñaûm baûo tìm thaáy ñöôïc lôøi giaûi

toái öu (neáu coù lôøi giaûi toái öu)

3. A1 troäi hôn A2 neáu hÂ1 > hÂ2

4. A laø toái öu trong lôùp G caùc thuaät giaûi neáu noù troäi nhaát

Ñònh lyù 3.1

1. Neáu h ≥ h thì thuaät giaûi laø chaáp nhaän ñöôïc

2. Neáu h ≥ hÂ1 > hÂ2 (A1, A2 chaáp nhaän ñöôïc vaø A1 troäi hôn A2) thì soá nuùt

phaûi thaùo cuûa A1 laø ít hôn A2

Ví duï 3.3

1. Thuaät giaûi A* giaûi baøi toaùn ôû ví duï treân laø ñaày ñuû nhöng khoâng chaáp nhaän ñöôïc. Baây giôø ñieàu chænh hÂ(T) = 18 ta ñöôïc lôøi giaûi toái öu vì thuaät giaûi luùc naøy laø chaáp nhaän ñöôïc.

N1 (0+26)

(8+18)

T3 C2 (10+15) D (19+8)

D3 (20+8) G (34+12) L4 (26+0)

2. Tieáp tuïc ñieàu chænh hÂ(C) = 18 ta ñöôïc thuaät giaûi chaáp nhaän ñöôïc troäi

hôn neân cuõng hieäu quaû hôn.

N1 (0+26)

(8+18)

T2 C (10+18) D (19+8)

G (34+12) L3 (26+0)

Ví duï 3.4

Giaûi baøi toaùn thaùp Haø Noäi 2 ñóa vôùi soá laàn dòch chuyeån ít nhaát. Xeùt moãi coïc coù 4 traïng thaùi 0: khoâng ñiaõ, 1: ñóa nhoû, 2: ñóa lôùn vaø 3: coù 2 ñóa. Khi aáy traïng thaùi cuûa thaùp laø moät boä 3 caùc soá nguyeân töø 0 ñeán 3.

• hÂ(3) = 0 : traïng thaùi ñích

• hÂ(2) = 1 : chæ caàn 1 laàn chuyeån ñóa laø ñeán ñích

• hÂ(1) = 3 : ñóa nhoû ôû ñaây gaây phieàn toaùi neân xa ñích nhaát

• hÂ(0) = 2 : taát caû caùc traïng thaùi coøn laïi

Haøm heuristic maø ta choïn chæ quan taâm ñeán coïc thöù 3 (höôùng ñích) ñöôïc cho cuï theå nhö sau:

Kyù hieäu (a, b, c) laø soá ñóa ôû 3 coïc, ta coù keát quaû minh hoïa (khoâng veõ caùc nhaùnh bò tæa):

(3,0,0)1 (0+2)

(2,1,0)2 (1+2) (2,0,1) (1+2)

(0,1,2) 3 (2+1)

(0,0,3) 4 (3+0)

3. Thuaät giaûi A0*

Vaán ñeà thöôøng ñöôïc theå hieän döôùi daïng moät baøi toaùn. Do vaäy ta coù theå xem baøi toaùn cuõng laø moät bieåu dieãn cuûa vaán ñeà. Theo ñoù ta cuõng coù caùc pheùp bieán ñoåi töø baøi toaùn naøy sang baøi toaùn khaùc. Muïc tieâu cuûa chuùng ta quan taâm ñeán tính giaûi ñöôïc neân cuõng chuù troïng ñeán caùc bieán ñoåi töông ñöông.

Vieäc bieán ñoåi moät baøi toaùn coù theå töông ñöông vôùi nhieàu baøi toaùn con khaùc. Neáu môû roäng khaùi nieäm traïng thaùi thaønh caùc traïng thaùi phöùc, chöùa nhieàu traïng thaùi con, chuùng ta coù theå duøng phöông phaùp tìm kieám ôû muïc tröôùc.

Trong muïc naøy, chuùng ta seõ chia baøi toaùn ban ñaàu daàn daàn cho ñeán khi noù laø toå hôïp cuûa caùc baøi toaùn sô caáp giaûi ñöôïc. Ñeå tröïc quan chuùng ta duøng moät daïng ñoà thò ñaëc bieät goïi laø ñoà thò AND/OR (And/Or Graphs) ñeå bieåu dieãn vaø tìm lôøi giaûi.

• Nuùt AND laø giaûi ñöôïc neáu vaø chæ neáu taát caû caùc nuùt con giaûi ñöôïc

• Nuùt OR laø giaûi ñöôïc neáu vaø chæ neáu coù moät nuùt con giaûi ñöôïc

Ñònh nghóa 3.3

Ví duï 3.5

1. Giaûi baøi toaùn thaùp Haø Noäi, chuyeån n ñóa töø coät A qua coät C thoâng qua

• Chuyeån n-1 ñóa töø coät A sang coät B thoâng qua coät C

• Chuyeån 1 ñóa töø coät A sang coät C

• Chuyeån 2 ñóa töø coät B sang coät C thoâng qua coät A

coät B, baèng caùch phaân raõ noù thaønh 3 baøi toaùn con

Chuyeån(n,A,C,B)

Chuyeån(n-1,A,B,C) Chuyeån(1,A,C) Chuyeån(n-1,B,C,A)

(n-2,A,C,B) (1,A,B) (n-2,C,B,A)

2. Giaûi baøi toaùn tìm nguyeân haøm cuûa ex(sinx + x), baèng caùch phaân raõ nhö

dx

( x

) x12 e +

sau:

x

2 ex

dx

e x

dx

e x

dx

2

xe x

dx

3. Tìm phöông aùn nguyeân cuûa baøi toaùn quy hoaïch tuyeán tính baèng nhaùt

caét taïi phöông aùn toái öu (chöa nguyeân) thaønh 2 baøi toaùn con.

3.1. Tìm kieám treân caây AND/OR

Nhöõng neùt chính

Trong tìm kieám vai troø cuûa open laø quan troïng. Moät khi noù laáy ñöôïc traïng thaùi ñích ñeå xem xeùt thì quaù trình tìm kieám keát thuùc thaønh coâng, ñôn giaûn bôûi lôøi giaûi chæ laø moät ñöôøng ñi maø thoâi. Vôùi caây And/Or laïi khaùc, keát quaû tìm kieám cho ta caây lôøi giaûi thay vì ñöôøng ñi. Vì lôøi giaûi laø moät caây neân vieäc tìm thaáy moät baøi toaùn sô caáp giaûi ñöôïc (nuùt laù cuûa caây lôøi giaûi) khoâng theå keát luaän gì veà baøi toaùn goác.

• Haøm xaây döïng caây lôøi giaûi höùa heïn Build()

Ñeå xaây döïng thuaät giaûi ta ñeå open ñaûm nhaän luoân vai troø cuûa close ñoàng thôøi boå sung theâm ñoái töôïng caây lôøi giaûi höùa heïn T0 vaø moät soá thuû tuïc

• Phöông thöùc giaûi ñöôïc gd()

• Phöông thöùc gaùn nhaõn giaûi ñöôïc gngd()

• Phöông thöùc khoâng giaûi ñöôïc kgd()

• Phöông thöùc gaùn nhaõn khoâng giaûi ñöôïc gnkgd()

• Phöông thöùc xaây döïng laïi danh saùch Open ReBuild()

Coi s laø baøi toaùn goác, caùc böôùc cô baûn coù daïng nhö sau:

Thuaät giaûi tìm kieám treân caây AND/OR

1. Open.Store(s)

2. While not Open.Empty() do

2.1. T0 = Build()

2.2. n = Open ∩ leaf(T0)

2.3. if gd(n)

2.3.1. gngd(n)

2.3.2. if gd(s) return true

2.3.3. Open.ReBuild()

2.4. if kgd(n)

2.4.1. gnkgd(n)

2.4.2. if kgd(s) return false

2.4.3. Open.ReBuild()

2.5. for m ∈ B(n) do Open.Store(m)

3. return false

Trong ñoù

1. Thuû tuïc xaây döïng laïi danh saùch Open tæa caùc nhaùnh con chöa xeùt cuûa

caùc ñænh ñaõ ñöôïc gaùn nhaõn.

2. Hai thuû tuïc gaùn nhaõn giaûi ñöôïc vaø gaùn nhaõn khoâng giaûi ñöôïc, thöïc hieän vieäc gaùn nhaõn thích hôïp baèng caùch lan truyeàn ngöôïc treân caây tìm kieám (ta vaãn goïi caây bieåu dieãn quaù trình tìm lôøi giaûi laø caây tìm kieám).

Chieán löôïc tìm lôøi giaûi luùc naøy do haøm xaây döïng caây lôøi giaûi höùa heïn quyeát ñònh. Noù cuõng seõ bieát duøng caùc nguyeân lyù ñaõ neâu sao cho hieäu quaû.

Ví duï 3.6

Töø caùc ñoà thò con moâ taû luaät phaân raõ caùc baøi toaùn:

c d e m o

a b a h b c a d o e a b

Kieåm tra tính giaûi ñöôïc cuûa baøi toaùn m, bieát caùc baøi toaùn con a vaø b laø giaûi ñöôïc (tìm caây lôøi giaûi töø m ñeán {a,b}). Tieáp caän theo chieàu saâu, ta xaây döïng caây tìm kieám nhö sau

(Ñ)

m1

(Ñ)

(Ñ)

d3 o6 e a2

(Ñ) h5

(S) a7

(Ñ) b8

(Ñ)

a4

Ví duï 3.7

• A + B + C = π

• ha = b*sin(C); ha = c*sin(B) (töông töï cho hb vaø hc)

• S = ½ ha*a; S = ½ hb*b; S = ½ hc*c

Cho ∆ABC. Tính c, bieát ñöôøng cao ha goùc A vaø caïnh b, duøng caùc coâng thöùc

Xem A, B, C, a, b, c, … laø caùc baøi toaùn; baøi toaùn sô caáp giaûi ñöôïc laø ñaïi löôïng ñaõ bieát; baøi toaùn caàn kieåm tra laø ñaïi löôïng caàn tính. Theo ñoù, chaúng haïn, ñeå tính a ta coù theå duøng moät trong caùc coâng thöùc hb = a*sin(C), hc = a*sin(B), S = ½ ha*a (hay hc,B → a; hb,C → a; ha,S → a). Minh hoïa quaù trình tính c baèng caùch tìm kieám treân caây AND/OR nhö sau:

(Ñ)

c1

B3 A S

2 ha

(Ñ)

(Ñ)

hb hc

(Ñ) C5

(Ñ)

A4 a hc

a

6 ha

(Ñ) b7

(Ñ)

hb

Nhö vaäy duøng coâng thöùc ha = b*sin(C) ta tính ñöôïc goùc C, roài duøng coâng thöùc A + B + C = π ta tính ñöôïc goùc B vaø cuoái cuøng duøng coâng thöùc ha = c*sin(B) ta tính ñöôïc caïnh c.

3.2. Theâm heuristic - Thuaät giaûi AO*

Chuùng ta muoán coù moät thuaät giaûi töông töï nhö A*. Thuaät giaûi AO* sau ñaây, gioáng nhö A* taïi moãi ñænh coù moät haøm öôùc löôïng heuristic hÂ, nhöng khaùc vôùi A* laø trong quaù trình xaây döïng caây caùc giaù trò h ñöôïc tính laïi cho caùc nuùt moãi khi coù theâm thoâng tin.

• Haøm Min cho caùc nuùt OR

• Haøm Max (hoaëc Sum) cho caùc nuùt AND.

Caùch caäp nhaät laïi giaù trò h tuøy thuoäc töøng baøi toaùn. Thoâng thöôøng ta hay duøng:

Thuaät giaûi 3 : Thuaät giaûi AO*

1 Ñaët nuùt baét ñaàu vaøo Open

2 Trong luùc Open khaùc roãng thöïc hieän

2.1 Xaùc ñònh caây lôøi giaûi T0 höùa heïn nhaát

2.2 Choïn nuùt n trong phaàn giao cuûa Open vaø caùc nuùt laù cuûa T0.

Neáu n giaûi ñöôïc laøm toå tieân cuûa noù giaûi ñöôïc thì gaùn nhaõn giaûi ñöôïc cho toå tieân cuûa noù

2.3 Neáu n sô caáp (hoaëc giaûi ñöôïc) thì gaùn nhaõn giaûi ñöôïc cho noù.

Neáu s giaûi ñöôïc thì keát thuùc vôùi T0 laø caây lôøi giaûi

Loaïi khoûi Open taát caû caùc nuùt coù toå tieân giaûi ñöôïc

Neáu n khoâng giaûi ñöôïc laøm toå tieân cuûa noù khoâng giaûi ñöôïc thì gaùn nhaõn khoâng giaûi ñöôïc cho toå tieân cuûa noù

2.4 Neáu n khoâng giaûi ñöôïc thì gaùn nhaõn khoâng giaûi ñöôïc cho noù

Neáu s ñöôïc gaùn nhaõn khoâng giaûi ñöôïc thì keát thuùc vaø baøi toaùn khoâng giaûi ñöôïc

Loaïi khoûi Open taát caû caùc nuùt coù toå tieân khoâng giaûi ñöôïc

2.5 Ngöôïc laïi xeùt caùc nuùt con cuûa n. Ñöa chuùng vaøo Open, tính h cho

chuùng, cho n vaø caùc toå tieân cuûa n

3 Keát luaän baøi toaùn khoâng theå keát luaän laø giaûi ñöôïc hay khoâng.

Ví duï 3.8

Xeùt ví duï 2.7 vôùi f laø chieàu cao cuûa caây lôøi giaûi, bieát öôùc löôïng h cuûa caây con:

n a b c d e o h m

h 0 0 1 4 2 3 9 4

Giaûi: Duøng haøm Min cho ñænh OR vaø Max cho ñænh AND ta coù

m1 (0+ 4 3)

(1+2)

e2 a(1+0) d(1+4) o(1+3)

(2+1)

b6 (2+0) c3

(3+0) b5

(3+0)

a4

Ví duï 3.9

Tìm nguyeân haøm cuûa f(x) = (x2 + x) ex sao cho caây lôøi giaûi coù chieàu cao thaáp nhaát; duøng coâng thöùc tích phaân töøng phaàn vaø tính chaát tuyeán tính.

2

x

dx

+

( x

Giaûi: Duøng thuaät giaûi A0* vôùi f laø chieàu cao caây lôøi giaûi, ta öôùc löôïng chieàu cao caây con baèng baäc cuûa ña thöùc coäng vôùi 1 ngoaïi tröø caùc tích phaân cô baûn .

1

) ex (0+3)

x

dx

2 ex

xe x

dx

e x

dx

g

( 2 x

) dxx

dx

=

+

1

eg x 1

6

2

∫ (1+3)

(1+2)

(1+3)

(1+4)

(1+2)

2

xe x

dx

e x

dx

e x

dx

e x2

dx

g

x

2(

)1

dx

dx

=

+

2

eg x 2

(1+0)

5

3

(2+2)

∫ (2+0)

∫ (2+2)

(2+3)

(2+1)

e x

dx

(2+0)

4

(3+0)

Gioáng nhö A*, ta cuõng coù 2 caâu hoûi caàn ñöôïc traû lôøi laø

1. Ñieàu gì baûo ñaûm thuaät giaûi tìm thaáy lôøi giaûi?

2. Thuaät giaûi naøo laø toát hôn, toát nhaát?

Baèng caùch ñöa vaøo khaùi nieäm traïng thaùi phöùc, chuùng ta coù theå aùp duïng ñònh lyù 1 ñeå traû lôøi hai caâu hoûi treân. Ta coù keát quaû sau.

Ñònh lyù 3.2

Neáu baøi toaùn coù lôøi giaûi toái öu vaø h ≥ h thì thuaät giaûi tìm thaáy lôøi giaûi toái öu.

BAØI TAÄP

Baøi taäp 3.1

Duøng thuaät toaùn A*, vôùi traïng thaùi ñaàu a, traïng thaùi cuoái z vaø taäp luaät

bieát h cuûa caùc söï kieän a, b, c, d, e, f, z, g, h thöù töï laø 10, 7, 9, 9, 6, 7, 0, 12, 2

Baøi taäp 3.2

6

4

b

6

h

6

e

5

7

5

1 8

a

4

3

g

8

1 5

f

d

c

Baèng thuaät giaûi A*, tìm ñöôøng ñi ngaén nhaát töø a ñeán g

duøng haøm heuristic sau

a d b e c f

n g h h 18 9 11 23 5 3 0 6

Baøi taäp 3.3

Cho taäp luaät (kyù hieäu x→y (n) hieåu laø x suy ra y vôùi chi phí n):

b→c (6) c→f (3) e→g (2) d→i (5) i→z (12) j→z (2) a→b (3)

a→c (7) b→e (3) c→e (5) e→h (4) d→z (11) i→j (1) j→b (4)

a→d (4) e→z (14) d→b (4)

Baèng thuaät giaûi A*, chæ ra quaù trình suy dieãn töø a ñeán z duøng heuristic

g h i j

x b a h 10 7 c e d 10 14 9 f z 10 12 9 4 2 0

Baøi taäp 3.4

1. Duøng 2 bình coù dung tích laàn löôït laø 5 lít vaø 3 lít, haõy chæ ra caùch laáy

ñuùng 1 lít baèng thuaät giaûi A* vôùi heuristic sau

Bình 5 lít Bình 3 lít h Bình 5 lít Bình 3 lít hÂ

5 2 3 ? 0 ? ? ? 3 2 2 2

1 ? 3 2 0 ? 1 3 3 3 0 0 1 2 3

2. Tìm ñöôøng ñi ngaén nhaát töø A ñeán E baèng giaûi thuaät A*, bieát ma traän

keà laø

A B C D E F 4 0 10 0 0 A 8 10 10 6 6 B 0 7 0 0 C 0 8 0 0 0 D 10 5 0 0 7 E 0 5 8 0 F 6 0 6 8 0 10 4 10

duøng heuristic laø moät trong soá caùc khoaûng caùch theo ñöôøng chim bay sau

töø A ñeán

Töø E ñeán A B C D F 4 5 6 6 3 E B C D F 4 5 10 6 6

3. Giuùp ngöôøi noâng daân mang con soùi, thoû vaø gioû caø roát qua soâng bieát raèng

moãi löôït anh ta chæ chôû ñöôïc moät trong 3 maø thoâi.

Baøi taäp 3.5

1. Xeùt baøi toaùn Puzzle 8 soá. Goïi p1 laø soá caùc soá sai vò trí, p2 laø toång khoaûng caùch ñeán vò trí ñuùng cuûa moãi soá vaø p3 laø toång ñieåm cuûa caùc soá (soá ôû giöõa coù ñieåm laø 1, ôû rìa coù ñieåm laø 2). Giaû söû nuùt baét ñaàu laø (21683574_) vaø ñænh ñích laø (12345678_), ñaët hÂ1 = p1 vaø hÂ2 = p2 + 3p1p3, haõy tìm lôøi giaûi vôùi

a) h = hÂ1;

b) h = hÂ2;

c) h = hÂ2 sau 5 laàn thaùo ñònh roài thay h = hÂ1

2. Tìm moät heuristic cho troø chôi thaùp Haø Noäi 3 ñóa, 4 ñóa.

Baøi taäp 3.6

Giaûi laïi caùc ví duï tìm ñöôøng ñi duøng thuaät giaûi A0* thay cho A*

Baøi taäp 3.7

Veõ tam giaùc ABC, duøng nguyeân lyù höôùng ñích, thöû ñaùnh giaù soá coâng thöùc phaûi duøng ñeå tính cho moãi ñaïi löôïng trong tam giaùc.

Baøi taäp 3.8

Xeùt baøi toaùn heä thöùc löôïng trong tam giaùc. Baèng thuaät giaûi AO*, haõy giaûi baøi toaùn sau: cho a, b vaø B tính c. Bieát ñaùnh giaù h cuûa caùc baøi toaùn con tính c, A, C, ha, hb, hc, S laàn löôït laø 5, 2, 3, 4, 5, 1, 5.

Baøi taäp 3.9

Cho taäp luaät

Duøng thuaät toaùn A0* kieåm tra xem baøi toaùn x coù giaûi ñöôïc hay khoâng neáu:

Bieát caùc baøi toaùn u vaø v laø giaûi ñöôïc vaø h cuûa caùc baøi toaùn a, b, c, d, e, f, m, n, o, p, t, u, v, x vaø w thöù töï laø 4, 3, 2, 3, 1, 4, 3, 2, 2, 4, 1, 0, 0, 2 vaø 4 (duøng haøm max cho nuùt And vaø haøm min cho nuùt Or).

Baøi taäp 3.10

Xeùt baøi toaùn tính cos(150), haõy

1. Trình baøy caùch tính

2. Minh hoïa baèng caây And/Or

3. Cung caáp moät heuristic roài giaûi baèng thuaät giaûi A0*

Chöông 4

Troø chôi ñoái khaùng vaø phöông phaùp GPS

1. Troø chôi ñoái khaùng

1.1. Khaùi nieäm

Trong tieáp caän tröôùc, chuùng ta coù toaøn quyeàn trong vieäc löïa choïn traïng thaùi, vaø caùc pheùp bieán ñoåi ñeå giaûi quyeát vaán ñeà. Thöïc teá khoâng nhö vaäy, sau khi laäp keá hoaïch xong (A*, A0*), ñeán luùc thöïc hieän, laïi xuaát hieän nhöõng thoâng tin môùi, nhöõng tình huoáng môùi caûn trôû vieäc ñaït ñeán muïc tieâu cuûa chuùng ta.

Trong muïc naøy, chuùng ta seõ khaûo saùt moät bieåu dieãn khaùc, ñoù laø troø chôi ñoái khaùng vôùi hai ñaáu thuû. Côø töôùng, côø vua, côø vaây, côø caro,… laø nhöõng troø chôi ñoái khaùng maø chuùng ta ñaõ khaù quen thuoäc. Chuùng ta moâ hình noù nhö sau: Moãi theá côø laø moät traïng thaùi. Moät nöôùc ñi hôïp leä laø moät pheùp bieán ñoåi. Moät haøm lôïi ích ñònh nghóa treân taäp caùc theá côø. Muïc tieâu cuûa ngöôøi chôi laø, ñeán löôït mình, phaûi quyeát ñònh choïn moät nöôùc ñi. Ñaáu thuû naøo choïn ñöôïc theá thaéng cho mình thì ñaáu thuû ñoù thaéng cuoäc.

Moät haøm öôùc löôïng khaû naêng thaéng cuûa ñaáu thuû ñi tröôùc ñöôïc ñònh nghóa treân taäp caùc theá côø. Caùc chieán löôïc cuûa caùc ñaáu thuû ñeàu taäp trung öôùc löôïng thaät chính xaùc caùc theá côø trong giôùi haïn thôøi gian cho pheùp. Nguyeân lyù höôùng ñích ñöôïc söû duïng, theo ñoù caøng gaàn ñích, haøm öôùc löôïng caøng chính xaùc. Ñaáu thuû ñi tröôùc choïn theá côø sao cho cöïc ñaïi haøm öôùc löôïng, trong khi ñaáu thuû coøn laïi (ñaáu thuû ñi sau) laïi coá coâng laøm cöïc tieåu noù.

Duøng nguyeân lyù löïa choïn saâu daàn, caùc ñaáu thuû phaûi tính saâu xuoáng môùi mong coù nhöõng öôùc löôïng chính xaùc ñeå khoâng sai laàm trong choïn theá côø. Chuùng ta cuõng seõ bieåu dieãn quaù trình quyeát ñònh baèng caây And/Or vaø goïi laø caây troø chôi vôùi quy öôùc ñænh AND ñeán löôït choïn cuûa ñaáu thuû ñi tröôùc vaø duøng haøm Max coøn caùc löïa choïn cuûa ñaáu thuû ñi sau naèm ôû ñænh OR vaø duøng haøm Min

1.2. Thuaät giaûi

(a) Nhöõng neùt chính

Chuùng ta khoâng neân duøng nguyeân lyù veùt caïn bôûi soá theá côø laø voâ cuøng lôùn. Vieäc phaùt trieån caây troø chôi seõ döøng laïi khi hoaëc caùc öôùc löôïng laø ñuû tin caäy, hoaëc chieàu cao cuûa caây laø ñuû lôùn, hoaëc soá theá côø laø ñuû lôùn.

Khi caây ñöôïc phaùt trieån xong, taäp caùc nuùt laù seõ hình thaønh moät hình aûnh gioáng nhö ñöôøng chaân trôøi. Taïi ñaây caùc giaù trò öôùc löôïng ñöôïc thöøa nhaän laø chính xaùc hôn vaø quaù trình tính toaùn ñöôïc lan truyeàn cho ñeán goác.

Döïa treân keát quaû tính toaùn maø ñaáu thuû quyeát ñònh nöôùc ñi.

Ví duï 4.1

Xeùt troø chôi tic-tac-toe sau (caùc theá côø ñöôïc minh hoïa khoâng ñaày ñuû)

(b) Thuû tuïc Min/Max

Quaù trình tính toaùn raát ñôn giaûn, ví duï sau cho chuùng ta thaáy ñieàu ñoù.

Ví duï 4.2

Moät caây troø chôi ñôn giaûn

Trong quaù trình treân, caùc nuùt ñöôïc môû heát tröôùc khi caùc giaù trò Min, Max ñöôïc tính toaùn. Thaät ra moät ngöôøi chôi côø coù trình ñoä seõ khoâng thöïc hieän nhö vaäy. Tröôùc heát anh ta seõ choïn moät theá bieán (nöôùc ñi) coù nhieàu öu theá nhaát vaø tính toaùn caån thaän ñeå laøm cô sôû ñaùnh giaù tieáp. Sau ñoù xem xeùt caùc theá bieán khaùc, döïa treân cô sôû so saùnh vôùi theá bieán ñaõ choïn, anh ta coù theå nhanh choùng loaïi boû caùc theá bieán khoâng toát hoaëc tìm ra moät theá bieán khaùc toát hôn. Thuû tuïc α-β sau thöïc thi gioáng nhö theá, nhôø ñoù giaûm nheï ñöôïc quaù trình tính toaùn.

(c) Caét nhaùnh baèng thuû tuïc α-β (alpha-beta)

Ñònh nghóa 4.1

Nguyeân lyù α-β : Neáu moät ñieàu chaéc chaén laø toài thì ñöøng coá coâng ñeå thaáy noù toài nhö theá naøo.

Quaû vaäy Ngöôøi chôi côø khi ñaõ phaùt hieän ñöôïc moät theá bieán baát lôïi cho mình thì anh ta seõ khoâng phaân tích theá bieán aáy nöõa.

Xeùt thuaät toaùn tính min cuûa daõy ai (i = 1..n)

β = a1 for i := 2 to n do if β > ai then β = ai min = β

Töông töï cho max.

α = a1 for i := 2 to n do if α < ai then α = ai max = α

ÔÛ ñaây chuùng ta coi α laø max taïm thôøi coøn β laø min taïm thôøi.

Giaû söû ñang ñænh AND ñang coù max taïm thôøi laø α, hieän taïi ta ñang tính giaù trò cuûa moät nuùt con vaø coù giaù trò min taïm thôøi laø β. Neáu thaáy α ≥ β thì duø chöa tính xong min anh ta chaúng coù lyù do gì ñeå maát coâng tính cho xong

Cuõng vaäy, ñaõ coù β, ñang tính max vaø neáu coù β ≤ α thì duø chöa tính xong max anh ta cuõng thoâi khoâng tính nöõa.

Hai quaù trình noùi treân ñöôïc goïi laø caùc nhaùt caét α-β. Thuû tuïc α-β duøng caùc nhaùt caét naøy ñeå tæa nhaùnh cuûa caây tìm kieám.

Ñònh nghóa 4.2

1. Nhaùt caét α caét caùc nhaùnh döôùi nuùt AND neáu β hieän thôøi cuûa noù khoâng

lôùn hôn α hieän thôøi cuûa nuùt cha.

2. Nhaùt caét β caét caùc nhaùnh döôùi nuùt OR neáu α hieän thôøi cuûa noù khoâng beù

hôn β hieän thôøi cuûa nuùt cha.

Thöïc hieän nhaùt caét α khi α ≥ β vaø tröôøng hôïp ñaëc bieät

Thöïc hieän nhaùt caét β khi β ≤ α vaø tröôøng hôïp ñaëc bieät

Thuaät toaùn alpha: nhaùt caét beta

Vaøo: traïng thaùi S, nhaùt caét β,

Ra: giaù trò max taïm thôøi α

1 If (S naèm ôû ñöôøng chaân trôøi) then return Utility(S)

2 Ñaët α = -∞

3 Vôùi moãi traïng thaùi con n cuûa S

3.1 Tính t = beta(n, α)

3.2 If (α < t) then

3.2.1 α = t

3.2.2 If (β < α) then return α

4 return α

Trong ñoù Utility(S) laø haøm lôïi ích cuûa S

Thuaät toaùn beta: nhaùt caét alpha

Töông töï thuaät toaùn alpha

Thuaät giaûi 4: Thuû tuïc alpha-beta

Vaøo: traïng thaùi S, löôït ñi T

Ra: giaù trò öôùc löôïng cuûa S

1 If (T laø löôït ñi cuûa Max) return alpha(S,∞)

2 return beta(S,-∞)

Ví duï 4.3

Trôû laïi ví duï 2. Tröôùc heát tính ñöôïc α cuûa goác:

Tính β cuûa nuùt con thöù hai cuûa goác, vì β ≤ α, caét.

Tính β cuûa nuùt con thöù ba cuûa goác, vì β > α, khoâng coù nhaùt caét xaûy ra.

Tieáp tuïc tính β cuûa nuùt con thöù ba cuûa goác, vì β > α, vaãn khoâng coù nhaùt caét.

Tính xong min, roài xong max.

Ví duï 4.4

8 7 2 9

2 4 1 1 3 5 3 9

6

1 2 3

Choïn nöôùc ñi cho ñaáu thuû Max treân caây troø chôi maø moãi ñænh coù 3 nuùt con coù chieàu cao baèng 3 vaø giaù trò öôùc löôïng h cuûa 27 nuùt laù theo thöù töï töø traùi qua laø 8,7,2, 9,1,6, 2,4,1, 1,3,5, 3,9,2, 6,5,2, 1,2,3, 9,7,2, 16,6,4. Minh hoïa

1.3. Baøn theâm veà heuristic

Treân ñöôøng chaân trôøi coù voâ soá caùc theá côø caàn ñaùnh giaù. Thuaät giaûi chæ thaät söï hieäu quaû khi chuùng ta choïn ñöôïc sôùm caùc theá côø toát ôû ñoù. Nhö vaäy ngoaøi haøm öôùc löôïng ra chuùng ta coøn caàn ñeán moät soá thoâng tin heuristic daãn ñöôøng.

Ví duï 4.5

Laøm laïi ví duï 2.18 treân coù theâm heuristic daãn ñöôøng:

5

≤4

≤3

5

≥9

≥6

4 5 3

2 4 1 1 2 5 9 6 1 2 3

Ngoaøi ra neáu muoán söû duïng nguyeân lyù höôùng ñích, ngöôøi chôi côø caàn ñöa ra caùc ñích trung gian, roài laäp keá hoaïch thöïc hieän muïc tieâu con naøy. Vôùi caùc ñích trung gian caùch theá côø hieän taïi khoâng quaù xa neân öôùc löôïng seõ chính xaùc hôn.

2. Phöông phaùp giaûi quyeát vaán ñeà toång quaùt (GPS)

2.1. Khaùi nieäm

Trong thöïc teá, coù caû moät soá lôùn caùc luaät laøm cho caùc khaû naêng löïa choïn bò buøng noå. Phöông phaùp GPS ñöôïc khaûo saùt trong muïc naøy söû duïng moät soá caùc ñoä ño khaùc bieät ñeå giuùp löïa choïn maø khoâng caàn môû heát caùc nuùt.

Ví duï 4.6

Trong logic meänh ñeà ta coù

Taäp luaät Taäp caùc ñoä ño khaùc bieät

(r1) ¬¬p ↔ p D1. Nhieàu hôn moät chöõ

(r2) p+q ↔ q+p D2. Ít hôn moät chöõ

pq ↔ qp D3. Soá daáu phuû ñònh

(r3) p⇒q ↔ ¬q⇒¬p D4. Soá pheùp toaùn +, *

(r4) p+p ↔ p D5. Soá daáu ngoaëc pp ↔ p

D6. Thöù töï caùc chöõ

(r5) (p+q)+r ↔ p+(q+r) (pq)r ↔ p(qr)

(r6) p+q ↔ ¬(¬p¬q)

pq ↔ ¬(¬p + ¬q)

(r7) p ⇒ q ↔ ¬p + q

(r8) p(q+r) ↔ pq + pr

p+qr ↔ (p+q)(p+r)

(r9) pq → p pq → q

(r10) p → p + q

(r11) p, q → pq

(r12) p, p ⇒ q → q

(r13) p ⇒ q, q ⇒ r → p ⇒ r

Ñònh nghóa 4.3

Moâi tröôøng cho phöông phaùp GPS laø boä boán , trong ñoù

1. S laø taäp traïng thaùi vôùi S0 vaø S* laø caùc traïng thaùi ñaàu vaø cuoái töông öùng

2. O laø taäp caùc pheùp bieán ñoåi treân S vaø

3. D laø taäp caùc khaùc bieät coù theå coù giöõa 2 traïng thaùi.

4. M laø ma traän quan heä

Ví duï 4.7

Trong logic meänh ñeà ta ñaõ bieát S laø taäp caùc meänh ñeà coøn O vaø D cho trong

r0

r1

r2

r3

r4

r5

r6

r7

r8

r9 r10 r11 r12

x

x

x

x

D1

x

x

x

x

x

D2

D3

x

x

x

x

x

x

x

D4

x

x

D5

x

x

D6

ví duï treân. Trong ví duï naøy ta boå sung theâm ma traän quan heä M

2.2. Thuaät giaûi

(a) Phaân tích means-end

Thuaät toaùn: phaân tích means-end

Vaøo: S

Ra: Thaønh coâng hoaëc thaát baïi

1. So saùnh S vôùi S* vaø xaùc ñònh Ds*

2. Choïn moät pheùp bieán ñoåi Ok laøm giaûm Ds*

3. Aùp duïng Ok. Neáu khoâng ñöôïc thì löu laïi, phaùt sinh ñích môùi vaø phaân

tích means-ends cho noù.

4. Neáu ñích con ñöôïc giaûi thì quay lui veà ñích ñaõ löu gaàn nhaát

Thuaät giaûi 5: thuaät giaûi GPS

1. Phaân tích means-end cho traïng thaùi S0

2. Neáu thaønh coâng thì phaùt sinh lôøi giaûi

Chuùng ta minh hoïa phöông phaùp naøy qua hai ví duï: baøi toaùn bieán ñoåi bieåu thöùc vaø baøi toaùn con khæ naûi chuoái. Chuùng ta baét ñaàu vôùi baøi toaùn bieán ñoåi bieåu thöùc cuûa meänh ñeà ñöôïc bieåu dieãn qua hai loaïi ñænh trong caây tìm kieám vaø baøi toaùn con khæ naûi chuoái vôùi caùc nuùt rieâng ñaëc thuø cho phöông phaùp GPS.

(b) Duøng caây vôùi caùc nuùt trong S

Moãi nuùt laø meänh ñeà, pheùp bieán ñoåi laø luaät (ví duï 2.31, 2.32), löïa choïn luaät baèng caùch giaûm Di

Ví duï 4.8

• So saùnh R(¬P ⇒ Q) vôùi (Q+P)R khaùc bieät D3, D4 vaø D6

• aùp duïng r1 (ñeå giaûm D6) ñöôïc (¬P ⇒ Q)R

• aùp duïng r6 (ñeå giaûm D4) ñöôïc (¬¬P + Q)R

• aùp duïng r0 (ñeå giaûm D3) ñöôïc (P + Q)R

• aùp duïng r1 (ñeå giaûm D6) ñöôïc (Q + P)R

Haõy bieán ñoåi R(¬P ⇒ Q) thaønh (Q+P)R

(c) Duøng caây vôùi caùc nuùt rieâng

ÔÛ ñaây ta duøng 3 loaïi nuùt ( goïi laø 3 ñích - Goal ) vôùi luaät phaùt sinh rieâng cho moãi loaïi nuùt

1. Nuùt nhaõn A nghóa laø aùp duïng luaät, neáu khoâng thaønh coâng nuùt ñöôïc löu

vaø sinh ra (luaät rieâng cuûa baøi toaùn) nuùt F

2. Nuùt nhaõn F nghóa laø tìm luaät, neáu tìm thaáy sinh ra moät nuùt A

3. Nuùt nhaõn T nghóa laø tìm D, neáu tìm thaáy phaùt sinh F

Giaûi baøi toaùn ñöôïc baét ñaàu vôùi nuùt T, dó nhieân T giaûi ñöôïc neáu khoâng tìm thaáy moät khaùc bieät naøo caû. Töø T sinh ra F, töø F sinh ra A. Neáu A khoâng giaûi ñöôïc, löu laïi vaø sinh ra F vaø cöù nhö vaäy…

Ví duï 4.9

• Bieåu dieãn traïng thaùi laø boä 3, chaúng haïn traïng thaùi ban ñaàu

Giaûi baøi toaùn con khæ vaø naûi chuoái. Tröôùc heát ta xaùc ñònh moâi tröôøng

S0 = {loc(M) = p1, loc(C) = p2, contents(hand M) = ∅ }

nghóa laø con khæ M ôû taïi p1, chieác gheá C ôû p2, tay con khæ khoâng coù gì. Traïng thaùi ñích

S* {?, ?, contents(hand M) = B }

• Taäp caùc khaùc bieät

nghóa laø tay con khæ coù naûi chuoái B

D1 = loc(M) khaùc veà vò trí con khæ

D2 = loc(C) khaùc veà vò trí chieác gheá

D3 = contents(hand M) khaùc veà caùi trong tay con khæ

• Caùc pheùp bieán ñoåi

Trong ñoù ta quy öôùc thöù töï ñoä khoù laø D3 D2 vaø D1

r1 : CLIMB

condition loc(M) = loc(C)

action loc(M) = on-C

r2 : WALK

condition x laø bieán vò trí

action loc(M) = x

r3 : MOVE

loc(M) ≠ on-C

condition x laø bieán vò trí

loc(M) = loc(C)

action loc(M) = x

loc(C) = x

r4 : GET

condition loc(C) = under-B

loc(M) = on-C

• Ma traän quan heä

action contents(hand M) = B

D1 D2 D3

r1 x

r2 x

r3 x x

r4 x

Ví duï 4.10

Minh hoïa baøi toaùn con khæ vaø naûi chuoái baèng caây vôùi 3 loaïi nuùt T, F vaø A

1 Baét ñaàu laø nuùt T

2 Choïn D3, phaùt sinh F

3 Choïn r4, khoâng aùp duïng ñöôïc

4 Phaùt sinh F laøm giaûm D2

5 Choïn r3, khoâng aùp duïng ñöôïc

6 Phaùt sinh F laøm giaûm D1

∅ }

7 Choïn r2, aùp duïng ñöôïc S1= {loc(M)= p2, loc(C)= p2, contents(hand M)=

8 Quay veà ñích G5 tieáp tuïc aùp duïng r3 ñöôïc S2 = {loc(M) = under-B, loc(C)

= under-B, contents(hand M) = ∅ }

9 Quay veà ñích G3 tieáp tuïc aùp duïng r4 nhöng vaãn khoâng ñöôïc

10 Phaùt sinh F laøm giaûm D1

11 Choïn r1, aùp duïng ñöôïc S3 = {loc(M) = on-C, loc(C) = under-B,

contents(hand M) = ∅ }

12 uay veà ñích G9 tieáp tuïc aùp duïng r4 ñöôïc S4 = {loc(M) = on-C, loc(C) =

under-B, contents(hand M) = B }

13 Quay veà ñích G1 tieáp T vaø keát thuùc thaønh coâng

Minh hoïa ñaày ñuû

Ví duï 4.11

• p, q laø tuyø yù

• 1 laø under-B

• 0 laø on-C

Minh hoïa baøi toaùn con khæ vaø naûi chuoái baèng caây vôùi caùc nuùt laø caùc keát quaû trung gian. Quy öôùc caùc vò trí nhö sau

Kyù hieäu boä ba (x, y, z) vôùi yù nghóa x laø vò trí con khæ, y laø vò trí caùi gheá coøn z nhaän 0 neáu tay khæ chöa coù chuoái, nhaän 1 trong tröôøng hôïp ngöôïc laïi.

Ta coù S0= (p, q, 0) coøn S* = (.,.,1)

Keát quaû tìm kieám

BAØI TAÄP

Baøi taäp 4.1

Duøng thuaät giaûi alpha/beta, choïn nöôùc ñi tieáp theo vôùi caây troø chôi nhö sau:

bieát ñaùnh giaù töø traùi sang laø 7,4, 6,2, 5,4,1, 3,1, 4,2,2, 3,1, 4,1, 2,4,6, 3,5

Baøi taäp 4.2

Xeùt troø chôi tic-tac-toe, vôùi theá côø hieän taïi daønh cho X nhö sau (X ñi tröôùc,)

X O O O X X

Baèng caùch tính xuoáng 2 nöôùc ñi, haõy xaùc ñònh nöôùc ñi keá tieáp bieát haøm ñaùnh giaù p laø toång cuûa caùc giaù trò quaân ñi tröôùc tröø cho toång cuûa caùc giaù trò quaân sau, vôùi toång giaù trò cuûa moät quaân côø laø söï cheânh leäch quaân trong laân caän 4.

Baøi taäp 4.3

Cho caây troø chôi sau:

Bieát ñaùnh giaù caùc theá côø ôû ñöôøng chaân trôøi töø traùi qua phaûi laø 3, 2, 4, 5, 1, 3, 6, 4, 7, 5, 2, 3, 5, 3, 2, 4, 5 vaø 1. Haõy choïn nöôùc ñi vôùi yeâu caàu

1. Duøng minmax

2. Duøng minmax coù söû duïng nhaùt caét αβ vôùi thöù töï xeùt töø phaûi qua traùi.

Baøi taäp 4.4

X

X

O X

O

X

X O X

O X X

X

O X

O X X

Xeùt troø chôi Tic-tac-toe, haõy chæ cho ñaáu thuû ñi tröôùc nöôùc ñi chính xaùc neáu haøm öôùc löôïng laø hieäu cuûa caùc ñöôøng môû cuûa hai ñaáu thuû. Bieát caây troø chôi

Baøi taäp 4.5

Cho hai theá côø sau, trong theá côø thöù 1 ñeán löôït ñi cuûa traéng, coøn ôû theá côø

thöù 2 ñeán löôït cuûa ñen. Haõy xaùc ñònh moät haøm ñaùnh giaù ñeå chöùng toû traéng öu trong theá côø thöù 1 coøn ñen thaéng trong theá côø thöù 2.

Baøi taäp 4.6

Chöùng toû nhaùt caét saâu sau ñaây khoâng aûnh höôûng ñeán thuû tuïc min-max (α ≥ β)

Baøi taäp 4.7

Bieán ñoåi bieåu thöùc (r ⇒ ¬p) (¬r ⇒ q) veà ¬(¬qp)

Baøi taäp 4.8

Cho 2 bình: bình I coù dung tích 5 lít vaø bình II coù dung tích 8 lít. Haõy chæ ra caùch laáy ñuùng 2 lít baèng phöông phaùp GPS, bieát moâi tröôøng cuûa baøi

toaùn nhö sau:

1 S0 = (0,0): hai bình roãng, S* = (2,8): bình I chöùa 2 lít coøn bình II ñaày.

2 Coi Di laø soá lít khaùc nhau ôû bình i (i=1,2) (giaû söû D1 quan troïng hôn

D2)

3 R1: sang nöôùc töø bình I sang bình II

R2: ñoå nöôùc vaøo hoaëc ra khoûi bình I

R3: sang nöôùc töø bình II sang bình I

R4: ñoå nöôùc vaøo hoaëc ra khoûi bình II

4 Quan heä: R2 thay ñoåi d1, R4 thay ñoåi d2 coøn R1 vaø R3 thay ñoåi caû d1,

d2.

Baøi taäp 4.9

Duøng phöông phaùp GPS ñöa S0 veà S* vôùi moâi tröôøng cuûa baøi toaùn nhö sau:

5 Traïng thaùi ñaàu S0 = (4, 6)

Traïng thaùi cuoái S* = (0, 0)

6 d1 : söï khaùc bieät giöõa caùc soá thöù nhaát

d2 : söï khaùc bieät giöõa caùc soá thöù hai

7 r1: ñöa (x, y) veà (x-2, y-1) vôùi ñieàu kieän x > y

r2: ñöa (x, y) veà (x, y-2) vôùi ñieàu kieän y > 0

8 Ma traän quan heä nhö sau: r1 giaûm d1 vaø d2 coøn r2 chæ giaûm d2.

Baøi taäp 4.10

• Si = (5,3,2) vaø Sf = (0,0,0)

• Xeùt S = (a1, a2, a3), ta noùi coù khoaûng caùch di neáu ai>0

• Taäp luaät goàm

Cho moâi tröôøng

r1 : ñöa (a1, a2, a3) veà (0, a2, a3) neáu 0 < a1 < 4

r2 : ñöa (a1, a2, a3) veà (a1 –1 , a2 –1, a3) neáu 0 < a1, 0 < a2

hoaëc giöõ nguyeân traïng thaùi cuõ trong tröôøng hôïp ngöôïc laïi.

• Ma traän quan heä nhö sau: r1 giaûm d1, r2 giaûm d1 vaø d2 coøn r3 giaûm d3.

r3 : ñöa (a1, a2, a3) veà (a1, a2, 0)

1. Lieäu phaân tích means-end coù ñöa Si veà Sf ñöôïc khoâng? Veõ caây minh

hoïa?

2. Tröôøng hôïp thay ñoåi ñoä öu tieân d2 tröôùc d1 vaø cuoái cuøng laø d3 thì keát

quaû theá naøo?

PHAÀN 2

SUY LUAÄN

Khi xem xeùt caùc söï kieän chuùng ta ñeàu muoán coù ñöôïc moät ñaùnh giaù veà chuùng, raèng chuùng coù thaät söï xaûy ra khoâng, vôùi möùc ñoä bao nhieâu; ñeå töø ñoù maø coù nhöõng keát luaän phuø hôïp. Muoán vaäy chuùng ta caàn coù trong tay nhöõng chöùng cöù vaø tìm ra caùc moái lieân heä giöõa caùc chöùng cöù naøy vôùi nhöõng söï kieän

maø chuùng ta quan taâm.

Trong thöïc teá coù nhöõng vaán ñeà ñoøi hoûi vieäc keát luaän phaûi thaät chính xaùc, hoaëc ñuùng hoaëc sai; chuùng thöôøng coù daïng ñònh lyù p→ q, trong ñoù p laø giaû thieát coøn q laø keát luaän.

Tuy nhieân, haàu heát nhöõng thoâng tin maø chuùng ta coù ñöôïc laø khoâng chaéc chaén. Khi xem xeùt moät söï kieän, chuùng ta khoâng chaéc chaén laø noù xaûy ra hay khoâng. Thay vaøo ñoù chuùng ta tìm caùch ñaùnh giaù khaû naêng xaûy ra roài caên cöù vaøo ñoù maø keát luaän.

Chöông 5

Suy luaän logic

Suy luaän logic duøng ñeå keát luaän veà nhöõng vaán ñeà ñoøi hoûi phaûi chính xaùc, hoaëc ñuùng hoaëc sai. Nhöõng vaán ñeà naøy thöôøng coù daïng ñònh lyù p→ q, trong ñoù p laø giaû thieát coøn q laø keát luaän. Vì yeâu caàu veà tính chaët cheõ vaø chính xaùc cuûa vaán ñeà caàn giaûi quyeát, chuùng ta caàn ñeán caùc suy luaän logic, vaø do ñoù caàn laøm quen vôùi caùch bieåu dieãn meänh ñeà.

1. Suy luaän

Ñònh nghóa 5.1

1. Suy luaän laø quaù trình laøm vieäc vôùi tri thöùc, söï kieän vaø caùc chieán löôïc

giaûi baøi toaùn ñeå ruùt ra keát luaän.

2. Suy dieãn laø phöông tieän sinh ra caùc söï kieän môùi.

Ví duï 5.1

Xeùt baøi toaùn tìm ñöôøng ñi:

1 Thaønh phoá ñi vaø thaønh phoá ñeán laø caùc söï kieän ban ñaàu;

2 Baûn ñoà laø tri thöùc giuùp ta suy dieãn ra caùc thaønh phoá caàn xeùt laø caùc söï

kieän môùi;

3 Vieäc quyeát ñònh xeùt nhöõng thaønh phoá naøo ñeå tìm thaáy ñöôøng ñi laø chieán

löôïc giaûi baøi toaùn.

4 Keát quaû cuûa quaù trình naøy laø keát luaän veà vieäc coù tìm thaáy ñöôøng ñi hay khoâng; vaø vieäc chæ roõ ñöôøng ñi nhaèm khaúng ñònh keát luaän cuûa coù ñöôïc laø ñuùng ñaén vaø hôïp logic; töùc laø quaù trình suy luaän.

Roõ raøng keát quaû suy luaän tuøy thuoäc vaøo caùch chuùng ta duøng söï kieän, tri thöùc vaø chieán löôïc giaûi baøi toaùn cuï theå nhö theá naøo. Theo ñoù, chuùng ta coù theå söû duïng phöông phaùp tìm kieám ñeå chæ ra quaù trình suy luaän.

Ñònh nghóa 5.2

Suy luaän ñôn ñieäu laø suy luaän maø caùc söï kieän (cuõ hoaëc môùi phaùt sinh trong quaù trình laøm vieäc) vaãn ñöôïc giöõ nguyeân veïn. Ngöôïc laïi vôùi suy luaän ñôn ñieäu laø suy luaän khoâng ñôn ñieäu.

Ví duï 5.2

Trong baøi toaùn tìm ñöôøng ñi ta quan saùt thaáy caùc söï kieän (thaønh phoá caàn xem xeùt) ñöôïc boå sung daàn vaø vaãn ñöôïc giöõ nguyeân veïn. Baây giôø chaúng haïn ñaët baøi toaùn phuï thuoäc vaøo thôøi gian. Khi aáy trong khi suy luaän coù khaû naêng moät vaøi söï kieän ñaõ ñöôïc boå sung vì lyù do naøo ñoù trôû neân khoâng ñuùng ñaén (coù theå do söï coá giao thoâng!) hoaëc moät soá söï kieän leõ ra caàn ñöôïc boå sung (coù theå do môùi thoâng ñöôøng!) laøm cho taäp caùc söï kieän khoâng coøn toaøn veïn. Roõ raøng vôùi tröôøng hôïp sau thì suy luaän ñôn ñieäu trôû neân khoâng coøn phuø hôïp nöõa.

2. Suy luaän vôùi logic meänh ñeà

2.1. Khaùi nieäm

Meänh ñeà laø moät phaùt bieåu hoaëc ñuùng hoaëc sai. Moät caùch hình thöùc, ngoân ngöõ cuûa logic meänh ñeà ñöôïc xaây döïng töø moät baûng caùc kyù hieäu meänh ñeà bao goàm caùc meänh ñeà, caùc haèng meänh ñeà vaø caùc bieán meänh ñeà, cuøng caùc pheùp toaùn logic quen thuoäc nhö tích (.), toång (+), phuû ñònh (¬), keùo theo (→)

Ñònh nghóa 5.3

1. Moãi kyù hieäu meänh ñeà laø moät daïng meänh ñeà

2. Neáu p, q laø daïng meänh ñeà thì ¬p, p.q, p + q, p → q laø caùc daïng meänh

ñeà

Ví duï 5.3

1 5 > 7 laø meänh ñeà sai

2 12 ≤ 12 laø moät meänh ñeà ñuùng

3 x > 5 khoâng phaûi laø moät meänh ñeà

4 (p + q) → r ¬(s → p) laø moät daïng meänh ñeà, vôùi p, q, r vaø s laø caùc bieán

meänh ñeà.

Ñònh nghóa 5.4

1. Daïng meänh ñeà chæ goàm moät bieán meänh ñeà hoaëc phuû ñònh cuûa moät bieán

meänh ñeà ñöôïc goïi laø moät töø ñôn

2. Daïng meänh ñeà laø tích cuûa caùc töø ñôn ñöôïc goïi laø moät ñôn thöùc.

3. Daïng meänh ñeà laø toång cuûa caùc töø ñôn ñöôïc goïi laø moät caâu ñôn

Ñònh lyù 5.1

Moïi daïng meänh ñeà ñeàu coù caùc daïng bieåu dieãn sau

1. Toång cuûa caùc ñôn thöùc hay daïng tuyeån chuaån taéc

2. Tích cuûa caùc caâu ñôn hay daïng hoäi chuaån taéc

Thuaät toaùn ñöa daïng meänh ñeà veà daïng chuaån taéc

1 Khöû pheùp keùo theo baèng caùch thay daïng meänh ñeà p → q bôûi daïng

meänh ñeà ¬p + q.

2 Ñöa daáu phuû ñònh vaøo taän cuøng baèng caùch thay daïng meänh ñeà ¬ (p

+ q) bôûi ¬p¬q vaø ¬ (p q) bôûi ¬p +¬q

3 Khai trieån baèng caùch thay daïng meänh ñeà p (q + r) bôûi pq + pr hoaëc

thay daïng meänh ñeà p + qr bôûi (p + q)(p + r)

Ví duï 5.4

• Sau böôùc 1: ¬ ( ⎤ a + b ) + c ( d + a )

• Sau böôùc 2: a¬ b + c ( d + a )

• Vaø cuoái cuøng: a¬ b + cd + ca

Ñöa daïng meänh ñeà sau ¬ ( a → b ) + c ( d + a ) veà daïng tuyeån chuaån taéc

2.2. Moät soá cô cheá phaùt sinh söï kieän (quy taéc suy dieãn)

(a) Suy dieãn

Modus ponens

P P → Q ∴Q

¬Q P → Q ∴¬P

Modus tollens

Ví duï 5.5

Trôøi möa Trôøi möa → Ñaát öôùt ∴Ñaát öôùt

Ñaát khoâng öôùt Trôøi möa → Ñaát öôùt ∴Trôøi khoâng möa

(b) Quy dieãn

Q P → Q ∴P

Ví duï 5.6

Ñaát öôùt Trôøi möa → Ñaát öôùt ∴Trôøi möa

(c) Quy naïp (khoâng hoaøn toaøn)

P P1 → Q … Pn → Q ∴Q

Ví duï 5.7

Ngaøy mai, Noùng Hoâm qua, Noùng → Möa Hoâm nay, Noùng → Möa ∴Möa

(d) Töông töï

P’ P → Q

∴Q’

Ví duï 5.8

P’ P → Q ∴Q’

(e) Hôïp giaûi

P ∨ Q ¬ P ∨ R ∴Q ∨ R

Ví duï 5.9

Teøo taém möa ∨ Trôøi khoâng möa Trôøi möa ∨ Tyù chôi boùng ñaù ∴ Teøo taém möa ∨ Tyù chôi boùng ñaù

2.3. Suy luaän

(a) Duøng caây AND/OR

Ñænh AND duøng haøm MIN, ñænh OR duøng haøm MAX

Ví duï 5.10

Haõy keát luaän xem A coù xaûy ra hay khoâng neáu F, I vaø J ñöôïc bieát laø ñaõ xaûy ra. Söû duïng taäp luaät sau

r1: F

→ D → D r2: IH r3: G+J → E r4: H+FG → C

r5: DE → B r6: B → A r7: C → A

Taäp luaät

A B C D E

B C D E H F G F I H G J

Caây suy luaän

A Ñ

C B Ñ

D Ñ E Ñ

I H G F Ñ J Ñ

Veà chieán löôïc giaûi quyeát vaán ñeà

1. Ta coù theå duøng caùc nguyeân lyù tìm kieám treân caây

2. Hoaëc thöïc hieän caùc nhaùt caét tuyeät ñoái nhôø ñoù maø neân vieäc nhanh choùng ñi ñeán caùc söï kieän cho tröôùc giuùp quaù trình suy luaän ñöôïc nhanh choùng.

(b) Duøng hôïp giaûi

Vieát laïi quy taéc suy dieãn hôïp giaûi

p + q

∴q + r

¬p + r

Vaø nhaéc laïi phöông phaùp chöùng minh phaûn chöùng:

Thay vì chöùng minh p → q, ta ñi chöùng minh p¬ q suy ra ñieàu voâ lyù

Thuaät giaûi 6: quaù trình hôïp giaûi Robinson

Taäp luaät coù daïng hoäi chuaån taéc

1 Chuyeån baøi toaùn coù daïng meänh ñeà p → q thaønh p¬q

2 Ñöa caùc daïng meänh ñeà veà daïng hoäi chuaån taéc

3 Khôûi taïo taäp S goàm caùc caâu ñôn

4 Choïn trong S ra moät caëp, goïi laø caëp tieàn boái, coù theå duøng ñöôïc nguyeân

lyù hôïp giaûi

4.1 Hôïp giaûi ñöôïc caâu môùi, goïi laø haäu dueä

4.2 Neáu haäu dueä laø caâu roãng thì return true

4.3 Traû hai tieàn boái vaø boå sung haäu dueä vaøo S

5 Return false

Ví duï 5.11

• Baét ñaàu (⎤ a+⎤ b+c), ( ⎤ b+⎤ c+d), a, b vaø ⎤ d

• Hôïp giaûi (⎤ a+⎤ b+c) vaø a ñöôïc (⎤ b+c)

• Hôïp giaûi (⎤ a+⎤ b+c) vaø b ñöôïc (⎤ a+c)

• Hôïp giaûi (⎤ b+⎤ c+d) vaø ⎤ d ñöôïc (⎤ b+⎤ c)

• Hôïp giaûi (⎤ b+c) vaø b ñöôïc c

• Hôïp giaûi (⎤ b+⎤ c) vaø b ñöôïc ⎤ c

• Hôïp giaûi c vaø ⎤ c ñöôïc caâu roãng.

Chöùng minh meänh ñeà (⎤ a+⎤ b+c) ( ⎤ b+⎤ c+d) a b → d

Meänh ñeà ñöôïc chöùng minh

Minh hoïa baèng caáu truùc caây

Minh hoïa baèng danh saùch

(c) Moät soá chieán löôïc hôïp giaûi

Trong suoát quaù trình hôïp giaûi, khi vaãn phaûi ñeå laïi caùc caâu tieàn boái trong S thì söï buøng noå toå hôïp laø keát quaû taát yeáu. Chuùng ta caàn khaûo saùt caùc nguyeân taéc hay caùc chieán löôïc hôïp giaûi ñeå quaù trình ñöôïc thöïc hieän nhanh hôn. AÙp duïng caùc chieán löôïc naøy coù theå phaûi hy sinh ñeán tính ñaày ñuû nghóa laø baûo ñaûm hoaøn taát chöùng minh neáu baøi toaùn laø ñuùng.

1. Chieán löôïc ñôn vò: Moät trong caùc meänh ñeà tieàn boái laø meänh ñeà taàm

thöôøng.

2. Chieán löôïc input: Moät trong caùc meänh ñeà laø giaû thieát hoaëc phuû ñònh cuûa

keát luaän.

3. Chieán löôïc choáng ñôõ: Moät trong caùc meänh ñeà tieàn boái laø keát quaû hoaëc daãn xuaát cuûa keát quaû. Chieán löôïc naøy duøng suy dieãn luøi vaø khoâng ñaët keát quaû vaøo taäp khôûi taïo.

4. Chieán löôïc tuyeán tính: Moät trong caùc meänh ñeà tieàn boái laø keát quaû hôïp giaûi tröôùc ñoù, vaø meänh ñeà coøn laïi hoaëc laø tieàn boái cuûa caùi thöù nhaát hoaëc laø meänh ñeà input.

Caùc chieán löôïc 1 vaø 2 laø khoâng ñaày ñuû; caùc chieán löôïc 3 vaø 4 laø ñaày ñuû, ngoaøi ra chieán löôïc 4 ñöôïc coi laø khaù hieäu quaû.

Ví duï 5.12

Laøm laïi ví duï 2.21 duøng chieán löôïc choáng ñôõ

3. Suy luaän vôùi logic caáp 1

3.1. Khaùi nieäm

• Vò töø caáp n laø moät phaùt bieåu chöùa n bieán xi (i=1..n) sao cho khi xi nhaän

Ñònh nghóa 5.5

• Moät trong hai löôïng töø ∃ (toàn taïi) vaø ∀ (vôùi moïi) ñaët tröôùc vò töø laøm

caùc giaù trò cuï theå thì noù trôû thaønh meänh ñeà

giaûm caáp cuûa noù 1 ñôn vò

Ví duï 5.13

(x + y > 2) laø moät vò töø caáp 2

(∀x) (x + y > 2) laø moät vò töø caáp 1

(∀x) (∃y) (x + y > 2) laø moät meänh ñeà (coù chaân trò ñuùng neáu x, y laø caùc soá nguyeân chaúng haïn)

Nhö vaäy töø moät vò töø caáp 2 chuùng ta seõ coù hai vò töø caáp 1 vaø boán meänh ñeà.

Tuy nhieân, neáu xem taát caû caùc bieán laø moät bieán duy nhaát x = (x1, x2, …, xn) thì vôùi vò töø P(x) ta seõ coù duy nhaát hai meänh ñeà daïng ∀x P(x) vaø ∃x P(x). Chaúng haïn xem (x, y) laø moät bieán, khi aáy coù theå coi vò töø (x + y > 2) laø moät vò töø caáp 1, do ñoù chuùng ta seõ coù hai meänh ñeà laø ∀(x,y) (x + y > 2) vaø ∃(x,y) (x + y > 2). Lónh vöïc logic lieân quan ñeán caùc vò töø nhöng chæ laøm vieäc vôùi caùc meänh ñeà daïng caáp 1 nhö vaäy ñöôïc goïi laø logic caáp 1.

Thuaät toaùn sau ngoaøi vieäc ñöa ra danh saùch caùc caâu, noù ñöa caùc caâu, moãi caâu laø moät meänh ñeà, thaønh caùc meänh ñeà hoaëc laø söï kieän thuaàn tuyù hoaëc laø luaät daïng ∀x P(x).

Thuaät toaùn ñöa vò töø veà daïng hoäi chuaån taéc

1. Khöû caùc daáu keùo theo vaø töông ñöông

2. Ñöa daáu phuû ñònh vaøo trong cuøng.

3. Thay teân bieán ñeå moãi löôïng töø coù moät teân bieán rieâng

4. Khöû caùc löôïng töø toàn taïi

5. Loaïi boû caùc löôïng töø vôùi moïi

6. Khai trieån vaø ruùt goïn

Ví duï 5.14

Ñöa ∀x, (P(x) ⇒ ( ∀y ( P(y) ⇒ P(f(x,y)) ) ∧ ¬∀y (Q(x,y) ⇒ P(y))) veà daïng hoäi chuaån taéc

• b1: ∀x, (¬P(x) ∨ ( ∀y (¬P(y) V P(f(x,y)) ) ∧ ¬∀y (¬Q(x,y) ∨ P(y)))

• b2: ∀x, (¬P(x) ∨ ( ∀y (¬P(y) V P(f(x,y)) ) ∧ ∃y (Q(x,y) ∧ ¬P(y)))

• b3: ∀x, (¬P(x) ∨ ( ∀y (¬P(y) V P(f(x,y)) ) ∧ ∃z (Q(x,z) ∧ ¬P(z)))

• b4: ∀x, (¬P(x) ∨ ( ∀y (¬P(y) V P(f(x,y)) ) ∧ (Q(x,g(x)) ∧ ¬P(g(x))))

• b5: ¬P(x) ∨ ( (¬P(y) ∨ P(f(x,y)) ) ∧ Q(x,g(x)) ∧ ¬P(g(x))

• b6: ¬P(x) ∨ ¬P(y) ∧ Q(x,g(x)) ∧ ¬P(g(x)) ∨ P(f(x,y)) ∧ Q(x,g(x)) ∧¬P(g(x))

Giaûi

3.2. Suy luaän

Baèng moät pheùp thay theá caùc bieán thích hôïp chuùng ta seõ xaây döïng caùc böôùc suy luaän vaø duøng ví duï sau ñeå minh hoaï.

Ví duï 5.15

Cho vò töø P(x, y) vaø luaät P(x, y) ∧ P(y, z) → P(x, z). Töø caùc söï kieän P(a, b), P(b, c) vaø P(c, d), haõy keát luaän veà söï kieän P(a, d)

(a) Duøng caây AND/OR

Taäp luaät

P(X, Z)

P(a, b) P(b, c) P(c, d) P(X, Y) P(Y, Z)

Caây suy luaän

P(a, d)

P(a, Y) P(Y, d)

P(a, b) P(Y, d) P(d, P(a, Y1) P(Y1, Y) P(c, d)

P(a,b)

. P(b, c)

.

.

.

P(a,Y2)

P(Y2,Y)

Z)

(b) Duøng hôïp giaûi

Tröôùc heát xaây döïng danh saùch caùc caâu (ta duøng caùc kyù hieäu +, * thay cho ∨, ∧):

1. P(x,z) + ¬P(x,y) + ¬P(y,z)

2. P(a, b)

3. P(b, c)

4. P(c, d)

5. ¬P(a, d)

Thöïc hieän quaù trình suy luaän baèng hôïp giaûi

6. P(a, z) + ¬P(b, z) thay x = a, y = b hôïp giaûi 1 vaø 2

7. P(a, c) thay z = c, hôïp giaûi 3 vaø 6

8. ¬P(b, d) thay z = d, hôïp giaûi 5 vaø 6

9. P(x, b) + ¬P(x, a) thay y = a, z = b, hôïp giaûi 1 vaø 2

10. P(b, z) + ¬P(c, z) thay x = b, y = c, hôïp giaûi 1 vaø 3

11. P(b, d) thay z = d hôïp giaûi 4 vaø 10

12. Maâu thuaån hôïp giaûi 8 vaø 11

Vaøi ví duï

Trong caùc ví duï sau ñaây, chìa khoaù ñeå giaûi caùc baøi toaùn laø ñònh nghóa caùc vò töø cho thích hôïp.

Ví duï 5.16

Vôùi baøi toaùn tìm ñöôøng ñi, ta ñònh nghóa hai vò töø

1. P(x, y) : töø x coù ñöôøng ñi tröïc tieáp (road) ñeán y, vaø

2. Q(x, y) : töø x coù ñöôøng ñi (route) ñeán y.

Vaø caùc meänh ñeà caàn thieát

1. (∃x) (∃y) (P(x,y))

2. (∀x) (∀y) (P(x,y) → Q(x,y))

3. (∀x) (∀y) (∀z) (Q(x,z) ∧ P(z,y) → Q(x,y))

Chaúng haïn vôùi baøi toaùn tìm ñöôøng ñi töø N ñeán L cho trong ví duï 1.1, caùc meänh ñeà ñöôïc cho cuï theå nhö sau

1. P(N, C)

2. P(C, D)

3. P(N, T)

4. P(N, D)

5. P(T, G)

6. P(T, L)

7. P(T, C)

8. P(D, U)

9. P(D, H)

10. P(H, L)

11. P(D, L)

12. ¬P(x, y) + Q(x, y)

13. ¬Q(x, f(x, y)) + ¬P(f(x, y), y) + Q(x, y)

14. ¬Q(N, L)

vaø quaù trình hôïp giaûi

15. Q(N, C) thay x = N, y = C hôïp giaûi 1 vaø

12

16. Q(N, D) thay x = N, f(x, y) = C, y = D 2, 13 vaø 15

17. Q(N, L) thay x = N, f(x, y) = D, y = L 11, 13 vaø 16

18. maâu thuaãn 14 vaø 17

Ví duï 5.17

Baøi toaùn con khæ vaø naûi chuoái ñöôïc phaùt bieåu nhö sau:

Trong phoøng coù con khæ, chieác gheá vaø naûi chuoái.

Naûi chuoái ñöôïc treo treân traàn nhaø.

Con khæ coù theå di chuyeån quanh phoøng, coù theå ñaët chieác gheá ôû baát cöù nôi naøo vaø coù theå leo leân gheá. Noù coù theå laáy ñöôïc naûi chuoái chæ khi chieác gheá ñöôïc ñaët tröïc tieáp döôùi naûi chuoái.

Laøm theá naøo noù coù theå laáy ñöôïc naûi chuoái?

Giaûi:

Baøi toaùn coù theå giaûi ñöôïc nhôø caùc vò töø

1. in_room(X) : coù X trong phoøng

2. dexterrous(X) : X laø loaøi kheùo leùo

3. tail(X) : X cao

4. can_climb(X, Y) : X coù theå leo leân Y

5. can_move(X, Y, Z) : X coù theå di chuyeån Y ñeán gaàn Z

6. get_on(X, Y) : X ñöùng treân Y

7. under(X, Y) : X ôû beân döôùi Y

8. close(X, Y) : X gaàn Y

9. can_reach(X,Y) : X coù theå laáy ñöôïc Y

Vaø caùc meänh ñeà cuï theå:

1. in_room(bananas)

2. in_room(chair)

3. in_room(monkey)

4. dexterrous(monkey)

5. tail(chair)

6. can_move(monkey, chair, bananas)

7. can_climb(monkey, chair)

8. can_climb(X, Y) ⇒ get_on(X, Y)

9. in_room(X) in_room(Y) in_room(Z) can_move(X, Y, Z) ⇒ under(Y, Z)

10. get_on(X,Y) under(Y,Z) tail(Y) ⇒ close(X,Z)

11. dexterrous(X) close(X,Y) ⇒ can_reach(X,Y)

BAØI TAÄP

Baøi taäp 5.1

ÔÛ nhaø Teøo laø ñöùa raát vuïng, ñuïng gì hö naáy. Ba Teøo hay ñaùnh ñoøn Teøo moãi khi teøo laøm hö baát kyø moät moùn gì. Moät hoâm ñi hoïc veà, Teøo thaáy ôû nhaø coù moät caùi ly bò vôõ, trong nhaø khoâng coøn ai. Theá laø Teøo khoùc. Hoûi Teøo baûo Teøo sôï ba ñaùnh ñoøn. Haõy chæ ra cô cheá suy dieãn naøo ñöôïc Teøo duøng ñeå suy ra raèng Teøo seõ bò ba ñaùnh ñoøn?

Baøi taäp 5.2

Haõy hôïp giaûi baøi toaùn con khæ vaø naûi chuoái

Baøi taäp 5.3

Ñöa caùc meänh ñeà sau veà daïng hoäi chuaån taéc vaø tuyeån chuaån taéc

1. (p→ q) → r

2. p → (q → (r + s))

Baøi taäp 5.4

Cho caùc tri thöùc

r → s,

p → s,

q → p + r

Chöùng toû q → (p + s)

1. Baèng hôïp giaûi Robinson

2. Baèng caùch tìm kieám treân caây And/Or

Baøi taäp 5.5

Cho boä luaät: {fg → x, d → x, ac → f, be → g, ab → d, c → d}

1. Duøng thuaät giaûi Robinson, chöùng minh ac → x.

2. Duøng thuaät giaûi A0* kieåm tra tính giaûi ñöôïc cuûa x, duøng haøm MAX cho

nuùt AND vaø haøm MIN cho nuùt OR. Bieát heuristic nhö sau

nuùt a b c d e f g x

h 0 0 10 4 10 2 2 3

Baøi taäp 5.6

Bieåu dieãn baèng logic vò töø caùc tri thöùc sau: “Lan laø hoïc sinh gioûi”; “Haøng ngaøy, hoïc sinh gioûi luoân ñeán thö vieän”; “Luùc naøo cuõng vaäy, Lan ôû ñaâu laøMinh ôû ñoù”.

Baøi taäp 5.7

Ñöa meänh ñeà sau veà daïng chuaån tích cuûa toång

1. (∀x) ( (∀y)( p(x,y) → q(x) ∨ r(y) ) + (∃y)( p(x,y) ∨ r(y) → q(x) ) )

2. (∀x) (∀y) ( (∃z) ( p(x,z) ∧ (p(y,z) ) ) → ( (∃u) (q(x,y,u)) )

3. (∀x) { ( ∃y, p(x,y) → q(x) ∨ r(y)) → (∀y)(∃z) ( s(x,y,z) → r(x) ∨ p(y,z) ) ) }

Baøi taäp 5.8

Cho 3 vò töø p(x,y), q(x,y), r(x,y), s(x,y) vaø caùc quy taéc sau

(∀x) (∀y) (∀z) ( q(x,y) ∧ r(y,z) → p(x,z) )

(∀x) (∀y) (∀z) ( s(x,y) ∧ p(y,z) → p(x,z) )

Xeùt baøi toaùn: Chöùng minh q(a,b) ∧ s(c,a) ∧ r(b,d) → p(c,d)

1. Xaây döïng danh saùch caùc caâu cho thuaät giaûi Robinson

2. Baèng thuaät giaûi Robinson giaûi baøi toaùn chöùng minh treân

Baøi taäp 5.9

Cho cô sôû tri thöùc sau

• Neáu x naèm treân y ta noùi y ñôõ x.

• Neáu x ôû treân y vaø chuùng tieáp xuùc nhau, ta noùi x naèm treân y.

• x vaø y tieáp xuùc nhau neáu x tieáp xuùc vôùi y hoaëc y tieáp xuùc vôùi x

• Coù moät caùi taùch cup ôû treân caùi baøn table

• Taùch cup tieáp xuùc vôùi baøn table

Coi caùc vò töø on_top(x,y) laø x naèm treân y, support(x,y) laø x ñôõ y, above(x,y) laø x ôû treân y, touch(x,y) laø x tieáp xuùc vôùi y.

1. Haõy bieåu dieãn cô sôû tri thöùc treân qua caùc vò töø ñaõ cho.

2. Baèng hôïp giaûi Robinson chöùng toû raèng caùi baøn table ñôõ chieác taùch cup.

Baøi taäp 5.10

Cho caùc vò töø P(x), Q(x), R(x,y), S(x)

Bieát caùc söï kieän

S(a)

P(b)

R(a,b)

vaø caùc luaät

(∀x)( P(x) → Q(x) )

(∀x) (∀y) ( R(x,y) ∧ Q(y) → Q(x) )

∃x, Q(x) ∧ S(x)

Baèng phöông phaùp hôïp giaûi Robinson chöùng minh meänh ñeà sau

Chöông 6

Suy luaän vôùi thoâng tin khoâng chaéc chaén

Chöông naøy cung caáp cho chuùng ta moät soá moâ hình ñeå laøm vieäc vôùi thoâng tin khoâng chaéc chaén. Moãi moâ hình, chuùng ta seõ khaûo saùt moät soá khaùi nieäm chuû yeáu, ñuû cho baøi toaùn suy luaän. Theo ñoù, vôùi nhieàu söï kieän lieân quan vôùi nhau, laøm sao keát luaän ñöôïc moät söï kieän ñang quan taâm laø coù xaûy ra hay khoâng döïa vaøo caùc söï kieän ñaõ bieát vôùi moät khaû naêng xaûy ra cho tröôùc.

1. Phaân boá xaùc suaát

1.1. Khaùi nieäm

Caùc söï kieän ôû ñaây ñöôïc goïi laø caùc bieán coá, laø keát quaû cuûa caùc pheùp thöû (hay quan saùt) naøo ñoù. Moät bieán coá khoâng theå xaûy ra ñöôïc goïi laø bieán coá roãng ∅, moät bieán coá luoân xaûy ra ñöôïc goïi laø bieán coá chaéc chaén Ω, caùc bieán coá khaùc ñöôïc goïi laø bieán coá ngaãu nhieân. Hai bieán coá laø xung khaéc neáu chuùng khoâng theå cuøng ñoàng thôøi xaûy ra; laø ñoäc laäp neáu vieäc xaûy ra bieán coá naøy khoâng aûnh höôûng ñeán vieäc xaûy ra cuûa bieán coá kia. Bieán coá A ñöôïc goïi laø keùo theo B neáu A xaûy ra thì B phaûi xaûy ra. Moät hoï caùc bieán coá ñöôïc goïi laø moät phaân hoaïch ñaày ñuû neáu chuùng ñoâi moät xung khaéc vaø keát quaû cuûa pheùp thöû baát kyø seõ coù ñuùng moät trong chuùng xaûy ra.

Ví duï 6.1

Tung con xuùc saéc (pheùp thöû). Goïi A laø bieán coá xuaát hieän soá chaün; B laø bieán coá xuaát hieän soá leû; C laø bieán coá xuaát hieän soá 2; D laø bieán coá xuaát hieän soá 0; E laø bieán coá xuaát hieän soá lôùn hôn 0; Ta coù:

1 D laø bieán coá roãng;

2 E laø bieán coá chaéc chaén;

3 A, B, C laø caùc bieán coá ngaãu nhieân;

4 B vaø C xung khaéc;

5 A vaø C khoâng xung khaéc, hôn nöõa C keùo theo A;

6 Caùc bieán coá treân laø ñoäc laäp;

7 {A, B} laø moät phaân hoaïch ñaày ñuû.

Cho bieán coá A, bieán coá phuû ñònh cuûa A, kyù hieäu laø ¬A, xaûy ra khi A khoâng xaûy ra vaø ngöôïc laïi. Cho hai bieán coá A vaø B, bieán coá toång, kyù hieäu laø A + B, xaûy ra khi ít nhaát moät trong chuùng xaûy ra; bieán coá tích, kyù hieäu laø AB, xaûy ra khi caû hai cuøng xaûy ra.

Moät ñoä ño xaùc suaát P treân bieán coá nhaän giaù trò trong khoaûng [0, 1] thoûa

1. 0 ≤ P(A) ≤ 1;

P(∅) = 0;

P(Ω) = 1;

2. P(¬A) = 1 – P(A);

P(A + B) = P(A) + P(B) – P(AB)

ñaëc bieät P(A + B) = P(A) + P(B) khi A, B xung khaéc, khi aáy P(AB) = 0;

P(AB) = P(A)P(B) khi A, B ñoäc laäp.

Xaùc suaát P(A) ño khaû naêng xaûy ra bieán coá A döôùi moät ñieàu kieän xaùc ñònh naøo ñoù. Trong tröôøng hôïp nhaán maïnh ñeán ñieàu kieän D, cuõng laø moät bieán coá, chuùng ta coù khaùi nieäm xaùc suaát coù ñieàu kieän, kyù hieäu laø P(A|D) ñoïc laø xaùc suaát xaûy ra A vôùi ñieàu kieän D ñaõ xaûy ra.

3. P(A|B) = P(AB)/P(B)

Ta coù moät soá coâng thöùc quan troïng

1. P(AB) = P(A|B)P(B) = P(B|A)P(A);

2. Vôùi {Ai} laø moät phaân hoaïch ñaày ñuû,

P(B) = Σ P(B|Ai)P(Ai);

P(Ak|B) = P(B|Ak)P(Ak)/ Σ P(B|Ai)P(Ai).

Ví duï 6.2

Xeùt 10 laàn thöû (hay quan saùt) vaø ghi laïi nhöõng laàn xaûy ra caùc bieán coá A, B,

C vaø D (xem trang sau)

Ta coù:

P(A) = 6/10 = 0.6;

P(¬A) = 4/10 = 0.4; hoaëc P(¬A) = 1 – P(A) = 0.4

P(AB) = 0.4;

P(B|A) = 2/3; hoaëc P(B|A) = P(AB) / P(A) = 0.4/0.6 = 2/3;

P(A+B) = 0.8; hoaëc P(A+B) = P(A) + P(B) – P(AB) = 0.6 + 0.6 – 0,4 = 0.8;

P(B) = 0.6; hoaëc P(B) = P(B|A)P(A)+P(B|¬A)P(¬A)=4/6×0.6+2/4×0.4 = 0.6

A B C D

1 1 0 0

1 1 0 1

0 1 1 1

0 0 1 1

1 0 1 0

0 0 0 0

1 1 1 0

1 0 0 0

0 1 0 1

1 1 0 0

1.2. Suy luaän

Nhaéc laïi coâng thöùc ñaày ñuû

P(Ai) P(B|Ai) ai bi

∴P(B)

Σbiai

Ví duï 6.3

Cho luaät

B

A (0.8; 0.1)

vaø bieát xaùc suaát xaûy ra A laø P(A) = 0.3.

Tính xaùc suaát:

1 Xaûy ra söï kieän: P(B) = 0.8*0.3+ 0.1*0.7 = 0.31

2 Phaùt sinh luaät môùi

P(A⏐B) = 0.8*0.3/0.31 = 0.77

vaø P(A⏐¬B) = 0.2*0.3/0.69 = 0.09

Ñaëc bieät, tính xaùc suaát haäu nghieäm:

B xaûy ra, tính A; töùc P(A⏐B) = 0.77

Ví duï 6.4

Cho luaät AB → C vôùi phaân boá (0.95, 0.94, 0.29, 0.001), ñöôïc hieåu laø P(AB → C) = 0.95, P(A¬B → C) = 0.94, P(¬AB → C) = 0.29 vaø P(¬A¬B → C) = 0.001.

Giaû söû bieát caùc söï kieän A vaø B vôùi xaùc suaát 0.2 vaø 0.4 töông öùng.

C

A B (0.95, 0.94, 0.29, 0.001)

0.2 0.4

Ta coù xaùc suaát

3 Xaûy ra söï kieän:

P(C) = P(C⏐AB) P(A) P(B) + P(C⏐A¬B) P(A) P(¬B) + P(C⏐¬AB)

P(¬A) P(B) + P(C⏐¬A¬B) P(¬A) P(¬B) = 0.95×0.2×0.4 + 0.94×0.2×0.6 + 0.29×0.8×0.4 + 0.001×0.8×0.6

= 0.076 + 0.1128 + 0.0928 + 0.00048 = 0.28208

P(BC) = P(BCA) + P(BC¬A)

= P(C|AB) P(A) P(B) + P(C⏐¬AB) P(¬A) P(B) = 0.95×0.2×0.4 + 0.29×0.8×0.4 = 0.076 + 0.0928 = 0.1688

4 Phaùt sinh luaät môùi

P(B⏐C) = P(BC) / P(C) = 0.1688 / 0.28208 ≈ 0.6 cuõng chính laø xaùc suaát haäu nghieäm cuûa B sau khi C xaûy ra.

Bieåu dieãn baèng caây suy luaän

Gioáng nhö ví duï treân, trong bieåu dieãn naøy, chuùng ta thöøa nhaän söï ñoäc laäp giöõa caùc söï kieän khi khoâng cung caáp moái lieân quan giöõa chuùng.

Ví duï 6.5

Cho taäp luaät

BE → A vôùi phaân boá xaùc suaát (0.8, 0.9, 0.2, 0.1)

A → M (0.7, 0.2)

A → J (0.9, 0.1)

Töø caùc söï kieän P(B) = 0.1, P(E) = 0.2, haõy tính P(J → B)

Giaûi:

Ta phaûi tính P(J) vaø P(JP)

Tính P(J)

J (0.2568)

(0.9, 0.1)

A (0.196)

(0.8, 0.9, 0.2, 0.1)

B(0.1) E(0.2)

ÔÛ ñaây

taïi A, P(A) = 0.8×0.1×0.2 + 0.9×0.1×0.8 + 0.2×0.9×0.2 + 0.1×0.9×0.8

= 0.016 + 0.072 + 0.036 + 0.072 = 0.196

taïi J, P(J) = 0.9×0.196 + 0.1×(1 – 0.196) = 0.2568

Tính P(JB)

J (0.0804)

(0.9, 0.1)

A (0.088)

(0.8, 0.9, 0.2, 0.1)

B(0.1) E(0.2)

ÔÛ ñaây

taïi A, tính P(AB) = 0.8×0.1×0.2 + 0.9×0.1×0.8 = 0.016 + 0.072 = 0.088

taïi J, tính P(JB) = 0.9×0.088 + 0.1×(0.1 – 0.088) = 0.0804

Vaäy P(J → B) = P(JB) / P(J) = 0.0804 / 0.2568 ≈ 0.31

2. Suy luaän xaáp xæ

2.1. Khaùi nieäm

Trong thöïc teá ñeå tính chính xaùc xaùc suaát cuûa moät bieán coá laø raát khoù. Thay vaøo ñoù ta duøng moät haøm öôùc löôïng. Chaúng haïn vôùi öôùc löôïng p(.) ≥ p, ta coù

p(β) ≤ a p(α) ≥ a

∴p(β) ≥ max(0, a+b-1)

∴p(α) ≤ min(1, 1 – b + a)

p(α → β) ≥ b p(α → β) ≥ b

Baây giôø chuùng ta seõ ñöa ra 2 haøm öôùc löôïng veà caû hai phía cuûa xaùc suaát p.

Xeùt hoï P caùc meänh ñeà vaø aùnh xaï m: P →[0,1] thoûa Σm(p) = 1, toång tính treân taát caû p thuoäc P. Ta ñònh nghóa hai haøm öôùc löôïng xaùc suaát p nhö sau:

• Haøm caän döôùi hay ñoä thoûa ñaùng (Credible):

Ñònh nghóa 6.1

Cr(p)= Σm(q), ∀q∈P, q→ p

• Caän treân hay ñoä ñaùng tin (Plausible):

Pl(p) = 1 – Cr(p)

Ñeå suy luaän ta caàn ñònh nghóa hai haøm Cr vaø Pl ñaëc bieät

• Ñoä nhaát thieát Nec laø moät ñoä thoûa ñaùng Cr thoûa

Ñònh nghóa 6.2

• Ñoä coù theå Pos laø moät ñoä ñaùng tin Pl thoûa

Nec(p q) = min (Nec(p), Nec(q))

Pos(p + q) = max (Pos(p), Pos(q))

Ñònh lyù 6.1

1. Nec(p) + Nec(¬p) ≤ 1

2. Pos(p) + Pos(¬p) ≥ 1

3. Nec(p) ≤ Pos(p)

4. Nec(p) = 1 - Pos(p)

5. min (Nec(p), Nec(¬p)) = 0

6. max (Pos(p), Pos(¬p)) = 1

7. Pos(p) < 1 → Nec(p) = 0

8. Nec(p) > 0 → Pos(p) = 1

Cuøng vôùi chuùng laø söï môû roäng caùc suy dieãn

Ñònh lyù 6.2

Vôùi Nec

Nec(α) ≥ a

∴Nec(β) ≥ min(a, b)

Nec(α → β) ≥ b

Nec(β) ≤ a

Nec(α → β) ≥ b

∴Nec(α) ≤ 1 (b ≤ a)

≤ a (b > a)

Vôùi Nec vaø Pos

Pos(α) ≥ a

∴Pos(β) ≥ 0 (a+b ≤ 1)

≥ a (a+b > 1)

Nec(α → β) ≥ b

Nec(α) ≥ a

∴Pos(β) ≥ 0 (a+b ≤ 1)

≥ b (a+b > 1)

Pos(α → β) ≥ b

Pos(β) ≤ a

∴Pos(α) ≤ max (1 – b, a)

Nec(α → β) ≥ b

2.2. Suy luaän

Ñònh nghóa 6.3

Hieäu Nec – Pos ñöôïc goïi laø ñoä chaéc chaén, kyù hieäu laø CF, nhaän giaù trò töø –1 (chaéc chaén khoâng xaûy ra) ñeán 1 (chaéc chaén xaûy ra).

Trong thöïc teá, khi keát luaän veà moät söï kieän chuùng ta ñeàu coù muïc ñích. Ví duï ñeå khaúng ñònh söï kieän xaûy ra chuùng ta coá tìm nhöõng chöùng cöù laøm taêng CF.

Ñònh lyù 6.3

1. CF(¬p) = – CF(p)

2. CF(pq) = Min(CF(p), CF(q))

3. CF(p + q) = Max(CF(p), CF(q))

Suy luaän vôùi CF duøng caây AND/OR môû roäng

0

+

>

1

1

0

C

=

+

+

1

2

, CC 1 2 , CC 1

2

0

CC × 1

2

1 2 ,

)

1

2

⎧ ⎪ CCCC ⎪⎪ 2 2 CCCC ⎨ 2 ⎪ 1 CC + ⎪ 1 ( CCMin ⎪ ⎩

ÔÛ ñaây chuùng toâi giôùi thieäu moät ñoä ño CF ñôn giaûn: Nuùt AND duøng Min; nuùt OR duøng Max; coøn nuùt toå hôïp duøng coâng thöùc sau

Ví duï 6.6

Cho boä luaät, vôùi caùc soá trong caëp daáu ngoaëc laø ñoä CF töông öùng:

e1 + e2 → e3 e4 → e1 e3 → e2 + e4 → e1 + e3 → a b → a b c g d e (0.5) (0.8) (0.9) (0.9) (1.0) (0.5) e3 → c + e4 → d e4 → e → ¬f → g h → (0.5) (0.7) (1.0) (1.0) (0.8) (0.7) f f h z z z

Bieát CF cuûa e1, e2, e3 vaø e4 thöù töï laø 0.7, 0.8, 0.6 vaø 1.0, tính CF(f).

Veõ caây suy luaän:

f (0.79)

c (0.54) e3 e4

e1 e3

Tính CF(c) = Min(0.6, 0.7)*0.9 = 0.54;

CF(f) töø e3 = 0.6*0.5 = 0.3; töø c vaø e4 = Max(1.0, 0.54)*0.7 = 0.7; suy ra CF(f) = 0.3 + 0.7 – 0.3*0.7 = 0.79

3. Giôùi thieäu moät soá suy luaän khaùc

3.1. Phaân boá khaû xuaát

Trong thöïc teá, coù raát nhieàu söï kieän ñöôïc phaùt bieåu moät caùch ñaïi khaùi. Chaúng haïn, ta vaãn thöôøng gaëp caùc thuaät ngöõ nhö “Ña soá”, “noùi chung”… thay vì moät giaù trò baèng soá. Caùc khaùi nieäm khoâng chính xaùc nhö vaäy ñöôïc goïi laø caùc khaùi luaät. Chuùng khoâng döïa treân phaân boá xaùc suaát maø ñöôïc ñaët cô sôû treân moät phaân boá khaùc: phaân boá khaû xuaát.

Ñònh nghóa 6.4

Haøm π : P → [0,1] ñöôïc goïi laø moät phaân boá khaû xuaát neáu thoûa

1. max(π(p), π(¬p)) = 1.

2. π(p + q) = min(π(p), π(q))

3. π(pq) = max(π(p), π(q))

Ñònh nghóa 6.5

1. Veùc tô (π(p), π(¬p))T laø phaân boá (khaû xuaát) cuûa p theo π.

laø phaân boá (khaû xuaát) cuûa (khaùi luaät) p→ q

2. Ma traän theo π.

)( q q

) q

) q

) ) p

)

)

)

( π ( π

¬

→ ¬→

p q q p

¬

⎞ =⎟⎟ ⎠

( π ⎛ ⎜⎜ ( p π ⎝

( π ⎞ ⎛ ⎟⎟ ⎜⎜ ( π ⎠ ⎝

⎞ ⎟⎟ ⎠

Ta coù

p →¬ p ¬→¬ π ⎛ ⎜⎜ ( π ⎝

Roõ raøng logic laø tröôøng hôïp rieâng cuûa phaân boá khaû xuaát khi aáy phaân boá cuûa p coù daïng (1, 0)T hoaëc (0, 1)T.

Ví duï 6.7

• Neáu Baûo ñeán thì noùi chung Mai ñeán (B→M)!

• Baûo ñeán (B)

Cho caùc daïng luaät vaø khaùi luaät (coù daáu !) sau

Haõy cho bieát phaân boá khaû xuaát cuûa söï kieän Mai ñeán?

1

) M

)

?1 ?

1 0

M

¬

⎛ ⎜⎜ ⎝

⎞ ⎟⎟ λ ⎠

⎛ ⎜⎜ ⎝

⎞ ⎛ ⎜⎜ ⎟⎟ ⎠ ⎝

⎞ =⎟⎟ ⎠

( π ⎛ ⎜⎜ ( π ⎝

⎞ =⎟⎟ ⎠

λ Ta coù

3.2. Logic môø

(a) Khaùi nieäm

Cho taäp X vaø A ⊂ X, haøm ñaëc tröng cuûa A cho bôûi

X : }1,0{ → χ A

x x )( = χ A a Ax ∈ Ax ∉ 1 ⎧ ⎨ 0 ⎩

]1,0[X:f →

x

)x(f

a

Roõ raøng haøm ñaëc tröng cuûa A hoaøn toaøn xaùc ñònh A. Baây giôø chuùng môû roäng haøm ñaëc tröng thaønh haøm thaønh vieân

vaø ñöôïc goïi laø moät taäp con môø cuûa X, kyù hieäu laø Xf; khi aáy f(x) ño möùc ñoä thaønh vieân cuûa x ñoái vôùi Xf. Ta ñònh nghóa theâm moät soá quan heä vaø pheùp toaùn.

Ñònh nghóa 6.6

1. Neáu f = g ta noùi Xf = Xg

2. Neáu f ≤ g ta noùi Xf ⊆ Xg

Ñònh nghóa 6.7

Cho hai taäp con môø Xf vaø Xg

1. Hôïp cuûa Xf vaø Xg, kyù hieäu Xf ∪ Xg, laø taäp con môø Xh vôùi h = max {f,

g}

2. Giao cuûa Xf vaø Xg, kyù hieäu Xf ∩ Xg, laø taäp con môø Xh vôùi h = min {f,

g}

3. Phuû ñònh cuûa Xf, kyù hieäu ¬Xf, laø taäp con môø Xh vôùi h = 1 – f

Ví duï 6.8

Cho X = {0, 1, 2, 3, 4}, vaø hai taäp con môø Xf vaø Xg nhö sau

X 0 1 2 3 4

0.3 0.5 1.0 0.2 0.4 Xf

Xg 0.2 1.0 0.8 0.6 0.1

Ta coù keát quaû thöïc hieän caùc pheùp toaùn

X 0 1 2 3 4

¬Xf

0.7 0.5 0.0 0.8 0.6

Xf ∪ Xg 0.3 1.0 1.0 0.6 0.4

Xf ∩ Xg 0.2 0.5 0.8 0.2 0.1

Ñeå suy luaän, chuùng ta tìm hieåu khaùi nieäm quan heä môø. Toång quaùt, quan heä môø laø moät taäp con môø cuûa taäp tích (theo nghóa coå ñieån).

Ñònh nghóa 6.8

1. Tích môø Xf×Yg laø quan heä môø (X×Y)h, vôùi h(x, y) = min(f(x), g(y))

2. Pheùp keùo theo môø (luaät môø) Xf → Yg laø quan heä môø (X×Y)h, vôùi

h(x, y) = max(1 – f(x), g(y))

3. Hôïp thaønh cuûa 2 quan heä môø R = (X×Y)f vaø S = (Y×Z)g, kyù hieäu laø

SoR, laø quan heä môø (X×Z)h vôùi h(x, z) = supy(min(f(x, y), g(y, z))

Trong caùc ví duï sau, ñeå ñôn giaûn, chuùng ta khoâng caàn moâ taû chi tieát caùc phaàn töû cuûa X vaø Y maø chæ quan taâm ñeán caùc haøm thaønh vieân.

Ví duï 6.9

Cho Xf = (0.3, 0.5, 1.0, 0.2, 0.4)T vaø Yg = (1.0, 0.2, 0.1, 0.5)T. Ta coù tích môø Xf×Yg vaø pheùp keùo theo môø Xf → Yg nhö sau

vaø Xf×Yg Xf → Yg

0.3 0.5 1.0 0.2 0.4 0.3 0.5 1.0 0.2 0.4

0.2 0.2 0.2 0.2 0.2 0.3 0.5 0.8 0.2 0.4

0.1 0.1 0.1 0.1 0.1 0.3 0.5 0.9 0.2 0.4

0.3 0.5 0.5 0.2 0.4 0.3 0.5 0.5 0.2 0.4

ÔÛ ñaây chuùng ta bieåu dieãn taäp con môø baèng veùc tô coät, Xf = (f(x)), vaø quan heä môø baèng ma traän, X×Yh = (h(y, x))

Ví duï 6.10

Cho 2 quan heä môø (X×Y)R vaø (Y×Z)S nhö sau

=

=

0.15.00.00.0 2.00.15.00.0 0.02.07.00.1

⎞ ⎟ ⎟ ⎟ ⎠

⎛ ⎜ ⎜ ⎜ ⎝

0.00.00.00.02.0 0.02.00.15.03.0 0.00.05.07.00.0 5.08.02.00.10.0

⎞ ⎟ ⎟ ; ⎟ ⎟ ⎟ ⎠

⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝

R S

ta coù (X×Z)SoR coù haøm thaønh vieân

5.08.05.00.10.0

= RS o 5.02.05.07.03.0 0.02.07.05.03.0 ⎞ ⎟ ⎟ ⎟ ⎠ ⎛ ⎜ ⎜ ⎜ ⎝

(b) Suy luaän

Cho luaät Xf → Yg vôùi haøm thaønh vieân R, ta coù 2 quy taéc suy dieãn quen thuoäc:

1. Modus ponens

Xf1

Xf → Yg

Yg1 = Rof1

¬Yg1

2. Modus tollens

¬Xf1 = R’o(1 – g1)

Xf → Yg

Bieán nhaän trò laø taäp con môø ñöôïc goïi laø bieán ngoân ngöõ, ví duï x laø khoaûng caùch, gaùn x = xa vôùi xa laø moät taäp con môø cuûa taäp caùc khoaûng caùch khaû dó.

Ví duï 6.11

Xeùt x laø ga, y laø vaän toác, giaû söû

x = maïnh, vôùi maïnh laø taäp con môø f = (0, 0, 0.5, 0.7, 0)T

luaät môø x → y vôùi haøm thaønh vieân cho bôûi

0.3 0.5 0 0 0

R = 0 0.4 0.6 0.2 0

0 0 0 0.5 1

Keát quaû suy dieãn theo quy taéc modus ponens ta thu ñöôïc haøm thaønh vieân ñònh nghóa treân Y, g = Rof = (0, 0.44, 0.35)T, töùc laø bieát ñöôïc trò cuûa bieán ngoân ngöõ y = Yg, laø moät taäp con môø naøo ñoù.

Caây suy luaän AND/OR môû roäng

Vôùi caùc pheùp toaùn ñöôïc giôùi thieäu ôû treân, chuùng ta chæ caàn theâm vaøo caùch tính toaùn khi phaûi aùp duïng nhieàu hôn moät luaät.

1 Nuùt AND duøng Min

2 Nuùt OR duøng Max

3 Nuùt toå hôïp duøng Max

Trong ví duï sau, ñeå ñôn giaûn chuùng ta duøng caùc taäp con môø laø caùc chöõ in thoâng thöôøng vaø cuõng khoâng quan taâm ñeán khoâng gian neàn cuûa chuùng.

Ví duï 6.12

Cho luaät

AB → D, vôùi haøm thaønh vieân R

A → C, vôùi haøm thaønh vieân S

D → E, vôùi haøm thaønh vieân U

C → E, vôùi haøm thaønh vieân V

0.10.0

0.1

0.15.01.0

R

S

U

5.00.1

5.0

=

=

=

=

( ) ;0.08.02.0

0.04.00.0

⎛ ⎜⎜ ⎝

⎞ ⎟⎟ ; ⎠

2.00.0

0.0

⎞ ⎟ ⎟ ⎟ ⎠

⎛ ⎜ ⎜ ⎜ ⎝

⎞ ⎟ V ; ⎟ ⎟ ⎠

⎛ ⎜ ⎜ ⎜ ⎝

Bieát A = (0.0, 0.1, 1.0)T vaø B = (0.8, 0.3, 0.2)T, haõy xaùc ñònh E. Bieát

Giaûi:

Xaây döïng caây suy luaän

E

D C

A B A

Tính:

Taïi D: T = A∩B = (0.0, 0.1, 0.2)T, suy ra D = RoT = (0.2, 0.1)T;

Taïi C: C = SoA = 0.1;

Taïi E: duøng D → E ñöôïc E1 = UoD = (0.1, 0.2, 0.1)T, duøng C → E ñöôïc E2 = VoC = (0.1, 0.1, 0.0)T, suy ra E = (0.1, 0.2, 0.1)T

BAØI TAÄP

Baøi taäp 6.1

Cho taäp luaät

BE → A vôùi phaân boá xaùc suaát (0.8, 0.9, 0.2, 0.1)

A → M (0.7, 0.2)

A → J (0.9, 0.1)

Töø caùc söï kieän P(B) = 0.1, P(E) = 0.2. Haõy tính caùc xaùc suaát sau:

1. P(J⏐B)

2. P(M⏐B)

3. P(B⏐A)

4. P(B⏐AE)

5. P(A⏐J¬E)

6. P(B⏐J¬E)

Baøi taäp 6.2

Ngöôøi ta quan taâm ñeán khaû naêng maéc beänh B. Theo lyù thuyeát, lieân quan ñeán beänh naøy coù caùc trieäu chöùng E vaø F (giaû thieát E vaø F xung khaéc) vôùi xaùc suaát xuaát hieän khi ñaõ maéc beänh B laø 0.6 vaø 0.3 töông öùng; Ngoaøi ra vaãn coù khaû naêng xuaát hieän caùc trieäu chöùng E vaø F ngay caû khi khoâng bò beänh B vôùi xaùc suaát töông öùng laø 0.01 vaø 0.02. Hieän taïi ñöôïc bieát khaû naêng bò maéc beänh B laø 0.4 (coøn goïi laø xaùc suaát tieàn nghieäm) vaø quan saùt thaáy coù caùc trieäu chöùng E vaø F töông öùng laø 0.2 vaø 0.3 (coøn goïi laø caùc keát quaû xeùt nghieäm).

1. Veà maët lyù thuyeát haõy xaùc ñònh taäp luaät cho pheùp suy luaän veà khaû naêng coù caùc trieäu chöùng E vaø F. Töø ñoù suy ra taäp luaät cho pheùp suy luaän veà khaû naêng maéc beänh B töø caùc trieäu chöùng E vaø F noùi treân.

2. Vôùi caùc söï kieän hieän taïi, keát luaän gì veà khaû naêng maéc beänh B(coøn goïi

laø xaùc suaát haäu nghieäm)

Baøi taäp 6.3

Vôùi luaät vaø söï kieän cho ôû ví duï 6, haõy

1. Tính CF cho söï kieän z

2. Giaû söû chæ caàn CF > 0.4 laø ñuû keát luaän veà vieäc xaûy ra cuûa söï kieän, haõy keát luaän veà khaû naêng xaûy ra söï kieän z maø khoâng caàn duøng heát caùc luaät.

Baøi taäp 6.4

Cho taäp luaät:

¬c1 ∧ e1 ⎯→⎯ 9.0

e3, c3 ⎯→⎯ 6.0 e5, c4 ⎯→⎯ 8.0 e6, c7 ⎯→⎯ 8.0 c3, c8 ⎯→⎯ 8.0 c6 c2 ⎯→⎯ 8.0

e2, c5 ∧ e7 ⎯→⎯ 5.0 e8, c7 ∧ c4 ⎯→⎯ 9.0 c5, c8

e4 ⎯→⎯ 7.0 c3

c2 c6 ∨ c1 ⎯→⎯ 6.0

Bieát CF cuûa caùc söï kieän e1, e2, e3, e4, e5, e6, e7 vaø e8 laø 0.5, 0.8, -0.7, 0.5, 0.4, -0.3, -1 vaø 1 töông öùng.

Haõy tính CF cuûa c7 vaø c8.

Baøi taäp 6.5

Cho cô sôû tri thöùc sau

Haõy tính caùc giaù trò CF(a) vaø CF(x), bieát CF taïi m n o p u vaø v laø -0.5, 0.4, -0.6, 0.8, 0.2 vaø -0.4 töông öùng.

Baøi taäp 6.6

Cho luaät môø Neáu hoïc gioûi moân toaùn (M) → Hoïc gioûi moân tin (I) coù phaân boá môø

(

) =→

2.0 1 5.0 1 9.01.0 8.0 0 5.0 5.01.0 1

⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝

⎞ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠

IMμ

Söï kieän Teøo hoïc gioûi moân toaùn coù phaân boá môø laø (0.5, 1.0, 0.3)T. Haõy xaùc ñònh phaân boá môø cuûa söï kieän Teøo hoïc gioûi moân tin.

Baøi taäp 6.7

Cho luaät AB → C, C + D → E, E → H vaø F → H vôùi caùc haøm thaønh vieân töông öùng laø U, V, R vaø S. Bieát A = (0.2, 1.0, 0.5)T, B = (0.8, 0.6, 0.6)T, D = (1.0, 0.6, 0.2, 0.0)T, G = (0.8, 1.0, 0.2)T vaø

=

=

=

=

3.08.00.1 0 2.00.14.02.0

⎛ ⎜⎜ ⎝

⎞ ⎟⎟ ; ⎠

0.10.0 5.00.1 2.00.0

0 0 0.1 5.00.18.0 6.00.1 0

⎞ ⎟ ⎟ ⎟ ⎠

⎛ ⎜ ⎜ ⎜ ⎝

⎞ ⎟ ; ⎟ ⎟ ⎠

⎛ ⎜ ⎜ ⎜ ⎝

2.0 1 0 0.16.04.0 4.02.00.1 8.0 0 0

⎛ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝

⎞ ⎟ ⎟ V ; ⎟ ⎟ ⎟ ⎠

U R S

Haõy xaùc ñònh H.

PHAÀN 3

BIEÅU DIEÃN VAØ THU NHAÄN TRI THÖÙC

Tri thöùc laø hieåu bieát. Caùc heä thoáng ñeàu caàn thoâng tin ñeå coù nhöõng quyeát ñònh ñuùng ñaén vaø do ñoù toàn taïi vaø phaùt trieån. Neáu chuùng ta coù tri thöùc trong moät lónh vöïc naøo ñoù, nghóa laø chuùng bieát roõ caùc quy luaät trong lónh vöïc naøy, cho pheùp chuùng ta ñaùnh giaù ñöôïc nhöõng thoâng tin chuùng ta coù, vaø phaùt hieän caùc thoâng tin môùi chaát löôïng hôn. Nhö vaäy moät heä thoáng thoâng minh phaûi coù khaû naêng tieáp nhaän tri thöùc.

Tuy nhieân, laøm theá naøo ñeå coù theå ñöa tri thöùc vaøo maùy? Muïc tieâu cuûa chuùng ta laø phaûi ñöa ra caùc moâ hình bieåu dieãn tri thöùc. Coù nhöõng bieåu dieãn thích hôïp cho caøi ñaët, cuõng coù nhöõng bieåu dieãn töï nhieân phuø hôïp vôùi tö duy thoâng thöôøng. Nhöng tröôùc heát chuùng phaûi bieát nhöõng ñaëc tröng cuûa tri thöùc ñeå coù theå ñöa ra nhöõng bieåu dieãn thích hôïp.

Chöông 7

Bieåu dieãn tri thöùc

1. Tri thöùc

1.1. Khaùi nieäm

Trong chöông naøy vaø chöông sau chuùng ta seõ tìm caùch bieåu dieãn tri thöùc trong maùy tính. Nhöng tröôùc heát chuùng ta caàn chæ ra moät soá ñaëc tröng veà tri thöùc.

(a) Phaân loaïi hieåu bieát

Nhöõng hieåu bieát cuûa chuùng ta coù theå ñöôïc phaân laøm:

1. Caùc yeáu toá cô baûn, caùc ñoái töôïng trong theá giôùi thöïc;

2. Caùc khaúng ñònh vaø ñònh nghóa;

3. Caùc khaùi nieäm;

4. Caùc quan heä;

5. Caùc quy taéc, coâng thöùc, ñònh luaät vaø ñònh lyù;

6. Caùc thuû tuïc;

7. Caùc chieán löôïc vaø heuristic;

8. Caùc tri thöùc ñeå söû duïng tri thöùc (meta tri thöùc).

Ví duï 7.1

Xeùt ñoái töôïng laø moät phöông trình baäc hai. Vaán ñeà chuùng ta quan taâm laø nghieäm cuûa noù. Vaäy ta ñaõ bieát gì veà noù? Chaéc chaén, tri thöùc ñaàu tieân ta phaûi bieát ñoù laø theá naøo laø moät phöông trình baäc hai. Nhöõng tri thöùc naøo tieáp theo seõ giuùp chuùng ta tìm ñöôïc nghieäm cuûa phöông trình naøy? Neáu chuùng ta chæ bieát, x laø nghieäm neáu x thoûa phöông trình, chaéc laø chuùng ta seõ vaát vaû khi giaûi. Hoaëc neáu chuùng ta bieát thuû tuïc giaûi, e raèng chuùng ta seõ giaûi raát maùy moùc.

Ví duï 7.2

Xeùt baøi toaùn heä thöùc löôïng trong tam giaùc (cho moät soá ñaïi löôïng, chæ ra caùch tính 1 ñaïi löôïng khaùc), chuùng ta coù nhöõng hieåu bieát veà baøi toaùn naøy nhö sau:

1. Khaùi nieäm: tam giaùc, ñænh, caïnh, goùc, ñöôøng cao, dieän tích;

2. Quan heä: cuøng ñænh, ñoâi moät khaùc nhau;

3. Coâng thöùc: toång ba goùc, dieän tích, chieàu cao caïnh vaø goùc;

4. Thuû tuïc: giaûi phöông trình baäc nhaát, cho pheùp tính moät ñaïi löôïng chöa bieát trong coâng thöùc khi bieát taát caû caùc ñaïi löôïng coøn laïi; tìm kieám trong khoâng gian traïng thaùi, cho pheùp thöïc hieän caùc böôùc suy dieãn;

5. Heuristic: tam giaùc hoaøn toaøn xaùc ñònh neáu bieát 3 ñaïi löôïng, trong

ñoù coù ít nhaát moät caïnh.

(b) Tính chaát cuûa tri thöùc

Tính chaát

1. Tính töï giaûi thích: ví duï yù nghóa cuûa soá 1.6 chæ ngöôøi laäp trình môùi hieåu nhöng khaùi nieäm chieàu cao thì haàu nhö ngöôøi duøng naøo cuõng hieåu maø khoâng caàn giaûi thích. Tri thöùc vaøo trong maùy cuõng vaäy chuùng laø caùc kyù hieäu hôn laø döõ lieäu.

2. Tính caáu truùc: ví duï khaùi nieäm xe, tuøy theo söï hieåu bieát maø chuùng ta coù theå thaáy ñöôïc nhöõng khaùi nieäm khaùc xaây döïng neân noù (ñònh nghóa xe laø gì?) ôû möùc ñoä tröøu töôïng ñeán chi tieát (haõy moâ taû xe oâ toâ?). Tri thöùc vaøo trong maùy cuõng vaäy phaûi taïo ra söï phaân caáp giöõa caùc khaùi nieäm vaø quan heä giöõa chuùng.

3. Tính lieân heä: ví duï khaùi nieäm aên cho ta lieân heä ñeán ai aên? aên caùi gì? aên baèng gì? Tri thöùc vaøo trong maùy cuõng vaäy, phaûi cho pheùp tìm ra taát caû caùc lieân heä lieân quan ñeán chuùng.

4. Tính chuû ñoäng: ví duï muoán bieát toång cuûa 2 soá phöùc laø bao nhieâu ngöôøi duøng khoâng coøn phaûi laáy tröïc tieáp döõ lieäu cuûa chuùng roài tính toaùn maø ñôn giaûn yeâu caàu chuùng vaø chuùng seõ chuû ñoäng tính toaùn vaø traû lôøi. Caùch tính toaùn cuûa chuùng coù theå khaùc nhau, chuùng coù theå hoïc hoûi ñeå tính toát hôn. Tri thöùc vaøo trong maùy cuõng vaäy phaûi chuû

ñoäng tieáp nhaän, tinh cheá vaø töï hoaøn thieän.

Vieäc choïn phöông phaùp bieåu dieãn neân baûo ñaûm caùc tính chaát naøy. Ngoaøi ra, cuõng caàn löu yù ñeán caùc heä quaûn trò tri thöùc, cho pheùp chuùng ta moät maët coù ñöôïc moâ hình bieåu dieãn maët khaùc hoã trôï chuùng ta trong xaây döïng caùc heä cô sôû tri thöùc coù ñuû caùc tính chaát treân.

1.2. Bieåu dieãn tri thöùc

(a) Phaân loaïi bieåu dieãn

Trong bieåu dieãn chuùng ta chia tri thöùc ra laøm 3 loaïi:

1. Tri thöùc moâ taû ñôn giaûn chæ laø cung caáp söï kieän;

2. Tri thöùc thuû tuïc cho bieát caùch thöùc söû duïng tri thöùc;

3. Tri thöùc ñieàu khieån cho pheùp taïo ra phöông phaùp söû duïng caùc tri

thöùc moâ taû vaø tri thöùc thuû tuïc.

Vaø chia hình thöùc bieåu dieãn ra laøm 2 loaïi:

1. Bieåu dieãn hình thöùc;

2. Bieåu dieãn khoâng hình thöùc.

(b) Löôïc söû bieåu dieãn

Taùc giaû Naêm Bieåu dieãn

Markov 1954 Maùy traïng thaùi höõu haïn;

Petri 1962 Ñoà thò, maïng;

Minsky 1975 Khung (phaùc thaûo);

Shortliffe 1976 Luaät saûn xuaát;

McCarthy 1977 Maïng ngöõ nghóa;

Schank 1977 Scripts;

Kowalski 1979 Vò töø;

Germain 1981 Ñaëc taû hình thöùc;

Pitrat 1981 Ngoân ngöõ töï nhieân.

Trong giaùo trình naøy, chuùng ta seõ laàn löôït tìm hieåu moät soá bieåu dieãn sau:

Bieåu dieãn Tri thöùc Loaïi

1. Logic moâ taû hình thöùc

2. Luaät saûn xuaát thuû tuïc hình thöùc

3. Maïng ngöõ nghóa moâ taû khoâng hình thöùc

4. Boä ba OAV moâ taû khoâng hình thöùc

5. Frame moâ taû+thuû tuïc khoâng hình thöùc

Vì caùc heä quaûn trò ñöôïc xaây döïng döïa treân caùc bieåu dieãn hình thöùc, neân chuùng ta seõ xeùt loaïi naøy tröôùc. Loaïi coøn laïi chuùng ta seõ xeùt trong chöông sau.

2. Bieåu dieãn baèng logic vò töø

2.1. Bieåu dieãn caùc tri thöùc ñôn giaûn

Ví duï 7.3

Duøng logic vò töø, bieåu dieãn caùc söï kieän

1. Marcus laø ñaøn oâng;

2. Marcus laø ngöôøi Pompei;

3. Ngöôøi Pompei laø ngöôøi Roma;

4. Caesar laø vua;

5. Ngöôøi Roma hoaëc trung thaønh vôùi Caesar hoaëc caêm thuø oâng ta;

6. Moïi ngöôøi ñeàu trung thaønh vôùi moät ngöôøi naøo ñoù;

7. Ngöôøi ta chæ coá aùm saùt vò vua naøo maø hoï khoâng trung thaønh vôùi;

8. Marcus coá aùm saùt Caesar.

Giaûi: Nhöõng töø ñöôïc gaïch chaân ñöôïc choïn laøm vò töø:

1. Marcus laø ñaøn oâng:

man(Marcus)

2. Marcus laø ngöôøi Pompei:

Pompei(Marcus)

∀x Pompei(x) → Roma(x)

3. Ngöôøi Pompei laø ngöôøi Roma:

4. Caesar laø vua:

Ruler(Caesar)

∀x Roma(x) → Loyal(x, Caesar) ⊕ hate(x, Caesar)

5. Ngöôøi Roma hoaëc trung thaønh vôùi Caesar hoaëc caêm thuø oâng ta:

∀x ∃y Loyal(x, y)

6. Moïi ngöôøi ñeàu trung thaønh vôùi moät ngöôøi naøo ñoù;

∀x ∀y Person(x) ∧ Ruler(y) ∧ Assasinate(x, y) → ¬Loyal(x, y)

7. Ngöôøi ta chæ coá aùm saùt vò vua naøo maø hoï khoâng trung thaønh vôùi:

8. Marcus coá aùm saùt Caesar:

Assasinate(Marcus, Caesar)

2.2. Bieåu dieãn moái quan heä Instance vaø isa

Ví duï 7.4

Xeùt 5 söï kieän ñaàu tieân trong ví duï treân

1. man(Marcus)

2. Pompei(Marcus)

3. ∀x Pompei(x) → Roma(x)

4. Ruler(Caesar)

5. ∀x Roma(x) → Loyal(x, Caesar) ⊕ hate(x, Caesar)

Coù theå ñöôïc bieåu dieãn vôùi moái quan heä instance laø:

1. instance(Marcus, man)

2. instance(Marcus, Pompei)

3. ∀x instance(x, Pompei) → instance(x, Roma)

4. instance(Caesar, Ruler)

5. ∀x instance(x, Roma) → Loyal(x, Caesar) ⊕ hate(x, Caesar)

Hoaëc coù theå ñöôïc bieåu dieãn vôùi moái quan heä instance vaø isa laø:

1. instance(Marcus, man)

2. instance(Marcus, Pompei)

3. isa(Pompei, Roma)

4. instance(Caesar, Ruler)

5. ∀x instance(x, Roma) → Loyal(x, Caesar) ⊕ hate(x, Caesar)

Trong ñoù, coù luaät ∀x ∀y ∀z instance(x, y) ∧ isa(y, z) → instance(x, z)

2.3. Suy dieãn baèng hôïp giaûi (resolution)

Quaù trình hôïp giaûi ñaõ ñöôïc xem xeùt khaù chi tieát cho neân ôû ñaây chuùng ta chæ minh hoïa giaûi moät vaøi ví duï.

Ví duï 7.5

Chöùng minh “baøn tay laø boä phaän cuûa con ngöôøi”

Giaûi: Duøng vò töø A(x,y) vôùi yù nghóa “x laø boä phaän cuûa y”

Taäp caùc caâu khôûi taïo:

− A(x, y) − A(y, z) + A(x, z)

C1

C2 + A(h, a)

C3 + A(a, b)

− A(h, m)

C4 + A(b, m)

C5

Quaù trình hôïp giaûi duøng chieán löôïc ñôn vò:

− A(h, y) − A(y, m)

C6 (C5+C1.3)

− A(h, b)

− A(h, y) − A(y, b)

C7 (C6+C4)

C8 (C7+C1)

− A(h, a)

C9 (C8+C3)

C10(C9+C2)

Ví duï 7.6

Chöùng minh nöûa nhoùm thoaû ∀x, x.x = e thì giao hoaùn.

Giaûi: Coi i(x, y, z) vôùi yù nghóa x.y = z vaø haøm Skolem l(x) vôùi yù nghóa l(x) phaàn töû nghòch ñaûo cuûa x. Ta coù taäp caùc caâu khôûi taïo

C1 + i( e, X1, X1 )

C2 + i( X2, e, X2 )

C3 + i( l(Y1), Y1, e )

C4 + i( Y2, l(Y2), e )

C5 + i( X3, X3, e )

− i(X4, Y4, U4) − i(Y4, Z4, V4) − i(X4, V4, W4) + i(U4, Z4, W4)

C6

− i(X5, Y5, U5) − i(Y5, Z5, V5) − i(U5, Z5, W5) + i(X5, V5, W5)

C7

C8 + i(a, b, c)

− i(b, a, c)

C9

Quaù trình hôïp giaûi duøng caùc chieán löôïc ñaõ bieát

− i(X6, Z6, V6) − i(e, Z6, W6) + i(X6, V6, W6)

C10 (C5+C7.1)

− i(e, b, W7) + i(a, c, W7)

C11 (C8+C10.1)

− i(b, Y8, U8) − i(Y8, Z8, a) − i(U8, Z8, c)

C12 (C1+C11.1) + i(a, c, b)

− i(b, Z9, a) − i(e, Z9, c)

C13(C9+C7.4)

C14(C5+C13.1)

− i(b, c, a)

C15(C1+C14.2)

− i(X10, Y10, b) − i(Y10, c, V10) − i(X10, V10, a)

− i(c, c, V11) − i(a, V11, a)

C16(C15+C6.4)

C17(C12+C16.1)

− i(a, e, a)

C18(C5+C17.1)

C19(C2+C18)

3. Bieåu dieãn baèng luaät saûn xuaát

3.1. Khaùi nieäm

Luaät ñöôïc xem nhö taäp con cuûa logic vò töø, tuy nhieân noù thöôøng bieåu dieãn caùc tri thöùc thuû tuïc. Caùc tri thöùc thuû tuïc, chaúng haïn tìm kieám treân caây nhò phaân, khoâng nhöõng chæ cho chuùng ta caáu truùc cuûa tri thöùc maø coøn caùch thöùc söû duïng caùc caáu truùc naøy.

Ví duï 7.7

Xeùt caùc khaùi nieäm

1. Con ñöôøng: laø ñöôøng noái tröïc tieáp giöõa 2 ñòa ñieåm;

2. Tuyeán ñöôøng: laø ñöôøng noái giöõa 2 ñòa ñieåm.

Vôùi khaùi nieäm con ñöôøng bieåu dieãn logic vaø luaät laø gioáng nhau, ñôn giaûn laø neâu söï kieän:

1. Con ñöôøng laø ñöôøng noái tröïc tieáp giöõa 2 ñòa ñieåm:

Road(TpHCM, Long An);

Road(TpHCM, Bình Döông);

Vôùi khaùi nieäm tuyeán ñöôøng, roõ raøng ta khoâng coù yù ñònh lieät keâ. Thay vaøo ñoù ta caàn moät ñònh nghóa cuï theå hôn, chaúng haïn baèng ñeä quy, Neáu r = (a, b) laø con ñöôøng thì r laø tuyeán ñöôøng vaø neáu p = (a, b) laø tuyeán ñöôøng, r = (b, c) laø con ñöôøng thì (a, c) laø tuyeán ñöôøng. Luùc naøy:

2. Tuyeán ñöôøng laø ñöôøng noái giöõa 2 ñòa ñieåm:

¬Road(X, Y) + Route(X, Y) ;

¬ Route (X, Y) ¬Road(Y, Z) + Route(X, Z)

Bieåu dieãn logic cho ta hai caâu:

khoâng cho chuùng ta bieát caùch söû duïng tri thöùc

Vôùi bieåu dieãn luaät, ta coù hai luaät:

Road(X, Y) → Route(X, Y);

Road(X, Y) ∧ Route(Y, Z) → Route(X, Z);

maëc duø veà baûn chaát gioáng nhau nhöng cung caáp cho chuùng ta caùch söû duïng, ít nhaát cuõng cho pheùp ta xaây döïng caây tìm kieám.

Ví duï 7.8

Xeùt baøi toaùn sau: Cho luaät a → b + c. Vôùi söï kieän a xaûy ra nhöng b khoâng xaûy ra. Chöùng toû c xaûy ra.

Giaûi: Baèng hôïp giaûi (logic). Ta coù danh saùch caâu khôûi taïo

C1: ¬a + b + c

C2: a

C3: ¬b

C4: ¬c

Quaù trình hôïp giaûi

C5: (C1 vaø C2) b + c

C6: (C5 vaø C3) c

C7: (C6 vaø C4) ∅

Baèng luaät: khoâng duøng ñöôïc caùc söï kieän ñeå aùp duïng luaät do ñoù khoâng theå giaûi.

Ví duï 7.9

Xeùt baøi toaùn sau: Cho taäp luaät a → b, b → c vôùi phaân boá xaùc suaát (0.2, 0.6) vaø (0.5, 0.8) töông öùng. Bieát söï kieän a xaûy ra, haõy cho bieát khaû naêng xaûy ra c?

Baèng hôïp giaûi (logic): khoâng ñöôïc vì thoâng tin veà b laø khoâng chaéc chaén;

Baèng luaät:

Tính p(b) = 0.2 × 1.0 + 0.6 × 0.0 = 0.2;

Tính p(c) = 0.5 × 0.2 + 0.8 × (1.0 – 0.2) = 0.1 + 0.64 = 0.74.

Vaäy khaû naêng xaûy ra c laø 74%

3.2. Bieåu dieãn

Noùi chung luaät ñöôïc bieåu dieãn khaù töï nhieân tröïc quan vaø deã hieåu. Hôn nöõa ta coù theå deã daøng boå sung theâm caùc luaät môùi bôûi vì caùc luaät ñöôïc toå chöùc thaønh moät taäp luaät.

Ñònh nghóa 7.1

Moãi luaät coù daïng IF <ñieàu kieän> THEN <ñaùp öùng>

Ví duï 7.10

Taäp luaät moâ taû haønh vi ñôn giaûn cuûa loaøi vaät coù theå chöùa caùc luaät nhö

if (coù thuù döõ) then (chaïy troán)

if (caàn baïn vaø coù baïn) then (keát baïn)

if (caàn baïn maø khoâng coù baïn) then (tìm baïn)

if (ñoùi vaø khoâng coù thöùc aên) then (kieám thöùc aên)

if (ñoùi vaø coù thöùc aên) then (aên)

if (khoâng caàn baïn vaø khoâng ñoùi vaø khoâng coù thuù döõ) then (khoâng laøm gì caû)

3.3. Suy dieãn

Luaät coù theå aùp duïng ñöôïc goïi laø khaû chaùy (fireable) hay khaû hôïp. Luaät ñöôïc aùp duïng laø luaät bò ñoát chaùy. Quaù trình ñoát chaùy luaät seõ sinh ra caùc söï kieän môùi.

Tröôùc moät taäp luaät khaû chaùy, thì vieäc choïn moät luaät thích hôïp ñeå ñoát chaùy noù coù moät vai troø raát quan troïng.

Cô cheá aùp duïng caùc luaät theo moät thöù töï naøo ñoù ñeå hoaøn taát coâng vieäc ñöôïc goïi laø moâ tô suy dieãn (inference engine).

• Moâ hình laäp trình logic (chaúng haïn prolog), vaø

• Moâ hình heä saûn xuaát.

Vôùi caùc heä chuyeân gia, ngöôøi ta thöôøng chia moâ tô suy dieãn trong chuùng laøm hai loaïi

Veà phöông dieän lyù thuyeát thì chuùng laø töông ñöông, cho neân söï phaân loaïi naøy chæ coù yù nghóa trong thöïc haønh.

Vôùi prolog ta coù saün moät moâ tô suy dieãn beân trong neân nhöõng vieäc caàn laøm laø moâ taû baøi toaùn. Ngoaøi ra ta cuõng nhaéc laïi raèng baûn chaát cuûa quaù trình suy dieãn trong prolog laø tìm kieám theo chieàu saâu.

Vôùi heä saûn xuaát, taäp luaät ñöôïc toå chöùc thaønh danh saùch. Coù theå ñöa ra moät caùch suy dieãn ñôn giaûn nhö sau: quaù trình choïn luaät ban ñaàu ñeå ñoát chaùy ñöôïc baét ñaàu töø ñaàu danh saùch, caùc luaät keá tieáp coù theå cuõng baét ñaàu töø ñaàu danh saùch hoaëc ñöôïc tìm tieáp tuïc ngay choã luaät vöøa ñöôïc choïn.

Nhö vaäy söï khaùc nhau naèm ôû choã caùch ñieàu khieån: caây daønh cho Prolog coøn danh saùch daønh cho heä saûn xuaát.

3.4. Baøn theâm

Ñeå coù theå laøm vieäc vôùi heä saûn xuaát, ta caàn theâm moät soá khaùi nieäm quan troïng

Ñònh nghóa 7.2

1. Taäp luaät laø ñôn ñieäu neáu coù 2 luaât khaû hôïp vaø ñaõ aùp duïng moät thì luaät

coøn laïi vaãn coøn khaû hôïp.

2. Taäp luaät laø giao hoaùn boä phaän neáu thöù töï aùp duïng hai luaät khaû hôïp laø

khoâng quan troïng.

3. Taäp luaät laø giao hoaùn neáu noù ñôn ñieäu vaø giao hoaùn boä phaän

• Cho taäp luaät R = {r1, r2}

Ví duï 7.11

r1 : IF (x,y chaün) THEN (x=xy, y=yx)

r2 : IF (x,y laø luyõ thöøa cuûa 2) THEN (x=x-1, y=y-1)

Xeùt taäp söï kieän {x = 2, y = 4}, ta coù r1 vaø r2 ñeàu khaû hôïp, nhöng sau khi aùp duïng r2 thì r1 khoâng coøn khaû hôïp nöõa.

• Cho taäp luaät R = {r1, r2}

Nhö vaäy taäp luaät R laø khoâng ñôn ñieäu.

r1 : IF (x,y chaün) THEN (x=xy)

r2 : IF (x,y laø luyõ thöøa cuûa 2) THEN (x=y+x, y=xy)

Ta coù R laø ñôn ñieäu.

Vaãn xeùt taäp söï kieän F = {x = 2, y = 4} ta quan saùt thaáy taäp r1(r2(F)) laø khaùc vôùi taäp r2(r1(F)).

Nhö vaäy R ñôn ñieäu nhöng khoâng giao hoaùn boä phaän.

4. Laäp trình logic

Muïc naøy giôùi thieäu vaén taét veà laäp trình logic baèng prolog. Chuùng ta seõ bieåu dieãn tri thöùc baèng logic vò töø vaø duøng prolog ñeå minh hoïa.

4.1. Caùc thaønh phaàn

1. Mieàn giaù trò domains

2. Vò töø predicates

3. Cô sôû döõ lieäu quan heä database

4. Meänh ñeà clauses

5. Ñích goal

6. Chuù thích % hoaëc /*…*/

4.2. Söï kieän vaø luaät

Taát caû ñeàu ñöôïc moâ taû thoâng qua vò töø, chaúng haïn vôùi vò töø p(integer) thì

1. Caùc söï kieän coù theå laø p(1), p(3),…

2. Caùc luaät coù theå laø p(X) if …

Ví duï 7.12

Haõy bieåu dieãn caùc söï kieän sau

C1 : Taát caû nhaân vieân coù thu nhaäp ≥ 5 (trieäu) ñeàu phaûi chòu thueá;

C2 : Hoâm nay coù nhaân vieân bò oám;

C3 : Khoâng coù nhaân vieân naøo coù thu nhaäp > thu nhaäp cuûa giaùm ñoác.

Duøng caùc vò töø: NV(x) vôùi yù nghóa x laø nhaân vieân; GÑ(x) vôùi yù nghóa x laø giaùm ñoác; TN(x,y) vôùi yù nghóa y laø thu nhaäp cuûa x; LB(x,y) vôùi yù nghóa x lôùn hôn hay baèng y; O(x) vôùi yù nghóa x bò oám; T(x) vôùi yù nghóa x phaûi ñoùng thueá.

Ta phaùt bieåu laïi caùc söï kieän döôùi daïng caùc meänh ñeà

C1’: (∀x) (∀y) ( NV(x) ∧ TN(x,y) ∧ LB(y,5) → T(x) )

C2’: (∃x) ( NV(x) → O(x) )

C3’: (∀x) (∀y) (∀z) (∀t) ( NV(x) ∧ GÑ(y) ∧ TN(x,z) ∧ TN(y,t) → ¬LB(z,t) )

Minh hoïa baèng prolog

predicates

nv(symbol)

gd(symbol)

tn(symbol, integer)

o(symbol)

t(symbol)

clauses

t(X) :- nv(X), tn(X,Y), lb(Y,5).

o(a).

lb(X,Y) :- nv(X), tn(X,Z), gd(Y), tn(Y,T)

Ví duï 7.13

Xeùt baøi toaùn toâ maøu baûn ñoà, ta coù theå suy luaän nhö sau: “choïn moät mieàn X, choïn moät maøu M, neáu khoâng maâu thuaãn thì toâ maøu M cho mieàn X”. Khi aáy, vôùi prolog ta coù goal ñôn giaûn laø

goal

mieàn(X), maøu(M), not(maâu_thuaãn(X, M)), toâ_maøu(X,M), fail.

ngay caû meänh phöùc taïp nhaát laø maâu_thuaãn(X, M) cuõng raát ñôn giaûn

clauses

maâu_thuaãn(X, M) :- laùng_gieàng(X, Y), ñaõ_toâ(Y, M).

4.3. Hôïp giaûi vaø prolog

¬conclusion(x) ∨ output(x) hoaëc conclusion(x) ∧ ¬output(x)

Maëc duø baûn chaát cuûa prolog laø hôïp giaûi, tuy nhieân coù moät chuùt khaùc bieät: keát quaû hôïp giaûi cho ra moät haäu dueä roãng trong luùc keát quaû cuûa prolog laïi laø caâu traû lôøi cho moät caâu hoûi, töùc laø moät keát luaän. Ñeå giaûi quyeát vaán ñeà naøy, vaøo naêm 1969 Green ñaõ theâm vaøo taäp caùc meänh ñeà input moät vò töø coù lieân quan ñeán vieäc keát luaän.

vôùi vò töø naøy laøm cho x coù lôøi giaûi töôøng minh.

Ví duï 7.14

Cho caùc vò töø vôùi yù nghóa

J(p, n) p coù theå bieát soá (ñieän thoaïi) n

A(x, l) x ôû vò trí l

T(l, m) taïi l coù soá (ñieän thoaïi) m

V(y, z) y thaêm z

vaø caùc meänh ñeà

C1 : –A(p,l) –T(l,m) +J(x,m)

C2 : –V(y,z) –A(z,e) +A(y,e)

C3 : + A(John, office_John)

C4 : + V(Peter,John)

C5 : + T(office_John,654-3210)

C6 : –J(Peter,n) – output (n)

quaù trình hôïp giaûi cho ta caâu

C : – output (654-3210)

laø moät meänh ñeà taàm thöôøng duy nhaát vaø heä thoáng in keát quaû.

4.4. Moät soá ví duï

Ví duï 7.15

Baøi toaùn tìm ñöôøng ñi:

road(symbol, symbol) route(symbol, symbol) % con ñöôøng % tuyeán ñöôøng

road(n,d). road(d,u).

road(c,d). road(t,l). road(h,l). road(n,t). road(t,c). road(d,l).

/*caùc söï kieän: caùc con ñöôøng*/ road(n,c). road(t,g). road(d,h). /*luaät: tri thöùc thuû tuïc cho bieát caùch tìm tuyeán ñöôøng*/ route (X,Y) if road(X,Y). route (X,Y) if route(X,Z), road(Z,Y).

predicates clauses goal route(n,l)

Ví duï 7.16

Chöông trình döï ñoaùn moät con vaät laø loaøi gì vôùi cô sôû tri thöùc ñöôïc bieåu dieãn baèng heä saûn xuaát.

db_confirm(symbol,symbol) db_denied(symbol,symbol)

guess_animal identify(symbol) it_is(symbol) confirm(symbol,symbol) denied(symbol,symbol) remember(symbol,symbol,symbol) check_if(symbol,symbol)

guess_animal if identify(X), write("Your animal is a(n) ",X),nl,!. confirm(X,Y) if db_confirm(X,Y),!. confirm(X,Y) if not(denied(X,Y)),! and check_if(X,Y). denied(X,Y) if db_denied(X,Y),!. check_if(X,Y):- write(X," it ",Y,"\n"), readln(Reply),

database predicates clauses remember(X,Y,Reply).

remember(X,Y,yes):- asserta(db_confirm(X,Y)). remember(X,Y,no):- asserta(db_denied(X,Y)), fail. identify(giraffe) if it_is(ungulate), confirm(has,long_neck), confirm(has,long_legs), confirm(has,dark_spots),!. identify(zebra) if it_is(ungulate), confirm(has,black_stripes),!. identify(cheetah) if it_is(mammal), it_is(carnivorous),

confirm(has,tawny_color), confirm(has,black_spots),!.

identify(tiger) if it_is(mammal), it_is(carnivorous),

confirm(has,tawny_color), confirm(has,black_stripes),!.

identify(ostrich) if it_is(bird), not(confirm(does,fly)),

confirm(has,long_neck), confirm(has,long_legs),!. identify(eagle) if it_is(bird), confirm(does,fly), it_is(carnivorous),

identify(blue_whale) if it_is(mammal), not(it_is(carnivorous)),

identify(octopus) if not(it_is(mammal)), it_is(carnivorous),

confirm(does,swim), confirm(has,tentacles),!. identify(sardine) if it_is(fish), confirm(has,small_size),

confirm(has,use_in_sandwiches),!.

identify(unknown). it_is(bird) if not(it_is(mammal)), confirm(has,feathers),

confirm(does,lay_eggs),!.

it_is(fish) if confirm(does,swim), confirm(has,fins),!. it_is(mammal) if confirm(has,hair),!. it_is(mammal) if confirm(does,give_milk),!. it_is(ungulate) if it_is(mammal), confirm(has,hooves),

confirm(does,chew_cud),!.

it_is(carnivorous) if confirm(has,pointed_teeth),!. it_is(carnivorous) if confirm(does,eat_meat),!.

confirm(has,use_as_national_symbol),!. identify(penguin) if it_is(bird), not(confirm(does,fly)), confirm(does,swim), confirm(has,black_and_white_color),!. confirm(does,swim), confirm(has,huge_size),!. goal guess_animal

Ví duï 7.17

Giaûi baøi toaùn puzzle 8 soá

domains state = integer* stater = s(state,integer)

s(state,integer) done

board(state) trans(state,state) countsim(state,state,integer) startstate(state) goalstate(state) move(stater,stater) eightdriver setup movesupervisor cleaner supervisor1 supervisor2

trans([0 ,X2,X3,Z ,X5,X6,X7,X8,X9],[Z ,X2,X3,0 ,X5,X6,X7,X8,X9]). trans([X1,0 ,Z ,X4,X5,X6,X7,X8,X9],[X1,Z ,0 ,X4,X5,X6,X7,X8,X9]). trans([X1,0 ,X3,X4,Z ,X6,X7,X8,X9],[X1,Z ,X3,X4,0 ,X6,X7,X8,X9]). trans([X1,X2,0 ,X4,X5,Z ,X7,X8,X9],[X1,X2,Z ,X4,X5,0 ,X7,X8,X9]). trans([X1,X2,X3,0 ,Z ,X6,X7,X8,X9],[X1,X2,X3,Z ,0 ,X6,X7,X8,X9]). trans([X1,X2,X3,0 ,X5,X6,Z ,X8,X9],[X1,X2,X3,Z ,X5,X6,0 ,X8,X9]). trans([X1,X2,X3,X4,0 ,Z ,X7,X8,X9],[X1,X2,X3,X4,Z ,0 ,X7,X8,X9]). trans([X1,X2,X3,X4,0 ,X6,X7,Z ,X9],[X1,X2,X3,X4,Z ,X6,X7,0 ,X9]). trans([X1,X2,X3,X4,X5,0 ,X7,X8,Z ],[X1,X2,X3,X4,X5,Z ,X7,X8,0 ]). trans([X1,X2,X3,X4,X5,X6,0 ,Z ,X9],[X1,X2,X3,X4,X5,X6,Z ,0 ,X9]). trans([X1,X2,X3,X4,X5,X6,X7,0 ,Z ],[X1,X2,X3,X4,X5,X6,X7,Z ,0 ]).

database predicates clauses board([X1,X2,X3,X4,X5,X6,X7,X8,X9])if write(X1,' ',X2,' ',X3),nl, write(X4,' ',X5,' ',X6),nl, write(X7,' ',X8,' ',X9),nl. trans([0 ,Z ,X3,X4,X5,X6,X7,X8,X9],[Z ,0 ,X3,X4,X5,X6,X7,X8,X9]).

trans([Z ,0 ,X3,X4,X5,X6,X7,X8,X9],[0 ,Z ,X3,X4,X5,X6,X7,X8,X9]). trans([Z ,X2,X3,0 ,X5,X6,X7,X8,X9],[0 ,X2,X3,Z ,X5,X6,X7,X8,X9]). trans([X1,Z ,0 ,X4,X5,X6,X7,X8,X9],[X1,0 ,Z ,X4,X5,X6,X7,X8,X9]). trans([X1,Z ,X3,X4,0 ,X6,X7,X8,X9],[X1,0 ,X3,X4,Z ,X6,X7,X8,X9]). … trans([X1,X2,X3,X4,X5,X6,X7,Z ,0 ],[X1,X2,X3,X4,X5,X6,X7,0 ,Z ]).

startstate([1,2,3,4,5,8,6,0,7]). goalstate([1,2,3,4,0,5,6,7,8]). move(s(X,_),s(Y,C2)) if trans(X,Y), goalstate(Z), countsim(Y,Z,C2). countsim([],[],0). countsim([H1|T1],[H2|T2],C) if H1=H2, countsim(T1,T2,Z),C =Z+1. countsim([H1|T1],[H2|T2],C) if H1<>H2, countsim(T1,T2,Z), C = Z. cleaner if retract(s(_,_)),cleaner. cleaner if retract(done). cleaner. supervisor1 if

assert(done), C2<>9, retract(done),

supervisor2 if done. movesupervisor if supervisor1; supervisor2. setup if startstate(X),goalstate(Z),countsim(X,Z,C),

eightdriver if cleaner,!, setup,!, movesupervisor.

s(X,C1), !, move(s(X,C1),s(Y,C2)), write(" Trying this move: ", "s(",Y,",",C2,")"),nl, C2 > C1, asserta(s(Y,C2)), write("Making this move: ","s(",Y,",",C2,")"),nl,!, board(Y), readln(_), movesupervisor. asserta(s(X,C)), write("Starting with: ","s(",X,",",C,")"),nl,!. goal eightdriver

Ví duï 7.18

Suy luaän vôùi ñoä ño chaéc chaén CF

reallist = real*

evidence(symbol,real)

domains database predicates reason hypothesis(symbol) imp(symbol,symbol,symbol,symbol,symbol,symbol,real) term(symbol) infer(symbol,real) allinfer(symbol,real) max(real,real,real) min(real,real,real)

combine(reallist,real) find_multiplier(symbol,real,symbol,real) clearall clearit

term(e4). term(e8). term(e3). term(e7). term(e2). term(e6). imp(s,c2,pos,e3,dummy,dummy,0.8). imp(s,c3,pos,e5,dummy,dummy,0.6). imp(s,c4,pos,e6,dummy,dummy,0.8). imp(s,c7,pos,c3,dummy,dummy,0.8). imp(s,c8,pos,c6,dummy,dummy,0.8). imp(a,c1,neg,e1,pos,e2,0.9). imp(a,c5,pos,e7,pos,e8,0.5). imp(a,c7,pos,c4,pos,c5,0.9). imp(a,c8,pos,e4,pos,c3,0.7). imp(o,c6,pos,c1,pos,c2,0.6). term(e1). term(e5).

hypothesis(c7). hypothesis(c8).

max(X,Y,X) if X >= Y. max(X,Y,Y) if Y > X. min(X,Y,X) if X <= Y. min(X,Y,Y) if Y <= X.

infer(Node,Ct) if imp(s,Node,Sign,Node1,_,_,C1),

infer(Node,Ct)if imp(a,Node,SignL,Node1,SignR,Node2,C1),

Ct = CX*C1.

infer(Node,Ct)if imp(o,Node,SignL,Node1,SignR,Node2,C1),

clauses allinfer(Node1,C2), find_multiplier(Sign,Mult,dummy,0), Ct = Mult*C1*C2. allinfer(Node1,C2), allinfer(Node2,C3), find_multiplier(SignL,MultL,SignR,MultR), C2S = MultL*C2, C3S = MultR*C3, min(C2S,C3S,CX), allinfer(Node1,C2), allinfer(Node2,C3), find_multiplier(SignL,MultL,SignR,MultR), C2S = MultL*C2,C3S = MultR*C3,

infer(Node,Ct) if term(Node),evidence(Node,Ct),!. infer(Node,Ct) if term(Node),

allinfer(Node,Ct) if findall(C1,infer(Node,C1),Ctlist), combine(Ctlist,Ct). combine([C],C). combine([C1,C2],Ct) if C1 >= 0, C2 >= 0,

combine([C1,C2],Ct) if C1 < 0, C2 < 0,

combine([C1,C2],Ct) if C1 < 0, C2 >= 0, Z1 = abs(C1), Z2 = abs(C2),

combine([C1,C2],Ct) if C2 < 0, C1 >= 0,

find_multiplier(pos,1,dummy,0) . find_multiplier(neg,-1,dummy,0) . find_multiplier(pos, 1,pos, 1) . find_multiplier(pos, 1,neg,-1) . find_multiplier(neg,-1,pos, 1) . find_multiplier(neg,-1,neg,-1) . reason if hypothesis(X),allinfer(X,Ct),nl, write("Giaù trò certainty cuûa ",X," laø: ",Ct), nl, fail.

max(C2S,C3S,CX), Ct = CX*C1. write("What is the certainty for node ",Node),nl, readreal(Ct), asserta(evidence(Node,Ct)),!. Ct = C1 + C2 - C1*C2. Ct = C1 + C2 + C1*C2. min(Z1,Z2,Z3), Ct = (C1 + C2)/(1 - Z3). Z1 = abs(C1), Z2 = abs(C2), min(Z1,Z2,Z3), Ct = (C1 + C2)/(1 - Z3). clearall if clearwindow,not(clearit). clearit if retract(evidence(_,_)),fail.

BAØI TAÄP

Baøi taäp 7.1

Duøng caùc vò töø

S(x): sinh vieân x ñi hoïc ñaày ñuû

W(x): sinh vieân x thi ñaït

B(x,y) sinh vieân x thi toát hôn sinh vieân y

Bieåu dieãn caùc tri thöùc sau:

1. Coù moät soá sinh vieân thi khoâng ñaït ñaõ khoâng ñi hoïc ñaày ñuû;

2. Nhöõng sinh vieân ñi hoïc ñaày ñuû seõ thi toát hôn nhöõng sinh vieân ñi hoïc

khoâng ñaày ñuû

Baøi taäp 7.2

Naêm ngöôøi baïn K, H, R, V vaø A cuøng truy caäp vaøo moät chat room. Haõy xaùc ñònh xem ai ñang chat neáu bieát caùc söï kieän sau ñaây. Hoaëc K hoaëc H hoaëc caû hai ñang chat. Hoaëc R hoaëc V nhöng khoâng caû hai ñang chat. Neáu A ñang chat thì R cuõng vaäy. V vaø K hoaëc cuøng chat hoaëc cuøng khoâng. Neáu H ñang chat thì A vaø K cuõng vaäy.

Bieåu dieãn caùc söï kieän treân roài xaùc ñònh xem ai ñang chat

Baøi taäp 7.3

Moät thaùm töû ñaõ phoûng vaán 4 nhaân chöùng vaø keát luaän raèng neáu ngöôøi haàu noùi thaät thì ngöôøi ñaàu beáp noùi doái; ngöôøi ñaàu beáp vaø ngöôøi laøm vöôøn khoâng theå cuøng noùi thaät; ngöôøi laøm vöôøn vaø ngöôøi ñaàu beáp không cuøng noùi doái; vaø neáu ngöôøi ñaàu beáp noùi thaät thì ngöôøi ñaàu beáp noùi thaät. Baïn coù theå xaùc ñònh ñöôïc ai noùi doái, ai noùi thaät khoâng? Yeâu caàu bieåu dieãn caùc söï kieän vaø duøng cô cheá suy dieãn phuø hôïp ñeå giaûi.

Baøi taäp 7.4

Cho caùc söï kieän: coù 2 sinh vieân a vaø b; coù 3 moân x, y vaø z; sinh vieân a coù ñieåm x, y vaø z thöù töï laø 7, 4 vaø 8 coøn b coù ñieåm x, y vaø z thöù töï laø 4, 6 vaø 5.

Cho taäp luaät: Sinh vieân laø ñaäu chính thöùc neáu ñieåm x, y cuûa anh ta ñeàu lôùn hôn 5; sinh vieân laø ñaäu vôùt neáu khoâng ñaäu chính thöùc nhöng ñieåm moân x hoaëc y phaûi lôùn hôn 6 vaø ñieåm moân z phaûi lôùn hôn 7 vaø sinh vieân laø ñaäu neáu sinh vieân ñaäu chính thöùc hoaëc ñaäu vôùt.

Ta muoán keát luaän veà khaû naêng ñaäu cuûa sinh vieân a. Haõy bieåu dieãn cô sôû tri thöùc roài trình baøy caùch giaûi.

Baøi taäp 7.5

Cho caùc tri thöùc sau:

1. Neáu hoïc gioûi hoaëc hoïc khaù vaø choïn ñuùng tröôøng thì ñaäu ñaïi hoïc;

2. Neáu choïn ñuùng khoái vaø tæ leä choïi phuø hôïp thì choïn ñuùng tröôøng;

3. Neáu gioûi toaùn vaø choïn tröôøng a hoaëc gioûi lyù vaø choïn tröôøng b thì choïn

ñuùng tröôøng;

4. Neáu gioûi toaùn hoaëc gioûi lyù thì hoïc gioûi;

Bieåu dieãn roài keát luaän xem Teøo coù ñaäu ñaïi hoïc khoâng neáu Teøo gioûi caû toaùn laãn lyù vaø choïn tröôøng a.

Baøi taäp 7.6

Cho caùc tri thöùc sau

1. Neáu oå cöùng hoûng hoaëc caùp maøn hình loûng thì khoâng duøng ñöôïc maùy

tính;

2. Neáu coù ñieän vaøo maùy vaø khoâng coù aâm thanh ñoïc oå cöùng, hoaëc ñeøn oå

cöùng taét thì oå cöùng hoûng;

3. Neáu coù ñieän vaøo maùy vaø ñeøn maøn hình chôùp ñoû thì caùp maøn hình loûng

Haõy keát luaän xem coù duøng ñöôïc maùy tính khoâng neáu ñeøn maøn hình chôùp ñoû vaø khoâng coù aâm thanh ñoïc oå cöùng, baèng caùch

1. Bieåu dieãn tri thöùc baèng logic vaø duøng hôïp giaûi;

2. Bieåu dieãn tri thöùc baèng luaät vaø xaây döïng caây tìm kieám

3. Gioáng caâu 2 nhöng ñoä ño CF cuûa caùc tri thöùc thöù töï laø 0.9, 0.7 vaø 0.8 coøn CF cuûa hai söï kieän ñaõ cho ñeàu baèng 1 (vôùi caùc söï kieän khoâng quan saùt ñöôïc ta cho CF baèng 0).

Baøi taäp 7.7

Boä luaät sau coù maâu thuaãn khoâng neáu heä thoáng phaàn meàm ñang ñöôïc naâng caáp

1. Khi heä thoáng phaàn meàm ñang ñöôïc naâng caáp, ngöôøi duøng khoâng theå

truy xuaát heä thoáng taäp tin;

2. Neáu ngöôøi duøng khoâng theå truy xuaát heä thoáng taäp tin thì khoâng theå löu

nhöõng taäp tin môùi;

3. Neáu ngöôøi duøng khoâng theå löu nhöõng taäp tin môùi thì heä thoáng phaàn

meàm khoâng ñang ñöôïc naâng caáp.

Chöông 8

Caùc bieåu dieãn coù caáu truùc

Vôùi caùc söï kieän ñôn giaûn thì bieåu dieãn tri thöùc baèng logic vò töø hay bôûi caùc heä luaät saûn xuaát laø raát phuø hôïp. Theo ñoù caùc söï kieän ñöôïc moâ taû ñoäc laäp vaø ñöôïc ñöa vaøo trong cô sôû tri thöùc theo thöù töï tuøy yù. Tuy nhieân, vôùi cô sôû tri thöùc lôùn thì moät soá vaán ñeà môùi laïi naûy sinh, tính phöùc taïp chaúng haïn, seõ laøm cho vieäc tieáp caän trôû neân quaù khoù khaên hoaëc quaù trình tìm kieám trôû neân quaù toán keùm. Ñeå khaéc phuïc caùc ñieàu treân, ta seõ tìm hieåu moät soá bieåu dieãn môùi mang tính caáu truùc.

1. Maïng ngöõ nghóa

1.1. Khaùi nieäm

Vôùi maïng ngöõ nghóa, vieäc moâ taû tri thöùc ñöôïc töï nhieân hôn. Cô sôû tri thöùc ñöôïc toå chöùc thaønh moät ñoà thò ñònh höôùng, caùc tri thöùc rôøi raïc ñöôïc goäp laïi thaønh caùc nhoùm ngöõ nghóa.

Ví duï 8.1

Ñeå moâ taû caùc tri thöùc nhö chim coù caùnh, chim coù theå bay, con tweety laø moät con chim coù maøu vaøng ta duøng ñoà thò sau

Ñoà thò treân moâ taû chim (bird) coù (HAS) caùnh (wings) vaø coù theå (CAN) bay (fly) coøn con (tweety) laø moät (ISA) con chim (bird) coù maøu (COLOR) vaøng (yellow).

Ñònh nghóa 8.1

• Taäp V laø taäp caùc ñænh bieåu dieãn caùc ñoái töôïng, khaùi nieäm, söï kieän...;

• Taäp E laø taäp caùc cung phaûn aùnh nhöõng quan heä cuûa caùc ñænh trong V.

Cô sôû tri thöùc bieåu dieãn baèng maïng ngöõ nghóa laø moät hoï caùc ñoà thò ñònh höôùng . Trong ñoù

1.2. Bieåu dieãn

(a) Bieåu dieãn khaùi nieäm

Caùc khaùi nieäm chung nhö Mammal (ñoäng vaät coù vuù), khaùi nieäm rieâng nhö Person (con ngöôøi). Moät soá khaùi nieäm ñöôïc hình thaønh töø caùc khaùi nieäm khaùc. Caùc khaùi nieäm laïi coù quan heä vôùi nhau taïo thaønh moät ngöõ nghóa suy luaän. Xeùt tri thöùc veà hình hoïc phaúng chuùng ta bieát caùc khaùi nieäm nhö: ñieåm, ñoaïn thaúng, tam giaùc, ñænh, caïnh, goùc, ñöôøng cao, tam giaùc vuoâng, töù giaùc, hình chöõ nhaät, hình vuoâng … vaø caùc moái quan heä nhö: vuoâng goùc, song song, baèng nhau, khaùc nhau, thaúng haøng …

Ví duï 8.2

Bieåu dieãn caùc khaùi nieäm sau:

1. Ñoaïn thaúng AB laø taäp caùc ñieåm naèm giöõa hai ñieåm khaùc nhau A vaø B,

hai ñieåm A, B laø caùc ñaàu muùt cuûa ñoaïn thaúng AB;

Ñoaïn thaúng

end end

khaùc A B

instance instance

Ñieåm

2. Tam giaùc ABC laø taäp caùc ñieåm giôùi haïn beân trong ba ñieåm khoâng thaúng haøng A, B vaø C, caùc ñieåm naøy ñöôïc goïi laø caùc ñænh cuûa tam giaùc ABC

Ñoaïn thaúng

end end

khaùc A B

instance instance

Ñieåm

(b) Ñoái töôïng

Ñoái töôïng hay theå hieän thöôøng ñöôïc moâ taû thoâng qua taäp thuoäc tính, vôùi nhöõng giaù trò theå hieän söï coù maët cuûa mình. Caùc ñoái töôïng ñöôïc gom thaønh nhöõng nhoùm coù chung nhöõng ñaëc tröng naøo ñoù maø ta thöôøng goïi laø khaùi nieäm. Thoâng qua khaùi nieäm chuùng ta coù theå taïo ñoái töôïng theo nhieàu caùch, tröïc tieáp hoaëc thoâng qua caùc ñoái töôïng khaùc hoaëc töø moät soá ñoái töôïng thaønh phaàn.

Ví duï 8.3

Cho hai ñieåm A(3, 4) vaø B(8, 6)

Ñieåm

x instance 3 x 8 instance

A B

y 4 y 6

(c) Söï kieän

Moät ñoái töôïng khi xuaát hieän, luùc maát ñi hoaëc khi caùc giaù trò thuoäc tính, caùc lieân keát quan heä cuûa noù bò thay ñoåi ta ñeàu xem laø coù moät söï kieän xaûy ra. Ngoaøi caùc söï kieän ñöôïc cung caáp, caùc cô cheá suy dieãn beân trong heä töï ñoäng phaùt sinh caùc söï kieän môùi caàn thieát cho suy luaän. Chaúng haïn khi cho 4 ñieåm, 3 ñieåm baát kyø laø khoâng thaúng haøng, chuùng ta ñaõ cung caáp 4 söï kieän. Heä seõ töï suy dieãn ra caùc söï kieän khaùc nhö 6 ñoaïn thaúng, 4 tam giaùc vaø moät töù giaùc.

Ví duï 8.4

Trong ví duï tröôùc ta ñaõ cho hai ñieåm A vaø B. Baây giôø neáu coù thuû tuïc xaùc

ñònh A vaø B laø khaùc nhau, töø moâ taû cuûa khaùi nieäm ñoaïn thaúng, heä seõ sinh ra söï kieän coù moät ñoaïn thaúng AB.

(d) Söï boå sung

Xeùt söï kieän Teøo cao 150cm, coù bieåu dieãn

Teøo cao 150

Theâm söï kieän Teøo cao hôn Tyù, ta coù bieåu dieãn môùi

Teøo Tyù

H1

150

cao cao

trò lôùn hôn H2

(e) Maïng rieâng

Xeùt söï kieän Chuù choù caén ngöôøi ñöa thö, coù bieåu dieãn

Choù Caén Ngöôøi ñöa thö

isa isa isa

keû taán coâng naïn nhaân d b m

GS

Neáu söï kieän treân laø phoå bieán: Taát caû caùc chuù choù ñeàu ñaõ töøng caén moät ngöôøi ñöa thö naøo ñoù, coù bieåu dieãn

Choù Caén Ngöôøi ñöa thö

g

isa form isa isa isa

keû taán coâng naïn nhaân d b m

trong ñoù, S1 laø moät caâu, coøn GS laø lôùp taát caû caùc caâu toång quaùt vaø g laø moät theå hieän vaø phaûi coù ít nhaát hai thuoäc tính: moät thuoäc tính form (daïng) vaø moät hoaëc nhieàu löôïng töø phoå duïng. Chaúng haïn xeùt söï kieän: Taát caû caùc chuù choù ñeàu ñaõ caén taát caû nhöõng ngöôøi ñöa thö, coù bieåu dieãn

Choù Caén Ngöôøi ñöa thö

isa isa isa

keû taán coâng naïn nhaân d b m

GS

form

isa g

1.3. Suy dieãn

Tröôùc heát ta caàn khaúng ñònh laø khoâng coù moät chieán löôïc suy luaän vaø suy dieãn chung cho caùc maïng ngöõ nghóa maø quaù trình suy dieãn phuï thuoäc vaøo nhöõng vaán ñeà cuï theå.

Ví duï 8.5

• Taäp V caùc ñænh goàm caùc ñaïi löôïng nhö caïnh a, b, c; goùc A, B, C; ñöôøng cao ha, hb, hc,...vaø caùc coâng thöùc nhö A + B + C = π, a/sinA = b/sinB,...

• Taäp E goàm caùc cung cho bieát caùc ñaïi löôïng naøo tham gia vaøo coâng thöùc

Xeùt baøi toaùn heä thöùc löôïng trong tam giaùc, coù theå bieåu dieãn cô sôû tri thöùc baèng maïng ngöõ nghóa sau

Cô sôû tri thöùc naøy ñöôïc kích hoaït thoâng qua cô cheá chaùy fire nhö sau:

1. Khi moät coâng thöùc bò ñoát chaùy, noù seõ laøm chaùy caùc ñaïi löôïng tham gia

vaøo coâng thöùc.

2. Khi caùc ñaïi löông boác chaùy seõ laøm chaùy caùc coâng thöùc neáu coâng thöùc

naøy coù duy nhaát moät ñaïi löôïng chöa chaùy.

• A, B chaùy → A + B + C = π chaùy → C chaùy

• B, C, c chaùy → b/sinB = c/sinC chaùy → b chaùy

• A, b chaùy → hc = bsinA chaùy → hc chaùy

• hc, c chaùy → S = 1/2 hcc → S chaùy (xong)

Chaúng haïn ñeå tìm dieän tích S khi bieát caïnh c vaø 2 goùc keà A,B heä coù theå suy luaän nhö sau

1.4. Ñoà thò khaùi nieäm

Trong muïc naøy chuùng ta tìm hieåu veà ñoà thò khaùi nieäm (conceptual graph), nhö laø caùc khoái nguyeân thuûy (primitive block) daønh cho maïng ngöõ nghóa.

• Tweenty laø moät con chim, vaø coù theå xem Tweety laø khaùi nieäm rieâng coù

Thöû phaân tích caâu “Tweenty eat a fat worm” ta coù

• Worm laø moät con saâu, neáu xem Worm laø khaùi nieäm chung thì ta khoâng

kieåu BIRD. Kyù hieäu

• Fat laø thuoäc tính cuûa con saâu vaø khoâng theå ñöùng moät mình, ta coi Fat

caàn theâm kieåu. Kyù hieäu

laø khaùi nieäm phuï thuoäc. Kyù hieäu

• Eat laø ñoäng töø lieân keát nhieàu khaùi nieäm khaùc, ta noùi Eat laø khaùi nieäm

moät caùch ñaày ñuû ta neân theâm teân cho söï phuï thuoäc naøy.

lieân keát hay khaùi nieäm quan heä vaø kyù hieäu

cuõng vaäy ta neân theâm teân cho moãi lieân keát.

• Copy : ñöa ra baûn sao cuûa moät ñoà thò khaùi nieäm

• Restrict : haïn cheá baèng caùch thay moät ñoà thò khaùi nieäm bôûi ñoà thò

Caùc pheùp toaùn

• Join : gheùp hai ñoà thò khaùi nieäm

• Simply : ñôn giaûn bôùt caùc quan heä ñoàng nhaát trong ñoà thò khaùi nieäm

khaùi nieäm cuï theå hôn

Ví duï 8.6

• Baét ñaàu töø FAT baèng pheùp toaùn restrict haïn cheá PHYSICAL-OBJECT thaønh

Xeùt caùc khaùi nieäm Tweenty, Worm, Fat vaø Eat ôû treân.

WORM, ta ñöôïc

• Cuõng vaäy aùp duïng pheùp toaùn restrict treân EAT haïn cheá ENTITY thaønh

• Baây giôø join (gheùp) EAT vaø FAT qua WORM ta ñöôïc

• Cuoái cuøng restrict (haïn cheá) Animal thaønh Tweety

WORM, ta cuõng ñöôïc

Ví duï 8.7

Theâm moät ñoà thò khaùi nieäm khaùc

Nhö vaäy caùc ñænh trong ñoà thò khaùi nieäm moâ taû caùc khaùi nieäm. Chuùng coù theå laø khaùi nieäm rieâng, khaùi nieäm chung, khaùi nieäm phuï thuoäc hoaëc khaùi nieäm quan heä. Baûn thaân ñoà thò khaùi nieäm cuõng laø khaùi nieäm vaø ta goïi laø ñoà thò con.

[BIRD:tweety] ← (AGENT) ← [EAT] → (PATIENT) → [WORM] → (ATRIBUTE) → [FAT]

Vôùi ñoà thò khaùi nieäm ta coù theå bieåu dieãn döôùi daïng ñôn giaûn hôn chaúng haïn:

1.5. Chuyeån veà logic vò töø

Vôùi maïng ngöõ nghóa chuùng ta coù bieåu dieãn töï nhieân cuûa tri thöùc. Baèng caùch chuyeån veà logic vò töø chuùng ta coù theå duøng hôïp giaûi hoaëc ñöa ra boä luaät vaø duøng caùc phöông phaùp giaûi quyeát vaán ñeà ñaõ bieát ñeå caøi ñaët caùc cô cheá suy dieãn. Sau ñaây laø moät soá quy taéc:

1. Caùc khaùi nieäm rieâng cuøng vôùi kieåu cuûa chuùng seõ laø caùc vò töø moät bieán trong ñoù kieåu laø vò töø coøn khaùi nieäm rieâng laø haèng giaù trò, ví duï BIRD(tweety)

2. Caùc khaùi nieäm chung seõ laø caùc bieán, ví duï WORM

3. Caùc khaùi nieäm phuï thuoäc vaø caùc khaùi nieäm lieân keát seõ laø caùc vò töø

nhieàu bieán, ví duï EAT(Animal,Entity) vaø FAT(WORM)

Ví duï 8.8 Moät ít tri thöùc veà hình hoïc phaúng.

diems = td(integer, integer)

doanthang(diems, diems) khac(diems, diems) diem(diems)

domains predicates clauses diem(td(3, 4)). doanthang (A, B) khac(A, B) diem(td(6, 2)). if if diem(A), diem(B), khac(A,B). A = td(X1,_), B = td(X2,_), X1<>X2.

1.6. Moät ví duï phöùc taïp

Xeùt moät cô sôû tri thöùc “heä thoáng ñòa lyù” vôùi

1. Taäp ñænh V goàm: caùc thaønh phoá ví duï Newyork, caùc con soâng ví duï

Hudson, caùc con ñöôøng ví duï 15 vaø caùc söï kieän ví duï length, …;

2. Taäp caïnh E goàm caùc quan heä: of ví duï length of river, in ví duï city in

state;

3. Suy dieãn duøng caùc moâ taû ñoái töôïng goàm: Thöïc theå e() ví duï e(city); caùc

quan heä eaec() ví duï eaec(length, of, river, Hudson), ….

*/ */ */ /* Names of entities /* Names of associations /* kilometers, citizens etc.

ENT = STRING ASSOC = STRING UNIT = STRING QUERY = q_e(ENT) ; q_eaec(ENT,ASSOC,ENT,STRING) ; q_eaq(ENT,ASSOC,ENT,QUERY) ; q_sel(ENT,RELOP,ENT,REAL); q_min(ENT,QUERY); q_max(ENT,QUERY); q_not(ENT,QUERY) ; q_or(QUERY,QUERY) ; q_and(QUERY,QUERY)

schema(ENT,ASSOC,ENT) entitysize(ENT,STRING) assoc(ASSOC,STRINGLIST) unit(STRING,STRING)

DOMAINS DATABASE - language DATABASE - data /*state(NAME,ABBREVIATION,CAPITAL,AREA,ADMIT,POPULATION,CITY,CITY,CITY,CITY */ state(STRING,STRING,STRING,REAL,REAL,INTEGER,STRING,STRING,STRING,STRING) /*city(STATE,ABBREVIATION,NAME,POPULATION) */ city(STRING,STRING,STRING,REAL) /*river(NAME,LENGTH,STATESTRINGLIST */ river(STRING,INTEGER,STRINGLIST) /*highlow(STATE,ABBREVIATION,POINT,HEIGHT,POINT,HEIGHT) */ highlow(STRING,STRING,STRING,INTEGER,STRING,INTEGER) /*mountain(STATE,ABBREVIATION,NAME,HEIGHT) */

city(_,_,NAME,_).

river(NAME,_,_).

lake(LAKE,_,_).

city(STATE,_,CITY,_). city(STATE,_,CITY,_).

city(_,_,CITY,POPUL1),str_real(POPUL,POPUL1).

city(_,_,CITY,POPUL1), str_real(POPUL,POPUL1).

state(STATE,_,_,_,AREA1,_,_,_,_,_),str_real(AREA,AREA1).

state(STATE,_,CAPITAL,_,_,_,_,_,_,_).

mountain(STRING,STRING,STRING,REAL) /*lake(NAME,AREA,STATELIST) */ lake(STRING,REAL,STRINGLIST) /*road(NUMBER,STATELIST) */ road(STRING,STRINGLIST) PREDICATES db(ENT,ASSOC,ENT,STRING,STRING) ent(ENT,STRING) eval(QUERY,STRING) CLAUSES ent(continent,usa). ent(city,NAME):- ent(state,NAME):- state(NAME,_,_,_,_,_,_,_,_,_). ent(capital,NAME):- state(_,_,NAME,_,_,_,_,_,_,_). ent(river,NAME):- ent(point,POINT):- highlow(_,_,_,_,POINT,_). ent(point,POINT):- highlow(_,_,POINT,_,_,_). ent(mountain,M):- mountain(_,_,M,_). ent(lake,LAKE):- ent(road,NUMBER):- road(NUMBER,_). ent(population,POPUL):-city(_,_,_,POPUL1), str_real(POPUL,POPUL1). ent(population,S):-state(_,_,_,POPUL,_,_,_,_,_,_), str_real(S,POPUL). /* Relationships about cities */ db(city,in,state,CITY,STATE):- db(state,with,city,STATE,CITY):- db(population,of,city,POPUL,CITY):- db(population,of,capital,POPUL,CITY):- /* Relationships about states */ db(abbreviation,of,state,ABBREVIATION,STATE):- state(STATE,ABBREVIATION,_,_,_,_,_,_,_,_). db(state,with,abbreviation,STATE,ABBREVIATION):- state(STATE,ABBREVIATION,_,_,_,_,_,_,_,_). db(area,of,state,AREA,STATE):- db(capital,of,state,CAPITAL,STATE):- db(state,with,capital,STATE,CAPITAL):- state(STATE,_,CAPITAL,_,_,_,_,_,_,_). db(population,of,state,POPULATION,STATE):-

state(STATE,_,_,POPUL,_,_,_,_,_,_), str_real(POPULATION,POPUL).

border(STATE2,_,LIST), member(STATE1,LIST).

river(RIVER,LENGTH1,_),str_real(LENGTH,LENGTH1).

highlow(_,_,_,_,POINT,H),str_int(HEIGHT,H),!.

highlow(_,_,POINT,H,_,_),str_int(HEIGHT,H),!.

mountain(_,_,MOUNT,H1),str_int(HEIGHT,H1).

lake(LAKE,A1,_),str_real(AREA,A1).

entitysize(ENT,ATTR), sel_min(ENT,ATTR,99e99,"",ANS,L).

entitysize(ENT,ATTR), sel_max(ENT,ATTR,-1,"",ANS,L).

str_real(SVAL2,VAL2),

db(state,border,state,STATE1,STATE2):- /* Relationships about rivers */ db(length,of,river,LENGTH,RIVER):- db(state,with,river,STATE,RIVER):- river(RIVER,_,LIST),member(STATE,LIST). db(river,in,state,RIVER,STATE):- river(RIVER,_,LIST),member(STATE,LIST). /* Relationships about points */ db(point,in,state,POINT,STATE):- highlow(STATE,_,POINT,_,_,_). db(point,in,state,POINT,STATE):- highlow(STATE,_,_,_,POINT,_). db(state,with,point,STATE,POINT):- highlow(STATE,_,POINT,_,_,_). db(state,with,point,STATE,POINT):- highlow(STATE,_,_,_,POINT,_). db(height,of,point,HEIGHT,POINT):- db(height,of,point,HEIGHT,POINT):- /* Relationships about mountains */ mountain(STATE,_,MOUNT,_). db(mountain,in,state,MOUNT,STATE):- db(state,with,mountain,STATE,MOUNT):- mountain(STATE,_,MOUNT,_). db(height,of,mountain,HEIGHT,MOUNT):- /* Relationships about lakes */ db(lake,in,state,LAKE,STATE):- lake(LAKE,_,LIST),member(STATE,LIST). db(state,with,lake,STATE,LAKE):- lake(LAKE,_,LIST),member(STATE,LIST). db(area,of,lake,AREA,LAKE):- /* Relationships about roads */ db(road,in,state,ROAD,STATE):- road(ROAD,LIST),member(STATE,LIST). db(state,with,road,STATE,ROAD):- road(ROAD,LIST),member(STATE,LIST). db(E,in,continent,VAL,usa):- ent(E,VAL). db(name,of,_,X,X):-bound(X) CLAUSES eval(q_min(ENT,TREE),ANS):- findall(X,eval(TREE,X),L), eval(q_max(ENT,TREE),ANS):- findall(X,eval(TREE,X),L), eval(q_sel(E,gt,ATTR,VAL),ANS):- schema(ATTR,ASSOC,E), db(ATTR,ASSOC,E,SVAL2,ANS), VAL2>VAL. eval(q_sel(E,lt,ATTR,VAL),ANS):- schema(ATTR,ASSOC,E),

str_real(SVAL2,VAL2), db(ATTR,ASSOC,E,SVAL2,ANS),

db(ATTR,ASSOC,E,SVAL,ANS), str_real(SVAL,VAL).

ent(E,ANS), not(member(ANS,L)).

VAL2

2. Giôùi thieäu moät soá bieåu dieãn khaùc

2.1. Bieåu dieãn baèng khung (Frames)

Khung laø moät hoï caùc thuoäc tính (goïi laø slot) vaø caùc giaù trò lieân keát (coù theå keøm raøng buoäc) duøng ñeå moâ taû caùc thöïc theå. Moät soá thuoäc tính coù giaù trò laø moät khung khaùc giuùp xaây döïng moät heä thoáng caùc khung bieåu dieãn caùc söï kieän vaø caùc tri thöùc phöùc taïp. Frame cho pheùp goùi chung caùc tri thöùc moâ taû vaø tri thöùc thuû tuïc trong cuøng moät caáu truùc nhö sau

( ()) ...

( )

Caùc facet coù theå laø caùc thuû tuïc hoaëc giaù trò

Ví duï 8.9

Moät ñoái töôïng ngöôøi

(bob (PROFERSSION (VALUE professor ) ) (AGE (VALUE 42 ) ) (WIFE (VALUE susan ) ) (CHILDREN (VALUE sue joe ) ) (ADDRESS ( STREET (VALUE 100 elm ) ) ( CITY ( VALUE dallas ) ) ( STATE ( VALUE tx ) ) ( ZIP ( VALUE 75000 ) ) ) )

Moät ñònh nghóa keá thöøa

( fast-food ( VALUE cold-snacks ) ) )

(fdefine general-train land-transport (type (VALUE passenger ) ) (class (VALUE first-class second-class sleeper ) ) (food ( restaurant (VALUE hot-meals ) ) )

Caùc frame ñöôïc toå chöùc thaønh caáu truùc caây vaø coù theå söû duïng cô cheá lan truyeàn treân caáu truùc thöøa keá naøy.

2.2. Bieåu dieãn tri thöùc baèng boä ba OAV

Laø moät daïng ñaëc bieät cuûa maïng ngöõ nghóa maø phaàn lôùn caùc heä döïa treân tri thöùc ñeàu choïn. Noù cho pheùp caùc ñoái töôïng saép xeáp vaø lieân keát laïi, cho pheùp bieåu dieãn caùc söï kieän khoâng chaéc chaén vaø deã daøng caøi ñaët caùc luaät. Bieåu dieãn naøy goàm boä 3 lieân hôïp:

1. O nghóa laø Object (ñoái töôïng)

2. A nghóa laø Attribute (thuoäc tính)

3. V nghóa laø Value (giaù trò)

Ví duï 8.10

Ñeå noùi vi truøng ecoli coù gram döông ta bieåu dieãn baèng boä ba sau (O: E.Coli, A: Gramstain, V : Positive)

Ta coù nhaän xeùt laø:

1. Bieåu dieãn gaàn vôùi logic vaø nhôø ñoù dieãn ñaït töôøng minh caùc luaät suy

dieãn

2. Tuy nhieân so vôùi maïng ngöõ nghóa thì tính lieân keát keùm, neân caùc quan heä giöõa caùc ñoái töôïng bò lu môø. Ñeå taêng cöôøng moái quan heä giöõa caùc boä ba ngöôøi ta toå chöùc chuùng thaønh moät caáu truùc caây goïi laø caây ngöõ caûnh.

Ñònh nghóa 8.2

Caây ngöõ caûnh laø caây ñöôïc toå chöùc ñeå phuïc vuï cho vieäc löu tröõ vaø theå hieän moái quan heä laãn nhau giöõa caùc boä ba.

Ví duï 8.11

Caây ngöõ caûnh cuûa beänh nhaân Meier 52 tuoåi vôùi 3 laàn caáy vi truøng (Cul) vaø 1 laàn moå (Oper) treân 3 boä phaän (Org). Beänh nhaân ñaõ 4 laàn duøng thuoác (Drug):

(O: Org1 A: Ident, V:Strept4)

(O: Drug2 A: Ident, V:Fibmyc) (O: Drug3 A: Ident, V:Ampmyc)

(O: Drug4 A: Ident, V:Neomyc)

(O:Meier, A: Alter, V: 52) (O: Cul1 A: Date, V:051080) (O: Cul2 A: Date, V:051580) (O: Org2 A: Ident, V:StapM2) (O: Cul3 A: Date, V:051680) (O: Org3 A: Ident, V:Strept1) (O: Oper1 A: Date, V:052280) (O: Org4 A: Ident, V:Strept4) (O: Drug1, A: Ident, V:Neomyc)

2.3. Boä nhôù keát hôïp (bieåu dieãn tri thöùc moâ phoûng heä thaàn kinh)

Chuùng ta coù moät chuû ñeà rieâng cho maïng neuron nhaân taïo, tuy nhieân ôû ñaây chuùng toâi muoán giôùi thieäu vaø nhaán maïnh ñeán caùch bieåu dieãn tri thöùc. Trong maïng neuron, tri thöùc ñöôïc löu tröõ phaân taùn trong caùc nuùt vaø suy dieãn baèng cô cheá lan truyeàn. Kích thích seõ kích hoaït moät soá nuùt, chuùng truyeàn xung leân caùc nuùt khaùc. Caùc nuùt naøy toång hôïp caùc xung nhaän ñöôïc vaø neáu ñuû lôùn, chuùng laïi truyeàn xung ñi.

(a) Bieåu dieãn tri thöùc

Ñònh nghóa 8.3

• x laø vector caùc giaù trò truyeàn ñeán x nhaèm kích hoaït x;

• w laø vector troïng soá hay boä nhôù daøi haïn;

• S laø haøm xaùc ñònh giaù trò hoaït hoaù cuûa x döïa vaøo tích voâ höôùng < x, w>

Boä 5 x = < x, w, a, S, θ > chæ neuron x, trong ñoù:

• θ laø giaù trò ngöôõng duøng cho S.

vaø θ, giaù trò naøy coøn ñöôïc goïi laø boä nhôù ngaén haïn cuûa x;

moâ hình 1 moâ hình 2

)a(S

=

0 0

> ≤

a1 ⎧ ⎨ a0 ⎩

Coi θ = -w0 vôùi x0 = 1 vaø

Ñònh nghóa 8.4

Maïng neural laø moät maïng lieân keát caùc neuron laïi vôùi nhau

Ví duï 8.12

Maïng neural moâ phoûng phaàn töû logic XOR y = x1 xor x2

(b) Suy dieãn trong maïng neural

1. Moät soá neural bò kích hoaït bôûi caùc tín hieäu vaøo (thöôøng laø caùc neuron

input).

2. Ñeán löôït chuùng laïi kích hoaït caùc neuron khaùc.

3. Quaù trình tieáp dieãn cho ñeán khi hoaëc ñaït ñeán caùc neuron ra (neuron

output) hoaëc ñaït ñeán moät traïng thaùi caân baèng

4. Hình aûnh toaøn theå (hoaëc boä phaän) cuûa boä nhôù ngaén haïn laø keát quaû suy

dieãn.

Ví duï 8.13

Maïng sau bieåu dieãn moät heä chuyeân gia chaån ñoaùn, trong ñoù x laø moät soá bieåu hieän nhö phuø chaân, ñoû maét, ruïng toùc, choùng maët… coøn y laø keát quaû chaån ñoaùn

Trong ñoù, haøm S thoûa S(a) = 1 khi a >0 vaø S(a) = -1 khi a ≤ 0

Khi aáy vôùi x = (1, -1, -1, -1, -1, -1) ta coù y = (-1, 1, 1)

BAØI TAÄP

Baøi taäp 8.1

Bieåu dieãn baøi toaùn heä thöùc löôïng trong tam giaùc baèng

1. Maïng ngöõ nghóa

2. Boä 3 OAV

Baøi taäp 8.2

Bieåu dieãn heä thoáng ñòa lyù baèng

1. Maïng ngöõ nghóa

2. Frame

Baøi taäp 8.3

Coù caùc söï kieän sau: moät ngöôøi ñaøn oâng yeáu ñuoái cöôùi phaûi moät phuï nöõ tham lam. Baây giôø ngöôøi ta muoán bieát lieäu ngöôøi ñaøn oâng naøy coù xaáu xa hay khoâng?

Haõy cung caáp caùc tri thöùc caàn thieát, bieåu dieãn chuùng roài thöïc hieän caùc suy luaän ñeå keát luaän ñuùng veà nghi ngôø noùi treân.

Baøi taäp 8.4

Truyeän Macbeth keå veà Macbeth, Macbeth phu nhaân, vua Duncan vaø hoaøng thaân Macduff. Macbeth laø moät nhaø quyù toäc hieåm aùc, coøn phu nhaân cuûa oâng ta laø moät phuï nöõ ñaày tham voïng vaø tham lam. Baø Macbeth thuyeát phuïc Macbeth muoán trôû thaønh vua. Baø coù theå thuyeát phuïc ñöôïc laø vì Macbeth laø moät oâng choàng yeáu ñuoái. Vì muoán laøm vua vaø vì hieåm aùc maø Macbeth gieát Duncan baèng dao. Cuoái cuøng Macduff gieát Macbeth vì Macduff laø hoaøng thaân vaø vì Macbeth gieát vua.

Haõy bieåu dieãn toaøn boä caâu chuyeän bao goàm caùc söï kieän vaø caùc quan heä baèng moät phöông phaùp tuyø yù.

Baøi taäp 8.5

Theâm moät tri thöùc veà hình hoïc phaúng:

“Ñöôøng cao AH cuûa tam giaùc ABC laø ñoaïn thaúng vuoâng goùc vôùi BC, trong ñoù H naèm treân ñöôøng thaúng ñi qua BC vaø ñöôïc goïi laø chaân ñöôøng cao”.

Haõy bieåu dieãn baèng maïng ngöõ nghóa vaø boå sung vaøo cô sôû tri thöùc ñaõ khaûo saùt trong lyù thuyeát.

Baøi taäp 8.6

Thieát keá chöông trình höôùng ñoái töôïng cho baøi toaùn heä thöùc löôïng trong tam giaùc, yeâu caàu:

1. Duøng caùc khaùi nieäm ñôn giaûn: Ñaïi löôïng (moâ taû caùc ñoái töôïng nhö caïnh a, b, c; goùc A, B, C; ñöôøng cao ha, hb, hc …) vaø Coâng thöùc (moâ taû caùc ñoái töôïng coâng thöùc nhö A + B + C = π, S = ½ aha, ha = b sin C,…

2. Duøng caùc khaùi nieäm phöùc taïp hôn nhö: Tam giaùc, Coâng thöùc, Ñaïi löôïng,

Ñöôøng cao, Caïnh, Ñænh, Goùc, …

Caøi ñaët thuû tuïc tính moät ñaïi löôïng khi bieát caùc ñaïi löôïng ñuû ñeå xaùc ñònh tam giaùc (coù 3 yeáu toá, trong ñoù ít nhaát moät yeáu toá laø caïnh)

Baøi taäp 8.7

Cho caùc söï kieän: coù 2 sinh vieân a vaø b; coù 3 moân x, y vaø z; sinh vieân a coù ñieåm cuûa caùc moân x, y vaø z thöù töï laø 7, 4 vaø 8 coøn sinh vieân b coù ñieåm cuûa caùc moân x, y vaø z thöù töï laø 4, 6 vaø 5.

Cho taäp luaät: Sinh vieân laø ñaäu chính thöùc neáu ñieåm x, y cuûa anh ta ñeàu lôùn hôn 5; sinh vieân laø ñaäu vôùt neáu khoâng ñaäu chính thöùc nhöng ñieåm moân x hoaëc y phaûi lôùn hôn 6 vaø ñieåm moân z phaûi lôùn hôn 7 vaø sinh vieân laø ñaäu neáu sinh vieân ñaäu chính thöùc hoaëc ñaäu vôùt.

Ta muoán keát luaän veà khaû naêng ñaäu cuûa sinh vieân a. Haõy:

1. Bieåu dieãn cô sôû tri thöùc baèng logic vò töø caáp 1

2. Bieåu dieãn cô sôû tri thöùc baèng maïng ngöõ nghóa vaø trình baøy caùc suy

luaän ñeå giaûi quyeát vaán ñeà noùi treân.

Chöông 9

Thu naïp tri thöùc

1. Môû ñaàu

Hoïc laø khaû naêng maø heä töï thay ñoåi noäi dung cuõng nhö caáu truùc cuûa chính noù.

Baèng cô cheá suy dieãn rieâng, heä coù theå nghieàn ngaãm cô sôû tri thöùc cuûa noù nhaèm loaïi boû nhöõng dö thöøa, boå sung caùc thoâng tin heuristic ñeå coù theå giuùp quaù trình giaûi quyeát vaán ñeà sau naøy ñöôïc hieäu quaû. Chaúng haïn, xeùt baøi toaùn tìm ñöôøng ñi, baèng caùch töï tìm nhöõng ñöôøng ñi khaùc nhau, giöõa caùc ñích cuï theå hoaëc giöõa caùc ñích tröøu töôïng, heä coù nhöõng öôùc löôïng ngaøy caøng chính xaùc.

Ví duï 9.1

Trong baøi toaùn tìm ñöôøng ñi ngaén nhaát ta muoán heä thoáng hoïc ñöôïc haøm heuristic. Xeùt baøi toaùn quen thuoäc (ví duï 1), giaû söû ban ñaàu caùc giaù trò heuristic (khoaûng caùch ñeán ñích) ñeàu baèng nhau vaø baèng 50.

1. Giaû söû tìm thaáy ñöôøng ñi N → C → D → L, khi aáy heä xaùc ñònh ñöôïc hÂL

= 0, hÂD = 10, hÂC = 20, hÂN = 30;

2. Neáu heä thoáng ñang töï hoïc (hoaëc ta daïy noù raèng ñöôøng ñi vöøa tìm thaáy laø chöa toái öu) thì noù seõ coá gaéng tìm theâm ñöôøng ñi môùi vaø caùc ñieàu chænh keá tieáp laïi ñöôïc thöïc hieän chaúng haïn neáu laàn sau heä tìm thaáy moät ñöôøng ñi môùi toát hôn N -> D -> L thì heä seõ tính laïi hÂN = 29;

3. Quaù trình hoïc cöù theá tieáp tuïc.

Baèng caùch thay ñoåi caùc tham soá caáu truùc heä coù khaû naêng ñöa noù ñeán moät traïng thaùi phuø hôïp hôn vôùi moâi tröôøng. Trong ví duï sau, heä thoáng hoïc ñöôïc xaùc suaát löïa choïn nöôùc ñi.

Ví duï 9.2

Xeùt troø chôi NIM goàm ba ñoáng bi vôùi soá bi thöù töï laø 1, 3 vaø 5. Ngöôøi chôi chæ ñöôïc pheùp laáy bi trong moät ñoáng ít nhaát 1 bi. Ngöôøi naøo laáy phaûi vieân cuoái cuøng laø thua cuoäc. Ban ñaàu caùc khaû naêng ñi ñöôïc chia ñeàu neân xaùc suaát choïn laø baèng nhau. Sau khi chôi moät vaùn heä thoáng seõ laàn theo caùc nöôùc ñi vaø tieán haønh ñieàu chænh xaùc suaát: taêng neáu thaéng vaø giaûm neáu thua. Heä thoáng coù theå töï hoïc hoaëc hoïc thoâng qua quaù trình chôi vôùi chuyeân gia.

Tuy nhieân phaàn lôùn nhöõng tri thöùc maø heä nhaän ñöôïc laø töø beân ngoaøi. Vôùi nhöõng ví duï thu nhaän ñöôïc heä thoáng seõ phaùt sinh caùc khaùi nieäm môùi, caùc lieân keát vôùi caùc tri thöùc cuõ, hoaëc hoïc ñöôïc moät tri thöùc thuû tuïc.

Ví duï 9.3

Ñeå daïy heä thoáng bieát moät ngöôøi ñaøn oâng seõ trôû neân yeáu ñuoái neáu cöôùi phaûi coâ vôï coù tính aùp ñaûo nhö theá naøo, ngöôøi ta keå cho heä thoáng nghe caâu chuyeän cuûa Mô vaø Moã nhö sau. Moã cöôùi Mô, Mô aùp ñaûo Moã, Moã meät thaønh ra yeáu ñuoái. Sau ñoù yeâu caàu heä thoáng giaûi thích. Sau khi hoïc heä thoáng seõ hình thaønh theâm caùc moái quan heä. Keát quaû laø heä thoáng hoïc ñöôïc caùc quan heä môùi.

Vôùi moâi tröôøng coù nhieàu söï kieän, baèng caùch toång quaùt hoaù heä coù theå ruùt ra caùc tri thöùc mang tính quy luaät

Ví duï 9.4

Thöû hoïc khaùi nieäm voøm qua 2 ví duï thuaän: 2 vieân gaïch ñôõ vieân thöù 3; 2 vieân gaïch ñôõ moät caùi neâm vaø moät ví duï nghòch 2 vieân gaïch ñôõ gaàn chaïm nhau. Keát quaû ta coù khaùi nieäm voøm nhö sau: voøm goàm hai vieân gaïch khoâng gaàn chaïm nhau cuøng ñôõ moät khoái.

2. Toång quan veà thu nhaän tri thöùc

Nhö vaäy, qua caùc ví duï neâu treân, ta ruùt ra moät nhaän xeùt laø heä thoáng phaûi coù thay ñoåi sau khi hoïc. Caùc thay ñoåi coù theå laø caùc söï kieän, caùc luaät, caùc heuristic, caùc troïng soá, caùc quan heä… Hôn nöõa caàn phaûi xaùc ñònh heä thoáng hoïc caùi gì tröôùc khi quaù trình hoïc ñöôïc baét ñaàu töùc laø

Khi heä thoáng hoïc ta caàn xaùc ñònh cuï theå caùi gì cuûa heä thoáng seõ phaûi thay ñoåi coù nhö vaäy môùi tìm ñöôïc caùc tieáp caän hoïc thích hôïp.

2.1. Khaùi nieäm

Ñònh nghóa 9.1

Thu nhaän tri thöùc laø theâm vaøo cô sôû tri thöùc (KB - Knowledge Base) caùc tri thöùc môùi nhö söï kieän, luaät, khaùi nieäm, thuû tuïc, heuristic, quan heä...

Coù theå chia laøm 5 kieåu hoïc khaùc nhau

1. Ghi nhôù sao cheùp tri thöùc cuøng daïng

tri thöùc phaûi ñöôïc bieán ñoåi tröôùc khi ñöa vaøo cô sôû tri

2. Tröïc tieáp thöùc.

3. Töông töï hoïc tri thöùc môùi thoâng qua caùc tri thöùc töông töï coù trong

KB

4. Quy naïp hoïc tri thöùc qua moät soá caùc theå hieän.

5. Suy dieãn caùc tri thöùc môùi ñöôïc suy daãn töø caùc tri thöùc ñaõ coù.

(a) Hoïc tri thöùc moâ taû

Ngoaïi tröø caùc caùch hoïc ñôn giaûn, noùi chung hoïc laø söï khaùi quaùt hoaù caùc ví duï rieâng leû thaønh luaät thaønh caùc khaùi nieäm toång quaùt hôn. Cho neân thöôøng thì chuùng ta quan taâm nhieàu ñeán caáu truùc toång quaùt hoaù vaø moät chieán löôïc ñi treân caáu truùc naøy.

Moät caùch toång quaùt nhaát, hoïc laø quaù trình hình thaønh nhöõng khaùi nieäm môùi, nhöõng moái lieân heä môùi. Theo ñoù, khaùi nieäm toång quaùt nhaát seõ ñöôïc phaân hoaïch theo nhieàu quan heä töông ñöông khaùc nhau ñoàng thôøi hình thaønh caùc moái quan heä giöõa caùc lôùp töông ñöông naøy.

Ví duï 9.5

Giaû söû chuùng ta coù caùc ví duï ñöôïc chia laøm hai nhoùm: E = {B, D, E, F, H, K, L} vaø F = {C, M, N}. Baøi toaùn laø xaây döïng moät taäp moâ taû caùc ñaëc tröng cuûa moãi nhoùm ñeå coù theå nhaän bieát moät tröôøng hôïp X naøo ñoù? Baèng caùch quan saùt, chuùng ta coù theå phaân nhoùm nhö sau:

Coi U = {B, D, E, F, H, K, L, C, M, N}

1. Coù 1 caïnh beân traùi: U1yes = {B, D, E, F, H, K, L, M, N}, U1no = {C}

2. Coù 2 caïnh ñöùng: U2yes = {H, M, N}, U2no = {B, D, E, F, K, L, C}

Hôïp cuûa 2 phaân hoaïch naøy cung caáp cho heä moät ít tri thöùc ñeå giaûi baøi toaùn.

(b) Hoïc tri thöùc thuû tuïc

Giaû söû chuùng ta coù trong tay moät taäp luaät. Ñeå giaûi moät baøi toaùn naøo ñoù, thöôøng chuùng ta seõ thöïc hieän moät danh saùch caùc luaät. Nhö vaäy, thay cho taäp con caùc luaät, chuùng ta ñöa ra moät boä con (coù tính thöù töï vaø cho pheùp laëp). Hoïc thuû tuïc laø xaùc ñònh boä con naøy öùng vôùi moãi thao taùc ñöôïc hoïc.

Ví duï 9.6

Ta muoán daïy heä giaûi phöông trình baäc hai 1 thuû tuïc giaûi phöông trình baäc 3. Giaû söû heä coù taäp luaät sau:

1. Neáu a laø nghieäm cuûa f vaø g laø keát quaû chia f cho (x – a) → nghieäm cuûa f goàm a vaø nghieäm cuûa g

→ x = -b + sqrt(Δ) laø nghieäm cuûa f

2. Neáu Δ cuûa f(x) = ax2 + bx + c laø khoâng aâm

Sau khi hoïc, heä toång hôïp boä con caùc luaät vaø cho ta luaät môùi, chaúng haïn

→ x = -b + sqrt(Δ) laø nghieäm cuûa f

Neáu a laø nghieäm cuûa f vaø g = ax2 + bx + c laø keát quaû chia f cho (x – a) vaø Δ cuûa g(x) laø khoâng aâm

1.1. Caùc caùch tieáp caän

Chuùng ta coù theå choïn caùc phöông phaùp hoïc theo caùc caùch tieáp caän sau:

1. Ñònh nghóa theá naøo laø hai ñoái töôïng gaàn nhau, taïo ra moät phaân hoaïch vaø phaùt bieåu hình thöùc cho moãi lôùp töông ñöông (baøi toaùn phaân cuïm);

2. Cho tröôùc moät taäp maãu vôùi moät phaân hoaïch thu heïp treân ñoù, tìm caùch xaùc ñònh caùc phaùt bieåu hình thöùc cho moãi lôùp töông ñöông. Töø ñoù môû roäng cho toaøn theå (baøi toaùn phaân loaïi);

3. Laøm thoâ moät quan heä töông ñöông ñaõ coù (baøi toaùn toång quaùt hoaù hoaëc

baøi toaùn toái öu taäp luaät).

4. Hoïc coù thaày, töùc laø hoïc qua caùc ví duï;

5. Hoïc khoâng thaày, töùc laø hoïc qua quan saùt;

6. Hoïc quy naïp; töùc toång quaùt hoaù;

7. Hoïc suy dieãn; ñöa ra tri thöùc töø quaù trình suy dieãn trong cô sôû tri thöùc;

8. Hoïc vôùi taäp huaán luyeän xaùc ñònh tröôùc;

9. Hoïc vôùi taäp huaán luyeän ñöôïc boå sung daàn;

10. Hoïc coù caáu truùc;

11. Hoïc khoâng coù caáu truùc.

Trong chöông naøy, chuùng ta seõ khaûo saùt moät soá phöông phaùp hoïc vaø duøng ví duï sau ñeå minh hoïa. Cho moät taäp goàm 10 ñoái töôïng e1, e2, … e10 ñöôïc theå hieän qua 3 thuoäc tính moâ taû A1, A2, A3 vaø thuoäc tính phaân lôùp D:

A1 A2 A3 D

1 m s g e1

1 s s g e2

1 m r g e3

1 s r g e4

1 m b g e5

2 l c w e6

2 l e b e7

2 l s w e8

2 l r b e9

2 l b b e10

3. Phöông phaùp caây quyeát ñònh

3.1. Khaùi nieäm

Chuùng ta seõ chia taäp caùc ñoái töôïng ñöôïc xeùt thaønh caùc lôùp döïa vaøo moät thuoäc tính naøo ñoù cho ñeán khi caùc taäp con laø thuaàn nhaát (cuøng moät lôùp). Chaúng haïn:

{e1, e2, e3, e4, e5, e6, e7, e8, e9, e10}

A2

{e1, e2, e8} {e3, e4, e9} {e5, e10} {e6} {e7}

A3 A1 A3

{ e1} {e2} {e8} {e3, e4} {e9} {e5} {e10}

Moãi nuùt laù luùc naøy theå hieän söï hieåu bieát cuûa heä veà taäp ñoái töôïng. Keát quaû phaân hoaïch quaù mòn chöùng toû söï hieåu bieát cuûa heä laø quaù rôøi raïc, khoâng toát cho vieäc söû duïng tri thöùc. Phaân hoaïch sau laø toát hôn nhieàu.

{e1, e2, e3, e4, e5, e6, e7, e8, e9, e10}

A1

{e1, e2, e3, e4, e5} {e6, e8} {e7, e9, e10}

Vaäy vaán ñeà cuûa chuùng ta laø löïa choïn thuoäc tính ñeå phaân hoaïch sao cho hieäu quaû, laøm söï hieåu bieát cuûa heä khoâng quaù rôøi raïc. ÔÛ ñaây heä ruùt ra ñöôïc 3 luaät: Neáu A1 = g Thì D = 1; Neáu A1 = w Thì D = 2 vaø Neáu A1 = b Thì D = 2;

3.2. Tieáp caän cöïc tieåu Entropy trung bình

Moät heä vôùi phaân boá xaùc suaát {pk} seõ coù entropy laø

log(

)

k

k

k

∑−=

E p p

Trong ñoù log ñöôïc laáy theo cô soá baát kyø, vôùi cô soá 2 thì ñôn vò ño cuûa E laø bit.

Ví duï 9.7

Tính E trung bình khi duøng thuoäc tính A1 vaø khi duøng thuoäc tính A2

Giaûi: Thuoäc tính A1 phaân laøm 3 nhoùm {e1, e2, e3, e4, e5}, {e6, e8} vaø {e7, e9, e10} coù tyû leä töông öùng 5/10, 2/10 vaø 3/10. Ta coù

D 1 2 E Tyû leä

0 5/10 {e1, e2, e3, e4, e5} 1 0

0 1 0 2/10 {e6, e8}

0 1 0 3/10 {e7, e9, e10}

vaø E trung bình baèng 0;

Thuoäc tính A2 phaân laøm 5 nhoùm. Ta coù

D Lôùp 1 Lôùp 2 Entropy E Tyû leä

1/3 log3 – 2 = 0.92 3/10 2/3 {e1, e2, e8}

2/3 1/3 0.92 3/10 {e3, e4, e9}

1/2 1/2 1 2/10 {e5, e10}

0 1 0 1/10 {e6}

0 1 0 1/10 {e7}

vaø E trung bình baèng 0.92×3/10 + 0.92×3/10 + 2/10 + 0 + 0 = 0.751.

Nhö vaäy phaân hoaïch theo A1 laø toát nhaát coù entropy trung bình ñaït cöïc tieåu.

Baøi toaùn toái öu taäp luaät

Ví duï 9.8

Xeùt keát quaû phaân hoaïch

{e1, e2, e3, e4, e5, e6, e7, e8, e9, e10}

A2

{e1, e2, e8} {e3, e4, e9} {e5, e10} {e6} {e7}

A3 A1 A3

{ e1} {e2} {e8} {e3, e4} {e9} {e5} {e10}

Ta thu ñöôïc caùc luaät:

r1: (A3 = m) ∧ (A2 = s) → (D = 1) r2: (A3 = s) ∧ (A2 = s) → (D = 1) r3: (A1 = g) ∧ (A2 = r) → (D = 1) r4: (A3 = m) ∧ (A2 = b) → (D = 1) r5: (A3 = w) ∧ (A2 = s) → (D = 2) r6: (A1 = b) ∧ (A2 = r) → (D = 2) r7: (A3 = b) ∧ (A2 = b) → (D = 2) r8: (A2 = c) → (D = 2) r9: (A2 = e) → (D = 2)

Thaät ra coù hai luaät toång quaùt hôn (A1 = g) → (D = 1) vaø (A3 = l) → (D = 1). Vaäy laøm theá naøo nhaän ñöôïc caùc luaät toång quaùt naøy? Giaûi quyeát baøi toaùn

naøy khoâng naèm trong phaïm vi cuûa taøi lieäu. Chuùng toâi neâu ra nhö moät baøi toaùn môû.

4. Phöông phaùp khoâng gian theá heä

4.1. Khaùi nieäm

Giaû söû moãi thuoäc tính coù moät caây quyeát ñònh. Cho moät taäp caùc ví duï thuaän vaø nghòch. Heä söû duïng caùc ví duï naøy ñeå xaây döïng taäp G caùc theå hieän toång quaùt vaø taäp S caùc theå hieän chuyeân bieät, baét ñaàu vôùi theå hieän toång quaùt laø theå hieän toång quaùt nhaát vaø theå hieän chuyeân bieät laø theå hieän cuï theå nhaát. Cöù moãi ví duï thuaän heä seõ toång quaùt hoaù caùc theå hieän chuyeân bieät (luaät cho S) vaø cöù moãi ví duï nghòch heä seõ chuyeân bieät hoaù caùc theå hieän toång quaùt (luaät cho G). Khi G = S, quaù trình hoïc keát thuùc. Quaù trình naøy phaùt sinh moät khoâng gian caùc theå hieän ñöôïc goïi laø khoâng gian theá heä. Vôùi phöông phaùp naøy coù 2 ñieàu caàn löu yù:

1. Moãi thuoäc tính coù moät caây quyeát ñònh (hoaëc caây moâ taû);

2. Thöù töï choïn ví duï ñeå hoïc laø quan troïng.

4.2. Thuaät toaùn

1. Khôûi taïo G goàm moät theå hieän toång quaùt;

2. Khôûi taïo S goàm moät theå hieän chuyeân bieät töø ví duï ñaàu tieân (phaûi

laø ví duï thuaän);

3. Vôùi moãi ví duï

3.1. Neáu laø ví duï thuaän,

3.1.1. Loaïi khoûi taäp G nhöõng theå hieän toång quaùt khoâng chöùa ví

duï thuaän naøy;

3.1.2. Toång quaùt hoaù theå hieän chuyeân bieät cho S;

3.2. Neáu laø ví duï nghòch,

3.2.1. Loaïi khoûi taäp S nhöõng theå hieän chuyeân bieät chöùa ví duï

nghòch naøy;

3.2.2. Chuyeân bieät hoaù caùc theå hieän toång quaùt cho G

3.3. Neáu G = S, phaùt sinh luaät khi vaø keát thuùc thaønh coâng

4. Keát thuùc thaát baïi

Ví duï 9.9

)()( dxxgxf

Xeùt baøi toaùn tích phaân baát ñònh duøng tích phaân töøng phaàn

Muïc ñích hoïc laø xaùc ñònh daïng cuûa f vaø g sao cho duøng ñöôïc coâng thöùc tích phaân töøng phaàn baèng caùch tích phaân g tröôùc. Giaû söû ta coù caây moâ taû haøm:

func

prim comb

tran poly

trial exp-log x x2

sin cos ex log

Xeùt taäp caùc ví duï {(f(x), g(x))}

(x, sin(x)) thuaän

(sin(x), x) nghòch

(x, cos(x)) thuaän

(x2, cos(x)) thuaän

Caùc böôùc thöïc hieän thuaät toaùn

1. Khôûi taïo G = {(prim, prim)} vaø S = {(x, sin(x))};

2. Vôùi ví duï nghòch (sin(x), x), S = S, G = {(poly, prim), (prim, tran)};

3. Vôùi ví duï thuaän (x, cos(x)), G = G, S = {(x, trial)};

4. Vôùi ví duï thuaän (x2, cos(x)) G = G, S = {(poly, trial)};

{(prim, prim)}

{(poly, prim) (prim, tran)} (sin(x), x)

{(poly, trial)} (x2, cos(x))

{(x, trial)} (x, cos(x))

{(x, sin(x))}

Ví duï 9.10

Trôû laïi ví duï ñaàu chöông. Ta seõ xaây döïng caây moâ taû cuõng nhö choïn caùc ví duï thuaän vaø nghòch thích hôïp ñeå daïy cho heä tri thöùc veà nhaän bieát D = 1.

Caây moâ taû

A1 A2 A3

g w b s r b c e m s l

Caùc ví duï

thuaän e1 (g, s, m)

nghòch e8 (w, s, l)

thuaän e3 (g, r, m)

thuaän e2 (g, s, s)

Minh hoïa

{(A1, A2, A3)}

(w, s, l)- {(g, A2, A3) (A1, A2, m)}

(g, s, s)- {(g, A2, m)}

(g, r, m)+ (g, A2, m)

(g, s, m)

Keát quaû hoïc ñöôïc luaät (A1 = g) → (D = 1)

ÔÛ ñaây, muõi teân ñöùt neùt cho bieát coù söï so saùnh giöõa ví duï vaø theå hieän. Vôùi ví duï thuaän, chuùng ta kieåm tra xem ví duï coù naèm ngoaøi theå hieän khoâng baèng caùch chæ ra nhöõng thuoäc tính naøo laø khaùc nhau, töø ñoù maø quyeát ñònh toång quaùt hoaù theå hieän chuyeân bieät cuõng nhö loaïi boû theå hieän toång quaùt. Vôùi ví duï nghòch, chuùng ta kieåm tra xem ví duï coù naèm trong theå hieän khoâng baèng caùch cuõng chæ ra nhöõng thuoäc tính naøo laø khaùc nhau, töø ñoù maø quyeát ñònh chuyeân bieät hoaù theå hieän toång quaùt cuõng nhö loaïi boû theå hieän chuyeân bieät.

Chaúng haïn, khi G = {(g, A2, A3), (A1, A2, m)} vaø S={(g, s, m)}, ví duï thuaän (g, r, m) khoâng loaïi boû theå hieän naøo cuûa G ñoàng thôøi toång quaùt hoaù theå hieän cuûa S thaønh S = {(g, A2, m)}

5. Phöông phaùp xaây döïng moät giaûi thích

5.1. Khaùi nieäm

Lieäu coù theå hoïc ñöôïc moät ít töø chæ moät ví duï? Tieáp caän naøy thöïc hieän vieäc hoïc vôùi chæ moät ví duï. Muoán vaäy heä phaûi coù tri thöùc lieân quan ñeán ví duï naøy. Heä duøng tri thöùc ñaõ bieát vaø tìm caùch xaây döïng moät giaûi thích taïi sao ví duï lieân quan ñeán khaùi nieäm caàn hoïc.

Michell cuøng caùc coäng söï (1986), DeJong vaø Mooney (1986) ñaõ moâ taû neàn taûng cuûa phöông phaùp vaø ñöa ra thuaät toaùn. Tröôùc heát moät heä hoïc döïa treân giaûi thích (EBL) caàn 4 loaïi thoâng tin sau

1. Phaùt bieåu hình thöùc khaùi nieäm caàn hoïc;

2. Moät ví duï;

3. Tri thöùc lieân quan ñeán khaùi nieäm vaø ví duï;

4. Tieâu chuaån xaây döïng.

5.2. Thuaät toaùn

1. Khôûi taïo ñích ñaàu laø moâ taû toång quaùt khaùi nieäm;

2. Khôûi taïo ñích cuoái laø caùc söï kieän töø ví duï;

3. Phaùt sinh moät suy luaän lieân quan ñeán 2 ñích (töùc laø xaây döïng moät

giaûi thích) döïa vaøo tri thöùc lieân quan;

4. Keát luaän veà keát quaû hoïc döïa vaøo tieâu chuaån xaây döïng.

Trong ví duï sau ta seõ minh hoïa baèng caây tìm kieám.

Ví duï 9.11

concept:

SAFE-TO-STACK(x,y) <-> ~FRAGILE(y) V LIGHTER(x,y)

Example:

ON ( obj1,obj2 )

ISA ( obj1, box )

ISA ( obj2, endtable )

COLOR ( obj1, red )

COLOR ( obj2, blue )

VOLUME ( obj1, 1 )

DENSITY ( obj1, 0.1 )

Theory

VOLUME ( p, v ) & DENSITY ( p, d ) → WEIGHT (p, v*d)

WEIGHT(p1,w1) & WEIGHT (p2, w2) & LESS (w1, w2)→ LIGHTER (p1,

p2)

ISA ( p, endtable ) → WEIGHT (p, 5 )

LESS ( 0.1, 5 )

Criteria:

Bieåu dieãn SAFE-TO-STACK qua COLOR, DENSITY, VOLUME laø caùc vò töø moâ taû ví duï

SAFE-TO-STACK(x,y)

FRAGILE(y)

LIGHTER(x,y)

WEIGHT(x,w1)

WEIGHT(y,w2)

Minh hoïa

LESS(w1,w2)

VOLUME(x,v) DENSITY(x,d) ISA(x,endtable) VOLUME(x,v) DENSITY(x,d) ISA(x,endtable) LESS(0.1, 5)

VOLUME(obj1,1) DENSITY (obj1,0.1)

ISA (obj2,endtable)

Keát quaû toång quaùt hoaù caùc ví duï cho ta ñònh nghóa ñaày ñuû khaùi nieäm caàn hoïc qua caùc tieâu chuaån ñöôïc yeâu caàu. Keát quaû hoïc laø

→ SAFE-TO-STACK(x,y)

VOLUME(x,v) ∧ DENSITY(x,d) ∧ ISA (y,endtable) ∧ LESS(v*d, 5)

BAØI TAÄP

Baøi taäp 9.1

Vôùi moãi boä döõ lieäu sau, cho bieát keát quaû hoïc sau khi duøng phöông phaùp caây quyeát ñònh vaø phöông phaùp khoâng gian theá heä.

Boä döõ lieäu 1

STT Maøu toùc Chieàu cao Caân naëng Keát quaû

1 vaøng trung bình nheï coù

2 naâu cao naëng khoâng

3 vaøng thaáp trung bình coù

4 naâu trung bình naêng khoâng

5 ñoû trung bình naëng coù

Boä döõ lieäu 2

Nôi aên Böõa aên Ngaøy Giaù Phaûn öùng

Coù Reû Thöù 6 Saùng Nhaø haøng Sôn 1

Khoâng Ñaét Thöù 6 Tröa Bình daân 2

Coù Reû Thöù 7 Tröa Nhaø haøng Sôn 3

Khoâng Reû Chuû nhaät Saùng Khaùch saïn 4

Khoâng Ñaét Chuû nhaät Saùng Nhaø haøng Sôn 5

Baøi taäp 9.2

Ñeå daïy heä thoáng caùch söû duïng heuristic H, ngöôøi ta cho heä hoïc 4 ví duï sau:

ví duï x y z loaïi

1 -1 1 -1 thuaän

2 1 1 1 nghòch

3 -1 -1 -1 thuaän

4 1 -1 1 nghòch

Haõy chæ ra quaù trình hoïc vaø keát quaû hoïc. Yeâu caàu duøng phöông phaùp khoâng gian theá heä (bieát moãi bieán x, y vaø z coù duy nhaát 2 tình huoáng laø 1 vaø –1)

Baøi taäp 9.3

Duøng phöông phaùp hoïc baèng caùch xaây döïng moät giaûi thích, haõy trình baøy quaù trình vaø keát quaû hoïc khaùi nieäm Ñöôøng_Cao. Bieát

Ñöôøng_Cao(x, y) <-> Vuoâng_Goùc(x, y, z, t) AND Caïnh_Ñoái(z, t, x)

Tam_Giaùc (a, b, c) Ñænh (a) Ñaùy (b, c) Vuoâng_Goùc(a, h, b, c)

Tam_Giaùc (x, y, z) → Caïnh_Ñoái(y, z, x) Ñænh (x) AND Ñaùy (y, z) → Tam_Giaùc (x, y, z)

Concept: Example: Theory Criteria: Bieåu dieãn Ñöôøng_Cao qua Ñænh, Ñaùy vaø Vuoâng_Goùc

Baøi taäp 9.4

Trình baøy keát quaû hoïc khaùi nieäm “caäu” baèng caùch xaây döïng moät giaûi thích, bieát:

Concept: caäu(X, Y) Examples: emVôï(a, b), choàng(b, c), cha(b, d) Theory: em(X, Z), meï(Z, Y) → caäu(X, Y) emVôï(X, Z), choàng(Z, Y) → em(X, Y) vôï(X, Z), cha(Z, Y) → meï(X, Y) choàng(Y, X) → vôï(X, Y) Criteria: emVôï(X, Y), cha(X, Y)

Baøi taäp 9.5

Daïy heä giaûi phöông trình baäc hai ñeå heä coù theå giaûi phöông trình baäc ba baèng phöông phaùp hoïc döïa treân giaûi thích. Xaây döïng moâi tröôøng ñeå heä coù theå hoïc thaønh coâng roài veõ caây minh hoïa.

Baøi taäp 9.6

Trong baøi toaùn heä thöùc löôïng. Heä seõ hoïc ñöôïc gì töø caùc ví duï sau

1. Thuaän S = 1/2 aha, S = 1/2 bhb vaø nghòch S = 1/2 ahb, S = 1/2 cha

2. Thuaän ha = bsinC, ha = csinB, hb = asinC vaø nghòch ha = asinC, hb =

asinB.

PHAÀN 4 MOÄT SOÁ CHUÛ ÑEÀ VAØ CAÙC PHUÏ LUÏC

Caùc chuû ñeà mang tính thôøi söï goàm: maïng neuron, maùy vector traïng thaùi, thuaät toaùn di truyeàn vaø kyõ thuaät xöû lyù raøng buoäc.

Caùc phuï luïc goàm: ngoân ngöõ prolog, thieát keá heä cô sôû tri thöùc höôùng ñoái töôïng, caøi ñaët caùc tri thöùc thuû tuïc baèng prolog, xaây döïng moät cô sôû tri thöùc vaø xaây döïng moät heä chuyeân gia nhoû.

Chöông 10

Moät soá chuû ñeà

Caùc chuû ñeà sau ñöôïc ñöa ra vôùi muïc ñích giôùi thieäu. Muoán söû duïng chuùng hieäu quaû chuùng ta caàn nghieân cöùu chuùng thaät thaáu ñaùo.

1. Maïng neuron nhaân taïo

1.1. Khaùi nieäm

(a) Moâ hình

Moät neuron nhaän tín hieäu töø caùc neuron noái ñeán noù, toång hôïp roài truyeàn tín hieäu ñaõ xöû lyù ñeán caùc neuron noù noái ñeán. Tín hieäu laø höng phaán (1) hoaëc öùc cheá (0 hoaëc –1), khi ñöôïc truyeàn ñeán seõ ñöôïc nhaân vôùi troïng synapse w; roài ñöôïc toång hôïp, thöôøng laø baèng pheùp coäng thoâng thöôøng; cuoái cuøng haøm quyeát ñònh, coù ngöôõng rieâng θ, seõ quyeát ñònh tín hieäu ra.

Neuron bò kích hoaït bôûi tín hieäu vaøo ñöôïc goïi laø neuron input. Söï lan truyeàn caùc tín hieäu treân maïng (goïi laø maïng neuron) tieáp dieãn cho ñeán khi truyeàn ñeán caùc neuron ra (neuron output) hoaëc ñaït ñeán moät traïng thaùi caân baèng; caùc neuron khoâng phaûi laø input cuõng nhö output ñöôïc goïi laø caùc neuron aån.

Moâ hình cuûa moät neuron

y

n

a

=

k xw k

k

1 =

trong ñoù

,( aS

) θ

=

a

1 θ − e a

θ

,( aS

) θ

=

a

θ

<

1 + 1 ⎧ ⎨ 0 ⎩

coøn S laø moät trong soá caùc haøm nhö

(b) Hoaït ñoäng

Caùc tín hieäu seõ ñöôïc lan truyeàn treân maïng töø caùc neuron input vaø ñöôïc tính theo caùc coâng thöùc ñaõ cho ôû treân. Quaù trình naøy döøng khi ñaït ñeán caùc neuron output hoaëc ñaït traïng thaùi caân baèng.

Ví duï sau minh hoïa tröôøng hôïp ñaàu.

Ví duï 10.1

Cho maïng neuron vôùi 6 neuron x1, x2, a, b, c vaø y, trong ñoù x1, x2 laø caùc neuron input coøn y laø neuron output. Ngöôõng θ vaø troïng w ñöôïc cho trong caùc baûng

θ

neuron a b c y

0.3 -0.6 0.5 -0.1

a b c y

-0.5 0.4 0.4 x1

0.3 0.5 x2 0.4

0.2 0.3 a

0.2 b

-0.4 c

Duøng haøm chuyeån

=

1 1

≥ <

⎧ ⎨ ⎩

x θ xS )( x θ

Haõy xaùc ñònh tín hieäu ra khoûi caùc neuron a, b, c vaø y, bieát tín hieäu ra khoûi x1, x2 laø -1 vaø 1

Giaûi:

y

0.2

-0.4

-0.1

0.5

0.3

c

b

0.2

0.5

-0.6

0.4

0.4

0.3

a

0.3

0.4

-0.5

x0

x2

x1

Veõ caây

Tính toaùn

a = S(-0.3 + 0.5 +0.4) = 1

b = S(0.6 – 0.4 + 0.2) = 1

c = S(-0.5 – 0.4 + 0.3) = -1

y = S(0.2 +0.1 +0.3 + 0.5 + 0.4) = 1

Vaäy y = 1.

(c) Hoïc

Coi maïng laø moâ hình f Â(W, θ, x) cuûa haøm f(x). Baøi toaùn hoïc laø xaùc ñònh W vaø θ töø taäp maãu. Coù hai kieåu hoïc:

1. Hoïc giaùm saùt (coù thaày): taäp maãu daïng {(xk, yk)}

2. Hoïc khoâng giaùm saùt (khoâng coù thaày): taäp maãu daïng {xk}

1.2. Giôùi thieäu moät soá luaät hoïc

(a) Luaät hoïc Hebb

Δwxy = α ax ay

Hebb (1949), döïa treân nhöõng thí nghieäm cuûa mình, ñaõ giaû thieát laø khi neuron x lieân tuïc truyeàn tín hieäu ñeán neuron y thì seõ laøm taêng troïng synapse giöõa chuùng. Ta coù

trong ñoù α laø haèng soá hoïc, ax laø giaù trò cuûa neuron x, …

Association Memory (boä nhôù keát hôïp)

Moâ hình

y = S(Wx)

=

1 1

0 0

≥ <

⎧ ⎨ ⎩

x xS )( x

ΔW = yxT

Luaät hoïc

Hoaït ñoäng (laø quaù trình laëp)

y0 = S(Wx0)

xn = S(WTyn-1), yn = S(Wxn)

y = y* = f Â(x) = S(Wx*)

Ví duï 10.2

Xeùt aùnh xaï f: {0, 1, …, 7} → {0, 1, … 3}, bieát

1 3 xi

yi = f(xi) 0 1

Ta xaây döïng maïng nhö sau: goàm 3 nuùt a, b, c noái ñaày ñuû vôùi 2 nuùt u, v.

a

u

b

v

c

Boä ba (a, b, c) seõ maõ hoaù caùc giaù trò töø 0 ñeán 7, chaúng haïn 5, coù bieåu dieãn nhò phaân laø 101, seõ ñöôïc maõ hoaù vôùi a = c = 1 vaø b = -1; cuõng vaäy caëp (u, v) seõ maõ hoaù caùc soá nguyeân töø 0 ñeán 4.

Quaù trình hoïc, baét ñaàu vôùi W = 0, ta caäp nhaät ΔW cho moãi laàn hoïc caëp tín hieäu maãu. Vôùi (1, 0), ta coù W:

-1 a

(1, 1, -1) u -1

-1 b

(1, 1, -1) v -1

1 c

Tieáp theo, vôùi caëp (3, 1), W luùc naøy laø

-1 a

(2, 0,-2) u -1

1 b

(0, 2, 0) v 1

1 c

=

02 20

2 − 0

⎛ ⎜⎜ ⎝

⎞ ⎟⎟ ⎠

W

Cho maïng hoaït ñoäng, tröôùc heát kieåm tra keát quaû hoïc:

Vôùi x = 1, ta coù (-1, -1, 1)T → (-1, -1)T→ (-1, -1, 1)T suy ra y = 0, khôùp;

Vôùi x = 3, ta coù (-1, 1, 1)T → (-1, 1)T→ (-1, 1, 1)T suy ra y = 1, khôùp.

Tìm f(x)

Vôùi x = 7, ta coù (1, 1, 1)T → (1, 1)T→ (1, 1, -1)T → (1, 1)T, maïng oån ñònh ôû traïng thaùi (6, 3) (noùi theo thuaät ngöõ phaân loaïi, maïng xeáp 6 vaø 7 cuøng nhoùm)

Vôùi x = 4, ta coù (1, -1, -1)T → (1, -1)T→ (1, -1, -1)T, maïng oån ñònh ôû (4, 2)

(b) Hoïc baèng caùch söûa loãi

Δwxy = α ax ey

Rosenblatt (1958), döïa treân caùc tính toaùn cuûa mình, ñaõ ñöa ra luaät hoïc

trong ñoù α laø haèng soá hoïc, ey = dy – ay laø sai soá giöõa giaù trò chôø ñôïi d vaø giaù trò cuûa neuron y.

Trong moät chu kyø hoïc, chuùng ta hy voïng toång loãi seõ giaûm ñeå coù theå ñaït ñeán giaù trò beù nhaát.

Luaät hoïc naøy ñöôïc Rosenblatt söû duïng trong maïng perceptron sau ñaây.

Maïng Perceptron

Moâ hình

y = S(Wx – θ)

=

1 1

0 0

≥ <

⎧ ⎨ ⎩

x xS )( x

Δwxy = α ax ey

Δθx = -α ex

Luaät hoïc (laø quaù trình laëp cho ñeán khi cöïc tieåu sai soá).

Hoaït ñoäng

y = f Â(x) = S(Wx – θ))

Ví duï 10.3

Cho maïng vôùi 3 neuron a, b, c. Giaû söû a noái c troïng wac = 1 vaø b noái c troïng wbc = -3. taïi c ngöôõng θc = 2. Vôùi α= 0.5, haõy xaùc ñònh troïng vaø ngöôõng cuûa

maïng sau khi hoïc maãu (a, b, c) = (1, -1, -1) vaø kieåm tra keát quaû hoïc.

Giaûi: Maïng tröôùc khi hoïc

c 1

1 -3

a b

Tính y: (1, -1) → 1 = y vaø e = d – y = (-1) – 1 = -2;

Caäp nhaät: wac = 1 + 0.5 × 1 × (-2) = 0;

wbc = -3 + 0.5 × (-1) × (-2) = -2; θc = 2 – 0.5*(-2) = 3.

Maïng sau khi hoïc

c 3

0 -2

b a

Kieåm tra keát quaû hoïc, (1, -1) → -1 vaø sai soá ec = 0.

Maïng Back propagation

Moâ hình

aS ,(

=

) θ

1

1 ae θ −+

y = S(Wx, θ)

Δwxy = α ay (1 – ay) ax ey

Δθx = -α ax (1 – ax) ex

Luaät hoïc (laø quaù trình laëp cho ñeán khi sai soá cöïc tieåu).

Trong ñoù α laø haèng soá hoïc, ax laø tín hieäu töø neuron x, …

Hoaït ñoäng

y = f Â(x) = S(Wx, θ))

(c) Competitive

Tích wTx khi x vaø w ñöôïc chuaån hoaù cho ta bieát söï gaàn nhau giöõa chuùng, cuï theå wTx caøng lôùn thì x vaø w caøng gaàn nhau. Ñieàu chænh w = w + α(x – w) laøm w gaàn x hôn. Tieáp caän naøy chæ coù moät neuron chieán thaéng ñöôïc xem xeùt. Kohonen (1982) ñöa ra luaät hoïc competitive nhö sau

Tx)

Moâ hình

yk = max i (wi

Δwxk = α (x – wk )

Luaät hoïc (laø quaù trình laëp cho ñeán khi sai soá cöïc tieåu).

Tx)

Hoaït ñoäng

yk = max i (wi

2. Thuaät toaùn di truyeàn

2.1. Khaùi nieäm

Trong töï nhieân, nhöõng caù theå yeáu seõ bò ñaøo thaûi. Töï nhieân coù khuynh höôùng giöõ laïi caùc theå coù khaû naêng thích nghi cao. Coâng vieäc naøy ñöôïc thöïc hieän qua lai taïo, ñoät bieán vaø choïn loïc.

Vôùi tieáp caän naøy, thay vì ñi tìm phöông aùn toái öu, chuùng ta tìm moät taäp caùc phöông aùn coù chöùa phöông aùn toái öu. Moãi phöông aùn ñöôïc goïi laø caù theå, taäp caùc phöông aùn ñang xeùt ñöôïc goïi laø quaàn theå. Moãi caù theå coù moät ñoä thích nghi rieâng; nhöõng caù theå coù ñoä thích nghi cao seõ coù xaùc suaát toàn taïi lôùn.

Moãi caù theå ñöôïc bieåu dieãn baèng moät chuoãi caùc nhieãm saéc theå. Sau moãi böôùc thuaät toaùn ta coù moät theá heä quaàn theå môùi. Theá heä môùi ñöôïc taïo ra töø caùc caù theå cuûa theá heä cuõ nhôø lai taïo, ñoät bieán vaø choïn loïc.

1 Pheùp choïn loïc ñöôïc thöïc hieän qua haøm thích nghi, qua ñoù tính ñöôïc

khaû naêng toàn taïi cuûa caù theå.

2 Pheùp ñoät bieán döïa treân vieäc thay ñoåi moät soá nhieãm saéc theå ñöôïc

choïn moät caùch ngaãu nhieân.

3 Pheùp lai taïo giöõa hai caù theå laø söï troän laãn nhau giöõa caùc nhieãm saéc

theå cuûa chuùng.

Ví duï 10.4

Giaû söû moät caù theå goàm coù 6 nhieãm saéc theå vaø chæ coù hai loaïi nhieãm saéc theå laø 0 vaø 1, ta coù:

Ñoät bieán (100100) (101100)

Lai taïo

(1001⏐10) → (1011⏐01) (1001⏐01) (1011⏐10)

2.2. Moâ hình vaø Thuaät toaùn

(a) Moâ hình

Trong moâ hình naøy, nhieãm saéc theå goàm coù 2 loaïi laø 0 vaø 1; caù theå laø moät xaâu bit; haøm thích nghi laø moät haøm döông vaø ñöôïc kyù hieäu laø f (fitness). Chuùng ta coù moät phaân boá xaùc suaát choïn cho quaàn theå; xaùc suaát lai pc, cho bieát tæ leä caùc caù theå tham gia lai taïo; vaø xaùc suaát ñoät bieán pm, cuûa nhieãm

saéc theå baát kyø.

)

p

( xp

x

)

=

=

=

k

k

( xf k

k ( xf

)

i

i

1

∑ =

k

)( kF

=

kp

i

1

Coâng thöùc tính xaùc suaát choïn: Giaû söû quaàn theå goàm n caù theå ñöôïc lieät keâ töø x1 ñeán xn, ta coù xaùc suaát choïn caù theå thöù k cho bôûi:

, F(0) = 0. Taïo moät soá ngaãu nhieân q

∑ = Thuû tuïc choïn loïc: Coi giöõa 0 vaø 1, neáu q naèm giöõa F(k-1) vaø F(k) thì caù theå xk ñöôïc choïn.

Thuû tuïc lai taïo: Xeùt caù theå x, taïo moät soá ngaãu nhieân giöõa 0 vaø 1, neáu soá naøy beù hôn pc, ñöa caù theå naøy vaøo nhoùm lai taïo. Xeùt 2 caù theå trong nhoùm lai taïo, choïn ngaãu nhieân moät vò trí, thöïc hieän thao taùc lai taïi vò trí naøy.

Thuû tuïc ñoät bieán: Xeùt caù theå x, vôùi moãi nhieãm saéc theå cuûa x, taïo moät soá ngaãu nhieân giöõa 0 vaø 1, neáu soá naøy beù hôn pm, ñoät bieán nhieãm saéc theå naøy.

(b) Thuaät toaùn

1. Khôûi taïo quaàn theå ban ñaàu

2. Tính phaân boá xaùc suaát choïn cho quaàn theå

3. Laëp

3.1. Choïn loïc

3.2. Lai taïo

3.3. Ñoät bieán

3.4. Tính phaân boá xaùc suaát choïn cho quaàn theå

(c) Minh hoïa

Ví duï 10.5

Giaû söû caù theå goàm 4 nhieãm saéc theå 0, 1. Ñoä thích nghi f baèng 5 coäng cho hieäu cuûa soá nhieãm saéc theå 1 tröø cho soá nhieãm saéc theå 0.

Xeùt quaàn theå ban ñaàu

x 1101 1100 0111 0001

f 7 5 6 3

p 7/21 5/21 6/21 3/21

F 7/21 12/21 18/21 1

Taïo 4 soá ngaãu nhieân (giaû söû 0.2, 0.4, 0.3 vaø 0.6) ta coù keát quaû sau choïn loïc:

x 1101 1100 1101 0111

Vôùi xaùc suaát lai pc = 0.5, ta seõ choïn ra 1 caëp. Taïo 4 soá ngaãu nhieân (giaû söû 0.6, 0.4, 0.3 vaø 0.7), choïn ñöôïc 1101 vaø 0111. Tieáp, choïn ngaãu nhieân 1 vò trí lai (giaû söû 1), ta ñöôïc 2 caù theå môùi 0101 vaø 1111. Keát quaû sau lai taïo:

x 0101 1100 1101 1111

Vôùi xaùc suaát ñoät bieán pm = 0.1, ta hy voïng coù 1.6 ~ 2 nhieãm saéc theå seõ ñöôïc ñoät bieán. Taïo 16 soá ngaãu nhieân (giaû söû chæ coù caùc soá thöù 3 vaø thöù 8 beù hôn 0.1). Ta ñoät bieán bit 3 cuûa caù theå 1 vaø bit 4 cuûa caù theå 2. Keát quaû ta ñöôïc quaàn theå môùi:

x 0111 1101 1101 1111

f 7 7 7 9

p 7/30 7/30 7/30 9/30

F 7/30 14/30 21/30 1

Coù theå nhaän thaáy khaû naêng thích nghi cuûa quaàn theå môùi cao hôn quaàn theå cuõ.

3. Xöû lyù raøng buoäc

3.1. Khaùi nieäm

Nhieàu baøi toaùn maø lôøi giaûi laø moät taäp hôïp caùc bieán seõ nhaän giaù trò trong moät mieàn naøo ñoù vaø thoaû maõn moät soá raøng buoäc (Constraint Satisfaction Problem -CSP). Thöôøng thì lôøi giaûi caàn ñaït ñeán phaûi toái öu moät haøm muïc tieâu naøo ñoù.

f(x1, …, xn) → min/max

sao cho xj ∈ Dj vaø thoaû taäp raøng buoäc C

Ví duï 10.6

Xeùt baøi toaùn ñoaùn chöõ S E N D + M O R E = M O N E Y. Caùc kyù töï nhaän caùc giaù trò ñoâi moät khaùc nhau. Goïi c0, c1, c2, c3 laø caùc côø nhôù (nhaän trò laø 0 hoaëc 1) töông öùng töø haøng ñôn vò trôû ñi, ta vieát baøi toaùn döôùi daïng quen thuoäc:

S E N D c3 c2 c1 c0 + M O R E M O N E Y

10

c

Y

)

(

ED +

=

+

0

R

10

E

(

)

cN +

+

=

+

c 1 c 10

N

(

)

+

+

=

+

2

r 1 r 2 r 3

S

c 10

(O

)

+

=

+

0 OcE 1 Mc + 2

3

r 4 )

(

r 5

Mc = 3 MS ,

}9,...,2,1{

,

,

,

}9,...,2,1,0{ }1,0{

∈ ∈

YRODNE , , jc

Caùc raøng buoäc goàm:

Ví duï 10.7

Baøi toaùn toâ maøu baûn ñoà

min

lj

j

Eli ),(

ij

∑ ∑ ∈ =∑ 1 x j { } 1,0 x ∈

ij

⎧ ⎪ ⎨ ⎪⎩

xx ij

Trong ñoù xij nhaän trò 1 khi vaø chæ khi ñænh i vaø ñænh j laø keà nhau vaø coù maøu gioáng nhau.

Trong tieáp caän naøy caùc raøng buoäc ñöôïc xem xeùt ñeå thu heïp mieàn giaù trò cuûa caùc bieán. Ta minh hoïa caùch xöû lyù raøng buoäc qua hai ví duï sau.

Ví duï 10.8

Toâ maøu baûn ñoà sau, taäp caùc soá taïi moãi ñænh laø caùc maøu hôïp leä cuûa ñænh. Caùc raøng buoäc laø caùc cung, theo ñoù 2 ñænh keà nhau phaûi coù maøu khaùc nhau.

Xöû lyù caùc raøng buoäc (e, a), (e, b), (e, c) vaø (e, d). Thu heïp mieàn giaù trò.

Xöû lyù caùc raøng buoäc (b, a), (b, c), vaø (b, d). Thu heïp mieàn giaù trò.

Vaø baøi toaùn laø khoâng giaûi ñöôïc

Ví duï 10.9

Moät bieán theå cuûa troø chôi Sudoku noåi tieáng coù xuaát xöù töø Nhaät. Ñaët caùc soá töø 1 ñeán 4 vaøo baûng kích thöôùc 4×4 (goàm 4 oâ lôùn kích thöôùc 2×2, xem hình) sao cho moãi doøng, moãi coät vaø moãi oâ lôùn ñeàu coù ñuû 4 soá naøy.

Chuùng ta coù taát caû 12 raøng buoäc: 4 cho doøng d1, d2, d3, d4; 4 cho coät c1, c2, c3, c4; vaø 4 cho oâ o1, o2, o3, o4. Xeùt troø chôi vôùi taäp giaù trò cuûa moãi oâ nhö sau:

1 1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4

1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4 3

1, 2, 3, 4 1 1, 2, 3, 4 2

1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4 1, 2, 3, 4

Xöû lyù caùc raøng buoäc d1, d2, d3, c1, c2, c3, o1, o3, o4. Thu heïp mieàn giaù trò.

1 4 2, 3, 4 2, 3, 4

3 2, 4 2, 4 1, 2, 4

2 3, 4 1 3, 4

3, 4 1, 4 2, 3, 4 2, 3, 4

Xöû lyù caùc raøng buoäc d1, c2, o1. Thu heïp mieàn giaù trò.

4 1 2, 3 2, 3

3 2 2, 4 1, 2, 4

3, 4 2 1 3, 4

3, 4 1 2, 3, 4 2, 3, 4

Xöû lyù caùc raøng buoäc d2, d4, c1, c2, o1, o4. Thu heïp mieàn giaù trò.

1 4 2, 3 2, 3

2 3 4 1, 4

3, 4 2 1 3, 4

3, 4 1 2, 3, 4 2, 3, 4

Xöû lyù caùc raøng buoäc d2, c3, o2. Thu heïp mieàn giaù trò.

1 4 2, 3 2, 3

2 3 4 1

3, 4 2 1 3, 4

3, 4 1 2, 3 2, 3, 4

Giôø ñaây aùp duïng phöông phaùp giaûi quyeát vaán ñeà (chaúng haïn tìm kieám) ta deã daøng tìm thaáy moät lôøi giaûi.

3.2. Thuaät giaûi

(a) Nhöõng neùt chính

Moät soá heuristic ñöôïc söû duïng

1 Baäc cuûa ñænh (raøng buoäc nhieàu nhaát)

2 Giaù trò choïn ít nhaát

Boå sung moät soá tính toaùn ñaëc thuø cuûa baøi toaùn giuùp caây tìm kieám goïn nhaát.

Ñònh nghóa 10.1

Cung (a, b) ñöôïc goïi laø vöõng chaéc neáu moïi giaù trò khaû dó cuûa a ñeàu coù moät giaù trò khaû dó cuûa b.

Thuaät toaùn: Thuû tuïc xöû lyù cung khoâng vöõng chaéc

Vaøo: cung (a, b)

Ra: coù thu heïp mieàn giaù trò cuûa a

1 Gaùn removed = false

2 Vôùi moãi x thuoäc mieàn giaù trò cuûa a, neáu khoâng coù giaù trò y naøo thuoäc

mieàn giaù trò cuûa b thoaû maõn raøng buoäc giöõa a vaø b thì

2.1 Loaïi x khoûi mieàn giaù trò cuûa a

2.2 Gaùn removed = true

3 Return removed

(b) Thuaät giaûi cung chaéc chaén

Gioáng nhö alpha-beta, thuaät giaûi naøy tiaû nhaùnh ñeå giaûm sai laàm khi gaùn trò cho bieán. Nhôø ñoù maø quaù trình gaùn trò khoâng phaûi truy ngöôïc nhieàu.

Thuaät giaûi 7: thuaät giaûi cung chaéc chaén

1 Choïn moät raøng buoäc vaø löu laïi trong S

2 Neáu S khaùc roãng, laáy khoûi S moät raøng buoäc ñaõ löu

2.1 Thöïc hieän thuû tuïc xöû lyù cung khoâng vöõng chaéc

2.2 Neáu coù söï thay ñoåi thì vôùi moãi bieán bò thay ñoåi mieàn giaù trò, löu taát

caû caùc raøng buoäc lieân quan

3 Neáu khoâng choïn ñöôïc bieán ñeå gaùn trò thì return false

4 Gaùn trò cho bieán, neáu coøn bieán vaãn chöa ñöôïc gaùn trò thì quay veà böôùc

1

5 Return true

Ví duï 10.10

Xeùt baøi toaùn toâ maøu baûn ñoà ôû ví duï treân, taäp giaù trò ban ñaàu cuûa caùc ñænh laø

a b c d e

1,2,3 2,3 1,2,3 1,2 3

giaû söû xeùt caïnh (b, e)

(b, e) b = 2

(a, b) a = 1, 3 (c, b) c = 1, 3 (d, b) d = 1

(e, a) a = 1 (c, a) c = 3 (a, c) (b, c) (e, c)

xung ñoät!

Ví duï 10.11

Xeùt baøi toaùn ñoaùn soá trong ví duï treân, taäp giaù trò ban ñaàu laø

S E N D M O R Y c3 c2 c1 c0

1..9 0..9 0..9 0..9 1..9 0..9 0..9 0..9 0,1 0,1 0,1 0,1

1 Xeùt raøng buoäc r5

(r5 : M=c3) M=c3=1

(r4 : S+c2+1=O+10) S=8,9; O=0

(r3 : E+c1=N+10c2) c1=1; c2=0

(r4 : S+1=10) S=9 (r2 : N+c0+R=E+10) N=3..8; E=2..7

(r3 : E+1=N) (r1 : D+E=Y+10c0)

S E N D M O R Y c3 c2 c1 c0

9 2..7 3..8 2..8 1 0 2..8 2..8 1 0 1 0,1

Vì ñaëc tröng cuûa baøi toaùn, boå sung raøng buoäc r6 (neáu khoâng coù raøng buoäc naøy cuõng khoâng sao, khi aáy caây tìm kieám seõ coù nhieàu nhaùnh hôn thoâi)

c0 + 1 + R = 10

2 Xeùt raøng buoäc r6

(r6 : c0+1+R=10) c0=1; R=8

(r2 : N+9=E+10) (r1 : D+E=Y+10) D=6,7; E=5,6; Y=2,3

(r3 : E+1=N) N=6,7 (r2 : N+9=E+10)

(r2 : N+9=E+10)

S E N D M O R Y c3 c2 c1 c0

9 5,6 6,7 6,7 1 0 8 2,3 1 0 1 1

3 Xeùt raøng buoäc r3 vôùi 2 khaû naêng cho E. Xeùt khaû naêng E=5, vaø ñeå khaû

naêng coøn laïi cho caây tìm kieám, ta coù:

(r3 : E+1=N) E=5; N=6

(r2 : N+9=E+10) (r1 : D+5=Y+10) D=7; Y=2

Vaø taát caû caùc raøng buoäc ñeàu thoûa

S E N D M O R Y c3 c2 c1 c0

9 5 6 7 1 0 8 2 1 0 1 1

Minh hoïa caây tìm kieám

M=1; S=9; O=0; c3=1; c2=0; c1=1

R=8; c0=1

E=5; N=6; D=7; Y=2 E=6;…

Nhö vaäy vôùi söï trôï giuùp cuûa thuaät giaûi cung chaéc chaén, caây tìm kieám cuûa chuùng ta heát söùc goïn nheï

4. Maùy vector hoã trôï (Supported Vector Machine - SVM)

4.1. Khaùi nieäm

Xeùt baøi toaùn taùch tuyeán tính hai nhoùm ñoái töôïng sau:

+ +

– –

– +

Ta coù theå giaûi deã daøng baèng caùch duøng maïng perceptron. Tuy nhieân, vaán ñeà naèm ôû choã coù raát nhieàu lôøi giaûi vaø ta muoán tìm lôøi giaûi toát nhaát theo nghóa sau:

+ +

– –

– +

Sieâu phaúng lôøi giaûi naèm ôû taâm cuûa haønh lang coù ñoä roäng cöïc ñaïi. Ta cuõng quan saùt thaáy caùc vector hoã trôï naèm ôû hai leà cuûa haønh lang.

Baøi toaùn

T

i

b 1 + ≥ min ) 1 T ww 2 { ( xwy i

Trong ñoù wTx + b = 0 laø phöông trình cuûa sieâu phaúng vaø yi laø daáu cuûa nhoùm maø xi thuoäc vaøo.

4.2. Thuaät toaùn

1. Giaûi baøi toaùn ñoái ngaãu

T

T →−

min eM ααα

T = α 0 ≥

0 y

1 2 ⎧ ⎨ α ⎩

Trong ñoù M = XTX, X = (y1x1, y2x2, …, ymxm), eT = (1, 1, …, 1)

2. Tính w = Xα

3. Tính b = 1/yi – wTxi taïi moät αi > 0.

Ví duï 10.12

Taùch tuyeán tính baèng SVM vôùi nhoùm (+) goàm duy nhaát x1= (0, 0)T vaø nhoùm (–) cuõng goàm duy nhaát x2 = (1, 0)T.

T

Giaûi:

XXM X = = = 00 10 0 0 1 − 0 ⎛ ⎜⎜ ⎝ ⎞ ⎟⎟ ⎠ ⎛ ⎜⎜ ⎝ ⎞ ⎟⎟ ⎠ Tính suy ra

min

→− ααα 1 2

2 2

0

=

0

1 2 − αα ⎧ 1 2 ⎨ , ≥ αα ⎩ 2 1

baøi toaùn ñoái ngaãu

coù nghieäm toái öu laø α = (2, 2)T

Suy ra w = Xα = (-2, 0)T vaø b = 1 – wTx1 = 1

Vaäy sieâu phaúng taùch laø -2x1 + 1 = 0, töùc x1 = 1/2.

4.3. Taùch phi tuyeán

(a) YÙ töôûng

k

Ta seõ tìm phöông trình ñöôøng cong taùch daïng

)( x

)() x

T φ

+

( x φφα k

k

=+ ∑ b

k

w y b

Trong ñoù φ laø pheùp bieán ñoåi chuyeån sang khoâng gian môùi vaø zk = φ(xk) trong toång treân laø caùc vector hoã trôï trong khoâng gian môùi. Phöông trình

k

k

cuõng chính laø sieâu phaúng taùch trong khoâng gian môùi.

)() x

( xK

), x

+

α k k

( x φφα k

k

=+ ∑ b

k

k

y y b vaø daáu cuûa seõ quyeát ñònh nhoùm cuûa x

Ví duï 10.13

Ñöôøng lieàn neùt d(x) laø ñöôøng cong taùch, ñöôøng ñöùt neùt laø keát quaû phaân nhoùm.

(b) Thuaät toaùn

Baøi toaùn

i

min →

T ( φ

)

x b ) 1 + ≥ 1 T ww 2 { ( wy i

Thuaät toaùn tính α vaø b

1. Giaûi baøi toaùn ñoái ngaãu

T

min

T →−

eM ααα

0

T = α 0 ≥

1 2 ⎧ ⎨ α ⎩

y

Trong ñoù M = (mij) vôùi mij = yiyjφ(xi)Tφ(xj)

2. Tính b = 1/yi – ΣykαkK(xk,xi) taïi moät αi > 0.

(c) Minh hoïa

Chuùng ta khoâng ñöa ra caùc tính toaùn maø chæ cho thaáy hieäu quaû cuûa tieáp caän.

Ví duï 10.14

Choïn φ(x) laø coù caùc thaønh phaàn ña thöùc baäc töø 2, ta coù K(x, y) = (xy + 1)2

Ta coù theå thaáy caùc vector hoã trôï.

Ví duï 10.15

2

yx − 2 2 σ

Choïn φ(x) coù

,( yxK

)

)( y

=

T )( x φφ

=

e

Minh hoïa tröôøng hôïp σ lôùn

Minh hoïa tröôøng hôïp σ nhoû

BAØI TAÄP

Maïng neuron

c

a

b

-1

x1

x2

Baøi taäp 10.1

θa = -0.4

Cho maïng (hình) vôùi :

θb = 0.3

w1a = 0.2 w2a = -0.2

θc = 0.1

w1b = -0.5 w2b = 0.2

wac = -0.3 wbc = 0.5

Giaû söû tín hieäu cuûa neuron laø ±1 vaø luaät hoïc kieåu perceptron vôùi α = 0.2, haõy xaùc ñònh

1. Tín hieäu ra cuûa a, b, c khi x1 =1, x2 = -1

2. Sai soá truyeàn veà a, b khi sai soá ôû c laø –2

3. Caùc giaù trò troïng vaø ngöôõng cuûa neuron a neáu sai soá maø noù nhaän ñöôïc

laø 0.2

Baøi taäp 10.2

Cho maïng

c

a

b

-1

x1

x2

trong ñoù θa = -0.4, w1a = 0.2, w2a = -0.2; θb = 0.3, w1b = -0.5, w2b = 0.2; θc = 0.1, wac = -0.3, wbc = 0.5. Duøng luaät hoïc perceptron vôùi α = 0.2, haõy xaùc ñònh:

1. Tín hieäu ra cuûa caùc neuron a, b, c khi x1 =1, x2 = -1

2. Sai soá truyeàn veà a, b khi sai soá ôû c laø –2

Baøi taäp 10.3

Cho maïng neuron loaïi boä nhôù keát hôïp vôùi 3 neuron vaøo vaø 2 neuron ra. Bieát

2 1 −

W = −

3 1 2 0 ⎞ ⎟ ⎟ ⎟ ⎠ ⎛ ⎜ ⎜ ⎜ ⎝

Xeùt caëp maãu x(1, 1, -1), y(-1 1)

1. Tính W sau khi maïng hoïc xong caëp maãu treân

2. Kieåm tra keát quaû hoïc

Baøi taäp 10.4

Pheùp AND cho bôûi

y x1 x2

0 0 0

0 1 0

1 0 0

1 1 1

Xaây döïng maïng perceptron:

1. Taïo maïng: caáu truùc, caùc giaù trò troïng vaø ngöôõng ban ñaàu sao cho sai soá

chæ xaûy ra ôû doøng 2;

2. Choïn heä soá hoïc thích hôïp sao cho khoâng quaù 2 chu kyø hoïc, maïng khoâng

coøn sai soá nöõa.

Baøi taäp 10.5

Bieåu dieãn caùc chöõ caùi L, T vaø I baèng ma traän 3×3 caùc soá –1 vaø 1. Xaây döïng heä nhaän daïng duøng boä nhôù keát hôïp:

1. Choïn soá neuron output, xaùc ñònh luaät keát hôïp, tính ma traän W;

2. Kieåm tra keát quaû hoïc (neáu khoâng khôùp, laøm laïi caâu 1);

3. Laøm nhieãu chöõ T, kieåm tra xem maïng nhaän daïng chöõ naøy thaønh chöõ

gì?

Thuaät toaùn di truyeàn

Baøi taäp 10.6

Laøm laïi ví duï 5, vaãn duøng laïi caùc tham soá, keå caû caùc soá ngaãu nhieân; chæ thay ñoåi ñoä thích nghi: f baèng 5 coäng cho 2 laàn soá nhieãm saéc theå 0 tröø cho soá nhieãm saéc theå 1

Baøi taäp 10.7

Xeùt baøi toaùn toái öu g = x2 → min treân ñoaïn [–1, 1].

1. Chia ñoaïn [–1, 1] thaønh 15 khoaûng ñeàu nhau bôûi pheùp chia x0 = -1 < x2

< … < x15 = 1.

a. Bieåu dieãn xk baèng bieåu dieãn nhò phaân cuûa k, ví duï x3 = 0011;

b. Coi ñoä thích nghi baèng f = 1 + g, ví duï f(0011) = 1 + g(x3) = 1 + g(-

4/5) = 41/25. Tính f cho taát caû 16 caù theå.

2. Bieát quaàn theå goàm 6 caù theå, xaùc suaát lai pc = 0.33, xaùc suaát ñoät bieán pm

= 0.1. Haõy

c. Choïn ngaãu nhieân moät quaàn theå;

d. Tính phaân boá xaùc suaát choïn;

e. Töï ñöa ra caùc soá ngaãu nhieân, vaø xaùc ñònh quaàn theå môùi theo caùch

thöùc cuûa thuaät toaùn di truyeàn.

Xöû lyù raøng buoäc

Baøi taäp 10.8

Giaûi baøi toaùn ñoaùn chöõ, duøng bieåu dieãn ñoà thò nhö sau:

Baøi taäp 10.9

Giaûi baøi toaùn ñieàn chöõ sau

T A B + T O M = M A I T

Baøi taäp 10.10

Duøng 3 maøu 1, 2, 3 haõy toâ maøu baûn ñoà coù 5 thaønh phoá a, b, c, d, e. Bieát bieåu dieãn ñoà thò phaúng cuûa noù goàm caùc caïnh (a,b), (a,c), (b,c), (b,d), (c,d), (c,e), (d,e) vaø maøu hôïp leä cho a laø 1, cho e laø 1 hoaëc 2, cho caùc ñænh coøn laïi laø 1, 2, 3.

Baøi taäp 10.11

Cuùp Tiger 98 coù 4 ñoäi loït ñeán baùn keát: Vieät Nam, Singapor, Thaùi Lan vaø Indonesia. Tröôùc khi thi ñaáu ba baïn Quang, Duõng vaø Tuaán döï ñoaùn nhö sau:

1 Quang: Vieät Nam haïng nhì, Thaùi Lan haïng tö

2 Duõng: Singapor haïng nhì, Thaùi Lan haïng ba

3 Tuaán: Singapor haïng nhaát, Indonesia haïng nhì

Keát quaû moãi baïn ñoaùn ñuùng moät ñoäi vaø sai moät ñoäi

Duøng moät trong nhöõng phöông phaùp ñaõ hoïc cho bieát keát quaû ñuùng cuûa moãi ñoäi

Maùy vector hoã trôï

Baøi taäp 10.12

Tìm sieâu phaúng toái öu, vôùi taäp ví duï thuaän (+) chæ goàm 1 phaàn töû x1 = (1, 1)T, vaø taäp ví duï nghòch (-) cuõng chæ goàm 1 phaàn töû x2 = (-1, 0)T.

Baøi taäp 10.13

Tìm sieâu phaúng toái öu, vôùi taäp maãu huaán luyeän sau:

Ví duï Bieåu dieãn Lôùp

x1 (0, 1)T +

x2 (0, 0)T –

x3 (-1, 0)T –

x4 (2, 0)T +

x5 (2, -1)T –

Yeâu caàu:

1. Huaán luyeän ñuû 5 ví duï;

2. Veõ hình, choïn 2 vector hoã trôï, giaûi vaø thöû laïi.

Phuï luïc 2

Ngoân ngöõ Prolog

1. Giôùi thieäu prolog

1.1. Caùc thaønh phaàn cuûa chöông trình

• Mieàn giaù trò

• Vò töø

domains

• Cô sôû döõ lieäu quan heä

predicates

• Meänh ñeà

database

• Ñích

clauses

• Chuù thích

goal

% hoaëc /*…*/

1.2. Söï kieän vaø luaät

• Caùc söï kieän coù theå laø p(1), p(3),…

• Caùc luaät coù theå laø p(X) if …

Taát caû ñeàu ñöôïc moâ taû thoâng qua vò töø, chaúng haïn vôùi vò töø p(integer) thì

Ví duï 2.1

predicates

road(symbol, symbol) %ñeå ñònh nghóa cung

route(symbol, symbol) %ñeå ñònh nghóa ñöôøng ñi

clauses

/*caùc söï kieän*/

road(n,c).

road(c,d).

road(n,t).

road(n,d).

Baøi toaùn tìm ñöôøng ñi:

road(t,g).

road(t,l).

road(t,c).

road(d,u).

road(d,h).

road(h,l).

road(d,l).

/*luaät*/

route (X,Y) if road(X,Y);

road(X,Z), route(Z,Y),

goal route(n,l)

1.3. Quan heä

(a) Ñònh nghóa

r( A

B)

1

a

2

b

3

a

Cho quan heä, chaúng haïn

laø taäp con cuûa taäp tích neân r ôû ñaây coù theå moâ taû töôøng minh baèng caùch lieät keâ caùc phaàn töû cuûa noù hoaëc moâ taû aån thoâng qua moät vò töø naøo ñoù.

Ví duï 2.2

r(A)

1

2

3

4

• Lieät keâ

predicates

r(integer)

clauses

r(1).

r(2).

r(3).

r(4).

• Duøng vò töø (chæ ñeå kieåm tra xem soá n coù thuoäc r khoâng)

Xeùt quan heä ñôn giaûn sau

predicates

r(integer)

clauses

r(1).

r(X):-Z=X-1, Z<4, Z>=0, r(Z).

(b) Thao taùc

Ví duï 2.3

predicates

r(integer)

s(integer, integer)

r1(integer)

r2(integer)

clauses

r(1). r(2). r(3). r(4).

s(1, a). s(1, b). s(2, a).

r1(X):-r(X), X<4.

r2(X):-r(X), X>1.

Cho caùc quan heä r, s, r1, r2 nhö sau

r1(X); r2(X), not(r1(X)).

Hoäi:

Giao:

r1(X), r2(X).

Hieäu:

r1(X), not(r2(X)).

Buø:

r(X), not(r1(X)).

Tích:

r1(X), r2(Y).

Choïn:

s(1,X).

Chieáu:

s(_,X).

Keát töï nhieân:

r(X), s(X,Y).

Thöïc hieän caùc pheùp toaùn ñaïi soá quan heä

Keát theta:

r(X), s(Z,Y), X

1.4. Caùc kieåu ñoái töôïng

(a) Chuaån

Kieåu ví duï

char ‘a’

integer (2byte) 258

real (6 byte) 2.56

string “Hello”

symbol hello hoaëc “hello”

(b) Danh saùch

Kyù hieäu [H|T] laø moät danh saùch goàm hai phaàn H: Head vaø T: Tail. Duøng con troû khai baùo kieåu danh saùch.

Ví duï 2.4

domains

intlist = integer*

predicates

sort(intlist, intlist)

insert(integer, intlist, intlist)

clauses

insert(X,[],[X]).

insert(X,[H|T],L):-

X<=H, L = [X|[H|T]].

insert(X,[H|T],L):-

X>H, insert(X,T,L1), L = [H|L1].

sort([H],[H]).

Saép xeáp moät danh saùch caùc soá nguyeân

sort([H|T],X):- sort(T,Y), insert(H,Y,Z), X = Z.

Minh hoïa

sort([1,3,2],X

false sort([3,2],Y) insert(1,Y,Z) X=Z

false sort([2],Y1) insert(3,Y1,Z) Y=Z

sort([2],[2])

(c) Kieåu döõ lieäu phöùc hôïp

Ví duï 2.5

• Ñònh nghóa caây nhò phaân vaø vò töø prints

domains

treetype = tree(string, treetype, treetype) ; empty()

predicates

prints(treetype)

clauses

prints(empty).

prints(tree(X, Y, Z)) :- write(X), nl, prints(Y), prints(Z).

Minh hoïa caây nhò phaân

• Taïo vaø in moät ñoái töôïng kieåu caây nhò phaân nhö sau

goal

prints(tree("Cathy",

tree("Michael",

tree("Charles", empty, empty),

tree("Hazel", empty, empty)

),

tree("Melody",

tree("Jim", empty, empty),

tree("Eleanor", empty, empty)

)

)

).

• Moät soá thao taùc môùi raát caàn ñöôïc ñònh nghóa theâm: chaúng haïn boå sung

predicates

search(string, treetype, treetype)

clauses

search(_, empty(), empty()):-fail.

search(S, tree(S,L,R), tree(S,L,R)).

vò töø search ñeå tìm caây con döïa vaøo thoâng tin cuûa ñænh.

search(S, tree(_,L,_), X):-search(S,L,X).

search(S, tree(_,_,R), X):-search(S,R,X).

• Baây giôø neáu ñích cuõ ñöôïc ñöa vaøo vò töø init(treetype) thì moät ví duï aùp

goal

init(X), search(“Hazel”, X, Y), prints(Y).

duïng coù theå laø

1.5. Cô cheá tìm kieám

• Hôïp nhaát: thay giaù trò cuï theå cho caùc bieán cuûa vò töø ñeå ñuôïc meänh ñeà coù

Laø cô cheá hôïp nhaát, truy ngöôïc vaø quay lui

• Truy ngöôïc: ñeán ñích gaàn nhaát khi gaëp meänh ñeà coù chaân trò sai (false)

• Quay lui: khi gaëp meänh ñeà coù chaân trò ñuùng (true)

chaân trò ñuùng (true).

Ta seõ minh hoïa cô cheá naøy qua hai ví duï sau

Ví duï 2.6

predicates

p(symbol, symbol)

q(symbol, symbol)

clauses

p(n,c). p(c,t). p(c,d). p(n,d).

q (X,Y):- p(X,Y); p(X,Z), q(Z,Y),

goal

q(n,t).

• Moâ taû baèng caáu truùc caây

Cho caùc söï kieän vaø luaät

• Cô cheá tìm kieám

Ñích 1: q(n, t), hôïp nhaát X = n vaø Y = t

Ñích 2: p(n, t), khoâng tìm thaáy trong quan heä p. Thaát baïi cho neân truy

ngöôïc ñeán ñích 3: p(n, Z)

Ñích 3: p(n, Z), hôïp nhaát Z = c. Thaønh coâng neân quay lui

Ñích 4: q(c, t), hôïp nhaát X = c, Y=t

Ñích 5: p(n, c), hôïp nhaát n = n, c = t khoâng thaønh coâng, truy ngöôïc ñeán

ñích 6 p(c, t)

Ñích 6: p(n, t), hôïp nhaát n = n, t = t thaønh coâng, quay lui vaø keát thuùc quaù

trình tìm kieám.

Ví duï 2.7

• Cho quan heä

predicates

r(integer)

clauses

r(1). r(3). r(2).

• Ñích trong

goal

r(X), write(“X=”,X,”\n”).

% moät lôøi giaûi

goal

r(X), write(“X=”,X,”\n”), fail. % truy ngöôïc vaø veùt caïn caùc lôøi giaûi

• Ñích ngoaøi

goal

r(X). % prolog töï ñoäng truy ngöôïc

goal

r(X), !. % nhaùt caét ngaên chaän truy ngöôïc

Tuyø theo ñích trong hay ñích ngoaøi maø söï truy ngöôïc laø maëc ñònh cho duø ñaõ tìm thaáy lôøi giaûi. Moät nhaùt caét, !, seõ ngaên caûn söï truy ngöôïc naøy. Ngoaøi ra neáu muoán prolog truy ngöôïc ñeå tìm moïi lôøi giaûi thì vò töø fail traû veà false seõ eùp quaù trình truy ngöôïc. Minh hoïa

1.6. Vaøi ví duï laäp trình prolog

domains

city = symbol

predicates

road(city,city)

route(city,city)

clauses

road(n,c). road(c,d). road(n,t). road(n,d).

road(t,g). road(t,l). road(t,c). road(d,u).

(a) Tìm ñöôøng ñi

road(d,h). road(h,l). road(d,l).

route (X,Y):-road(X,Y); road(X,Z), route(Z,Y),

goal

route(n,l).

domains

person = person(name,address)

name

= name(first,last)

address

= addr(street,city,state)

street

= street(number,street_name)

city, state, street_name = string

first, last

= string

number = integer

goal

P1= person(name(jim,mos),addr(street(5,"1st st"),igo,"CA")),

P1= person(name(_,mos),Address),

P2= person(name(jane,mos),Address), write(P2).

(b) Ñoái töôïng phöùc

domains

llist = l(list); s(symbol); i(integer); c(char); t(string)

list = llist*

predicates

append(list, list, list)

(c) Xöû lyù danh saùch

clauses

append([], L, L).

append([X|L1], L2, [X|L3]) :- append(L1, L2, L3)

goal

makewindow(1, 7, 7, "answer", 15, 0, 8, 80),

append([s(likes), l([s(bill), s(mary)])], [s(bill), s(sue)],Ans),

write("FIRST LIST: ", Ans), nl, nl,

append([l([s("This"),s("is"),s("a"),s("list")]),s(bee)],[c('c')], Ans2),

write("SECOND LIST: ", Ans2), nl.

domains

thing = string

conds = cond*

cond = string

database

is_a(thing, thing, conds)

type_of(thing, thing, conds)

false(cond)

predicates

run(thing)

ask(conds)

clauses

run(Item):- is_a(X, Item, List), ask(List),

type_of(ANS, X, List2), ask(List2),

write("The ", Item," you need is a/an ", Ans),nl.

(d) database

run(_):-

write("This program does not have enough "),

write("data to draw any conclusions."), nl.

ask([]).

ask([H|T]):- not(false(H)),

write("Does this thing help you to "),

write(H," (enter y/n)"), readchar(Ans), nl,

Ans='y', ask(T).

ask([H|_]):- assertz(false(H)), fail.

is_a(language, tool, ["communicate"]).

is_a(hammer, tool, ["build a house", "fix a fender", "crack a nut"]).

is_a(sewing_machine, tool, ["make clothing","repair sails"]).

is_a(plow, tool, ["prepare fields", "farm"]).

type_of(english, language, ["communicate with people"]).

type_of(prolog, language, ["communicate with a computer"]).

2. Thaûo luaän

2.1. Bieåu dieãn caây

• Bieåu dieãn vò töø döôùi daïng caây AND/OR.

• Ñeå yù ñeán cô cheá tìm kieám cuûa PROLOG maø saép xeáp caùc ñænh (goal) cho

Qua kinh nghieäm baûn thaân, vôùi caùc chöông trình nhoû hoaëc ñôn giaûn, ñeå vieát vò töø môùi, ta neân thöïc hieän qua 3 böôùc:

• Vieát vò töø

thích hôïp.

Ngoaøi ra ta cuõng coù theå hieåu ñöôïc hoaït ñoäng cuûa caùc vò töø qua vieäc bieåu dieãn baèng caáu truùc caây nhö vaäy.

• Caáu truùc laëp

Ví duï 2.8

Sô ñoà treân raát gioáng caáu truùc repeat until cuûa ngoân ngöõ pascal. Chaúng haïn neáu voøng laëp thöïc hieän 2 laàn, ta coù

predicates

repeat

clauses

repeat.

repeat:-repeat.

Minh hoaï vò töø repeat

goal

repeat, readint(X), X=0.

predicates

for(integer, integer)

clauses

for(I,I).

for(I,K):- L=K+1, for(I,L).

goal

for(I,1), write(X), I=2.

• Xeùt chuông trình minh hoïa vò töø dowhile sau

predicates

Minh hoaï vò töø for

dowhile

p

clauses

while.

while:- while, p.

p :- readint(X), X=2.

goal

dowhile, fail.

Bieåu dieãn qua 2 voøng laëp

Ta khoâng nhöõng hieåu hoaït ñoäng cuûa caùc vò töø maø coøn thaáy noù laøm vieäc khoâng gioáng laäp trình caáu truùc.

Khaùc vôùi repeat, ôû ñaây dowhile khoâng laø vò töø laøm vieäc ñoäc laäp neân khoù duøng hôn repeat. Caùi maø chuùng ta hoïc ñöôïc ôû ví duï naøy laø qua ñoù ta coù theå vieát moät soá vò töø töông töï.

Ví duï 2.9

domains

intlist = integer*

predicates

max(intlist, integer)

max(integer, integer, integer)

clauses

max([H|[]],H).

max([H|T],X):- max(T,Y), max(H,Y,X).

max(X,Y,X):-X>=Y.

max(_,Y,Y).

goal max([1,3,2],X)

Ñeå vieát vò töø max, ta coù theå duøng bieåu dieãn

2.2. Duøng ñaïi soá quan heä

Ví duï 2.10

predicates

max(integer)

p(integer)

Ñeå tìm giaù trò max treân quan heä r, töø meänh ñeà (∃x∈r)(∀y∈r)(x ≥ y), ta coù pheùp toaùn laø r(x) – (σx

database

r(integer)

clauses

r(1).

r(3).

r(2).

p(X):- r(X), r(Y), X

max(X):- r(X), not(p(X)).

BAØI TAÄP

Baøi taäp 2.1

Trong 10 ví duï noùi treân, haõy

1. Caøi ñaët chuùng

2. Vieát moät soá ñích (goal).

Baøi taäp 2.2

Vieát caùc vò töø thích hôïp chuyeån caùc theå hieän cuûa quan heä thaønh danh saùch.

Baøi taäp 2.3

Vieát caùc vò töø sau vaø xaây döïng chöông trình aùp duïng

1. min(X, Y, Z) theo nghóa Z = min(X, Y)

2. min(L, M) theo nghóa M = min(danh saùch L)

3. ptb1(A, B, X, N) theo nghóa phöông trình baäc 1: AX + B = 0, X laø

nghieäm neáu coù coøn N laø soá nghieäm : 0, 1 hoaëc 2 (töùc voâ soá nghieäm)

4. ptb2(A, B, C, X, Y, N) theo nghóa phöông trình baäc 2: AX2 + BX + C = 0, X vaø Y laø 2 nghieäm neáu coù coøn N laø soá nghieäm: 0, 1, 2 hoaëc 3 (voâ soá nghieäm)

Baøi taäp 2.4

Vieát caùc vò töø laøm vieäc vôùi danh saùch nhö tìm phaàn töû M trong danh saùch L: search(M, L), noái hai danh saùch L1 vaø L2 thaønh L: join(L1, L2, L), xoaù phaàn töû M trong danh saùch L0 thaønh danh saùch L: del(M, L0, L).

Baøi taäp 2.5

Ñònh nghóa caây nhò phaân vaø vieát caùc vò töø nhö: tìm phaàn töû M trong caây T search(M, T), theâm phaàn töû X vaøo caây T0 add(X, T0, T), xoaù phaàn töû M khoûi caây T0 del(M, T0, T).

Baøi taäp 2.6

Tìm hieåu vaø laøm vieäc vôùi caùc vò töø chuaån Findall

Phuï luïc 3

Nghieân cöùu tình huoáng

1. Thieát keá höôùng ñoái töôïng duøng C++

1.1. Moät thieát keá ñôn giaûn

(a) Cô sôû tri thöùc

class City {

public:

int AddRoad(City* c, int d);

int AddRoad(int i, int d);

static int AddRoad(int i, int j, int d);

City(char c);

struct Road { City* c; int d;};

CArray RoadList;

static CArray CityList;

char name;

};

CArray City::CityList;

City::City(char c){

name = c; CityList.Add(this);

}

int City::AddRoad(City* c, int d){

Road *r = new Road; r->c = c; r->d = d; RoadList.Add(r);

return 1;

}

Söï kieän laø thaønh phoá; con ñöôøng (noái tröïc tieáp) laø luaät.

int City::AddRoad(int i, int d){

return AddRoad(City::CityList[i],d);

}

int City::AddRoad(int i, int j, int d){

return City::CityList[i]->AddRoad(j,d);

}

(b) Moâ tô suy dieãn

Giaûi quyeát vaán ñeà baèng tìm kieám.

int Solve(City& s, City& g)

{

//open & close

priority_queue,myless> open;

queue close;

//open <- s

open.push(new Node(&s,0));

while (!open.empty()){

//n <-open

Node *n = open.top();

open.pop();

//close <- n

close.push(n);

//n==g

if (n->c->name==g.name) {

Node *m = close.back();

while (m!=0){

cout<c->name<<' '<g<

m = m->father;

}

Caøi ñaët thuaät toaùn tìm kieám

return 1;

}

//for m in bn(n)

int k = n->c->RoadList.GetSize();

for (int i=0; i

{

City::Road *r = n->c->RoadList[i];

open.push(new Node(r->c,n,n->g+r->d));

}

}

return 0;

};

class Node{

public:

City *c;

Node *father;

int g;

Node(City*,Node*,int d=0);

};

Node::Node(City*ic,Node*f,int d){

c = ic;

father = f;

g = d;

}

int operator<(const Node& a, const Node& b){

return a.g

}

struct myless: less{

bool operator()(const Node*& x, const Node*& y) const {

Toå chöùc caây tìm kieám

return x->g>y->g;

}

};

void main(){

City v[8]={'n','c','t','d','u','h','l','g'};

City::AddRoad(0,2,8);

City::AddRoad(0,3,19);

City::AddRoad(0,1,10);

City::AddRoad(1,3,10);

City::AddRoad(3,5,15);

City::AddRoad(3,6,10);

City::AddRoad(3,4,10);

City::AddRoad(5,6,15);

City::AddRoad(2,6,18);

City::AddRoad(2,7,15);

City::AddRoad(2,1,5);

//tìm đường đi từ n đến l

if (Solve(v[0],v[6]))

cout<<"success\n";

else

cout<<"fail\n";

}

(c) Minh hoïa

1.2. Moät thieát keá toång quaùt

//Cô sôû tri thöùc

class KB{ public:

virtual void *Start()=0;

virtual void *Goal()=0;

virtual void Bn(void*,Container &)=0;

virtual void Show(void*)=0; };

//Baûn ñoà laø moät cô sôû tri thöùc

class Map: public KB{

int n, m;

(a) Cô sôû tri thöùc

struct Road {int f; int t;};

typedef char City;

char *Cities;

Road *Roads;

Road Set(int, int);

public:

Map();

~Map();

virtual void *Start();

virtual void *Goal();

virtual void Bn(void*,Container &);

virtual void Show(void*);

};

//Thaùp Haø Noäi cuõng laø moät cô sôû tri thöùc

class HNTower: public KB{

int n;

struct State {int a, b, c;};

WorkList sl;

void *MakeState(int, int, int);

public:

HNTower(int d = 2){n=d;}

~HNTower();

virtual void *Start();

virtual void *Goal();

virtual void Bn(void*,Container &);

virtual void Show(void*);};

class Engine{

public:

virtual int Reasone(KB &)=0;

virtual void Report(KB *)=0;

(b) Moâ tô suy dieãn

};

//Suy dieãn tieán baèng cô cheá tìm kieám.

class Search: public Engine{

struct Snote {void *State; Snote *Father;};

void MakeNote(void*,Snote*);

WorkList open, close;

public:

~Search();

virtual int Reasone(KB &);

virtual void Report(KB*);

};

//Heä giaûi baøi toaùn goàm moät cô sôû tri thöùc vaø moät moâ tô suy dieãn.

class GPSystem{

protected:

KB *kb;

Engine *e;

public:

GPSystem();

GPSystem(KB*,Engine*);

virtual Solve();

};

(c) Heä cô sôû tri thöùc

(d) Caøi ñaët

Map::Map()

{

n = 8;

m = 11;

Cities = new char[n+1];

strcpy(Cities,"nctduhlg");

Cô sôû tri thöùc baûn ñoà

Roads = new Road[m];

Roads[0].f = 0; Roads[0].t = 3;

Roads[1].f = 0; Roads[1].t = 2;

Roads[2].f = 0; Roads[2].t = 1;

Roads[3].f = 1; Roads[3].t = 3;

Roads[4].f = 3; Roads[4].t = 6;

Roads[5].f = 3; Roads[5].t = 5;

Roads[6].f = 3; Roads[6].t = 4;

Roads[7].f = 5; Roads[7].t = 6;

Roads[8].f = 2; Roads[8].t = 7;

Roads[9].f = 2; Roads[9].t = 6;

Roads[10].f = 2; Roads[10].t = 1;

}

Map::~Map()

{

delete Cities;

delete Roads;

}

void *Map::Start(){

return &Cities[0];

}

void *Map::Goal(){

return &Cities[6];

}

void Map::Bn(void *s, Container &c){

for (int i=0; i

if (*((City*)(s))==Cities[Roads[i].f])

c.Store(&Cities[Roads[i].t]);

}

void Map::Show(void*s){

cout<<*(char*)(s);

}

HNTower::~HNTower()

{

State *n;

sl.GoToHead();

while (0!=(n=(State*)(sl.Retrieve())))

{ delete n; sl.GoNext();}

}

void *HNTower::MakeState(int a, int b, int c)

{

State *n; sl.GoToHead();

while (0!=(n=(State*)(sl.Examine())))

{

if ((n->a==a)&&(n->b==b)&&(n->c==c)) return n;

sl.GoNext();

}

n = new State;

n->a = a;

n->b = b;

n->c = c;

sl.Store(n);

return n;

}

Cô sôû tri thöùc thaùp Haø Noäi

void *HNTower::Start()

{

return (MakeState(3,0,0));

}

void *HNTower::Goal()

{

return (MakeState(0,0,3));

}

void HNTower::Bn(void *s, Container &c)

{

State t = *(State*)(s);

if

==

3)

{c.Store(MakeState(2,1,0));

(t.a c.Store(MakeState(2,0,1)); return;}

if

==

3)

{c.Store(MakeState(1,2,0));

(t.b c.Store(MakeState(0,2,1)); return;}

if

==

3)

{c.Store(MakeState(1,0,2));

(t.c c.Store(MakeState(0,1,2)); return;}

if ((t.a == 2) && (t.b==1))

c.Store(MakeState(2,0,1));

{c.Store(MakeState(3,0,0)); c.Store(MakeState(0,1,2)); return;}

if ((t.a == 2) && (t.c==1))

c.Store(MakeState(2,1,0));

{c.Store(MakeState(3,0,0)); c.Store(MakeState(0,2,1)); return;}

if ((t.b == 2) && (t.a==1))

c.Store(MakeState(0,2,1));

{c.Store(MakeState(0,3,0)); c.Store(MakeState(1,0,2)); return;}

if ((t.b == 2) && (t.c==1))

c.Store(MakeState(1,2,0));

{c.Store(MakeState(0,3,0)); c.Store(MakeState(2,0,1)); return;}

if ((t.c == 2) && (t.a==1))

c.Store(MakeState(0,1,2));

{c.Store(MakeState(0,0,3)); c.Store(MakeState(1,2,0)); return;}

if ((t.c == 2) && (t.b==1))

c.Store(MakeState(1,0,2));

{c.Store(MakeState(0,0,3)); c.Store(MakeState(2,1,0)); return;}

}

void HNTower::Show(void*s)

{

State t = *(State*)(s);

cout<<'('<

}

void Search::MakeNote(void*s,Snote*f){

Snote *n;

open.GoToHead();

while (0!=(n=(Snote*)(open.Examine()))) {

if (n->State==s) return;

open.GoNext();

}

close.GoToHead();

while (0!=(n=(Snote*)(close.Examine()))) {

if (n->State==s) return;

close.GoNext();

}

Snote *tmp = new Snote; tmp->State = s; tmp->Father = f;

open.Store(tmp);

open.GoToHead();

}

Search::~Search(){

Snote *n;

open.GoToHead();

close.GoToHead();

while

(0!=(n=(Snote*)(open.Retrieve()))){

delete

n;

open.GoNext();}

(0!=(n=(Snote*)(close.Retrieve()))){

delete

n;

while close.GoNext();}

}

void Search::Report(KB *kb){

close.GoToHead();

Snote *n=(Snote*)(close.Examine()), *t;

kb->Show(n->State);

t = n->Father;

close.GoNext();

while (0!=(n=(Snote*)(close.Examine()))) {

Moâ tô suy dieãn

if (t==n) {

kb->Show(n->State);

t = n->Father;

}

delete n;

close.GoNext();

}

}

int Search::Reasone(KB &kb){

void *s = kb.Start(), *g = kb.Goal(), *m;

Snote *n;

Queue q;

MakeNote(s,0);

while (0!=(n=(Snote*)(open.Retrieve()))) {

close.Store(n);

if (n->State==g) return 1;

kb.Bn(n->State,q);

while (0!=(m = q.Retrieve())) MakeNote(m,n);

open.GoToHead();

}

return 0;

};

GPSystem::GPSystem(){

kb = 0;

e = 0;

}

GPSystem::GPSystem(KB*k,Engine*E){

kb = k;

Heä cô sôû tri thöùc

e = E;

}

int GPSystem::Solve(){

return (e->Reasone(*kb));

}

void main(){

KB *kb = new HNTower;

Engine *e = new Search;

GPSystem s(kb,e);

if (s.Solve()) e->Report(kb); else cout<<"\nfail";

delete kb;

delete e;

}

(e) Minh hoïa

2. Caøi ñaët thuaät toaùn A* baèng prolog

domains

city = symbol

dist = integer

database

open(city, city, dist)

close(city, city, dist)

done

predicates

road(city, city, dist)

heuristic(city, dist)

init

repeat

check(city, dist)

bn(city, dist)

run

report

report(city)

min(city, city, dist)

p(dist)

clauses

road(n,c,10).

road(d,l,10).

heuristic(n,26).

heuristic(c,20).

heuristic(t,18).

heuristic(d,10).

heuristic(g,30).

heuristic(l,0).

heuristic(u,30).

heuristic(h,15).

min(F,T,X):-open(F,T,X), not(p(X)).

p(X):- open(_,T1,X), heuristic(T1, D1),

open(_,T2,Y), heuristic(T2, D2),

X+D1>Y+D2.

run:-

repeat, min(X,Y,D), retract(open(X,Y,D)),

asserta(close(X,Y,D)), check(Y,D), done.

check(X,_):-X=l, assert(done).

check(X,D):-bn(X,D).

report:-retract(close(X,Y,D)),

write(D),nl,write(Y), report(X).

report(z).

report(X):-close(Z,X,_), write("<-",X), report(Z).

bn(X,D):- road(X,Y,D1), D2 = D + D1,

asserta(open(X,Y,D2)), fail.

bn(_,_).

goal

init, assertz(open(z,n,0)), run, report.

3. Xaây döïng heä chuyeân gia ñôn giaûn baèng prolog

Heä coù theå nhaän bieát traùi caây ñang xeùt laø loaïi traùi naøo.

3.1. Cô sôû tri thöùc

(a) Moâ taû

Duøng maïng ngöõ nghóa

maøu moïc vaøng ñoû treân caây

Traùi taùo

cöïc baéc troøn khoâng coù ôû hình

nhoû röôïu kích thöôùc duøng laøm

Traùi nho

khoâng coù gai thaân meàm moïc treân caây

(b) Thuû tuïc

Duøng luaät saûn xuaát

→ X laø loaïi traùi caây ñang xeùt;

1. Neáu X laø ñoái töôïng vaø taát caû caùc thuoäc tính cuûa noù ñeàu ñuùng

→ hoûi traùi caây ñang xeùt coù thuoäc tính A khoâng

2. Neáu A laø thuoäc tính cuûa X vaø A chöa bieát

3.2. Caøi ñaët baèng prolog

domains

object = symbol

attribute = symbol

val = integer

vlist = val*

predicates

rule(object, attribute, val)

min(vlist, val)

isa(object)

obj(object)

value(object, val)

database

/*löu caùc chöùng cöù*/

term(attribute, val)

clauses

/*tri thöùc moâ taû caùc loaïi traùi caây*/

obj(apple).

obj(grape).

rule(apple, on_tree, 1).

rule(apple, round, 1).

rule(apple, yellow_red, 1).

rule(apple, north_hole, 0).

rule(grape, small, 1).

rule(grape, soft_tree, 1).

rule(grape, wine, 1).

rule(grape, gai, 0).

/*tri thöùc thuû tuïc cho moâ tô suy dieãn*/

value(X, 1) if rule(X, Y, V), term(Y, V).

value(X, 0) if rule(X, Y, U), term(Y, V), U = 1 - V.

isa(X) if obj(X),

findall(Y, value(X, Y), L),

write(L), nl,

min(L,1).

value(X, V) if rule(X, Y, W),

write("does it have : ",Y," 0/1? "),

readint(U), assert(term(Y, U)),

V=U*W + (1-W)*(1-U).

/*caùc tieän ích*/

min([X], X) if !.

min([0|_], 0) if !.

min([1|T], V) if min(T, V).

goal

isa(X), writeline(X).

4. Xaây döïng moät cô cheá thu nhaän tri thöùc

Xeùt baøi toaùn heä thöùc löôïng trong tam giaùc. Ñeå giaûi baøi toaùn naøy chuùng ta coù haøng loaït caùc coâng thöùc.

Giaû söû chuùng ta cung caáp cho heä caùc coâng thöùc nhö:

S = ha × a

π = A sin 1 2 CBA ++ c ×= h b

thì heä seõ thu hoaïch ñöôïc gì?

Thay vì heä chæ bieát nhöõng gì ta daïy, ta muoán heä coù khaû naêng toång quaùt hoaù. Muoán vaäy, chuùng ta phaûi cung caáp cho heä nhöõng tri thöùc khaùc cho pheùp heä coù theå suy luaän ñeå toång quaùt hoaù caùc coâng thöùc maø chuùng ta vöøa daïy cho noù. Cô cheá hoïc ñöôïc ñöa ra ôû ñaây döïa vaøo phöông phaùp hoïc baèng caùch xaây döïng moät giaûi thích.

4.1. Cô sôû tri thöùc

Duøng luaät saûn xuaát

→ X laø moät ñaïi löôïng;

1. Neáu X laø moät caïnh

→ X laø moät ñaïi löôïng;

2. Neáu X laø moät goùc

3. Neáu X laø moät ñöôøng cao → X laø moät ñaïi löôïng;

→ X laø moät ñaïi löôïng;

4. Neáu X laø dieän tích

→ (X, Y, Z) laø moät boä 3 caùc ñaïi löôïng;

5. Neáu X, Y, Z laø caùc ñaïi löôïng

6. Neáu S laø dieän tích vaø

Y, Z laø caùc ñaïi löôïng cuøng ñænh → (X, Y, Z) coù moät raøng buoäc;

→ (X, Y, Z) coù moät raøng buoäc;

7. Neáu X, Y, Z laø caùc ñaïi löôïng coù caùc ñænh ñoâi moät khaùc nhau

8. Neáu (X, Y, Z) laø moät boä 3 caùc ñaïi löôïng vaø

(X, Y, Z) coù moät raøng buoäc → (S, Y, Z) laø moät coâng thöùc

4.2. Minh hoïa cô cheá hoïc

Kyù hieäu

c(X) : X laø moät caïnh;

g(X): X laø moät goùc;

d(X): X laø dieän tích;

v(X): X laø ñöôøng cao;

dl(X): X laø moät ñaïi löôïng;

b3(X, Y, Z): (X, Y, Z) laø moät boä 3 caùc ñaïi löôïng;

rb(X, Y, Z): (X, Y, Z) coù moät raøng buoäc;

ct(X, Y, Z): (X, Y, Z) laø moät coâng thöùc;

cd(X, Y): X, Y laø caùc ñaïi löôïng cuøng ñænh;

kd(X, Y, Z): X, Y, Z laø caùc ñaïi löôïng coù caùc ñænh ñoâi moät khaùc nhau.

S

=

aha ×

1 2

Caây giaûi thích khi hoïc coâng thöùc

nhö sau

ct(X,Y,Z)

b3(X,Y,Z) rb(X,Y,Z)

dl(X) dl(Y) dl(Z) d(X) cd(Y,Z) kd(X,Y,Z)

d(X) c(Y) v(Z) d(S) cd(a,a)

d(S) c(a) v(a)

vaø keát quaû heä hoïc ñöôïc luaät môùi cuï theå hôn

9. Neáu X laø dieän tích vaø Y laø moät caïnh vaø Z laø moät ñöôøng cao vaø Y, Z cuøng ñænh → (X, Y, Z) laø moät coâng thöùc

Töông töï, caây giaûi thích khi hoïc coâng thöùc

π=

CBA ++

nhö sau

ct(X,Y,Z)

b3(X,Y,Z) rb(X,Y,Z)

dl(X) dl(Y) dl(Z) d(X) cd(Y,Z) kd(X,Y,Z)

g(X) g(Y) g(Z) kd(a,b,c)

g(a) g(b) g(c)

keát quaû heä hoïc ñöôïc luaät môùi

10. Neáu X, Y, Z laø 3 goùc coù ñænh khaùc nhau ñoâi moät

→ (X, Y, Z) laø moät coâng thöùc

c

A

sin×=

hb

Cuoái cuøng, caây giaûi thích khi hoïc coâng thöùc

nhö sau

ct(X,Y,Z)

b3(X,Y,Z) rb(X,Y,Z)

dl(X) dl(Y) dl(Z) d(X) cd(Y,Z) kd(X,Y,Z)

g(X) g(Y) g(Z) kd(b,c,a)

v(b) c(c) g(a)

keát quaû heä hoïc ñöôïc luaät môùi

11. Neáu X laø ñöôøng cao vaø

Y laø caïnh vaø Z laø goùc vaø X, Y, Z coù ñænh khaùc nhau ñoâi moät → (X, Y, Z) laø moät coâng thöùc

5. Ñoái saùnh

5.1. Khaùi nieäm

Ñònh nghóa 3.1

Ñoái saùnh laø quaù trình so saùnh hai hoaëc nhieàu caáu truùc ñeå phaùt hieän ra chuùng laø gioáng hay khaùc nhau.

Caùc tröôøng hôïp

1. Ñôn giaûn nhaát laø so saùnh baèng nhau

Chaúng haïn keát quaû ñoái saùnh hai xaâu acdebfba vaø acdebeba laø khaùc nhau sau khi so saùnh töøng kyù töï moät

2. Phöùc taïp hôn laø tröôøng hôïp phaûi bieán ñoåi tröôùc khi so saùnh baèng nhau

Chaúng haïnï keát quaû ñoái saùnh hai xaâu (ab(cd)e) vaø (ab?xe) laø gioáng nhau sau khi thay ?x bôûi (cd)

3. Tröôøng hôïp phöùc taïp nhaát ñoøi hoûi bieán ñoåi daïng bieåu dieãn tröôùc khi ñoái

saùnh.

Chaúng haïn moät ñoái töôïng aûnh bieåu dieãn döôùi daïng ña möùc xaùm ñoái saùnh vôùi caùc moâ taû theo logic vò töø, roõ raøng moät so saùnh tröïc tieáp laø khoâng theå tröø phi moät daïng ñöôïc bieán ñoåi veà daïng coøn laïi.

4. Ngoaøi ra coøn moät soá kieåu ñoái saùnh khaùc

Chaúng haïn yeâu caàu ñoái saùnh chæ caùc phaàn töû khoaù.

5.2. Ñoái saùnh bieåu thöùc

• Duøng caáu truùc caây nhò phaân ñeå bieåu dieãn

• Pheùp thay theá caùc bieán töï do treân caáu truùc caây cho pheùp sinh ra caùc söï

Ta coù theå vieát luaät, söï kieän döôùi daïng bieåu thöùc. Vôùi bieåu thöùc ta coù theå

kieän môùi moät caùch deã daøng, tröïc quan vaø coù theå caøi ñaët ñöôïc.

Xeùt ví duï sau

Ví duï 3.1

Aùp duïng luaät x + y = y + x treân bieåu thöùc (a + 2*b) + c*d

• Bieåu dieãn bieåu thöùc

• Bieåu dieãn luaät

• AÙp duïng luaät cho ñænh coäng (+) ñaàu tieân tìm thaáy

Baøi taäp

Xeùt baøi toaùn bieán ñoåi bieåu thöùc meänh ñeà, haõy

1. Moâ taû caáu truùc döõ lieäu cho meänh ñeà

2. Moâ taû caáu truùc döõ lieäu cho luaät

3. Moâ taû quaù trình aùp duïng luaät ñöa bieåu thöùc veà daïng chuaån

Taøi lieäu tham khaûo

1 Trí tueä nhaân taïo - Ñoã Trung Tuaán, 1998

2 Trí tueä nhaân taïo, caùc phöông phaùp giaûi quyeát vaán ñeà vaø kyõ thuaät xöû lyù tri thöùc

- Nguyeãn Thanh Thuûy

Kieám

3 Trí tueä nhaân taïo, caùc phöông phaùp vaø öùng duïng - Baïch Höng Khang - Hoaøng

4 Giaûi moät baøi toaùn treân maùy tính nhö theá naøo (taäp 1&2) - Hoaøng Kieám

5 Laäp trình C cho trí tueä nhaân taïo - Herbert Schildt

6 Introduction Artificial Intellegent & Expert System - Dan W Patterson

7 Problem Solving & Artificial Intellegent - Jean - Louis Laurieøre

8 Artificial Intellegence – Elaine Rich – Kevin Knight, 1991

1995

9 Artificial Intellegence A Modern Approach – Stuart Russell – Peter Norvig,

10 Turbo prolog