You are on page 1of 58

Gio trnh

TR TU NHN TO ARTIFICIAL INTELLIGENCE

Phm Th Hon, Phm Th Anh L Khoa Cng ngh thng tin Trng i hc S phm H Ni

H ni, 2011

MC LC
Chng 1 Gii thiu ............................................ Error! Bookmark not defined.
1. Tr tu nhn to l g? .........................................................Error! Bookmark not defined. 2. Lch s ................................................................................Error! Bookmark not defined. 3. Cc lnh vc ca AI ............................................................Error! Bookmark not defined. 4. Ni dung mn hc...............................................................Error! Bookmark not defined.

Chng 2 Cc phng php tm kim li gii .... Error! Bookmark not defined.
1. Hnh thnh bi ton .............................................................Error! Bookmark not defined. 2. Tm kim c h thng .........................................................Error! Bookmark not defined. 3. Tm kim c s dng hm nh gi ....................................Error! Bookmark not defined.

Chng 3 Cc gii thut tm kim li gii cho tr chi ..... Error! Bookmark not defined.
1. Cy tr chi y .............................................................Error! Bookmark not defined. 2. Gii thut Minimax .............................................................Error! Bookmark not defined. 3. Gii thut Minimax vi su hn ch ..............................Error! Bookmark not defined. 4. Hm nh gi ......................................................................Error! Bookmark not defined. 5. Gii thut Minimax vi ct ta alpha-beta ..........................Error! Bookmark not defined.

Chng 4 Cc phng php lp lun trn logic mnh ......................................5


1. Lp lun v Logic ................................................................................................................ 5 2. Logic mnh : c php, ng ngha ..................................................................................... 5 3. Bi ton lp lun v cc gii thut lp lun trn logic mnh ........................................... 8 4. Cu dng chun hi v lut phn gii ................................................................................ 10 5. Cu dng Horn v tam on lun ....................................................................................... 13 6. Thut ton suy din da trn bng gi tr chn l .............................................................. 14

7. Thut ton suy din da trn lut phn gii ....................................................................... 15 8. Thut ton suy din tin, li da trn cc cu Horn .......................................................... 17 9. Kt chng ......................................................................................................................... 20

Chng 5 Cc phng php lp lun trn logic cp mt .....................................22 Chng 5 Cc phng php lp lun trn logic cp mt .....................................22
1. C php ng ngha .......................................................................................................... 24 2. Lp lun trong logic v t cp mt ..................................................................................... 28 3. Php ng nht hai v t, thut gii ng nht .................................................................. 30 4. Cu dng chun hi, lut phn gii tng qut .................................................................... 32 5. Cu dng Horn v tam on lun tng qut trong logic cp 1 ........................................... 34 6. Gii thut suy din phn gii ............................................................................................. 36 7. Thut ton suy din tin da trn cu Horn ....................................................................... 39 8. Thut ton suy din li da trn cu Horn ......................................................................... 41

Chng 6 Prolog ...................................................................................................42


1. Lp trnh logic, mi trng lp trnh SWI Prolog ............................................................. 42 2. Ngn ng Prolog c bn, chng trnh Prolog .................................................................. 45 3. Cu truy vn ....................................................................................................................... 46 4. V t phi logic (cu phi logic) ............................................................................................ 47 5. Tr li truy vn, quay lui, ct, ph nh ............................................................................. 48 6. V t qui ........................................................................................................................ 54 7. Cu trc d liu trong Prolog............................................................................................. 55 8. Thut ton suy din trong Prolog ....................................................................................... 56

Chng 7 Lp lun vi tri thc khng chc chn.................................................57 Chng 8 Hc mng nron nhn to ....................................................................58

Chng 4 Cc phng php lp lun trn logic mnh


1. Lp lun v Logic
Loi ngi thng minh v bit lp lun. Liu my tnh c kh nng lp lun c (nh con ngi) khng? tr li cu hi ny, chng ta trc ht hy cho bit th no l lp lun. Lp lun l hnh ng sinh ra mt pht biu ng mi t cc pht biu ng c trc. Hay ni cch khc, mt ngi hoc mt h thng c gi l bit lp lun nu n ch ra rng mt pht biu no c ng (true) khi cho trc mt tp cc pht biu ng hay khng? Cc pht biu phi tun theo mt tp cc qui tc nht nh (ng php) v cch xc nh mt pht biu l ng (true) hay l sai (false). Mt tp cc qui tc qui nh ng php v cch xc nh ng ngha ng/sai ca cc pht biu gi l logic. Nh vy logic l mt ngn ng m mi cu trong ngn ng c ng ngha (gi tr) l ng hoc sai, v v vy c th cho php chng ta lp lun, tc l mt cu mi c gi tr ng khng khi cho cc cu trc l ng hay khng. Cc cu cho trc c gi l c s tri thc (Knowledge base - KB), cu cn chng minh l ng khi bit KB ng gi l cu truy vn (query - q). Nu q l ng khi KB l ng th ta ni rng KB suy din ra q (k hiu l KB q). Trong chng ny v cc chng tip theo, chng ta s xy dng cc thut gii cho php lp lun t ng trn cc logic khc nhau. Cc thut gii ny gip my tnh c th lp lun, rt ra pht biu mi t cc pht biu cho trc.

2. Logic mnh : c php, ng ngha


Logic n gin nht l logic mnh . Cc pht biu (cu) trong logic mnh c hnh thnh t cc k hiu mnh (mi k hiu c ngha l mt mnh v v vy c th nhn gi tr ng hoc sai ty theo mnh l ng hay sai trong th gii thc) v cc k hiu lin kt (vi ng ngha l ph nh), (v), (hoc), (ko theo), (tng ng). C php v ng ngha ca logic mnh nh sau:

2.1 C php: Cc k hiu: Hng: true, false K hiu: P, Q, Mi k hiu gi l k hiu mnh hoc mnh Cc kt ni logic: , , Cc k hiu ( v ) Qui tc xy dng cu: C hai loi cu: cu n v cu phc true v false l cc cu (true l cu n hng ng, false l cu hng sai). Mi k hiu mnh l mt cu, v d P, Q l cc cu (Cu n) Nu A v B l cc cu th cc cng thc sau cng l cu (cc cu phc): A (A B) (A B) (A B) (A B) Cc khi nim v qui c khc: Sau ny, cho gn, ta b i cc du (, ) khng cn thit. Nu cu ch c mt k hiu mnh th ta gi cu l cu n hoc cu phn t. Cc cu khng phi l cu n th gi l cu phc. Nu P l k hiu mnh th P v P gi l cc literal, P l literal dng cn P l literal m. Cc cu phc dng A1 A2 An, trong cc Ai l cc literal, c gi l cc cu tuyn (clause). 2.2 Ng ngha: Qui nh cch din dch v cch xc nh tnh ng (true) hay sai (false) cho cc cu. true l cu lun c gi tr ng, false l cu lun c gi tr sai

Mi k hiu biu din (nh x vi) mt pht biu/mnh trong th gii thc; k hiu mnh c gi tr l ng (true) nu pht biu/mnh l ng, c gi tr l sai (false) nu pht biu/mnh l sai, hoc c gi tr cha xc nh (true hoc false) Cc cu phc biu din (nh x vi) mt ph nh, mi quan h hoc mi lin kt gia cc mnh /pht biu/cu phc trong th gii thc. Ng ngha v gi tr ca cc cu phc ny c xc nh da trn cc cu con thnh phn ca n, chng hn: A c ngha l ph nh mnh / cu A, nhn gi tr true nu A l false v ngc li A B c ngha l mi lin kt A v B, nhn gi tr true khi c A v B l true, v nhn gi tr false trong cc trng hp cn li. A B biu din mi lin kt A hoc B, nhn gi tr true khi hoc A hoc B l true, v nhn gi tr false ch khi c A v B l false. (A B) biu din mi quan h A ko theo B, ch nhn gi tr false khi A l true v B l false; nhn gi tr true trong cc trng hp khc (A B) biu din mi quan h A ko theo B v B ko theo A Nh vy, vic xc nh tnh ng/sai ca mt k hiu mnh (mnh n) l da trn tnh ng sai ca s kin hoc thng tin m n m ch, cn vic xc nh tnh ng sai ca mnh phc phi tun theo cc qui tc trn. Trong nhiu trng hp, chng ta (cn ch) bit tnh ng/sai ca cc cu phc, cn tnh ng/sai ca cc cu n l khng cn bit hoc c th lp lun ra t cc cc cu phc bit ng/sai v cc qui tc chuyn i tnh ng/sai gia cc cu n v cu phc theo cc qui tc trn. 2.3 Cc v d:

Gi A l mnh ti chm hc, B l mnh ti thng minh, C l mnh ti thi t im cao mn Tr tu nhn tao; Ta c th biu din cc cu sau trong logic mnh : - Nu ti chm hc th ti thi t im cao mn Tr tu nhn to: A C - Ti va chm hc li va thng minh: A B - Nu ti chm hc hoc ti thng minh th ti thi t im cao mn Tr tu nhn to: A B C 2.4 Cc cu hng ng: Trong logic mnh , ta c: A A (lut ph nh kp) A A (lut loi tr) (A B) (AB) (BA) (AB) A B (AB) A B (lut DeMorgan i vi php ) (AB) A B (lut DeMorgan i vi php ) C (AB) (CA) (CB) (lut phn phi php i vi php ) C (AB) (CA) (CB) (lut phn phi php i vi php ) (A (AB)) B (Tam on lun) Lut phn gii (xem mc 4)

3. Bi ton lp lun v cc gii thut lp lun trn logic mnh


Nh ni trong phn 1 ca Chng ny, lp lun l tr li cu hi mt cu q c l ng khi cho c s tri thc (l mt cu phc l hi ca tp cc cu cho trc) l ng hay khng (KB q)? Mt cch n gin nht l chng ta lp bng gi tr chn l cho

KB v cho q v kim tra xem tt c cc trng hp lm cho KB nhn gi tr true cng lm cho q nhn gi tr true khng? Nu c th ta kt lun KB q, ngc li th kt lun l khng. Phng php suy lun ny gi l phng php lit k v c th thut ton ha c (chi tit xem trong mc 6 ca Chng ny). Mt cch tip cn khc tr li cho cu hi KB q l s dng cc lut hng ng ca logic mnh (xem trong mc 2.4). Ban u KB bao gm tp cc cu (hi ca cc cu), chng ta p dng cc lut ca logic mnh trn tp cc cu ny sinh ra cu mi, ri b sung cu mi ny vo KB, lp li p dng lut ca logic v sinh ra cu mi, v.v., n khi no xut hin cu q trong KB th dng li (khi KB q) hoc khng th sinh ra cu mi no na t KB (khi ny ta kt lun KB khng suy ra c q) Li gii cho bi ton suy din theo cch ny l mt ng i t trng thi u n trng thi ch ca bi ton tm ng sau: Trng thi u: KB Cc php chuyn trng thi: cc lut trong logic mnh , mi lut x p dng cho KB sinh ra cu mi x(KB), b sung cu mi ny vo KB c trng thi mi KB x(KB) Trng thi ch: trng thi KB cha q Chi ph cho mi php chuyn: 1 V s lut hng ng trong logic mnh l tng i ln nn nhn t nhnh ca bi ton trn cng l ln (tt c cc cch p dng cc lut trn tp con tt c cc cu ca KB), v vy khng gian tm kim li gii ca bi ton trn l rt ln. hn ch khng gian tm kim li gii ca bi ton, chng ta biu din KB v q bng ch cc cu dng chun hi (xem mc 4), khi chng ta ch cn p dng mt loi lut l lut phn gii trn KB v mi php chuyn l mt php phn gii hai cu c cha t nht mt literal l ph nh ca nhau trong KB, kt qu ca php phn gii hai cu dng chun hi li l mt cu dng chun hi v c b sung vo KB, lp li p dng lut phn gii trn KB n khi no KB cha cu q th dng. Chi tit

thut ton suy din da trn lut phn gii KB q c trnh by trong mc 7 ca Chng ny (thc t th thut ton suy din phn gii tr li bi ton tng ng (KB q) [].) Gii thut suy din phn gii l gii thut y trong logic mnh , tc l vi mi cu q m ko theo c t KB (q ng khi KB ng) th s dng gii thut suy din phn gii u c th suy din c KB q (tc l khng c cu no ko c t KB l khng suy din phn gii c); bi v bt c cu trong logic mnh u c th biu din c bng cu dng chun hi (xem mc 4). Do lin tc phi b sung cc cu mi vo KB v lp li tm kim cc cp cu c th phn gii vi nhau c nn nhn t nhnh ca cy tm kim li gii tng dn theo su ca cy tm kim. V vy khng gian v thi gian ca gii thut s tng rt nhanh, gii thut phn gii lm vic khng hiu qu. khc phc nhc im ny, ngi ta tm cch biu din KB dng cc cu Horn v p dng ch mt loi lut (tam on lun, xem mc 5) suy din (tam on lun p dng trn 2 cu dng Horn v sinh ra cu mi cng l cu dng Horn). Thut gii suy din tin/li trn c s tri thc dng Horn trnh by chi tit trong mc 8, n c phc tp tuyn tnh i vi s cu trong KB. Tuy nhin thut gii suy din tin/li li l khng y trong logic mnh , bi v c nhng cu trong logic mnh khng th biu din c di dng Horn c th p dng c gii thut suy din tin/li.

4. Cu dng chun hi v lut phn gii


Cu dng chun hi l cu hi ca cc cu tuyn (clause). Nh trn ni, cu tuyn l cu dng A1 A2 An, trong cc Ai l cc k hiu mnh hoc ph nh ca k hiu mnh . Vy cu dng chun hi c dng: (A11 A12 A1n) (A21 A22 A2m) (Ak1 Ak2 Akr)
clause clause clause

Vi Aij l cc literal (l k hiu mnh hoc ph nh ca k hiu mnh ). Vi mt cu bt k trong logic mnh , liu c th biu din di dng chun hi nh trn c khng? Cu tr li l c. Vi cu s, chng ta lit k tt c cc k hiu mnh xut hin trong n, lp bng gi tr chn l nh gi s, khi s l hi cc tuyn m mi tuyn s tng ng vi dng lm cho s bng true false. Vi mi tuyn (tng ng vi mt dng), nu ct ca k hiu mnh trn dng c gi tr true th k hiu mnh s l literal dng m, cn nu gi tr l false th k hiu mnh s l literal m dng trong cu tuyn. V d, chng ta mun bit dng chun hi ca cu sau: C AB Trong cu trn, c 3 k hiu mnh l A, B, C. Ta lp bng gi tr chn l v chuyn sang dng chun hi nh bng sau:
A F F F F T T T T B F F T T F F T T C F T F T F T F T C AB F T F T F T T T ABC ABC Clause ABC Dng chun hi: C AB = (ABC) (ABC) (ABC)

Vi cch chuyn mt cu sang dng chun hi nh dung bng gi tr chn l trn, chng ta khng nh bt k cu no cng c th chuyn sang dng chun hi c. Ngoi phng php s dng bng chn l, chng ta c th p dng 4 qui tc

sau y (theo th t c lit k) chuyn bt k cu no sang dng chun hi c. QT1: Loi b : thay th bng ( )( ). QT2: Loi b : Thay th bng QT3: chuyn hoc loi b du t trc cc k hiu bng cc lut deMorgan v lut ph nh kp ()= ; ()= ; = . QT4: p dng lut phn phi ca php i vi php Chng hn, chng ta cn chuyn cu trong v d trn sang dng chun hi, bng cch p dng ln lt cc qui tc trn: C AB = (C) (AB) = C (AB) = (CA) (C B) (QT2) (QT3) (QT4)

Chng ta c th dng li dng chun hi ny, hoc cng c th chng minh tip rng cng thc ny v cng thc thu c t phng php lp bng trn l tng ng. Lut phn gii (resolution): Lut phn gii: Nu chng ta c hai clause sau l ng: (P1 P2 Pi Pn) (Q1 Q2 Qj Qm) v Pi,Qj l cc literal ph nh ca nhau (Pi=Qj) th chng ta cng c clause sau l ng

(P1 P2 Pi-1 Pi+1 PnQ1 Q2 Qj-1 Qj+1 Qm)


(Clause mi l tuyn cc literal trong hai clause ban u nhng b i Pi v Qj)

Kt qu ca php phn gii cng l mt clause (tuyn cc literal), hay ni cch khc php phn gii c tnh ng, phn gii ca cc clause l mt clause. y l tnh cht rt quan trong trong vic xy dng gii thut suy din t ng trnh by pha di. Cu dng chun tuyn (tham kho thm): Cu dng chun tuyn l cu tuyn ca cc hi. Ging nh cu trc ca cu dng chun hi, cu dng chun tuyn cng c cu trc nh vy, nhng chng ta i ch du bi du v ngc li. Vi bt k mt cu trong logic mnh , chng ta cng c th biu din n di dng chun tuyn. Tuy nhin chng ta khng c lut ng lin quan n tuyn ca hai cu hi sinh ra cu hi mi nh lut phn gii ca hai cu tuyn.

5. Cu dng Horn v tam on lun


Cu dng Horn: Nh trn ta ch ra rng tt c cc cu trong logic mnh u c th biu din c di dng chun hi, tc l hi ca cc clause, mi clause c dng: P1 P2 Pi Pn, vi Pi l cc literal. Nu trong clause m c nhiu nht mt literal dng (tc l khng c k hiu ph nh ng trc) th clause gi l cu dng Horn. Nh vy cu dng Horn l cu c mt trong ba dng: P1 P2 Pn (khng c literal dng no) hoc P (c mt literal dng v khng c literal m no) hoc P1 P2 PnQ (c mt literal dng l Q v t nht mt literal m) vi P1, P2,,Pn v Q l cc k hiu mnh . Nu chuyn cc cu dng Horn sang dng lut th chng c dng nh sau: (P1 P2 Pn)

hoc P hoc P1 P2 Pn Q (c mt literal dng l Q) Trong cu dng th hai v cu ba gi l cu Horn dng (c ng 1 literal dng) thng c s dng biu din tri thc trong c s tri thc KB, cu dng th nht ch xut hin trong biu din cc cu truy vn. Tam on lun (hay lut Modus ponens): Nu chng ta c cc cu Horn dng sau l ng: P 1, P 2, Pn v P 1 P 2 P n Q th cu Q l ng Kt qu lut Modus ponens t hai cu dng Horn dng sinh ra cu Q cng c dng Horn dng. V vy php suy din tam on lun l ng trong cc cu dng Horn, kt qu tam on lun t hai cu dng Horn l cu dng Horn. Tng t nh tnh cht ng ca php phn gii trong trong cc cu dng chun hi, tnh cht ng ca php suy lun ny l rt quan trng trong vic thit k cc gii thut suy din t ng da trn tam on lun v cc cu Horn (xem phn pha di). Khng ging nh cu dng chun hi, khng phi cu no trong logic mnh u c th biu din dng Horn c. Chnh v th m thut gii suy din da trn tam on lun ch l y trong ngn ng cc cu Horn ch khng y trong logic mnh .

6. Thut ton suy din da trn bng gi tr chn l

Trong cc phn cn li ca Chng ny, chng ta s xy dng cc gii thut ci t cho my tnh n bit lp lun. Gii thut lp lun t ng l gii thut ch ra rng nu KB (c s tri thc) l ng th cu truy vn q c ng hay khng? Phng php lp lun u tin l da lit k cc tt c cc trng hp c th c ca tp cc k hiu mnh , ri kim tra xem liu tt c cc trng hp lm cho KB ng xem q c ng khng. Chi tit thut gii nh bng sau:

Function Suydien_Lietke(KB, q) return true or false symbols=get_list_of_symbols(KB,q); n= symbols.size(); int b_gi_tr[n]; //dng lu b cc gi tr logic (true:1, false:0) for (i=1; i2n; i++) { b_gi_tr [1,..,n]=generate(i); // sinh ra b th i if (evaluate(KB, b_gi_tr)==true && evaluate(q, b_gi_tr)=false) return false return true;

Thut gii trn l sinh ra ton b bng gi tr chn l nh gi KB v q, nu ch cn mt trng hp KB ng m q sai th q s kt lun KB khng suy din c ra q. Gii thut trn c phc tp thi gian l 2n * m, vi n l s k hiu c trong KB,q v m di cu trong KB.

7. Thut ton suy din da trn lut phn gii


khc phc nhc im phc tp thi gian ca gii thut suy din da trn lit k trn, chng ta a ra thut gii nhanh hn, thi gian thc hin nhanh hn.

Gii thut da trn thc hin lin tip cc lut phn gii trn cc cu dng chun hi. chng minh KB q ta s chng minh iu tng ng l (KB q []), tc l nh chng ta vn gi l chng minh bng phn chng: gi s q khng ng (q), khi KB q s dn n mu thun, tc l (KB q) []. Chng ta s chuyn (KB q) v dng chun hi, tc l hi cc clause, hay chng ta chuyn KB v q thnh hi cc clause, sau p dng lin tip lut phn gii (mc 4) trn cc cp clause m c t nht mt literal i ca nhau sinh ra mt clause mi, clause mi ny li b sung vo danh sch cc clause c ri lp li p dng lut phn gii. Gii thut dng khi c cu [] c sinh ra (khi ta kt lun KB q) hoc khng c clause no c sinh ra (khi ta kt lun KB khng suy din c ra q). Chi tit thut gii cho trong hnh trang sau. Gii thut phn gii l gii thut y v tt c cc cu trong logic mnh u c th biu din c di dng hi ca cc clauses (dng chun hi). Tuy nhin mi ln phn gii sinh ra clause mi th li b sung vo danh sch cc clauses thc hin tm kim cc cp clauses phn gii c vi nhau; v vy s lng clauses ln lp sau li tng ln so vi ln lp trc, dn n vic tm kim cc clauses phn gii c vi nhau l kh khn hn. Gii thut phn gii trnh by nh trn l gii thut suy phn gii tin, c ngha l t trng thi u KB q thc hin cc thao tc chuyn trng thi (p dng lut phn gii trn cp cc clauses sinh ra clauses mi v b sung vo danh sch cc clauses hin c) sinh ra trng thi mi, n khi no trng thi mi cha cu [] (trng thi ch) th dng hoc khng sinh ra trng thi mi c na. Mt cch khc thc hin suy din phn gii KB q l xut pht t clause q (coi nh trng thi ch) ta thc hin phn gii vi cc clauses khc trong KB sinh ra clauses mi, ri t cc clauses mi ny thc hin tip vi cc clauses khc ca KB sinh ra clauses mi hn, n khi no [] c sinh ra hoc khng sinh ra c clause mi th dng. Ni cch khc l ch thc hin phn gii cc clauses lin quan n q.

Gii thut phn gii li s lm vic hiu qu hn gii thut phn gii tin (chi tit ci t coi nh l bi tp). Function Resolution(KB, q) return true or false clauses=get_list_of_clauses(KB q); new={}; do for each Ci, Cj in clauses new_clause= resol(Ci,Cj); if new_clause=[] return true; new=new U new_clause; if new clauses return false; clauses=clauses U new;

8. Thut ton suy din tin, li da trn cc cu Horn


Nh ta thy trong mc 5, lut Modus ponens l ng trong cc cu dng Horn dng, c ngha l nu hai cu dng Horn dng tha mn cc iu kin ca lut Modus ponens th s sinh ra cu dng Horn dng mi. Nu chng ta biu din c KB v q bng cc cu dng Horn dng th c th s dng lut Modus ponens suy din. Khi KB biu din bng hi cc cu Horn dng, chng ta cc cu Horn dng ny thnh 2 loi: (1) cu c ng mt literal dng m khng c literal m no, y l cc cu n hay l cc k hiu mnh ; (2) cu c ng mt literal dng v c t nht mt literal m, y l cc cu ko theo m phn thn ca php ko theo ch l mt k hiu mnh . C hai cch ci t thut gii suy din da trn lut Modus ponens trn cc cu Horn dng. Cch th nht l bt u t cc k hiu mnh c cho l ng trong KB,

p dng lin tip cc lut Modus ponens trn cc cu ko theo trong KB suy din ra cc k hiu mi, n khi no danh sch cc hiu c suy din ra cha k hiu ch q th dng v thng bo suy din thnh cng. Nu danh sch cc k hiu suy din khng cha q v cng khng th sinh tip c na th thng bo suy din tht bi. Cch suy din ny gi l suy din tin (hay suy din tam on lun tin phn bit vi suy din phn gii tin trn). Chi tit gii thut cho trong bng pha di. Gii thut s dng danh sch cc k hiu mnh c xc nh l true, true_symbols , danh sch ny khi to t cc k hiu c lp trong KB, sau b sung khi mt k hiu mnh c suy din ra l true, n khi no danh sch cha k hiu truy vn q th dng hoc khng b sung c k hiu no na vo danh sch ny. Cch ci t th hai l xut pht t ch q, chng ta xem c bao nhiu cu Horn ko theo no trong KB c q l phn u ca lut ko theo, chng ta li kim tra xem cc k hiu mnh nm trong phn iu kin ca cc lut ny (cc ch trung gian) xem c suy din c t KB khng, c p dng ngc cc lut n khi no cc ch trung gian c xc nhn l ng trong KB th kt lun suy din thnh cng, hoc kt lun khng thnh cng khi c tt c cc nhnh u khng chng minh c cc ch trung gian khng suy din c t KB. Gii thut ny gi l gii tht suy din li (hoc l gii thut suy din tam on lun li).

Function Forward_Horn(KB, q) return true or false Input: - KB tp cc cu Horn dng, nh s clause1, .., clausen - q: cu truy vn dng cu n (k hiu mnh ) Output: true or false Cc bin a phng: Int count[0.. n], count[i] l s k hiu xut hin trong phn iu kin ca clausei. Bool proved[danhsach_kyhieu]: proved[kyhieu]=1 nu kyhieu c chng minh l suy din c t KB, ngc li =0; ban u khi to=0 vi mi k hiu working_symbols: danh sch k hiu ang xem xt, khi u bng danh sch cc k hiu c lp trong KB while working_symbols is not empty p= pop(working_symbols); if (!proved[p]) proved[p]=1; for each clausei whose p appears count[clausei] = count[clausei] -1; if count[clausei]==0 if head[clausei]==q return true; push (head[clausei], working_symbols); return false;

9. Kt chng
Logic mnh l ngn ng biu din cc mnh . C hai loi mnh : mnh n v mnh phc. Mnh n tng ng vi mt pht biu no (mt s kin hoc thng tin) v c th phn xt xem n ng hay sai da trn pht biu l ng hay sai. Mnh phc biu din mi quan h hoc mi lin kt (ph nh, hi, tuyn, ko theo, tng ng) gia cc mnh con ca n. Logic qui nh tnh ng hay sai ca mnh phc da trn tnh ng/sai ca cc mnh con v da trn kiu ca mi quan h/lin kt (l , , , , hay l ). Chnh v vic gn cho cc cu (mnh n hoc mnh phc) hoc gi tr ng (true) hoc gi tr sai (false) theo cc qui tc ca logic gip chng ta phn xt c rng mt mnh ny l ng khi cho bit tp cc mnh cho trc l ng, hay l KB q. Lp lun l tr li cho cu hi: cho KB ng th q c ng khng?. Trong Chng ny chng ta tm hiu mt s thut gii lp lun (input l KB v q, output l true hoc false). Cc gii thut lp lun gm: lp lun bng lit k, lp lun da trn lut phn gii, lp lun da trn lut Modus ponens. Gii thut lp lun bng lit k cc gi tr chn l ca cc k hiu mnh xut hin trong KB v q c u im l khng i hi dng cu trc c bit no cho cc cu KB v q, nhng li c phc tp thi gian l hm m i vi s cc k hiu mnh . Gii thut da trn lut phn gii th yu cu KB v q phi c dng chun hi, tc l chng ta phi thc hin chuyn KB v q thnh dng chun hi ri mi p dng gii thut. May thay, tt c cc cu trong logic mnh u c th chuyn c v dng chun hi. Cn gii thut lp lun da trn lut Modus ponens th yu cu KB v q phi c dng cu Horn. Khng phi tt c cc cu trong logic mnh u chuyn v dng Horn c. Tuy nhin nu KB v q dng Horn th cc gii thut suy din tin hoc li da trn Modus ponens li lm vic rt hiu qu.

Cc gii thut lp lun trn khi ci t cho my tnh s gip my tnh c kh nng lp lun c.

Chng 5 Cc phng php lp lun trn logic cp mt


Trong Chng trc chng ta tm hiu logic mnh , mt ngn ng a ra cc qui tc xc nh ng php v ng ngha (tnh ng/sai) cc cu. Cu n gin nht trong logic mnh l cc k hiu mnh , n biu din cho cc s kin hoc thng tin trong th gii thc. Cu phc tp hn lin kt cc cu n bng cc php ni logic (, , , , ) biu din mnh phc, m t quan h hoc lin kt cc mnh n. Nh vy, logic mnh ch c th biu din c cc MNH v cc lin kt hoc quan h gia cc MNH . V vy sc mnh biu din ca logic mnh ch gii hn trong th gii cc mnh . N khng quan tm n ni dung cc mnh nh th no. V th m logic mnh c nhng hn ch trong vic biu din v suy din. V d, nu chng ta cho c s tri thc pht biu trong ngn ng t nhin nh sau: An l sinh vin. Mi sinh vin u hc gii. Vi c s tri thc nh vy ta c th suy din ra rng An hc gii. Tuy nhin nu s dng logic mnh th cu An l sinh vin c th biu din bng mt k hiu mnh P1; cn cu Mi sinh vin u hc gii th thng thng biu din bng mt k hiu mnh , chng hn Q. Mnh m chng ta cn suy din An hc gii k hiu bi T1. Khi c s tri thc c dng: P1 Q v mnh cn truy vn l T1. V logic mnh khng quan tm n ni dung bn trong cc mnh nn chng ta khng th thc hin suy din {P1Q} T1 c v chng chng lin quan g vi nhau. Nu chng ta bit c danh sch tt c cc sinh vin, chng hn {An, Bnh, , Yn} th chng ta c th chuyn cu Mi sinh vin u hc gii thnh cu phc [An l sinh vin th An hc gii] V [Bnh l sinh vin th Bnh hc

gii] V V [Yn l sinh vin th Yn hc gii] th cu s biu din c thnh cu phc trong logic mnh dng: (P1 T1) (P2 T2) (Pn Tn) Vi P1,T1 l k hiu mnh ni trn; P2 l mnh Bnh l sinh vin, T2 l Bnh hc gii, , Pn l Yn l sinh vin v Tn l Yn hc gii. Khi , s dng mnh P1 bit l ng th ta p dng lut Modus ponens trong logic mnh th suy din ra c T1. Vi cch biu din cu Mi sinh vin u hc gii bng (P1 T1) (P2 T2) (Pn Tn) trong logic mnh ta c th Modus ponens vi cu trc l P1 sinh ra T1. Tuy nhin khi s cu c trong c s tri thc s l rt ln (c bao nhiu sinh vin th c by nhiu cu Pi Ti), v khi cc thut ton suy din t ng s tr nn khng hiu qu. V quan trng hn cu c tnh cht ph bin Mi sinh vin u hc gii khng th no biu din thnh dng lit k cho tng sinh vin c. Logic mnh thiu cc cu m t c trng cho mt lp cc i tng (cng ging nh nu mt ngn ng lp trnh m thiu cc cu lnh lp nh for, while m ch c cc kiu lnh n l v r nhnh), v th m sc mnh biu din ca n rt hn ch. Trong chng ny, chng ta s xem xt logic cp mt, hay logic v t, mt m rng ca logic mnh m cho php biu din nhng mnh mang tnh ph qut (vi mi) v nhng mnh mang tnh c th (tn ti) mt cch d dng. lm c iu , chng ta phn tch mnh thnh dng (ch ng - v t) hoc (ch ng - v t - tn ng) v chuyn ch ng v tn ng thnh i tng (hoc bin) ca v t. V vy m cu n ca logic cp mt c dng V_t(ch_ng) hoc V_t(ch_ng, tn ng); chng hn An l sinh vin biu din l Sinhvien(An); An yu Bnh biu din l Yeu(An,Binh). Chnh v th m ta gi n l logic v t. T cc cu n nh vy ta xy dng cc cu phc s dng cc k hiu (, , , , ) v , (hai k hiu ny khng c trong logic mnh ). Quan trng hn, lm th no chng ta xy dng cc thut gii lp lun t ng, gii thut ci t cho my tnh n c th chng minh c KB q, vi KB v q l cc

cu trong logic v t cp mt, tng t nh cc gii thut phn gii, gii thut suy din tin, li trong logic mnh .

1. C php ng ngha
1.1 C php Cc k hiu: K hiu hng: Hng ca ngn ng: true, false Hng do ngi s dng t cho tn i tng c th: An, Binh,..., a,b,c, (i tng l cc ch ng hoc tn ng trong mnh ). K hiu bin (thng l bin i tng, i din cho ch ng hoc tn ng): x,y,z,t,u, K hiu v t: P, Q, hoc Sinhvien, Yeu, father, (mi k hiu tng ng v t trong mnh ). Mi k hiu v t l cu n trong logic cp mt v c ng ngha true hay false. K hiu hm: sin, cos, log, father, Ch hm father (father(An)=Binh) khc vi v t father (father(An,Binh)) ch hm th tr v gi tr cn v t th tr v true/false. Vic xc nh mt ci tn l hm hay v t ty vo s xut hin ca n trong cu v cc tham s ca n. K hiu kt ni logic: , , , , K hiu lng t: , Cc k hiu ( v ) ,, Qui tc xy dng cu: C 2 loi cu: cu n v cu phc. Chng c nh ngha qui nh sau: Cu n: true v false l cc cu (true l cu n hng ng, false l cu hng sai).

Cu n: K_hiu_v_t(hng_thc_1, hng_thc_2, , hng_thc_k) l mt cu (cu n), trong hng_thc_i l biu thc ca cc i tng, c php ca hng thc c xy dng t cc k hiu hng, bin v hm nh sau: Cc k hiu hng v cc k hiu bin l mt hng thc Nu t1, t2, ..,tn l cc hng thc v f l mt k hiu hm gm n tham s th f(t1, t2, ..,tn) cng l mt hng thc V d v cc cu n l: love(An,Binh) father(An,Nhan) sinhvien(Hoa) Cu phc: Nu A, B l cc cu v x l mt k hiu bin th cc cng thc sau cng l cu: A (A B) (A B) (A B) (A B) x, A x, A Cc khi nim v qui c khc: Nu mt hng thc khng cha bin th gi l hng thc nn Mt cu n cng c tn gi l cu phn t hay cng thc phn t

Mt cu n hoc ph nh ca mt cu n th gi l literal Trong cng thc c k hiu lng t (x, A hoc x, A) cc bin x trong A gi l bin buc (bin lng t), bin no trong A khng phi l bin lng t th gi l bin t do. Cc cu m khng c bin t do gi l cu ng. Trong mn hc ny, chng ta ch quan tm n cc cu ng (ch cc cu ng mi xc nh c tnh ng/sai ca n, xem phn ng ngha bn di) Min gi tr ca mt bin l tp hp cc gi tr/i tng m bin c th nhn. 1.2 Ng ngha (qui nh cch din dch v xc nh tnh ng/sai cho cc cu) Mt cu n ng (khng cha bin) l tng ng vi mt mnh (pht biu, s kin, thng tin) no trong th gii thc, cu n c gi tr chn l true hay false ty theo mnh (pht biu, s kin, thng tin) m n m ch l ng hay sai trong thc t. Cu phc l cu biu din (nh x vi) mt ph nh, mi quan h hoc mi lin kt gia cc mnh /pht biu/cu con hoc mt s ph bin hoc c th ca mnh /pht biu trong th gii thc. Ng ngha v gi tr chn l ca cc cu phc ny c xc nh da trn cc cu con thnh phn ca n, chng hn: A c ngha l ph nh mnh / cu A, nhn gi tr true nu A l false v ngc li A B c ngha l mi lin kt A v B, nhn gi tr true khi c A v B l true, v nhn gi tr false trong cc trng hp cn li. A B biu din mi lin kt A hoc B, nhn gi tr true khi hoc A hoc B l true, v nhn gi tr false ch khi c A v B l false.

(A B) biu din mi quan h A ko theo B, ch nhn gi tr false khi A l true v B l false; nhn gi tr true trong cc trng hp khc (A B) biu din mi quan h A ko theo B v B ko theo A x A biu din s ph bin ca A, nhn gi tr true tt c cc cu sinh ra t A bng cch thay x bi mt gi tr/i tng c th thuc min gi tr bin x u l true, ngc li th cu ph bin ny nhn gi tr false x A biu din s tn ti ca A, nhn gi tr true khi c mt gi tr x0 trong min gi tr ca bin x lm cho A true, false trong cc trng hp cn li. Nh vy, vic xc nh tnh ng/sai ca mt cu n (v t) l da trn tnh ng sai ca s kin hoc thng tin m n m ch, cn vic xc nh tnh ng sai ca cu phc phi tun theo cc qui tc trn. Trong nhiu trng hp, chng ta (cn ch) bit tnh ng/sai ca cc cu phc, cn tnh ng/sai ca cc cu n l khng cn bit hoc c th lp lun ra t cc cc cu phc bit ng/sai v cc qui tc chuyn i tnh ng/sai gia cc cu n v cu phc theo cc qui tc trn. 1.3 Cc v d: Cc cu trong ngn ng t nhin c th biu din trong logic v t cp mt: An l sinh vin Nam l cha ca Hon Mi sinh vin u hc gii Sinhvien(An) Cha(Nam,Hon) x Sinhvien(x) Hocgioi(x)

(ch thng i vi . Khc vi x Sinhvien(x) Hocgioi(x)) Trong sinh vin c bn hc gii x Sinhvien(x) Hocgioi(x) (ch thng i vi . Khc vi x Sinhvien(x) Hocgioi(x).

1.4 Cc cu hng ng (c gi tr chn l lun bng true) Ngoi cc cng cu hng ng trong logic mnh , chng ta thm cc cu hng ng lin quan n cc lng t nh sau: x P(x) y P(y) x P(x) y P(y) xy P(x,y) yx P(x,y) xy P(x,y) yx P(x,y) x P(x) x P(x) x P(x) x P(x) (x P(x)) x P(x) (x P(x)) x P(x) (qui tc i tn) (qui tc i tn) (qui tc giao hon) (qui tc giao hon) (chuyn i gia v ) (chuyn i gia v ) (DeMorgan) (DeMorgan) (loi b )

x P(x) P(a), vi a l gi tr thuc min gi tr ca X

x P(x) P(e), vi e l mt gi tr v danh, khng c trong c s tri thc (loi b ) P(a) x P(x) (a k hiu vo)

Lut phn gii tng qut (xem mc 3 ca Chng ny) Modus Ponens tng qut (xem mc 4 ca Chng ny)

2. Lp lun trong logic v t cp mt


V d: Xem xt bi ton lp lun (hay chng minh) c pht biu trong ngn ng t nhin nh sau: Cho: An l con trai. Thy l con gi. Tc ca con gi di hn tc ca con trai Hy chng minh:

Tc ca Thy di hn tc ca An Bi ton ny c th biu din trong logic v t cp mt nh sau: Cho cc cu sau (c s tri thc - KB) l ng: Contrai(An) Congai(Thuy) xy Contrai(x) Congai(y) Tocdaihon(y,x) Chng ta cn chng minh (cu truy vn q): Tocdaihon(Thuy,An). y l mt li gii ca bi ton trn (li gii l dy cc bc p dng lut logic v t cp mt a c s tri thc v iu cn chng minh): Bc 1: T (1) v (2) ta p dng lut a vo (A,B A B): Contrai(An) Congai(Thuy) Bc 2: p dng lut loi b trong (3) vi {x/An, y/Thuy} ta c: Contrai(An) Congai(Thuy) Tocdaihon(Thuy,An) Bc 3: p dng lut Modus ponens cho (4) v (5) ta c: Tocdaihon(Thuy,An) n y ta c iu phi chng minh. Cng ging nh trong logic mnh , bi ton lp lun (chng minh KB q) c th xem l bi ton tm ng i nh sau: Trng thi u: KB Cc php chuyn trng thi: mi php chuyn trng thi l mt ln p dng lut trong logic v t cp mt (nhiu hn cc lut ca logic mnh ) trn tp cu trong KB. Mi lut l p dng cho KB sinh ra cu mi l(KB), b sung cu mi ny vo KB c trng thi mi KB l(KB) (6) (5) (4) (1) (2) (3)

Trng thi ch: trng thi KB cha q Chi ph cho mi php chuyn: 1 Bi ton trn c th tm c li gii bng cch p dng cc thut ton tm kim nh trnh by trong cc chng u ca gio trnh ny v tm kim. Tuy nhin khng gian tm kim li gii ca bi ton ny l rt ln. Cng ging nh trong logic mnh , nu c s tri thc (KB) v cu truy vn (q) c biu din bng (hoc c th chuyn c sang) cc cu c dng thch hp, th chng ta c th ch cn p dng mt loi lut ca logic mnh chng minh rng KB q. C th l nu KB v q biu din c bng cc cu Horn th ch cn p dng lin tip cc lut Modus ponens l chng minh c KB q (xem mc 5,7,8); cn nu KB v q biu din bng cc cu dng chun hi th ta ch cn lin tip p dng cc lut phn gii l thc hin c vic suy din KB q (xem mc 4,6).

3. Php ng nht hai v t, thut gii ng nht


Php ng nht l g? Khi p dng lut trong logic v t, ta thng xuyn gp phi vic i sch cc v t trong hai cu xem chng c th ng nht c vi nhau khng (tc l chng s hon ton nh nhau trn mt b gi tr no . Chng hn bc 2 trong chng minh v d trn, khi p dng Lut loi b k hiu trong cu c tnh ph bin (3) c cu c th trn b gi tr (x=An, y=Thuy), ta phi i snh cc cp v t <Contrai(An) v Contrai(x)>, <Congai(Thuy) v Congai(y)> tm ra gi tr x=An, y=Thuy cho cc cp v t l hon ton nh nhau ( c p dng cc lut tip theo). Vic i snh hai v t tm ra mt b gi tr cho cc bin sao cho hai v t l ng nht c gi l php ng nht. Vy php ng nht l thao tc thc hin trn hai v t (hoc ph nh ca v t) v cho kt qu l s thay th cc bin xut hin trong cc v t bng cc hng thc (cc gi tr) hai v t l nh nhau. V d: ng nht (Contrai(An), Contrai(y)) = {y/An}

ng nht (Yu(An,x), Yu(y,Binh)) = {x/Binh; y/An} ng nht (Yu(An,x), Yu(y, Emgai(Hoa)) = {x/Emgai(Hoa); y/An} (ch : trong trng hp ny Emgai(x) l mt hm em gi ca x, khng phi l v t) ng nht (Yeu(An,x), Yeu(An,y)) = {x, y/x } ng nht (Ban(An,x), Ban(y, Emgai(y))={x/Emgai(An); y/An} ng nht (P(a,X), P(X,b)) = failure ng nht[parents(x, father(x), mother(Jane)), parents(Bill, father(y), mother(y))]= failure Gii thut ng nht: Input: hai literal p v q. Output: S thay th gn gi thay th cc bin theta Procedure ng_nht(p, q, theta) return true or false (r,s)=hng thc u tin khng nht qun gia (p,q); if ((r,s)=empty) return theta; thnh cng if (l_bin(r)) theta = theta U {r/s} ng_nht(thaythe(theta,p), thaythe(theta,q), theta) elseif (l_bin(s)) theta = theta U {s/r} ng_nht(thaythe(theta,p), thaythe(theta,q), theta) else return failure

4. Cu dng chun hi, lut phn gii tng qut


Cu dng chun hi: Cng ging nh trong logic mnh , cu dng chun hi
trong logic v t cp mt c dng sau (l hi ca cc tuyn) (A11 A12 A1n) (A21 A22 A2m) (Ak1 Ak2 Akr)
clause clause clause

vi Aij l cc literal (l k hiu v t hoc ph nh ca k hiu v t). (chnh xc hn phi c thm cc lng t cho tt c cc bin trong cu)

Chuyn cu bt k sang dng chun hi: mt cu bt k trong logic v t cp mt


u c th biu din sang dng chun hi. chuyn mt cu sang dng chun hi, ta p dng cc qui tc sau y: QT1: Loi b : thay th bng ( )( ). QT2: Loi b : Thay th bng QT3: chuyn hoc loi b du t trc cc k hiu bng cc lut deMorgan v lut ph nh kp ()= ; ()= ; = ; xP(x)= xP(x); xP(x)= xP(x) QT4: Chun ha cc bin: cc bin lng t khng c trng tn, v d xP(x) xQ(x) chuyn thnh xP(x) yQ(y) QT5: chuyn cc lng t v u cu, v d xP(x) yQ(y) chuyn thnh xy P(x) Q(y) QT6: loi b bng gi tr v danh: v d x Rich(x) tr thnh Rich(c) vi c l k hiu hng v danh, khng trng vi cc k hiu c trong c s tri thc. Ch khi t bn trong , phi s dng hm v danh; v d: xyz P(x,y,z) tr

thnh xz P(x,f(x),z) vi f l k hiu hm v danh, khng trng vi k hiu hm khc trong c s tri thc. QT7: b qua cc k hiu lng t QT8: p dng lut phn phi ca php i vi php V d: Biu din cc cu sau thnh cc cu trong logic v t v chuyn chng v dng chun hi: Tt c con ch u sa v ban m. H nh ai c mo th nh ngi u khng c chut. Nhng ai kh ng th u khng nui bt c con g m sa v ban m. B Bnh c mo hoc c ch x (L_Ch(x) Sa_v_m(x)) xy (C(x,y) L_Mo(y) z (C(x,z) L_Chut(z))) x (Kh_ng(x) z(C(x,z) Sa_v_m(z)) x (C(BBinh,x) (L_Mo(x) L_Ch(x)) (1) (2) (3) (4)

p dng cc qui tc (QT) trn, ta chuyn sang cc cu dng clause nh sau: (1) Tng ng vi: (2) L_Ch(x) Sa_v_m(x)

xy ( (C(x,y) L_Mo(y)) (z (C(x,z) L_Chut(z)))) xy (C(x,y) L_Mo(y) (z (C(x,z) L_Chut(z)))) xyz (C(x,y) L_Mo(y) (C(x,z) L_Chut(z))) C(x,y) L_Mo(y) C(x,z) L_Chut(z)

(3)

x (Kh_ng(x) ( z(C(x,z) Sa_v_m(z))) x (Kh_ng(x) (z(C(x,z) Sa_v_m(z))) xz (Kh_ng(x) C(x,z) Sa_v_m(z)) Kh_ng(x) C(x,z) Sa_v_m(z)

(4)

x (C(BBinh,x) (L_Mo(x) L_Ch(x)) C(BBinh,a) (L_Mo(a) L_Ch(a)) (tch ra thnh hai clause)

Lut phn gii:


Nu chng ta c hai clause sau l ng: (P1 P2 Pi Pn) (Q1 Q2 Qj Qm) v c php thay th theta sao cho thaythe(theta,Pi)= thaythe(theta,Qj) th chng ta cng c clause sau l ng thaythe(theta, P1 P2 Pi-1 Pi+1 PnQ1 Q2 Qj-1 Qj+1 Qm)
(Clause mi l tuyn cc literal trong hai clause ban u nhng b i Pi v Qj)

Kt qu ca php phn gii cng l mt clause (tuyn cc literal), hay ni cch


khc php phn gii c tnh ng, phn gii ca cc clause l mt clause. y l tnh cht rt quan trong trong vic xy dng gii thut suy din t ng trnh by pha di.

5. Cu dng Horn v tam on lun tng qut trong logic cp 1


Cu dng Horn: Tt c cc cu trong logic v t cp mt u c th biu din c di dng chun hi, tc l hi ca cc clause, mi clause c dng: P1 P2 Pi Pn, vi Pi l cc literal. Nu trong clause m c nhiu nht mt literal dng (tc l khng c k hiu ph nh ng trc) th clause gi l cu dng Horn. Nh vy cu dng Horn l cu c mt trong ba dng: P1 P2 Pn (khng c literal dng no) hoc P (c mt literal dng v khng c literal m no)

hoc P1 P2 PnQ (c mt literal dng l Q v t nht mt literal m) vi P1, P2,,Pn v Q l cc k hiuv t. Nu chuyn cc cu dng Horn sang dng lut th chng c dng nh sau: (P1 P2 Pn) hoc P hoc P1 P2 Pn Q (c mt literal dng l Q) Trong cu dng th hai v cu ba gi l cu Horn dng (c ng 1 literal dng) v thng c s dng biu din tri thc trong c s tri thc KB. Cu dng th nht c gi l cu dng Horn m (khng c literal dng no), v ph nh cu dng Horn m ny s l hi cc cu Horn dng. Cu dng Horn m ch xut hin trong biu din cc cu truy vn (q) v khi q s l cc cu Horn dng v thay v chng minh KB suy din ra q th ta chng minh KB q suy din ra [], khi ny c s tri thc KB q l hi cc cu dng Horn dng. Tam on lun (hay lut Modus ponens tng qut): Nu chng ta c cc cu Horn dng sau l ng: P1, P2, Pn P 1 P 2 P n Q v c php thay th theta sao cho thaythe(theta,Pi)= thaythe(theta, Pi) th cu thaythe(theta,Q) l ng

Kt qu lut Modus ponens t hai cu dng Horn dng sinh ra cu thaythe(theta,Q) cng c dng Horn dng. V vy php suy din tam on lun l ng trong cc cu dng Horn, kt qu tam on lun t hai cu dng Horn l cu dng Horn. Tng t nh tnh cht ng ca php phn gii trong trong cc cu dng chun hi, tnh cht ng ca php suy lun ny l rt quan trng trong vic thit k cc gii thut suy din t ng da trn tam on lun v cc cu Horn (xem phn pha di). Khng ging nh cu dng chun hi, khng phi cu no trong logic mnh u c th biu din dng Horn c. Chnh v th m thut gii suy din da trn tam on lun ch l y trong ngn ng cc cu Horn ch khng y trong logic mnh .

6. Gii thut suy din phn gii


Gii thut suy din phn gii da trn lut phn gii: hai cu tuyn (clause) c mt literal dng v mt literal m m ng nht vi nhau c th s sinh ra cu tuyn mi l tuyn cc literal cn li ca c hai cu sau khi b i hai literal ng nht ny. Cu mi (l kt qu ca php phn gii) cng l cu dng tuyn (clause) v khi b sung vo KB (tc l KB cu_clause_mi) th kt qu KB cng l dng chun hi (hi cc cu tuyn). V vy m trc khi p dng gii thut phn gii ta phi chuyn KB q sang dng chun hi. Ging nh gii thut phn gii trong logic mnh , gii thut phn gii trong loc v t cp mt cng thc hin lin tip cc php phn gii hai clause trong biu din dng chun hi ca KB q, b sung clause mi vo KB v lp li n khi hoc sinh ra cu rng ([]) hoc khng kt qu phn gii khng b sung thm clause no vo KB c na.

Function Resolution(KB, q) return true or false KB = KB q clauses=get_list_of_clauses(KB); while ([] not in KB) (Ci,Cj)=get_resolvable_pair(KB); // ly hai cu m cha cp literals //c th ng nht vi nhau c, //nhng du ngc nhau if (Ci,Cj)=empty return "failure else resolvent = resolution-rule(S1, S2); KB = KB resolvent; return success; Mi ln thc hin php phn gii l mt php chuyn trng thi t KB sang trng thi mi KB resolvent (vi resolvent l kt qu ca php phn gii). mt trng thi bt k, c nhiu cp clause c th phn gii c vi nhau, hay ni cch khc c nhiu php chuyn trng thi; vic la chn php chuyn trng thi no l da trn chin lc la chn, chng ta c th chn theo chiu rng, hoc chn theo chiu su nh cc chin lc tm kim theo chiu rng hoc theo chiu su nh trnh bay trong Chng Cc phng php tm kim li gii. Vic chng minh KBq[] cng c th thc hin bng chin lc chng minh li (tm kim li), xut pht t q (l ch ca bi ton gc KBq ch khng phi ch []) ta tm cc cu trong KB c th phn gii c vi q, p dng lut phn gii theo chiu rng, n khi no [] c sinh ra th dng. Gii thut phn gii theo cch ny gi l gii thut phn gii li.

V d minh ha: Gi s chng ta c c s tri thc nh cho trong v d mc 4 trong Chng ny, hy chng minh Nu b Bnh l ngi kh ng th nh b y khng c chut. Cu cn chng minh ny tng ng vi cu sau trong logic v t cp mt (q): Kh_ng(BBinh) z(C(BBinh,z) L_Chut(z)) V q l cu: (Kh_ng(BBinh) z(C(BBinh,z) L_Chut(z))) Hay cc cu tng ng sau: [Kh_ng(BBinh) (z(C(BBinh,z) L_Chut(z)))] [Kh_ng(BBinh) z(C(BBinh,z) L_Chut(z)))] Kh_ng(BBinh) C(BBinh,b) L_Chut(b) (vi b l k hiu hng v danh) Khi KB q gm cc clause sau (dng chun hi): L_Ch(x) Sa_v_m(x) C(x,y) L_Mo(y) C(x,z) L_Chut(z) Kh_ng(x) C(x,z) Sa_v_m(z) C(BBinh,a) L_Mo(a) L_Ch(a) Kh_ng(BBinh) C(BBinh,b) L_Chut(b) KB q [] theo cc bc phn gii nh sau: (1) (2) (3) (4) (5) (6) (7) (8)

- (1) v (5) {x/a} L_Mo(a) Sa_v_m(a) - (2) v (8) {z/b} C(x,y)L_Mo(y)C(x,b) - (7) v (10) {x/BBinh} C(BBinh,y)L_Mo(y) - (9) v (11) {y/a} C(BBinh,a) Sa_v_m(a) - (4) v (12) Sa_v_m(a) - (3) v (13) {z/a} Kh_ng(x) C(x,a) - (4) v (14) {x/BBinh} Kh_ng(BBinh) - (6) v (15) [] Dy cc bc chng minh trn ch l mt li gii ca bi ton chng minh KBq[]. Bn c c th a ra li gii khc. (15) (14) (13) (12) (11) (10) (9)

7. Thut ton suy din tin da trn cu Horn


Gii thut suy din phn gii trn l y trong logic v t cp mt, c ngha l gii thut s cho php chng minh c KBq ch bng p dng mi loi lut phn gii nu q chng minh c t KB trong logic v t cp mt (v ta lun c th chuyn KBq v dng chun hi cc cu tuyn v v th ch cn p dng lut phn gii). Tuy nhin, gii thut phn gii phi duyt tt c cc cp cu tuyn c trong KB m c th phn gii c vi nhau v chn cch phn gii theo mt chin lc (tm kim)

no , sau b sung kt qu phn gii vo KB v lp li thc hin tm kim cc cu tuyn c th phn gii c. Gii thut ny thng khng hiu qu v s lng cu tuyn trong KB s tng ln sau mi ln lp. Trong mc ny, chng ta s xem xt cc gii thut chng minh hiu qu hn. Nh xt trong mc 5, lut Modus ponens (hay tam on lun) c tnh cht ng trong cc cu Horn dng (cu tuyn c ng mt literal dng), v th nu c KB v q (hoc q) c th biu din c dng cu Horn dng th chng ta c th chng minh KBq (hoc KBq[]) ch bng cc lut Modus ponens. chng minh KBq (khi KB biu din bng hi cc cu Horn dng), ta chia KB thnh 2 loi cu: (1) cu c mt literal dng v khng c literal m no (hay gi l cc cu n hoc cc cu s kin) v (2) cu c mt literal dng v c t nht mt literal m (hay goi l cu lut). Gii thut suy din tin thc hin nh sau: bt u vi tp cc cu s kin trong KB, lp li vic p dng cc lut Modus ponens tng qut (xem mc 5) sinh ra cc cu s kin mi, nu cu s kin mi ny l q th dng v thng bo suy din thnh cng, nu khng th b sung cc cu s kin mi ny vo tp cc cu s kin bit v p dng cc lut Modus ponens tng qut; nu khng c cu s kin mi no c sinh ra th vic chng minh KBq l tht bi. Chi tit gii thut suy din tin da trn cc cu Horn dng v lut Modus ponens tng qut nh trang sau. Gii thut suy din tin c mt s nhc im, trong c nhc im l n s sinh ra rt nhiu s kin m khng lin quan g n cu truy vn (v bn cht ca gii thut ny l tm kim theo chiu rng).

Function FOL_Forward_Horn(KB, q) return true or false Input: - KB tp cc cu Horn dng (cu s kin, cu ko theo) - q: cu truy vn dng cu n (k hiu v t) Output: true or false while new is not empty new {}; for each r in {cu ko theo trong KB} (P1 P2 Pn Q) Phntchcu(r); for some P1, P2, Pn in {cu s kin trong KB} if (ng_nht(P1P2Pn, P1P2Pn, ) Q thaythe( ,Q); if (ng_nht (Q,q)) return true else new new U Q; KB KB U new; return false;

8. Thut ton suy din li da trn cu Horn

Chng 6 Prolog
Trong Chng 4 v 5 chng ta tm hiu logic mnh v logic v t cp mt. Chng ta cng tm hiu cc thut ton lp lun t ng, chng minh cu truy vn q t c s tri thc KB. C hai loi thut ton lp lun c bn: (1) Lp lun trong cc cu dng chun hi vi lut phn gii, v (2) Lp lun trong cc cu Horn vi lut Modus ponens (hay tam on lun). Trong Chng ny, chng ta s tm hiu mt ngn ng con ca Logic v t cp mt, prolog programming in logic, ngn ng gm cc cu Horn trong Logic v t cp mt c b sung mt s thnh phn phi logic gip cho sc mnh biu din ca ngn ng Prolog tt hn v gip cho vic ci t cc gii thut suy din d dng v hiu qu hn. Rt nhiu thut ton lp lun t ng trong Prolog c ci t cho my tnh, v d nh SWI Prolog pht trin bi J. Wielemaker, SICS Prolog pht trin bi Vin Khoa hc my tnh Thy in, v.v.. Ngn ng Prolog m cc sn phm ny cung cp l tng i ging nhau (c sai khc khng ng k). Ngoi chc nng c bn l cung cp trnh bin dch (thut ton lp lun KBq) th hu ht cc sn phm u cung cp b son tho chng trnh (c s tri thc). Trong Chng ny, chng ta s tm hiu ngn ng Prolog, Phn mm SWI Prolog, v lp trnh Prolog.

1. Lp trnh logic, mi trng lp trnh SWI Prolog


Lp trnh logic: Khc vi cc lp trnh th tc (lp trnh C, Pasal, Fortran, v.v.) l ch ra th t cc cu lnh x l trn tp cc cu trc d liu gii quyt bi ton sinh ra output t input; lp trnh logic l khai bo cc s kin, tri thc (lut) bit (hoc ng) v s dng my tnh (c trang b thut gii suy din) truy vn mt s kin mi hoc tri thc mi t cc s kin v tri thc cho (xem s bn di). Cc loi tri thc truy vn c th kim tra mt s kin hoc tri thc no c ng hay khng, hoc lit k cc b gi tr ca cc bin sao cho tha mn iu kin logic no (tc l lm cho mt biu thc logic no nhn gi tr true).

C s tri thc (KB)

Th tc suy din (SWI Prolog)

Tri thc truy vn?

Lp trnh logic = Khai bo C s tri thc + Truy vn tr li cc cu truy vn, chng ta cn th tc suy din (lp lun) nh trnh by trong cc chng trc. Chng ta bit, khi c s tri thc biu din c thnh hi cc cu Horn th thut ton suy din s rt hiu qu (c phc tp thi gian l tuyn tnh i vi s cu Horn trong c s tri thc). V th m hu ht cc sn phm ci t trn my tnh u hn ch ngn ng biu din tri thc dng cc cu Horn. Trong ti liu ny, chng ta s tm hiu mt ci t min ph, SWI Prolog.

Mi trng lp trnh SWI Prolog: SWI Prolog l mt ci t th tc suy din h tr cc cu Horn c b sung thm mt s thnh phn phi logic (cc php ton input/output, cc php ton tng sc mnh biu din hoc tng tnh hiu qu ca thut ton suy din). B suy din ca SWI Prolog s dng gii thut phn gii SLD (Selective Linear Definite clause resolution), tng chnh l biu din cc cu Horn dng cc cu tuyn (clause) c mt literal dng, ri p dng gii thut phn gii li. Gii thut phn gii SLD ny s c m t chi tit trong phn cui ca Chng ny. SWI Prolog c th download min ph ti a ch sau: http://www.swi-prolog.org/download/stable. Sauk khi ci t v chy chng trnh SW Prolog, H thng hin th du nhc yu cu nhp vo cu truy vn nh sau: 1?| Tt nhin, trc khi nhp cu truy vn, chng ta phi cho H thng bit chng ta s truy vn trn c s tri thc no. Mt c s tri thc l mt khai bo cc s kin v cc lut v mt lnh vc no , v c lu trong mt file. load mt file c s tri thc, ta s dng menu File Consult Chn file. Cc m t cc s kin v lut (cc cu Horn) trong cc file c s tri thc c gi l chng trnh prolog. Nhim v ca ngi lp trnh logic l vit cc chng trnh prolog ny v cc cu truy vn. V d, ta son tho mt file chng trnh prolog (c s tri thc) c tn file l giapha.pl (c th s dng bt c b son tho vn bn no, hoc s chnh b son tho do SWI Prolog cung cp bng cch s dng menu File New/Edit Nhp tn file), ni dung ca file nh sau:
cha(hoan,nam). cha(duong,hoan). me(duong,hoa). chame(X,Y):cha(X,Y). chame(X,Y):me(X,Y). %chacuahoanlanam

ongba(X,Y):chame(X,Z),chame(Z,Y).

Trong mi trng SWI, chng ta load file chng trnh ny (File Consult giapha.pl), sau chng ta nhp cc cu truy vn t du nhc ca SWI Prolog. V d cc cu truy vn v tr li truy vn nh sau: 1?chame(duong,hoa). true 2?ongba(X,nam). X=duong

Trong cc phn tip theo, chng ta s tm hiu cc cu khai bo trong file chng trnh v cc loi cu truy vn.

2. Ngn ng Prolog c bn, chng trnh Prolog


Qui c t tn bin v tn hng: Prolog l ngn ng cho my tnh, v vy n cn mt qui c rt quan trng trong vic t tn bin v tn hng, theo , tn mt bin phi bt u bng k t in hoa (chng hn X, Sinhvien, v.v.), cn tn hng phi bt u bng k t in thng (v d: an, binh, lasinhvien, v.v.). V Prolog l ngn ng cc cu Horn trong logic v t cp mt nn cc bin ch xut hin trong cc hng thc l tham s ca cc v t. Chng trnh Prolog, cc cu Horn dng: Chng trnh prolog v c bn l dy (hi) cc cu Horn dng (cu tuyn c ng 1 literal dng). Cc cu ny c dng Horn dng trong prolog c dng tng qut nh sau: head:p1,p2,,pn. {nghal:if(p1andp2andandpn)thenhead}

y head, P1, p2, , pn l cc v t (c th c cc tham s); v t head gi l phn u ca lut, cn P1, p2, , pn gi phn thn (phn iu kin) ca lut. Nu n>0 th cu Horn dng trn l cu dng lut; cn nu n=0 th cu khng c phn iu kin, khi ny ta c cu m t s kin v c th vit n gin l: head.

Ch : cc cu trong chng trnh prolog u kt thc bi du chm (.). Tt c cc cu u l cu ng, nu c k hiu bin xut hin trong cu th ta ngm hiu rng bin l bin buc, t di lng t , tr cc bin ch xut hin trong phn iu kin ca cu th bin c hiu l t di lng t (thc cht th nu chuyn dng cu tuyn th
s chuyn sang do chuyn v v ly ph nh)

V t, hng thc: Nh gii thiu trn, chng trnh prolog bao gm hai loi cu: cu s kin (cu n) v cu lut (cu phc). Cc cu ny c xy dng t cc v t (head,P1,p2,, pn), mi v t c c php nh sau: tn_vi_tu(hang_thuc1,hang_thuc2,,hang_thucn) trong tn_v_t tun theo qui tc t tn hng; cc hng_thci c th l: Gi tr: o tn hng k hiu, v d nh an, x, mauxanh, v.v. o hng xu, v d Xin chao o hng s nguyn hoc s thc, v d nh 5, 3.1416, v.v. tn bin, v d nh X, Sinhvien, v.v. (ch : tn bin bt u bng k t vit hoa; cc bin u khng c kiu bin, n c th nhn bt c mt gi tr no; tt c cc bin u l bin a phng trong cu n xut hin) cu trc (nhm cc hng thc li thnh cu trc), v d nh: mau[red, green, blue], [march, 17, 2011], v.v. Hai trng hp c bit ca cu trc l list v string s c tm hiu su hn cc phn sau ca Chng ny. V d v chng trnh Prolog: chng trnh lu trong file giapha.pl ca v d trc bao gm ba cu u l cc cu s kin v 2 cu cui l cu lut; c 4 k hiu v t l: cha, me, chame, ongba; c 4 tn hng: nam, hoan, hoa, duong; c 3 bin: X,Y,Z.

3. Cu truy vn

Cu truy vn tng qut c dng tng qut nh sau: p1,p2,,pn. Chng ta chia cu truy vn thnh hai loi: Cu truy vn khng cha bin: khi cu truy vn c ngha l biu thc logic (p1 and p2 and and pn) c l ng (c gi tr true) trong c s tri thc (chng trnh prolog) cho hay khng?. Chng hn, cu truy vn chame(duong, hoa) trong v d Phn 1 l hi: c phi hoa l chame ca duong khng?. Trong trng hp ny, SWI Prolog s tr li l true hoc false. Cu truy vn c cha tp cc bin (v d X,Y, ): khc vi cc cu trong c s tri thc (chng trnh prolog) m mc nh hiu rng cc bin l i vi lng t
, cc bin trong cu truy vn li ngm nh i vi lng t , khi cu truy

vn c ngha l: c X, Y, sao cho biu thc logic (p1 and p2 and and pn) c l ng (c gi tr true) khng?. Chng hn, cu truy vn ongba(X,nam) trong v d Phn 1 l hi: c tn ti X m c nam l ongba ca X khng?. Trong trng hp ny SWI Prolog s tm mt gi tr X sao cho ongba(X,nam) c gi tr l true. Nu chng ta mun SWI Prolog tm tt c cc gi tr X tha mn ongba(X,nam), sau mi tr li ca H thng, chng ta n phm ; thay v n phm enter. Ch : cu truy vn q trong Prolog c dng nh trn s tng ng q l cu dng Horn m x,y,(p1 p2 pn). (cu tuyn khng c literal dng no).

4. V t phi logic (cu phi logic)


Chng trnh l dy (th t l quan trng!) cc cu s kin v cu lut c c php nh nh ngha nh trn. Ngoi cc cu chun Horn trong logic v t cp mt ny (cc cu khai bo tri thc), Prolog cn c cc v t phi logic iu khin vic thc hin suy din hoc vo/ra d liu nh trong cc ngn ng th tc. V d v cc cu phi logic l (mc d l cc cu phi logic, nhng Prolog vn gn gi tr hng ng cho chng):

write(hang_thuc). nl.

%lnh ny in hang_thuc ra mn hnh % a con tr mn hnh xung dng mi % nhp gi tr t bn phm vo bin % gn gi tr bieu-thuc cho bin X

read(ten_bien). Xisbieuthuc.

V d, chng trnh Hello.pl c ni dung nh sau: xinchao:write('Whatisyourname?'),nl,read(X),write('Hello'),write(X). Sau khi load chng trnh Hello.pl v chy chng trnh (cu truy vn) th c kt qu sau: 1?xinchao. Whatisyourname? |:hoan. Hellohoan true. Trong cc phn sau ca Chng ny, chng ta s gp thm mt s cu phi logic khc na nh cu lnh ct (!). %ch : kt thc nhp d liu bng du chm (.)

5. Tr li truy vn, quay lui, ct, ph nh


Tr li truy vn quay lui: tm hiu cc chng trnh Prolog uc thc thi nh th no (trnh bin dch Prolog tr li cc cu truy vn th no), chng ta tm hiu v d sau: Bi ton l vit chng trnh Prolog tm s ln nht trong hai s. Chng ta son tho file chng trnh timsolonnhat.pl vi v t bigger(N,M) in ra s ln nht nh sau: bigger(N,M):N<M,write(Thebiggernumberis),write(M). bigger(N,M):N>M,write(Thebiggernumberis),write(N).

bigger(N,M):N=:=M,write(Numbersarethesame). Sau khi load chng trnh, chng ta nhp cc cu truy vn sau (cu tr li truy vn xut hin sau mi truy vn): 1?bigger(3,5). Thebiggeris5 true.b 2?bigger(8,7). Thebiggeris8 true. 3?bigger(10,10). Numbersarethesame true. tr li cc cu truy vn trn, SWI Prolog s thc hin ng nht cu truy vn vi cc v t l phn u cc lut theo th t t trn xung di. Khi gp lut c th ng nht c, SWI Prolog s thc hin ng nht cu truy vn vi phn u ca lut v thc hin cc lnh trong phn thn ca lut. Nu tt c cc bin trong lut (sau khi ng nht) u xc nh c gi tr th SWI Prolog s tr v cho ngi dng kt qu true v i tng tc vi ngi dng. Khi ngi dung mun tm kt qu tip theo, nhn phm ;, SWI Prolog s chuyn sang tm, ng nht v thc hin cc lut tip theo. Khi cu truy vn ng nht c vi mt lut m c mt bin no vn cn cha xc nh c gi tr, SWI Prolog s hnh thnh cc cu truy vn mi l cc v t cn cha bin; sau thc hin qui vic tm, ng nht v thc hin cc lut trong c s tri thc theo th t t trn i vi cc cu truy vn trung gian ny (ch trung gian). Vic thc hin suy din li nh th ny cn gi l quay lui. Mt im lu na, sau khi tm c lut ng nht vi cu truy vn, SWI Prolog s thc hin phn thn ca lut theo th t t tri qua phi. V phn thn ca lut c

dng hi cc v t, nn khi thc hin, nu gp mt v t m c gi tr chn l l false th SWI Prolog s khng thc hin cc v t sau . V t Ct (!): Khi thc hin chng trnh, SWI Prolog thc hin t trn xung, t tri qua phi, v chng minh cu truy vn bng quay lui (li). Khi tm c mt li gii ca cu truy vn, SWI Prolog s thc hin quay lui vt cn tm li gii tip theo. Trong trng hp chng ta ch cn tm 1 li gii, hoc trong trng hp chng ta bit chc chn khng c li gii khi thc hin quay lui, ta c th t v t ct (!) sau danh sch cc v t mong mun. Khi c v t ct xut hin trong mt cu th SWI Prolog s khng thc hin quay lui i vi cc v t t trc n. hiu c ch ngt quay lui ca v t ct (!), ta ly v d sau: a(X, Y) :- b(X), c(Y). a(4,4). b(1). b(2). b(3). c(1). c(2). c(3). Khi thc hin truy vn: 1 ?- a(X,Y). th c kt qu nh sau: 1 ?- a(X,Y). X = 1, a(X, Y) :- b(X), c(Y). a(4,4). b(1) b(2) {X|1 b(X) c(Y) c(1) c(2) c(3) a(4,4) a(X,Y)

b(3)

Y=1; X = 1, Y=2; X = 1, Y=3; X = 2, Y=1; X = 2, Y=2; X = 2, Y=3; X = 3, Y=1; X = 3, Y=2; X = 3, Y = 3. By gi chng ta s thay th cu lnh u tin trong chng trnh a(X, Y) :- b(X), c(Y). bng mt trong cc cu lnh di y (chn v t ngt ! vo cc v tr khc nhau): a(X, Y) :- !, b(X), c(Y). a(X, Y) :- b(X),!, c(Y). a(X, Y) :- b(X), c(Y),!. % khng quay lui i vi v t a % khng quay lui i vi v t a,b % khng quay lui i vi v t a,b,c

V thc hin li cu truy vn th ta s c cc kt qu khc nhau nh trong cc hnh v sau. a(X,Y)

b(X) {X|1

c(Y) c(1) c(2) c(3)

a(4,4)

b(1)

b(2)

b(3)

a(X, Y) :- !, b(X), c(Y). a(4,4).

a(X,Y)

b(X) {X|1

c(Y) c(1) c(2) c(3)

a(4,4)

b(1)

b(2)

b(3)

a(X, Y) :- b(X),!, c(Y). a(4,4).

a(X,Y)

b(X) {X|1

c(Y) c(1) c(2) c(3)

a(4,4)

b(1)

b(2)

b(3)

a(X, Y) :- b(X), c(Y), !. a(4,4). V t ph nh: Trong SWI Prolog, v t not(X) c gi tr true khi SWI khng chng minh c X. Hay ni cch khc, nhng s kin m SWI khng chng minh c l true th SWI s cho l s kin l false (gi thuyt ng). V d, cho chng trnh logic nh sau:
lacontrai(binh). lacontrai(an). khonglacontrai(X):not(lacontrai(X)). Nu ta thc hin cc cu truy vn: 1?khonglacontrai(X). false %binhlacontrai

v SWI khng tm c i tng no lm cho v t khonglacontrai(X) l ng. Nhng khi chng ta thc hin truy vn sau:
2?khonglacontrai(thanh).

true

kt qu cho l true v SWI khng chng minh c lacontrai(thanh). V t not c tc dng trong mt s trng hp, chng hn bi ton kim tra xem mt s c l s nguyn t khng, tc l s m khng chia ht cho cc s nh hn n (tr s 1 v chnh n). Bi ton ny c gi c th xem phn cui chng ny.

6. V t qui
V t quy l v t xut hin trong c phn u v phn than ca lut, hay ni cch khc, v t gi chnh n. nh ngha v t qui bao gi cng c 2 phn, phn s kin v phn qui. V d, chng trnh sau nh ngha v t fibonaci(N,X) tnh phn t th N trong dy fibonaci, kt qu a vo bin X (dy Fibonaci l dy c phn t th nht bng 0, phn t th hai bng 1, phn t th ba tr i s l tng ca hai phn t lin ngay trc).
fibonaci(1,0). fibonaci(2,1). %phn t u tin l 0 %phn t th u tin l 1

fibonaci(N,F):N>2,N1isN1,N2isN2,fibonaci(N1,F1),fibonaci(N2,F2),FisF1+F2.

Truy vn chng trnh logic ny vi cc tham s N khc nhau ta s c kt qu lu trn bin F l phn t th N ca dy. V d:
1?fibonaci(3,F). F=1 2?fibonaci(4,F). F=2 3?fibonaci(10,F). F=34

Ch : V t fibonaci(N,F) trn l nh ngha phn t th N ca dy Fibonaci v kt qu lu trong F, v vy m SWI ch c th thc hin cc cu truy vn m tham s th nht l hng s, v d cu truy vn nh fibonaci(10,F) tm phn t th 10 ca dy; cu truy vn nh fibonaci(10,34) kim tra xem phn t th 10 ca dy c l 34 khng; cu truy vn fibonaci(N,34) s khng thc hin c trn SWI!

7. Cu trc d liu trong Prolog


Danh sch: Danh sch l mt cu trc d liu c to dng sn trong SWI Prolog v cng c sn cc php ton ly phn t u v phn ui danh sch. Danh sch l nhm bt k cc hng thc vi nhau bng du [ v ] v phn cch bi du ,. V d [a,b,c,d] l danh sch gm 4 phn t. Thao tc c bn thao tc vi danh sch l tch phn t u ca danh sch. V d:
1?[X|Y]=[a,b,c,d]. X=a, Y=[b,c,d] 2?[X,Y|Z]=[a,b,c,d]. X=a, Y=b, Z=[c,d] 3?[X,[Y|Z]]=[a,b,c,d]. X=a, Y=b, Z=[c,d]

Ngoi thao tc c bn trn, SWI cng xy dng mt s thao tc khc, v d:


4?member(b,[a,b,c,d]). % b c phi l phn t ca danh sch [a,b,c,d] khng? true 5?append([a,b,c],[d,e,f],X). X=[a,b,c,d,e,f]

% ni hai danh sch

hiu r thm v danh sch, chng ta xt v d sau: hy vit chng trnh o ngc danh sch.
my_reverse([],[]). my_reverse([H|T],L):my_reverse(T,R),append(R,[H],L).

Cu truy vn c th l:
1?my_reverse([a,b,c,d],Y). Y=[d,c,b,a]

V d tip theo l sp xp danh sch theo th t tng dn. gii bi ton ny, chng ta s xy dng v t c hai tham s sapxep(X,Y), vi X l danh sch cn sp xp, Y l kt qu danh sch sp xp. Trong v d di y, ta s dng gii thut sp xp theo kiu chn, s dng bin trung gian
sapxep(X,Y):i_sort(X,[],Y). i_sort([],Y,Y). i_sort([H|T],Z,Y):insert(H,Z,Y1),i_sort(T,Y1,Y). insert(X,[Y|T],[Y|NT]):X>Y,insert(X,T,NT). insert(X,[Y|T],[X,Y|T]):X=<Y. insert(X,[],[X]).

8. Thut ton suy din trong Prolog

Chng 7 Lp lun vi tri thc khng chc chn


Trong cc chng trc, chng ta tm hiu logic mnh , logic v t cp mt, v prolog. Ngn ng v ng ngha ca cc logic ny ch gii hn cho cc cu ng/sai. Trong thc t, nhiu thng tin/tri thc chng ta khng hon ton bit c n l ng hay sai v chng ta vn c th rt ra (lp lun ra) cc thng tin/tri thc t nhng iu ta khng chc chn mc d cc thng tin/tri thc rt ra cng l nhng ci khng chc chn. Mt v d v vic lp lun vi cc thng tin khng chc ng v vi kt lun cng khng chc ng nh sau. Gi s chng ta bit (qua quan st 100 ngy gn y) v cc hot ng ca anh A vi cc iu kin thi tit khc nhau. Trong s 100 ngy, c 70 ngy tri nng v khng c gi. Anh y khng i chi golf vo cc ngy c gi hoc khng nng. Trong 70 ngy nng v khng c gi th anh y ch i chi golf trong 50 ngy. Vic i chi golf hay khng ph thuc vo thi tit, i khi n gin cng ch v hm anh c thch hay khng. By gi da vo nhiu iu bit ny, chng ta phi tr li cc cu hi nh: ngy mai anh y c i chi golf khng nu bit rng d bo thi thit ngy mai tri c th c ma?, hoc kh nng ngy mai anh y i chi golf l bao nhiu?, hoc l nu bit anh y khng i chi golf th thi tit hm th no?, v.v. R rang cc thng tin/tri thc bit l khng chc chn v cu truy vn th tr li cng c th khng phi l dng chc chc. Vy lm th no m my tnh c th biu din c cc thng tin/tri thc khng chc chn v lp lun tr li cc cu truy vn nh trn. C ba cch tip cn gii quyt vn biu din v suy din cc thng tin v tri thc khng chc chn: logic m, l thuyt kh nng v l thuyt xc sut. Trong chng ny, chng ta ch tm hiu v l thuyt xc sut, mt ngn ng biu din cc thng tin, tri thc khng chc chn v l thuyt xc sut cho php chng ta lp lun rt ra cc thng tin v tri thc mi.

Chng 8 Hc mng nron nhn to


H thng c gi l c kh nng hc (c dng v hc nh con ngi) l h thng c kh nng tm ra mt s khi qut hoc m hnh cho cc d liu hun luyn (d liu c gn nhn nhn din hoc phn loi). c trng khi qut hoc m hnh c th c s dng nhn din hoc phn loi d liu mi. H thng hc thng minh l h thng c dng v ng x (hoc kt qu nhn din hoc kt qu d on) nh a tr con hc; chng quan st cc hnh nh ca cc k t c phn loi (thng qua vic ni vi chng y l k t g - d liu hun luyn), v khi qut cc c trng ca cc loi k t; khi a hnh nh ca k t mi (d liu kim tra) vo th chng nhn din hoc phn loi c k t thuc loi no. H thng thng minh l h thng nhn din ng hoc phn loi ng d liu kim tra, v khi h thng c gi l c kh nng hc (hay c dng v hc).

You might also like