Ph n II: Các h c ệ ơ s tri th c (knowledge-based systems) ứ ở ầ

Ch

ng 3:

ươ

Bên trong m t h ộ ệ

Cơ s tri th c ứ

I. H c s tri th c ệ ơ ở ứ (knowledge-based systems) ?

H c s tri th c ệ ơ ở ứ = C s tri th c ơ ở ứ + Ð ng c suy di n ơ ộ ễ

H gi i toán = Tiên đ , đ nh lý + L p lu n logic (toán h c) ệ ả ề ị ọ ậ ậ

=

+

II. C u trúc chung c a m t h CSTT ộ ệ ủ ấ

MÔI TR

NG THAM V N

MÔI TR

NG PHÁT TRI N

ƯỜ

ƯỜ

Caùc söï kieän coù lieân quan

Ngöôøi duøng

CÔ SÔÛ TRI THÖÙC

Heä thoáng dieãn giaûi, giaûi thích.

Heä thoáng thu nhaän tri thöùc

Caùc dòch vuï giao dieän ngöôøi duøng

ÑOÄNG CÔ SUY DIEÃN

Caùc haønh ñoäng ñöôïc ñeà nghò

Kyõ sö khai thaùc tri thöùc (KE)

CHUYEÂN GIA

Moâi tröôøng laøm vieäc (BlackBoard)

Heä thoáng toái öu tri thöùc

III. Cơ s tri th c ứ ở

Ph

bi u ể ng pháp ươ di n tri th c ứ ễ

Phương pháp ti p ế nh n tri th c ứ ậ

Tri th c kinh ứ

đi n.ể

ứ ệ

Tri th c kinh nghi m, chuyên gia. Cơ s ở tri th cứ

Tri th c m i khám phá ớ ứ

IV. Ph ng pháp ươ suy di nễ

1. Mô hình t ng quát c a suy di n ủ ổ ễ

FACT: T p s ki n ậ ự ệ

T if X đu c lu ng giá T trong Y ợ ợ HYPO: T p gi ậ ả thuy t ế

F if X đu c lu ng giá F trong Y ợ ợ Operator MATCH(X, Y) =

? If X không th lu ng giá trong Y ể ợ

a. D n ra s ki n m i ớ ự ệ ẫ

b. T o ra gi ạ ả thuy t m i ớ ế

c. Kh ng d nh hay ph ị ủ đ nh gi ị ẳ ả thuy t ế

d. Ti p nh n FACT m i t ớ ừ ế ậ bên ng i ồ

IV. Ph ng pháp ươ suy di n(tt) ễ

a. D n ra s ki n m i ớ ự ệ ẫ

(1) If MATCH(LHS, FACT) = T THEN ADD RHS TO FACT

(2) If NOT MATCH(RHS, FACT) = F THEN ADD NOT(LHS) TO

FACT

b. T o gi ạ ả thuy t m i ớ ế

(3) If MATCH(LHS, FACT) = F THEN ADD NOT(RHS) TO HYPO

(4) If MATCH(LHS, HYPO) = T THEN ADD RHS TO HYPO

(5) If MATCH(LHS, HYPO) = F THEN ADD NOT(RHS) TO HYPO

(6) If MATCH(RHS, FACT) = T THEN ADD LHS TO HYPO

(7) If MATCH(RHS, HYPO) = T THEN ADD LHS TO HYPO

(8) If MATCH(LHS, HYPO) = F THEN ADD NOT(LHS) TO HYPO

IV. Ph ng pháp ươ suy di n(tt) ễ

c. Kh ng đ nh hay ph d nh gi ủ ị ẳ ị ả thuy t ế

(9) If MATCH (hypo.FACT) = T THEN ADD hypo TO HYPO

(10) If MATCH (hypo.FACT) = F THEN DELETE hypo TOHYPO

d. Ti p nh n FACT m i t ớ ừ ế ậ bên ng i ồ

GET (FACT)

[ ] : L p l i nhi u l n ặ ạ ề ầ

{ } : Tùy ch nọ

L p lu n ti n: [(1)] ế ậ ậ

L p lu n lùi: (6) + [(7)] + {d} + (9) + [(1)] ậ ậ

L p lu n ph n ch ng: [(4)] + {d} + (10) + [(2)] ứ ậ ậ ả

IV. Ph ng pháp ươ suy di n(tt) ễ

là quá trình suy lu n xu t phát t ế ậ

c “sinh” ra t ự ệ ầ ị m t s s ừ ộ ố ự s ừ ự

2. Suy di n ti n : ấ ễ ki n ban đ u, xác đ nh các s ki n có th đ ể ượ ki n này. ệ ệ

c xác đ nh nh sau : Ví dụ : Cho 1 c s tri th c đ ơ ở ứ ượ ư ị

Các s ki n : A, B, C, D, E, F, G, H, K ự ệ

T p các quy t c hay lu t sinh (rule) ậ ậ

ắ R1 : A fi E; R2 : B fi D; {

R3 : H fi A; R4 : E (cid:217) G fi C;

R5 : E (cid:217) K fi B; R6 : D (cid:217) E (cid:217) K fi C;

R7 : G (cid:217) K (cid:217) F fi A;

}

IV. Ph ng pháp ươ suy di n(tt) ễ

Ví d : (tt) ụ (suy di n ti n) ễ ế

S ki n ban đ u : H, K ự ệ ầ

R3 : H fi A {A, H. K }

R1 : A fi E { A, E, H, K }

R5 : E (cid:217) K fi B { A, B, E, H, K }

R2 : B fi D { A, B, D, E, H, K }

R6 : D (cid:217) E (cid:217) K fi C { A, B, C, D, E, H, K }

c g i là bao đóng c a t p ủ ậ

T p h p {H,K} trên t p lu t R (g m 7 lu t nh trên). ậ ợ { A, B, C, D, E, H, K } đ ượ ọ ậ ậ ư ồ ậ

IV. Ph ng pháp ươ suy di n(tt) ễ

c xu t phát t ễ ượ ấ

là quá trình suy lu n ng ậ ự ệ ự ệ

ừ ạ ặ

3. Suy di n lùi: m t s ừ ộ ố s ki n ban đ u, ta tìm ki m các s ki n đã “sinh” ra s ki n này. ầ ự ệ các tình tr ng M t ví d th ự ế ụ ườ ộ đâu. c a máy tính, ch n đoán xem máy tính đã b h ng hóc ủ ế ng g p trong th c t ẩ là xu t phát t ấ ị ỏ ở

Ví d :ụ T p các s ki n : ự ệ ậ

c ng là “h ng” hay “ho t đ ng bình th ng” Ổ ứ ạ ộ ỏ ườ

H ng màn hình. ỏ

L ng cáp màn hình. ỏ

c ng là “t t” ho c “sáng” Tình tr ng đèn ạ ổ ứ ắ ặ

Có âm thanh đ c c ng. ọ ổ ứ

Tình tr ng đèn màn hình “xanh” ho c “ch p đ ” ớ ỏ ạ ặ

Đi n vào máy tính “có” hay “không” ệ

IV. Ph ng pháp ươ suy di n(tt) ễ

Ví d : (tt) ụ (ch n đoán h ng máy tính) ỏ ẩ

M t s lu t suy di n : ộ ố ậ ễ

c ng là ọ ổ ứ

c ng “h ng”). R1. N u (đi n vào máy là “có”) và (âm thanh đ c ệ ế “không”) thì ( ổ ứ ỏ

c ng là ế ạ ổ ứ

R2. N u (đi n vào máy là “có”) và (tình tr ng đèn “t t” ) thì ( ệ c ng “h ng”). ổ ứ ỏ ắ

ệ ạ

R3. N u (đi n vào máy là “có”) và (tình tr ng đèn màn hình là “ch p đ ”) thì (cáp màn hình “l ng”). ế ớ ỏ ỏ

ượ ự ệ

c các nguyên nhân gây ra s ki n “không s ử ị c máy tính”, ta ph i xây d ng m t c u trúc đ th g i là ồ ị ọ ộ ấ ự ả

Đ xác đ nh đ ể d ng đ ượ ụ đ th AND/OR nh sau : ồ ị ư

OÅ cöùng “hoûng”

Caùp maøn hình “loûng”

IV. Ph ng pháp ươ suy di n(tt) ễ

AND

AND

Ñieän vaøo maùy “coù”

OR

Tình traïng ñeøn maøn hình “chôùp ñoû”

Ñeøn oå cöùng “taét”

AÂm thanh oå cöùng “khoâng”

V. Xây d ng h CSTT ự ệ

1. T ng quan quá trình xây d ng h CSTT ự ổ ệ

Caùc chuyeân gia

Caùc ngöôøi xaây döïng coâng cuï

Ñoäi nguõ hoã trôï kyõ thuaät

Caùc tri thöùc ñaõ ñöôïc ghi nhaän

Xaây döïng

Khai thaùc

Hoã trôï

Kieåm tra Xaây döïng

HEÄ CHUYEÂN GIA

Coâng cuï & ngoân ngöõ laäp trình

Söû duïng

Söû duïng

Baùn

Caùc kyõ sö khai thaùc tri thöùc Phoái hôïp

Xaây döïng

Söû duïng

Ngöôøi duøng

Caùc nhaø cung caáp

Caùc ngöôøi xaây döïng heä thoáng

V. Xây d ng h CSTT (tt) ự ệ

2. M t s bu c c b n đ xây d ng h c s tri th c ứ ộ ố ớ ơ ả ể ệ ơ ở ự

 Ti p c n chuyên gia ế ậ

 T ch c thu th p tri th c ứ ổ ứ ậ

 Ch n l a công c phát tri n h c s tri th c ứ ể ệ ơ ở ọ ự ụ

ọ ữ ậ ệ ạ

 Ch n ngôn ng l p trình trí tu nhân t o (LISP, PROLOG, …)

 Các ngôn ng l p trình th ữ ậ

ông d ngụ

ệ ở ở ứ ỗ ụ ữ ộ

 Các h c s tri th c r ng (shell): là m t công c lai gi a hai lo i trên ạ

 Cài d t h CSTT ặ ệ

VI. Cài đ t h CSTT ặ ệ

1. Vài nét v PROLOG ề

ôn ng l p trình d ng khai

ữ ậ ạ

Prolog (PROgramming in Logic) là m t ngộ báo

: ị ừ Cơ s tri th c c a Prolog bao g m các v t ứ ủ ị ừ ó , c ở ồ

1.1 Mô t th mể ô t các khái ni m sau: các v t ả ả ệ

ự ệ : S ki n

ợ ố

Qu chanh c Xanh(Chanh) Cú pháp: (<đ i tu ng>) ộ ó màu xanh fi ả

M i liên h gi a các ệ ữ ố

đ i tu ng ố

đ i tu ng 1>, …, < ố

đ i tu ng n>) ợ ố

Cú pháp: (<ệ An yêu Bình fi Yêu(An, Bình)

VI. Cài đ t h CSTT (tt) ặ ệ

C u trúc gi a các đ i tu ng ữ ố ợ ấ

Cú pháp: <đ i tu ng> (, …, ) ố ợ ầ ầ

Xe máy hi u Dream, 110 phân kh i, màu nâu, 4 s , giá 30 tri u. ố ố ệ ệ

fi Xe máy(Dream, 110, nâu, 4, 30)

Các lu tậ

ợ ợ ố ề ệ ậ

Cú pháp: ( <đ i tu ng 1>, …, <đ i tu ng n>) :- <đi u ki n ố 1>, …, <đi u ki n n> ề ệ

A là chim n u A có cánh và A bi t bay ế ế

fi Chim(A) :- CóCánh(A), Bi tBay(A). ế

AND, d u ch m ph y (;) ấ ễ ẩ ử ấ ấ ẩ

Dùng d u ph y (,) d bi u di n toán t ể ể OR và toán t d bi u di n toán t ử ể ể ử ễ không b ng là \= ằ

VI. Cài đ t h CSTT (tt) ặ ệ

Ví d :ụ

A là t tiên c a B n u: ổ ủ ế

A là cha m c a B (ph n k t thúc) ầ ế ẹ ủ

A là cha m c a C và C là t ẹ ủ ổ tiên c a B. ủ

Ta đ nh nghĩa lu t nh sau : ư ậ ị

ToTien(A,B) :- ChaMe(A,B).

ToTien(A,B) :- ChaMe(A,C), ToTien(C,B).

VI. Cài đ t h CSTT (tt) ặ ệ

1.2 Truy v n cấ ơ s tri th c ứ ở

Yes, No

2 lo i câu h i c ỏ ơ b nả ạ

S li u ố ệ

Cú pháp

? - ỏ ộ

VI. Cài đ t h CSTT (tt) ặ ệ

Ví d :ụ Qu chanh có màu xanh là đúng hay sai ? ả

fi ?- Xanh(Chanh)

là : Yeu(An, Binh), Yeu(An, ế ị ừ

Ví d :ụ N u ta có khai báo hai v t Chau)

An yêu ai ? fi Yeu(An, X)

H th ng s tr l i là : ẽ ả ờ ệ ố

X fi Binh

X fi Chau

2 Solution(s)

VI. Cài đ t h CSTT (tt) ặ ệ

ặ ộ ệ ề ạ

đình b ng ngôn ng ữ

2. Cài đ t m t h CSTT v tình tr ng gia Prolog

ả ệ ự ệ

married(mark, anne).

married(charles, diana).

married(tim, anne). divorced(mark, anne).

2.1 Mô t các s ki n trong quan h gia đình parents(philip, elizabeth, charles). married(philip, elizabeth). parents(philip, elizabeth, anne). parents(philip, elizabeth,andrew). parents(philip,elizabeth, edward). parents(mark, anne, zara). parents(mark, anne, peter). parents(charles, diana, william). parents(charles, diana, harry). parents(andrew, sarah, eugene). parents(andrew, sarah, beatrice).

VI. Cài đ t h CSTT (tt) ặ ệ

gender(philip, male). gender(elizabeth, female). gender(charles, male). gender(andrew, male). gender(edward, male). gender(mark, male). gender(tim, male). gender(diana, female). gender(sarah, female). gender(zarah, female). gender(peter, male). gender(william, male). gender(harry, male). gender(eugene, female). gender(beatrice, female).

VI. Cài đ t h CSTT (tt) ặ ệ

ị ự ệ ự ệ

parent_of(Parent, Child) :- parents(Parent, _, Child). parent_of(Parent, Child) :- parents(_, Parent, Child). sibling_of(S, Person) :- parents(F, M, S), parents(F, M, Person), S\=person. father_of(Father, Child) :- parents(Father, _, Child). sister_of(S, Person) :- gender(S, female), sibling_of(S, Person). grand_parent_of(GP, GC) :- parent_of(GP, Temp), parent_of(Temp, GC). ancesstor_of(Ancestor, Person) :- parent_of(Ancesstor, Person). ancesstor_of(Ancestor, Person) :-

ancesstor_of(Ancesstor, Temp) , parent_of(Temp,Person).

cousin_of(A, B) :- parent_of(P1, A), parent_of(P2, B), sibling_of(P1, P2).

2.2 Đ nh nghĩa các quan h gia đình khác d a trên các s ki n đã nêu

VI. Cài đ t h CSTT (tt) ặ ệ

2.3 Suy lu nậ

ạ ẳ ị ủ ố ỏ ặ

ậ ủ ậ

Ch ng h n khi mu n đ t ra câu h i "Ai là ch c a andrew" và b t ch c năng TRACE cho phép dò theo quá trình suy lu n c a ứ c hi n th các thông tin sau : PROLOG ta s đ ẽ ượ ể ị

?- sister_of(S, andrew)

ầ ệ ố

ị ẽ tìm ki m s d ng trình ệ gender(S, s ki n i ề l ạ ở ự ỏ ừ ệ ế ẽ

Đ u tiên, h th ng s tìm giá tr S th a đi u ki n female). Quá gender(elizabeth, female).

CALL gender(S, female) ... suceeds; Sfi elizabeth

Do đó, sự kiện sibling_of(elizabeth, andrew) được đánh giá là sai.

FAIL sibling_of(elizabeth, andrew)

VI. Cài đ t h CSTT (tt) ặ ệ

ỏa điều kiện gender(S, female).

H thệ ống tìm một giá tr S khác th Quá trình tìm ki m s d ng l s ki n i ị ẽ ừ ế ạ ở ự ệ gender(anne, female).

REDO gender(S, female) ... suceeds; Sfi anne

s ki n i ẽ ừ ế

Hệ thống tìm A, B thỏa điều kiện tiếp theo là parents(A, B, elizabeth). ạ ở ự ệ parents(philip, elizabeth, Quá trình tìm ki m s d ng l anne)

CALL sibling_of(anne, andrew)

CALL parents(A, B, anne)

... suceeds; A fi philip, B fi elizabeth

Hệ thống kiểm tra điều kiện cuối cùng S\=andrew

CALL anne \= andrew ... suceeds

VI. Cài đ t h CSTT (tt) ặ ệ

Nh vư ậy là vị từ subling_of(anne, andrew) có giá trị đúng.

EXIT subling_of(anne, andrew)

Kết luật là anne là chị của andrew.

EXIT sister_of(anne, andrew)

VI. Cài đ t h CSTT (tt) ặ ệ

3. Cài đ t h CSTT b ng ng

ôn ng l p trình th

ặ ệ ằ ữ ậ

ông thu ngờ

Ñöôïc

Maùy tính khoâng hoûng.

Khôûi ñoäng ñöôïc khoâng?

Coù in ñöôïc hay khoâng?

Co ù Khoâng

Không

Maùy hoûng phaàn in

Thoâng baùo Thoâng baùo " GENERAL FAILURE " " HDD FAILURE "

Coù xuaát hieän caâu thoâng baùo naøo khoâng?

Khoâng

Maùy tính bò hoûng oå cöùng Maùy tính bò hoûng CMOS

Coù

Khoâng

Coù nghe maùy phaùt ra 2 tieáng bíp khoâng?

Maùy tính bò hoûng RAM Khoâng xaùc ñònh ñöôïc nguyeân nhaân

 Gi ả ử ệ s h CSTT c a chúng ta ho t ủ ạ đ ng theo cây quy t ế đ nh sau: ộ ị

VI. Cài đ t h CSTT (tt) ặ ệ

i d ng lu t d n 3.1 Bi u di n tri th c d ễ ứ ướ ạ ậ ẫ ễ

Mi n giá tr

Tên bi nế

KHOIDONG

DUOC, KHONG

IN

DUOC, KHONG

THONGBAO

HDD, GENERAL, KHONG

AMTHANH

CO, KHONG

HONG

KHONG, IN, HDD, CMOS, RAM, UNKNOWN

VI. Cài đ t h CSTT (tt) ặ ệ

1.

IF (KHOIDONG = DUOC) AND (IN = DUOC) THEN HONG = KHONG.

2.

IF (KHOIDONG = DUOC) AND (IN = KHONG) THEN HONG = IN

3.

IF (KHOIDONG = KHONG) AND (THONGBAO = HDD)

THEN HONG = HDD

4. IF (KHOIDONG = KHONG) AND (THONGBAO = GENERAL)

THEN HONG = CMOS

5. IF (KHOIDONG = KHONG) AND (THONGBAO = KHONG) AND (AMTHANH

= CO) THEN HONG = RAM

6. IF (KHOIDONG = KHONG) AND (THONGBAO = KHONG) AND (AMTHANH

= KHONG) THEN HONG = UNKNOWN

T p lu t d n ban đ u có đ cây quy t đ nh trên s nh sau : ậ ẫ ậ ầ c t ượ ừ ẽ ư ế ị

VI. Cài đ t h CSTT (tt) ặ ệ

KH_KDTB )

IF (KHOIDONG = DUOC) AND (IN = DUOC) THEN HONG = KHONG.

IF (KHOIDONG = DUOC) AND (IN = KHONG) THEN HONG = IN

IF (KHOIDONG = KHONG) AND (THONGBAO = HDD) THEN HONG = HDD

IF (KHOIDONG = KHONG) AND (THONGBAO = GENERAL) THEN HONG = CMOS

IF (KHOIDONG = KHONG) AND (THONGBAO=KHONG) THEN KH_KDTB = DUNG

IF (KH_KDTB = DUNG) AND (AMTHANH = CO) THEN HONG = RAM

IF (KH_KDTB = DUNG) AND (AMTHANH = KHONG)

THEN HONG = UNKNOWN

Tập luật có thể viết lại như sau : (không khởi động và không thông báo fi •

VI. Cài đ t h CSTT (tt) ặ ệ

3.2 L u tr và phân lo i bi n ạ ế ữ ư

 Bi n nh p : ế ậ là các bi n ch xu t hi n ỉ ấ ệ ở ế v trái c a các lu t ủ ế ậ

là các bi n xu t hi n c v trái l n v ph i ệ ở ả ế ẫ ế ả ế ấ

ế các lu t  Bi n trung gian : ở ậ

v ph i  Bi n xu t: ế ấ các bi n ch xu t hi n ỉ ấ ệ ở ế ả ở ế các lu t ậ

VI. Cài đ t h CSTT (tt) ặ ệ

KHOIDONG

FALSE

INPUT

Câu thông báo Tên bi n ế Kh i t o ở ạ Giá tr ị Lo iạ

Maùy tính coù khôûi ñoäng ñöôïc khoâng?

IN

FALSE

INPUT

Maùy tính coù in ñöôïc khoâng?

THONGBAO

FALSE

INPUT

Maùy tính coù thoâng baùo gì khoâng?

AMTHANH

FALSE

INPUT

Maùy tính coù phaùt ra aâm thanh gì khoâng?

HONG

FALSE

OUTPUT Maùy bò hoûng ôû phaàn

KH_KDTB

FALSE

TEMP

VI. Cài đ t h CSTT (tt) ặ ệ

3.3 L u tr lu t ữ ậ ư

ể ư ữ ộ ế

 Đ l u tr m t lu t, ta c n l u tr các bi n tham gia vào v ế trái cùng v i giá tr c a các bi n đó (đ kích ho t lu t). ầ ư ế ậ ị ủ ữ ể ớ ạ ậ

ế ả ủ ồ ộ ỉ

ế ị ủ ế

 V ph i c a lu t ch bao g m m t bi n nên khá đ n gi n ta ả ơ c đ t ch vi c thêm m t c t tên bi n và giá tr c a bi n s đ ế ẽ ượ ặ khi lu t cháy g i là giá tr cháy vào b ng V Ph i sau: ậ ộ ộ ọ ỉ ệ ậ ế ả ả ị

BIeán

Giaù trò chaùy

Luaät 1 2 3 4 5 6 7

HONG HONG HONG HONG KH_KDTB HONG HONG

KHONG IN HDD CMOS DUNG RAM UNKNOWN

VI. Cài đ t h CSTT (tt) ặ ệ

v trái c a lu t, ta dùng b n V Trái v i 3 c t nh  Đ mô t ể ả ế ủ ộ ớ ế ả ậ ư sau:

BIeán

Giaù Trò Chaùy

Luaät 1

KHOIDONG

DUOC

1 2

IN KHOIDONG

DUOC DUOC

2 3

IN KHOIDONG

KHONG KHONG

3

THONGBAO

HDD

4

KHOIDONG

KHONG

4

THONGBAO

GENERAL

5

KHOIDONG

KHONG

5

THONGBAO

KHONG

6 6

KH_TDTB AMTHANH

DUNG CO

7 7

KH_TDTB AMTHANH

DUNG KHONG

VI. Cài đ t h CSTT (tt) ặ ệ

ề ể

 V i các c u trúc trên, t i m i th i đi m, ta đ u có th truy xu t đ n m i thu c tính c a các lu t. ộ ờ ể ậ ạ ọ ủ ớ ấ ế ấ ọ

Sau đây là các ký hi u : ệ

t lu t có cháy hay ch a. .ậ Chay : cho bi ế ư ậ

v ph i c a lu t. .ậ VePhai.Bien : bi n ế ở ế ả ủ ậ

.ậ VePhai.GiaTriChay : giá tr cháy ng v i bi n ớ ế ở ứ

ị v ph i c a lu t. ế ả ủ ậ

ng bi n trong v trái c a .ậ VeTrai.SoBien : s l ố ượ ủ ế ế

lu t. ậ

.ậ VeTrai.Bien[i] : bi n th i ứ ở ế v trái c a lu t. ủ ế ậ

ớ ế ứ ị

.ậ VeTrai.GiaTriChay[i] : giá tr cháy ng v i bi n i v trái c a lu t. ủ ở ế ậ th ứ

VI. Cài đ t h CSTT (tt) ặ ệ

IF L.Chay = TRUE THEN

RETURN FALSE; { Lu t đã cháy r i, không kích ho t đ

c}

ạ ượ

ế

Fire = TRUE; FOR i = 1 TO L.VeTrai.SoBien BEGIN v = L.VeTrai.Bien[i]; { có m t bi n không th a đi u ki n cháy } ề IF (v.KhoiTao =FALSE) OR (v.GiaTri „

L.VeTrai.GiaTriChay[i]) THEN BEGIN

Fire = FALSE; EXIT FOR;

END;

END; If Fire = TRUE THEN

L.VePhai.Bien.ThuocTinh.GiaTri = L.VePhai.Bien.GiaTriChay;

RETRUN Fire;

END;

3.4 Hàm kích ho t lu t ậ FUNCTION KichHoatLuat(L : Luat) : BOOLEAN BEGIN

VI. Cài đ t h CSTT (tt) ặ ệ

án suy di n lùi

ị ủ

ế

ậ ễ

IF (V.KhoiTao = TRUE) THEN RETURN; ELSE BEGIN IF V.Loai = INPUT THEN BEGIN

i dùng giá tr bi n V>;

ị ế

END; ELSE BEGIN FOR EACH LT IN TapLuat DO IF (LT.VePhai = V) THEN BEGIN FOR i = 1 TO LT.VeTrai.SoBien DO BEGIN

TinhGiaTriBien(LT.VeTrai.Bien[i], LT);

END; IF KichHoatLuat(LT) THEN RETURN; END; END; END;

END

3.5 Cài đ t thu t to ặ FUNCTION TinhGiaTriBien(V : Bien, L : Luat) { Tính giá tr c a bi n V trong trái c a lu t L} BEGIN

VI. Cài đ t h CSTT (tt) ặ ệ

t giá tr bi n HONG, ta có th th c ể ế ể ự ị ế

Trong ví d c a chúng ta, đ bi ụ ủ hi n nh sau : ư ệ

ạ ế ậ ậ ậ

{ Kh i đ ng tr ng thái ban đ u cho t p bi n và t p lu t. } ầ ở ộ FOR EACH v ˛ TapBien v.KhoiTao = FALSE; FOR EACH LT ˛ TapLuat LT.Chay = FALSE

ể ệ ầ ệ ậ ỗ ộ ầ

V = HONG; { Lu t 0 là m t lu t r ng, dùng đ "đ m" cho l n đ quy đ u tiên, ậ luôn cháy } TinhGiaTriBien(V, 0);

IF V.KhoiTao = FALSE THEN

; ượ ị ế

ELSE

; ị ể ị

VI. Cài đ t h CSTT (tt) ặ ệ

ậ ặ ễ ế

ba ả ẳ ậ ạ ế ấ ơ ấ

c đi u gì ? ậ ượ ể ế ề

ở ạ ị ủ ế ậ ạ

ậ t>;ế

3.6 Cài đ t thu t toán suy di n ti n Thu t toán suy di n ti n r t đ n gi n. Ch ng h n, xu t phát t ừ ễ tr ng thái là KHOIDONG = KHONG, THONGBAO = KHONG, AMTHANH = CO ta có th k t lu n đ

CapNhap = FALSE; FOR EACH LT ˛ LSET DO

IF KichHoatLuat(LT) = TRUE THEN BEGIN {B nh ng lu t đã cháy ra kh i t p lu t.} ỏ ữ ỏ ậ ậ ậ

LSET = LSET \ LT; CapNhap = TRUE;

END;

END

VI. Cài đ t h CSTT (tt) ặ ệ

ng g p c a quá trình suy di n ti n là xác đ nh ế ễ ị ườ

t c bi n xu t. Do đó, ta có th xem đây là m t ộ ể ặ ủ ấ

ệ ủ

i dùng giá tr bi n V>;  M c đích th ụ giá tr c a t ị ủ ấ ả ế ng h p đ c bi tr ợ ặ Nh v y, ch c n b dòng

i hàm ể

ph n suy di n lùi là ta có th dùng l ạ ặ ở ầ ộ ể ế ễ ặ

 Trong cài đ t ễ TínhGiaTriBien đ cài đ t thu t toán suy di n ti n m t cách vô ậ cùng đ n gi n (!) nh sau : ư ơ ả

ạ ở ạ ị ủ ế

t>; ậ ậ ế

TapLuat DO TinhGiaTriBien(LT.VePhai.Bien,LT);