nhập môn trí tuệ nhân tạo

Upload: tran-thien-dai

Post on 21-Jul-2015

129 views

Category:

Documents


1 download

TRANSCRIPT

TRNG I HC LT KHOA TON TIN Trng Ch Tn

GIO TRNH

NHP MN TR TU NHN TO

Lt, 04 - 2009

LI M UGio trnh Nhp mn Tr tu nhn to c vit dnh cho sinh vin ngnh Ton Tin, Tin hc v Cng ngh thng tin. c gio trnh ny, sinh vin cn c kin thc c bn v lgic, cu trc d liu v thut ton. Ni dung gio trnh ny gm 4 chng: Chng 1: Khi nim v tr tu nhn to Chng 2: Cc phng php gii quyt vn Chng 3: Biu din v x l tri thc Chng 4: Lp trnh lgic Chng 1 gii thiu tm tt lch s hnh thnh v pht trin cng nh cc khi nim chung nht, cc lnh vc nghin cu v ng dng chnh ca tr tu nhn to. Chng 2 trnh by cc phng php biu din v gii quyt vn c bn: biu din vn trong khng gian trng thi bng th thng thng, th V/HOC, cc phng php xc nh trc tip li gii, cc phng php th sai (trong trnh by cc phng php tm kim theo chiu rng, chiu su, theo hng cc tiu gi thnh trn cy v th, thut gii di truyn, phng php GPS, ) v cc k thut heuristic. Chng 3 cp n cc phng php biu din tri thc bng: lgic, lut sinh, mng ng ngha, khung v cc phng php x l tri thc bng suy din da trn lgic tt nh v bt nh. Chng 4 gii thiu k thut lp trnh lgic thng qua ngn ng lp tnh Prolog. Cui mi chng c phn bi tp nhm cng c chc hn kin thc l thuyt v rn luyn k nng thc hnh cho hc vin. Cc phn c in ch nh dnh cho hc vin c thm. Chc chn ti liu ny khng trnh khi s sut, tc gi rt mong nhn c v chn thnh bit n cc kin ng gp qu bu ca cc bn ng nghip v c gi nhm lm cho gio trnh hon chnh hn trong ln ti bn sau. lt, 04 - 2009 Tc gi

MC LCLi m u CHNG I. KHI NIM V TR TU NHN TO I.1. Lc s hnh thnh v pht trin I.2. Nhng lnh vc nghin cu ca tr tu nhn to (TTNT) I.3. Nhng ng dng ca TTNT CHNG II. CC PHNG PHP GII QUYT VN II.1. Cc phng php xc nh trc tip li gii II.1.1. Phng php gii chnh xc II.1.2. Phng php gii gn ng II.1.3. Phng php gii khng tng minh, qui II.1.4. Phng php qui hoch ng II.2. Cc phng php th sai II.2.1. Phng php vt cn, nguyn l mt li, phng php sinh v th, phng php nhnh cn a. Phng php vt cn b. Nguyn l mt li c. Phng php sinh v th d. Phng php nhnh cn II.2.2. Phng php ngu nhin a. Phng php Monte - Carlo b. Thut gii di truyn GA II.2.3. Nguyn l m cung II.2.4. Cc phng php biu din v gii quyt vn trong khng gian trng thi bng cy v th a. Biu din vn trong khng gian trng thi b. Phng php tm kim li gii c. Cc dng c bit thng gp: tm kim theo chiu rng, chiu su, su dn, cc tiu AT II.2.5. Quy bi ton v bi ton con v cc chin lc tm kim trn th V / HOC a. Quy bi ton v bi ton con b. Biu din bi ton di dng th V / HOC c. Cc phng php tm kim trn cy V / HOC: 1 3 6 8 8 8 8 11 13 13 13 14 15 16 17 17 18 20 22 22 27 28 32 32 33

tm kim theo chiu rng, chiu su, cc tiu II.2.6. Phng php GPS II.3. K thut Heuristic II.3.1. Cc thut gii tm kim ti u trn cy v th vi tri thc heuristic a. Thut gii AKT b. Thut gii A* c. Cc v d II.3.2. Nguyn l tham lam II.3.3. Nguyn l hng ch, phng php leo ni II.3.4. Nguyn l sp th t, nguyn l trng khp nht Bi tp CHNG III. BIU DIN V X L TRI THC III.1. Khi nim v biu din v x l tri thc III.1.1. T d liu n tri thc III.1.2. Mt s c trng ca tri thc III.1.3. Phn loi tri thc III.1.4. Cc phng php biu din tri thc III.1.5. Cc phng php x l din tri thc III.2. Mt s phng php biu din tri thc III.2.1. Biu din tri thc nh lgic III.2.2. Biu din tri thc nh lut sinh 63 III.2.3. Biu din tri thc nh mng ng ngha III.2.4. Biu din tri thc bng Frame III.3. X l tri thc tt nh bng phng php suy din lgic III.3.1. Cc c ch lp lun vi tri thc tt nh III.3.2. Thut ton Vng Ho III.3.3. Thut ton Robinson III.3.4. Thut ton suy din tin III.3.5. Thut ton suy din li III.4. X l tri thc bt nh bng phng php suy din logic III.4.1. Cc c ch lp lun vi tri thc bt nh v khng chnh xc III.4.2. Phn b kh xut ca khi lut v cc php ton ni kt trn chng Bi tp

34 40 42 44 4444 45 48 51 52

55 59 59 60 60 60 60 61 61 64 64 65 65 65 69 72 74 78 78 78 79

CHNG IV. LP TRNH LGIC IV.1. Gii thiu ngn ng lp trnh lgic Prolog 80 IV.1.1. M u 80 IV.1.2. V t, s kin, qui tc, mc tiu trong Prolog 81 IV.1.3. Cu trc chnh ca mt chng trnh trong Prolog 83 IV.2. Danh sch, qui, lt ct trong Prolog 87 IV.2.1. Danh sch 87 IV.2.2. qui, c ch quay lui v tm nghim bi trong Prolog 87 IV.2.3. Lt ct trong Prolog 89 IV.3. Cc v d 92 IV.3.1. Bi ton Thp H Ni 92 IV.3.2. Bi ton x l vi phn k hiu 93 IV.3.3. Bi ton suy lun lgic 94 IV.4. Ph lc: Vi v t chun trong Prolog 96 Bi tp 105

Ti liu tham kho

110

Chng 1 Khai niem ve Tr tue nhan tao

1

Chng I KHI NIM V TR TU NHN TO I.1. Lc s hnh thnh v pht trin* Tr tu nhn to (TTNT hay AI Artificial Intelligence) l mt trong nhng ngnh mi trong lnh vc cng ngh thng tin. C nhiu quan im v tr tu nhn to. - Nm 1950, Alan Turing a ra cc trc nghim thng minh nhn bit my tnh c thng minh hay khng. Tuy vy, cng theo ng ta, tuy my tnh c th tht bi trong cc trc nghim thng minh nhng n vn c th thng minh. Theo quan im ca Minsky, tr tu nhn to l mt ngnh khoa hc nhm nghin cu, m phng trn my tnh cc hnh vi v t duy thng minh tng t nh con ngi. N gip my tnh c kh nng nhn thc, suy lun v phn ng. C hai hng tip cn tr tu nhn to: dng my tnh bt chc qu trnh x l ca con ngi v thit k nhng my tnh thng minh c lp vi cch suy ngh ca con ngi.

- T in bch khoa ton th Webster th nh ngha: Tr tu l kh nng: 1. Phn ng mt cch thch hp vi nhng tnh hung mi thng qua hiu chnh hnh vi mt cch thch ng; 2. Hiu r nhng mi lin h qua li gia cc s kin ca th gii bn ngoi nhm a ra nhng hnh ng ph hp t ti mt mc ch no . Theo nhng nh tm l hc nhn thc th qu trnh hot ng tr tu ca con ngi bao gm 4 thao tc c bn: 1. Xc nh tp ch (goal) cn t ti; 2. Thu thp cc s kin (facts) v cc lut suy din (inference rules) t ti tp ch t ra; 3. Thu gn (prunning) qu trnh suy lun nhm xc nh mt cch nhanh chng tp cc lut suy din c th s dng c t ti mt ch trung gian no ; 4. p dng cc c ch suy din (tin hoc li) c th (inference mechanisms), da trn cc thao tc thu gn qu trnh suy lun v nhng s kin trung gian mi c to ra, dn dt t nhng s kin ban u n nhng ch t ra.

* TTNT ra i da trn cc thnh qu ca cc ngnh tm l hc nhn thc, lgic hnh thc, T trn 2000 nm trc, cc nh trit hc v tm l

Chng 1 Khai niem ve Tr tue nhan tao

2

hc c gng tm hiu cch thc, c ch ca qu trnh nh, hc tp, nhn thc v suy l. - Vo u nhng nm 50 ca th k XX, nh s ra i v ci tin lin tc v hiu sut hot ng ca my tnh, xut hin xu hng khng ch nghin cu tr tu v mt l thuyt m cn kim nghim cc kt qu l thuyt thng minh trn my tnh. Trong thi gian u mi hnh thnh, nhiu cng trnh l thuyt v TTNT vn cha c kim nghim v trin khai trn thc t do cha c ngn ng lp trnh c trng cho TTNT, do hn ch v k thut my tnh, gii hn v b nh c bit l tc thc hin v do vn bng n t hp ny sinh trong nhng thut ton tm kim li gii cho cc bi ton kh trong TTNT. Da trn cc thnh qu v k thut phn cng, cng vi s xut hin cc ngn ng lp trnh c th cho TTNT, chuyn x l k hiu hnh thc phc v cho lp trnh lgic nh IPL.V, LISP (vit tt ca LISt Processing, do Mc Cathy ti i hc MIT xut nm 1960), PLANNER, PROLOG (vit tt ca PROgramming in LOGic, do Alain Colmerauer v nhm cng s ca ng ti i hc Marseilles xy dng nm 1972), nhiu gi thuyt hay kt qu th v v l thuyt trong TTNT c iu kin c kim nghim v tr thnh cc sn phm tin hc c th trn th trng mang tnh thng minh, hot ng nh cc nhm chuyn gia nhiu kinh nghim trong tng lnh vc hp no nh y hc, a cht, dy hc, chi c,... Chng hn cc sn phm, chng trnh: dn xut kt lun trong h hnh thc, chng minh cc nh l hnh hc phng, tnh tch phn bt nh, gii phng trnh i s s cp, chi c (Samuel), phn tch v cha bnh tm l (ELIZA), chuyn gia v y khoa (MYCIN i hc Stanford), phn tch v tng hp ting ni, iu khin Robot theo n Mt - tay, thm d khong sn (PROSPECTOR)... Khi s dng nhng sn phm chuyn dng thng minh ny, c bit l ln u tin, ta khng khi ngc nhin v tnh thng minh n mc i khi ta c cm gic chng vt tri hn kh nng ca nhng ngi khng chuyn nghin cu v lnh vc c th . Trong nhng nm 1990, ngnh TTNT cng pht trin mnh hn na theo cc hng: c s tri thc v h chuyn gia, x l ngn ng t nhin, l thuyt nhn dng hnh nh, ting ni v ng dng vo cc k thut a phng tin, siu vn bn, mng nron, my hc, l thuyt m trong lp lun xp x, lp trnh tin ho, khai thc tri thc t d liu, ...

-

* C vi du hiu quan trng ca tr tu my l cc kh nng: hc; m phng cc hnh vi sng to ca con ngi; tru tng ha, tng qut ha v suy din; t gii thch hnh vi; thch nghi vi tnh hung mi gm kh nng thu

Chng 1 Khai niem ve Tr tue nhan tao

3

np d liu tch hp, rt tri thc t d liu; x l cc biu din hnh thc (cc k hiu tng trng, danh sch); vn dng cc tri thc heuristics sn c; x l cc thng tin bt nh, khng y , khng chnh xc, ...Tr tu my khc tr tu ngi ch n khng th nhn trc c mt phn hay ton th qu trnh gii trong nhng tnh hung mi v khng t sinh ra c cc heuristics ca chnh bn thn chng. * TTNT gm cc phng php v k thut c bn sau: phng php biu din v gii quyt vn ; k thut heuristics; phng php biu din v x l tri thc; phng php hc v nhn dng, x l ngn ng t nhin v cc ngn ng lp trnh cho TTNT. TTNT vn k tha cc k thut c bn ca tin hc truyn thng nh: x l danh sch, k thut qui v quay lui, c php hnh thc, ... Trong bt k mt h thng TTNT no cng u c 2 thnh phn c bn lin quan mt thit vi nhau: cc phng php biu din vn v tri thc, cc phng php tm kim trong khng gian bi ton, cc chin lc thu hp khng gian li gii v suy din.

I.2. Nhng lnh vc nghin cu ca tr tu nhn toI.2.1. T thut ton n thut gii * c trng ca thut ton (Algorithm): yu cu tha mn nghim ngt 3 tnh cht: xc nh, hu hn, ng n. u im: nhng bi ton gii c bng thut ton c phc tp khng qu a thc c p dng tt trong thc t. Nhc im: nhng thut ton c phc tp trn a thc ch c p dng vi khng gian bi ton nh; trn thc t, lp cc bi ton kh cha c thut ton gii hoc cha bit c thut ton gii hiu qu rng hn rt nhiu. Mt hng gii quyt kh khn l m rng tnh xc nh, tnh ng v a vo thm cc thng tin c trng v bi ton, a vo my tnh mt kiu kinh nghim v t duy ca con ngi l s c lng, thu c cc thut gii heuristic. * c trng ca thut gii heuristic: phc tp b, cho php nhanh chng tm ra cc li gii, nhng khng phi lun lun tm ra m c th tm thy li gii ch trong a s trng hp; v li, cc li gii ny cha chc lun ng hay ti u m thng gn ng hay gn ti u. I.2.2. Phn loi cc phng php gii quyt vn * Biu din vn : Xt vn : A B.

Chng 1 Khai niem ve Tr tue nhan tao

4

- Dng chun: Cho A, B tm (hai loi thut ton, chng trnh: thut ton cn xc nh trc chnh l v thut ton tng qut tm ra ). - Cho A, , tm B (suy din tin). - Cho B, , tm A (suy din li). * Nhm cc phng php xc nh trc tip li gii: phng php chnh xc, phng php xp x gn ng, phng php khng tng minh, qui, nguyn l qui hoch ng * Nhm cc phng php xc nh gin tip li gii hoc tm kim li gii: - Phng php th sai: vt cn, nguyn l mt li, phng php nhnh cn, sinh v th li gii, phng php ngu nhin (phng php Monte Carlo, thut gii di truyn GA), nguyn l m cung (dng qui), vt cn dn (di dng lp) bng cch quay lui v xc nh dn thng tin v bi ton trong qu trnh gii thng qua cc cu trc khng tuyn tnh (chng hn: cy, th hoc th V/HOC nh cc phng php tm kim: theo chiu rng, su, su dn, cc tiu AT), phng php GPS, Phng php heuristic trong tr tu nhn to: l hng tip cn quan trng xy dng cc h thng TTNT. N bao gm cc phng php v k thut tm kim c s dng cc tri thc c bit t chnh bn thn lp bi ton cn gii nhm rt ngn qu trnh gii v nhanh chng i n kt qu mong mun mc d c th khng chc chn l cch gii quyt ti u nhng li c tnh kh thi trong iu kin thit b hin c v thi gian yu cu. Trong k thut ny ngi ta thng s dng k thut heuristis nh lng thng qua cc hm nh gi. Chng ta s minh ha cc phng php heuristics thng qua cc phng php vt cn thng minh (tm kim ti u c b sung bng tri thc c trng v bi ton trn cy hoc th tng qut: AKT, A*), nguyn l tham lam, nguyn l hng ch (thut gii leo ni), nguyn l sp th t, nguyn l khp nht,

Nhng thng tin heuristic ny vn c gin tip a vo my tnh thng qua con ngi. Vy my tnh c th t to ra cc tri thc, bit suy lun, chng minh, t hc qua kinh nghim, my c kh nng rt ra tri thc v vn dng chng vo vic gii quyt bi ton hay khng ? Cc phng php trong tr tu nhn to gip my tnh thc hin c trong mt chng mc no cc vn t ra trn: cc phng php biu din

Chng 1 Khai niem ve Tr tue nhan tao

5

v x l tri thc, lp trnh tin ho, mng neuron nhn to, my hc, khai thc tri thc t d liu, I.2.3. Biu din v x l tri thc C 4 phng php c bn biu din v x l tri thc - d liu tch hp: phng php hnh thc s dng cch tip cn logic (lgic c in - tt nh: lgic mnh , lgic v t; lgic bt nh: lgic xc sut, lgic kh xut, lgic m), cc lut sinh (thng dng trong cc h chuyn gia), mng ng ngha, b ba lin hp OAV, cch biu din bng khung (hay dn - Frame),... Cc h chuyn gia l nhng th hin ca vic kt hp ca cc phng php biu din v phng php x l tri thc (v d: DENDRAL, MOLGEN, PROSPECTOR, MYCIN, ...). I.2.4. X l ngn ng t nhin, cc ngn ng lp trnh da trn vic x l danh sch, k hiu v lp trnh logic: cc ngn ng lp trnh LISP, PROLOG c hn ch l chi ph ln v kh pht trin h thng; cn CLIPS nhm biu din tri thc theo hng i tng v x l cc lut suy dn. Ta c th thy s khc nhau c bn gia lp trnh truyn thng v lp trnh x l k hiu trong TTNT qua bng so snh I.1.Lp trnh truyn thng - X l d liu - D liu trong b nh c nh a ch s Lp trnh x l k hiu v lgic - X l tri thc - d liu tch hp - Tri thc c cu trc trong b nh lm vic theo k hiu - X l theo cc thut ton - X l theo cc thut gii heuristics v c ch lp lun - nh hng x l cc i lng nh lng s - nh hng x l cc i lng nh tnh, logic, k hiu tng trng, danh sch - X l tun t hoc theo l - X l theo ch tng tc cao (hi thoi, theo ngn ng t nhin,...) - Khng gii thch trong qu trnh thc hin - C th t gii thch hnh vi h thng trong qu trnh thc hin

Bng I.1 I.2.5. L thuyt nhn dng theo hng thng k, cu trc, i s v heuristics gm: nhn dng hnh nh v m thanh (HEARSAY-II, ). I.2.6. Lp trnh tin ho, mng nron, my hc, khai thc d liu - Lp trnh tin ha (Revolution Programming) s dng tng qui lut tin ho v hc thuyt di truyn ca ngnh sinh hc: nhng g hp l, thch

Chng 1 Khai niem ve Tr tue nhan tao

6

nghi tt vi mi trng s c kh nng tn ti lu di hn trong qu trnh o thi, sinh tn; mt s c im ca th h trc s di truyn, nh hng n th h sau thng qua lai cho; thnh thong vn xut hin vi c th c c im khc hn (hoc ni tri li cc c im tim tng) vi th h trc ca chng thng qua t bin, Khi im ca hng nghin cu ny l thut gii di truyn (GA Genetic Algorithm). u im ca cc thut gii GA l c th p dng i vi cc bi ton cha bit thut ton no hay cha c thut gii no kh d, hiu qu gii. C th xem GA thuc vo lp cc thut ton ngu nhin thng qua vic to ngu nhin qun th ban u cng nh cc v tr lai cho hay t l lai cho v t bin ca chng. - Mng nron nhn to (hay vn tt hn l mng nron, ANN Artificial Neural Networks) m phng m hnh v c ch hot ng hng phn v c ch thn kinh iu khin hot ng ca con ngi. M hnh ANN c th gm nhiu lp, trong t nht phi c lp nhp (input layer) v lp xut (output layer), ngoi ra c th c nhiu lp n (hidden layers) trung gian. Mi lp gm nhiu nt. Cc kch thch t mi trng ngoi c truyn vo mng thng qua cc nt ca lp nhp. Tng hp cc kch thch ny (ph thuc cc trng s m mng ny cn hc), nu vt qu mt ngng no , s gy kch thch (hng phn hay c ch) n cc nt ca lp k tip. C th, qu trnh tip tc lan truyn n lp xut. Mt m hnh ANN thng c ng dng nhiu trong thc t l mng nron lan truyn ngc. Lp li qu trnh ny, da trn vic cp nht trng s qua mi th h sao cho gim dn sai s gia gi tr tht v gi tr do mng kt xut. Qua mt s th h luyn, mng s hc c b trng s thch hp. u im ca cc phng php luyn mng ANN l c th p dng i vi cc bi ton cha bit thut ton no hay cha c thut gii no kh d, hiu qu gii. - My hc (LM - Learning Machine) l qu trnh rt ra qui lut t d liu, chng hn hc thng qua lgic, hc bng quan st da trn cc o ph hp, hc da trn cy nh danh thng qua o hn lon thng tin trung bnh, Ta c th dng ANN ng dng vo my hc. - Khai thc d liu (DM - Data Mining) nhm rt ra tri thc t d liu th, chng hn o ph thuc ca mt lp cc thuc tnh xc nh vo lp cc thuc tnh ph bin khc trong tp d liu th cho trc thng qua lut kt hp, ... I.3. Nhng ng dng ca TTNT - iu khin hc, Robotic, giao din ngi my thng minh - Tr chi my tnh - Thit b in t thng minh nh s dng lgic m - H chuyn gia trong: gio dc, y khoa, a cht, qun l, - X l ngn ng t nhin

Chng 1 Khai niem ve Tr tue nhan tao

7

-

Nhn dng hnh nh, m thanh, Cc h thng x l tri thc v d liu tch hp: cho php x l ng thi tri thc v d liu (c s d liu suy din, biu din lut i tng, h h tr quyt nh) M hnh ho cc gii php gii bi ton

Chng II - Cac phng phap giai quyet van e

8

Chng II CC PHNG PHP GII QUYT VN II.1. Cc phng php xc nh trc tip li giic im ca cc phng php ny l xc nh trc tip c li gii thng qua mt th tc tnh ton hoc cc bc cn bn c c li gii. C ba loi phng php chnh xc nh trc tip li gii. Loi th nht c p dng gii cc bi ton bit cch gii bng cc cng thc chnh xc (nh cng thc ton hc). Loi th hai c dng cho cc bi ton bit cch gii bng cc cng thc xp x (nh cc cng thc xp x trong phng php tnh). Loi th ba c p dng vo cc bi ton bit cch gii khng tng minh thng qua cc h thc truy hi hay k thut qui. II.1.1. Phng php gii chnh xc: thng qua cc cng thc gii chnh xc. Chng hn, thut ton gii phng trnh bc hai. II.1.2. Phng php gii xp x: thng qua cc cng thc gii gn ng. Chng hn, phng php lp tnh tch phn xc nh theo cng thc hnh thang trong hc phn Phng php tnh. II.1.3. Phng php gii khng tng minh: thng qua cc h thc truy hi hoc k thut qui. * Thao tc qui F(x) trn 1 i tng x D no . Xt hai trng hp: Nu i tng x thuc mt tp c bit X0 no (X0 D) m bit cch gii n gin th thc hin cc thao tc s cp tng ng; Ngc li, trc ht c th thc hin mt thao tc G(x) no , bin i x thnh x= H(x) D ri thc hin thao tc tng t F(x) trn x, sau c th thc hin thm mt thao tc K(x) no trn x, sao cho sau mt s hu hn bc ny, cc im xn() s ri vo tp X0.

{

F(x) //x D if (x X0) ThaoTcSCp(x); else G(x); x = H(x); // iu kin dng //H(x) D

Chng II - Cac phng phap giai quyet van e

9

}

F(x); K(x);

// li gi qui

Cc thao tc qui thng gp trong tin hc l: nh ngha qui, hm hoc th tc qui, thut ton qui. * Ch : Khi thit k mt thao tc qui, ta cn c hai phn: - Phn c s (phn neo hay iu kin dng): thao tc s cp bit cch thc hin ngay trn tp con X0 D. - Phn gi qui F(x): cn phi bo m sau mt s hu hn bc bin i x th ta s gp iu kin dng: H(H( H(x))) = x0 X0. - Trn y, ta xt qui ui trc tip. Cc trng hp phc tp hn mt cht nh qui nhnh trc tip v qui gin tip (hay qui h tng) c xt tng t.* V d 1a (dy s Fibonacci): u thng th 1 c 1 cp th con mi ra i (F(0) = 0, F(1) = 1). Gi s: - C sau mi thng mt cp th (t sau hai thng tui) s sinh thm mt cp th con; - Cc con th khng bao gi cht. Hi s cp th F(n) sau n thng l bao nhiu? Ta c cng thc truy hi tnh F(n) nh sau: F(0) = 0; F(1) = 1 (X0 = 0; 1) F(n) = F(n-1) + F(n-2), n 2 tnh F(n), ta c th thc hin theo cc cch sau: - Thut ton qui sau y c phc tp thut ton vi s php cng l O(F(n)) = O(((1+ 5 )/2)n): phc tp m, qu ln, khng kh thi ! Nguyn Fibonaci_De_Qui(n) { if (n 1) return n; else return (Fibonaci_De_Qui(n-1) + Fibonaci_De_Qui(n-2)); } - Thut ton lp sau y c phc tp thut ton vi s php cng l O(n): hiu qu hn nhiu ! Ta c th kh qui bng cch dng vng lp v vi bin ph hoc dng c ch ngn xp. Nguyn Fibonacci_Lp(n) { if (n==0 or n==1) return n; else { j = 1; Truoc = 0; HienTai = 1; while (j < n) do { Sau = Truoc + HienTai; Truoc = HienTai;

Chng II - Cac phng phap giai quyet van e

10

HienTai = Sau; j = j + 1; } return Sau; } } - Tm cng thc tng minh t h thc truy hi F(n) =

1 5

[(

1+ 5 n 1 5 n ) +( ) ] 2 2

* Phng php tng qut tm cng thc tng minh cho Fn t h thc truy hi tuyn tnh (h s hng): Fn = b1 Fn-1 + b2 Fn-2 , n 2 vi cc tr {F0, F1} cho trc. Gi {1, 2} l 2 nghim ca a thc c trng tng ng: 2- b1 - b2=0. n Khi : Fn = c1 1 + c2 2n , (c1, c2 s c xc nh t cc iu kin u ca F0, F1). * Nhn xt: Trong nhiu bi ton kh, ta c th dng chin lc Chia tr tch n thnh nhiu bi ton con c cng cch gii nh bi ton ban u thng qua k thut qui. - V d 1b: Tro i hai phn a[1..k] v a[k+1..n] ca mng a gm n phn t (khng nht thit c di bng nhau) m khng dng mng ph. Nu k n-k th trc tin trao i hai phn bng nhau a[1..k] v a[n-k..n]; sau trong mng con a[1..n-k], ta ch cn tro i k phn t u vi phn cn li. Trng hp k n-k, gii tng t, ... TraoHaiPhanBangNhau(a, Tu1, Tu2, SoPTuTrao) { for (i=1; i SoPTuTrao; i++) DoiCho(a[Tu1+i], a[Tu2+i]); } TraoHaiPhanBatKy(a, n, k) // k >= 0 { i = 1; j = n; while (k >= i) { if (k < (i+j)/2) { TraoHaiPhanBangNhau(a, i, i+j-k, k-i+1); j = i + j - k - 1; } else { TraoHaiPhanBangNhau(a, i, k+1, j-k); i = i + j - k; } } }

Chng II - Cac phng phap giai quyet van e

11

II.1.4. Phng php qui hoch ng: * tng ca nguyn l qui hoch ng: nghim ca mt bi ton con (ca mt bi ton) l s kt hp cc nghim ca cc bi ton con nh hn ca n (trong trng hp ri rc c tnh qui th nghim trong n bc s c c t li gii ca k bc trc v li gii trong n-k bc). Ta thng dng phng php ny gii cc bi ton ti u m tha mn nguyn l trn. C th xem nguyn l ti u l mt s th hin tt ca phng php chia tr trong vic gii quyt vn . Khi thc hin cc tnh ton trong phng php qui hoch ng, thc hin tnh ton ti bc th n, nn tn dng cc kt qu tnh cc buc trc thng qua cc h thc truy hi v mt vi bin ph lu cc kt qu trung gian trc (chng hn, xt bi tp: tnh tt c cc s t hp Ckn, vi mi k: 0 k n).* M hnh ton hc ca nguyn l ti u - nh ngha II.1 (hm phn tch c): Cho hm f: D R, D Rn, D1 = {x1 R1: yRn-1 & (x1,y)D}, D(x1) = {y Rn-1 : (x1, y) D} x1 D1. Ta ni hm f l phn tch c nu tn ti hai hm g: R2 R v h: Rn-1 R1 sao cho: . f(x1, y) = g(x1, h(y)), x = (x1, y) D, x1 D1, y D(x1) . Hm g n iu khng gim theo bin th hai: x1 D1, z1, z2 R1: z1 z2 g(x1, z1) g(x1, z2) (tht ra ch cn: x1 D1, z1, z2 R1, y1, y2 D(x1): z1 = h(y1), z2 = h(y2), z1 z2 g(x1, z1) g(x1, z2)) - Mnh II.1: Cho f l hm phn tch c (trong nh ngha II.1). Khi , ta c:

opt f ( x) = opt [ g ( x1 , opt [h( y )])]xD x1D1 yD ( x1 )

- Nhn xt: . Kt qu ca mnh trn cho php ta a vic ti u hm nhiu bin v ti u cc hm theo cc bin thnh phn c s chiu b hn. . Ta thng gp trng hp hm g c dng tuyn tnh theo bin th hai: g(x1, z) = r(x1) + z v f c dng cng tnh theo tng thnh phn: f(x1, x2, , xn) = r(x1) + r(x2) + + r(xn) * V d 2 (bi ton ngi giao hng Salesman): Hng ngy, ngi giao hng phi chuyn hng qua n a im, mi a im ng mt ln, ri quay li a im xut pht. Bi ton t ra l: lm th no anh ta c c mt hnh trnh vi ng i ngn nht. Ta biu din bi ton bng th nh hng G = (V, A), vi V={1, 2, , n} v di cung C(i,j) > 0, nu (i,j) A v C(i,j) = , nu (i,j) A. Khng mt tnh tng qut, ta c th gi s ng i ca anh ta xut pht t nh 1. Bt k ng i no (chp nhn c) ca ngi giao hng cng c th phn thnh: cung (1,k) vi k V\{1} v ng i t k ti 1 qua mi nh thuc V\{1} ng mt ln. Nu ng i ca anh ta ngn nht th ng i t k ti nh 1 qua cc nh thuc V\{1, k} phi ngn nht. Do

Chng II - Cac phng phap giai quyet van e

12

nguyn l ti u c tha mn. Gi d(j, S) l di ng i ngn nht t j n nh 1 qua mi nh k S (S V v S ) ng mt ln. Ta c cng thc truy hi: Nghim ti u cn tm l: R rng, d(j, ) = C(j,1), j [2, n]. T cng thc truy hi trn, ta tnh c d(j, S) vi mi S ch cha 1 nh. T , ta tnh c d(j, S) vi mi S ch cha 2 nh, ... C th tip tc, ta tnh c d(k, S) vi mi S = V\{1,k}, k [2, n]. T , ta tm c

d (1, V \ {1}) = min (C (1, k ) + d (k , V \ {1, k}))2 k n

d ( j , S ) = min (C ( j , k ) + d (k , S \ {k}))kS

nghim ti u. - C th, xt th nh hng c 4 nh v di cc cung c cho bi ma trn C nh sau:

0 5 6 8

10 0 13 8

15 9 0 9

20 10 12 0

Ta c: d(2, ) = C(2,1) = 5 d(3, ) = C(3,1) = 6 d(4, ) = C(4,1) = 8 T cng thc truy hi, ta tnh c: d(2, {3}) = C(2,3) + d(3, ) = 15 d(2, {4}) = C(2,4) + d(4, ) = 18 d(3, {2}) = C(3,2) + d(2, ) = 18 d(3, {4}) = C(3,4) + d(4, ) = 20 d(4, {2}) = C(4,2) + d(2, ) = 13 d(4, {3}) = C(4,3) + d(3, ) = 15 Tng t: d(2, {3, 4}) = min{C(2,3) + d(3, {4}), C(2,4) + d(4, {3})} = min {29, 25} = 25 d(3, {2, 4}) = min{C(3,2) + d(2, {4}), C(3,4) + d(4, {2})} = min {31, 25} = 25 d(4, {2, 3}) = min{C(4,2) + d(2, {3}), C(4,3) + d(3, {2})} = min {23, 27} = 23 Cui cng, ta c: d(1, {2, 3, 4}) = min{ C(1,2) + d(2, {3, 4}), C(1,3) + d(3, {2, 4}), C(1,4) + d(4, {2, 3})} = min {35, 40, 43} = 35 tm c hnh trnh ngn nht, gi K(j,S) l nh k, ti n t min ca cng thc truy hi tnh d(j,S). T , ta c: K(1, {2, 3, 4}) = 2 K(2, {3, 4}) = 4 K(4, {3}) = 3 Vy ng i {1, 2, 4, 3, 1} l ngn nht v t gi tr 35.

Chng II - Cac phng phap giai quyet van e

13

Tng t, c th p dng nguyn l qui hoch ng gii bi ton sau. - V d 3 (bi ton sp ba l): mt chic ba l c th cha c mt khi lng w. C n loi vt c nh s 1, 2, , n. Mi vt loi i c khi lng ai v c gi tr ci (cc tr w, ai, ci u nguyn dng, i = 1, 2, , n). Cn sp xp cc vt vo ba l ba l c gi tr ln nht c th c. Gi s rng mi loi vt c nhiu xp (bi tp).

II.2. Cc phng php th - saiII.2.1. Phng php vt cn, nguyn l mt li, phng php sinh v th, phng php nhnh cn * Bi ton 1: Tm tp LiGii = x D: tnh cht P(x) ng. a. Phng php vt cn * Thut ton vt cn V1.1: gii BT1 { B1: LiGii = ; B2: Trong khi D thc hin: x get(D); //ly khi D mt phn t x if (P(x)) LiGii = LiGii {x}; B3: if (LiGii == ) write(Khng c li gii); else XutLiGii(LiGii); } * Ch : - Nu hn ch min D cng b th thut ton chy cng nhanh.* V d 4: Cho trc cc s M, K nguyn dng. Tm cc b s nguyn dng x, y, z sao cho: Thay v chn D = {(x,y,z) N3 [1;M-2]3} (N l tp cc s t nhin), ta ly: D =

(BT1)

x+ y+z = M 3 3 3 x + y + z = K{(x,y,z) N3 [1; min{M-2; 3 K 2 }]3}. Khi lp trnh, ta th hin min D bi 3 vng for theo x, y, z: Tm_xyz(M, K) { Max = min(M-2, pow(K-2,1.0/3)); for (x = 1; x Max; x++) for (y = 1; y Max; y++) for (z = 1; z Max; z++) if (x+y+z==M && pow(x,3)+ pow(y,3)+ pow(z,3) == K) XutLiGii(x,y,z); } Tht ra, vn c th ci tin chng trnh trn thu hp min D hn na (bi tp) !

Chng II - Cac phng phap giai quyet van e

14

-

Da vo thut ton trn, ta c th sa i cht t gii bi ton tm kim ch mt li gii sau: * Bi ton 2: Tm mt li gii x0 D: mnh P(x0) ng. (BT2)

Thut ton tm mt li gii V1.2: gii BT2 { Trong khi D thc hin: { x get(D); //ly khi D mt phn t x if (P(x)) { XutLiGii(x); Dng; // im chnh khc vi thut ton V1 } } write(Khng c li gii); } * i vi mt lp bi ton no m c th tm c mt iu kin Q(x) cho li gii x, ta c th dng thut gii sau: vi mi x D m Q(x) ng th xut li gii. Ch rng, ngoi cc li gii trn, trong D cn c th cha cc li gii khc m khng tha iu kin ny ! Nguyn l mt li sau y l mt th hin ca tng trn. b. Nguyn l mt li: * tng: Nhng con c ln hn kch thc mt li ln nht s cn li trong li ! gii bi ton (1), nu chng minh c: nu tm c iu kin Q(x) ng vi mt vi x thuc mt min con ca D c kch thc nh hn th P(y) ng vi mi y min con th: Chia li D thnh n min con Di (mi min Di c kch thc nh hn ). Vi mi i = 1 .. n, xt nu tn ti x Di m Q(x) ng th P(x) ng.* V d 5: Tm nghim gn ng (vi chnh xc eps > 0) ca phng trnh f(x) = 0 trn min [a, b], vi f l hm lin tc. Ta bit nu f(xi).f(xi+1) < 0, vi [xi, xi+1] [a, b] v abs(xi+1-xi) < eps th xk =(xi+1+x i)/2 sai khc vi mt nghim chnh xc ca phng trnh f(x) = 0 khng qu eps/2 (mt iu kin tm nghim ca phng trnh lin tc). - Thut gii tm nghim gn ng: Nghiem_Gan_Dung(a, b, eps) { Sai_so = 1e-3; n = (b-a)/eps; xi = a;

Chng II - Cac phng phap giai quyet van e

15

for i=1 to n do { xi_1 = xi + eps; if (f(xi)*f(xi_1) < - Sai_so) writeln((xi + xi_1)/2); xi = xi_1; } }

c. Phng php sinh v th * tng: Sinh d liu (cu trc ca li gii c th khng xc nh trc khi gii m ch c to ra dn trong qu trnh tm kim li gii), sau kim tra n c tha iu kin dng hay khng ? - Thut ton sinh v th: Sinh_Th { Init; // khi to d liu xut pht Stop = False; While not Stop do { if (Accept(C)) Show(C); // nu phng n C l chp nhn th xut C if (Generate(C)=False) Stop = True; // nu khng sinh c thm phng n C no na th dng } }* V du 6: bi ton chnh hp lp chp k ca n phn t X = 0,1, ,n-1: x1, x2, , xk, vi xi X, 1 i k. Th tc Init s khi to 0 cho vect li gii x = x1, x2, , xk. Trong v d ny khng cn n iu kin kim tra Accept: ta lun cho n nhn tr ng. Th tc Generate(x, k) s tng dn x[j] mt n v, j bt u t k n 1, cho n khi x[j]=n-1 th khi ng li 0 cho x[j], ri gim j i mt. Khi no j=0 th dng vic sinh d liu. Boolean Generate(x, k) { j = k; // sinh chnh hp k tip while (j>0 and x[j] == n-1) do { x[j] = 0; j = j-1; } if (j==0) return False; else { x[j] = x[j]+1; return True; } } (Ngoi ra, ta c th gii bi ton ny bng cch ny s dng thut ton qui TryRiRc(i) trong II.2.3 vi iu kin kt thc nghim l i = k).

Chng II - Cac phng phap giai quyet van e

16

cc thut ton vt cn khng b bng n t hp v thi gian v khng gian nh, ta cn: gim phc tp tnh ton (khng tnh li cc hng trong vng lp, cn tn dng li cc kt qu tnh ton cc bc trc, dng k thut lnh canh n gin cc biu thc iu kin ca vng lp, ); thu gn khng gian tm kim. * Chin lc thu hp khng gian tm kim: Trong cc thut ton vt cn tm kim li gii trong khng gian D, i vi mt lp cc bi ton no , da trn cc nh gi ton cc (v d: duyt cc b t hp), cc b (v d: bi ton sp ba-l), nu ta tm ra c cc iu kin cn cho li gii, khi ta c th ci tin thut ton bng cch loi b ngay cc phng n trong D khng tha iu kin cn ny ! Khi : . hoc xt tp D (nu c th) ch cha nhng trng thi tho mn iu kin cn cho li gii m thi, do D c thu hp ngay; . hoc xt tp D nh thng thng, nhng trong cc thut ton vt cn, ta hiu get(D) l ly ra khi D phn t x: nu x khng tha iu kin cn cho li gii th loi ngay n (v thc hin vic ny cng sm ti mc c th trnh cc thao tc tha) ri ly ngay phn t x tip theo ca D, ngc li mi kim tra tnh cht P(x). Phng php nhnh cn l mt th hin ca chin lc ny. d. Phng php nhnh cn * tng: nhnh c cha qu phi nng hn trng lng qu. Khi xy dng thm thnh phn cho li gii, dng cc php kim tra n gin xc nh chi ph ti thiu n li gii (iu kin cn cho li gii). Loi b ngay cc hng i tip theo m chi ph ti thiu ny cn ln hn c chi ph thp nht hin thi (hng khng tha iu kin cn).* V d 7 (Bi ton ngi du lch): C n thnh ph (c nh s t 1 n n). Mt ngi du lch xut pht t mt thnh ph, mun i thm cc thnh ph khc, mi thnh ph ng mt ln ri li quay v ni xut pht. Gi thit gia hai thnh ph j, k khc nhau bt k u c ng i vi chi ph c(j,k). Hy tm mt hnh trnh c tng chi ph nh nht. Mt hnh trnh x[1], x[2], , x[n] l mt hon v ca {1, 2, , n}. Dng mng lgic Chan nh du cc thnh ph i qua: Chan[k] = True ngha l ngi du lch cha n thnh ph k. Nu vic n thnh ph k c tng chi ph d on thp nht hon thnh ton b hnh trnh ln hn chi ph thp nht hin thi th ta khng chn i tip k, ngc li th chn k. Gi s ta i qua j-1 thnh ph x[1], , x[j-1] vi chi ph l S. Nu i tip n thnh ph x[j] = k th chi ph t x[1] n x[j] l T = S + c[x[j-1],k]. on cn li ca hnh trnh gm (n-j+1) on na, vi chi ph trn mi on khng t hn Cmin (l chi ph trc tip thp nht gia hai thnh ph khc nhau trong ma trn chi ph). Tng chi ph thp nht hon thnh hnh trnh l: T + (n-j+1) * Cmin = S + c[x[j-1],k] + (n-j+1)*Cmin

Chng II - Cac phng phap giai quyet van e

17

gii bi ton ny, ta s gi th tc chnh TryRiRc(0, 2). TryRiRc(S, j) { for k =1 to n do if (Chan[k]) { T = S + c[x[j-1],k]; if (T + (n-j+1)*Cmin < Min) // Min = MaxInt trc th tc Try { x[j] = k; Chan[k] = False; if ( j == n) { if (T + c[k, xp] < Min) // xp l thnh ph xut pht { y = x; // mng y lu tr li gii tt nht tm thi Min = T + c[k, xp]; } } else Try(T, j+1); Chan[k] = True; } } }

II.2.2. Phng php ngu nhin Phng php ny c s dng khi cha bit thut ton no hiu qu hay cha c nhiu thng tin gii bi ton. a. Phng php Monte Carlo * tng: Cho hai hnh S = [a, b]m Rm, gi s bit cng thc tnh o S() ca S ph thuc vo tham s no cn tnh. Tung ngu nhin n ln (c lp) vect x = {x1, x2, , xm} (c phn phi u trn ), gi nS l s ln x S. Khi , vi n ln, ta c: S() (b-a)m.nS/n. T rt ra tham s cn tnh theo s liu thc nghim nS, n: S-1((b-a)m.nS/n) * Thut ton ngu nhin: { nS = 0; for (j=1; j n; j++) { for (k=1; k m; k++) x[k] = random(a,b); // to if (x S) nS = nS + 1; } S-1((b-a)m.nS/n); }

cc s ngu nhin [a; b)

* V d 8: Da vo phng php trn, vi m = 2, a = 0, b = 1 v S l hnh trn bn knh R=, ta c th tnh s nh sau: = S/R2 4*nS/n x S < --- > (x1 )2 + (x2 )2

Chng II - Cac phng phap giai quyet van e

18

x2

0

R=

x1

- Trong mt s trng hp, ta c th dng PP th ngu nhin kim tra mt tnh cht hay gi thuyt no .. V d 9: Kim tra gi thuyt Fermat bng thc nghim: N 2 (N kh ln) l nguyn t nu: xN-1 mod N = 1, x nguyn dng < N ? ph hp vi iu kin thc nghim trn my tnh, ta xt N v s ln lp n ln va phi. Ta c thut ton sau: { for (j = 1; j n; j++) { x = 1 + random(N-1); // 1 x < N y = xN-1 mod N; // hy ci tin cch tnh ny hiu qu hn trn my tnh ! if (y 1) {cout DS) DS = DS + k; // khi d(x) 0 sao cho i vi mi cung a A, c(a) th th tc A* dng v cho kt qa l ng i p t no ti n* DICH sao cho g(n*) min. - Gi s cc th tc Ai* s dng hm nh gi: fio(n) = gio(n) + hio(n), i = 1, 2 Thm vo , h2o tha mn iu kin h2o (m) - h2o (n) h(m, n), trong h(m,n) l di ng i ngn nht t m ti n v vi mi n N : 0 h1o(n) h2o (n) h(n). Khi : s nt a vo tp DONG ca th tc A2* bao gi cng nh hn s nt i vi th tc A1*. - Ba nhn t nh hng n sc mnh heuristics l: gi ca ng i nhn c, s nh phi tho trong qu trnh x l, chi ph tnh ton gi tr hm ho.

- Nhn xt: . Trong s cc th tc tm kim s dng tri thc b sung heuristic ho, th tc s dng trit cc thng tin v cc nh (ho = h v fo = g + h) l tt nht v th tc AT (fo = go, ho = 0) l ti nht. . Nu ch cn tm mt ng i no ti nh ch th c th khng cn tnh n go, tc l fo = ho . Trong mt s trng hp, nu khng s dng go th s nt phi tho c th tng ng k so vi khi s dng go. - Mt s heuristics . La chn theo giai on: Qu trnh tm kim c th tin hnh theo tng giai on, mi giai on ch gi li mt tp con no cc nh trong tp MO, chng hn cc nh vi gi tr fo gn nh nht. . Hn ch s nh con: Mi ln tho mt nh n, ch gi li nhng nh m B(n) sao cho fo(m) thuc ln cn ca fo nh nht.

Chng II - Cac phng phap giai quyet van e

48

. Xy dng dn cc nh con: Mi ln tho nh con ch xt ti mt vi nh c trin vng nht, u tin ch ch n nh con quan trng nht, cn cc nh khc khi no cn mi a ra. II.3.2. Nguyn l tham lam Vi thut gii s dng nguyn l tham lam gii bi ton ti u BT3*: ta s dng cc thut ton TmKim vi mt t iu chnh: ch chn li gii tt nht trong mt bc k tip (ch cha chc tt nht trong c qu trnh), do khng ci t c ch quay lui. u im ca nguyn l ny l trong mt s trng hp, c th nhanh thy li gii. Nhng nhc im ca n l trong cc trng hp khc, c th tn ti li gii ti u nhng thut ton ny khng tm ra. Khi , do khng d phng c ch quay lui nn c th khng tm ra li gii, mc d n vn tn ti ! (Tham ci li trc mt m khng n ci li ton cc v khng d phng lu li ng i qua quay lui khi lc hng!) ThamLam(x0, DICH) DONG = ; // c th chn DONG c cu trc stack MO = x0; if (x0 DICH) XutLiGii(x0, ); Dng; while (MO ) x = get(MO); // ly mt phn t x ra khi tp MO Push(x, DONG); // a x vo tp DONG if ( phn t y tt nht trong B(x)) // lun tn ti nu B(x) ! if (y DICH) XutLiGii(y, DONG); Dng; MO = MO Uy; // a y vo tp MO write (Khng tm thy li gii); Tht ra MO ch gm khng qu 1 phn t ! V vy, c th thay thut ton trn bi: ThamLam2(x0, DICH) DONG = ; // c th chn DONG c cu trc stack // hay if (x0 DICH) if (P(x0)) XutLiGii(x0, ); Dng; x = x0; while ( phn t y tt nht trong B(x)) // lun tn ti nu B(x) ! Push (x, DONG); // a x vo tp DONG if (P(y)) // hay if (y DICH)

Chng II - Cac phng phap giai quyet van e

49

XutLiGii(y, DONG); Dng; x = y; write (Khng tm thy li gii); - V d 25: (Traveling Saleman) Xy dng mt hnh trnh TOUR c chi ph nh nht COST cho bi ton i qua n thnh ph, vi ma trn chi ph C, sao cho bt u t thnh ph u v i qua mi thnh ph ng mt ln.Bin th ca thut gii ThamLam2 l thut gii GTS gii bi ton ngi bn hng du lch trn y. Thut gii GTS { // Khi to TOUR = ; COST = 0; v = u; // thm tt c cc thnh ph for k = 2 to n do { // Chn cnh k tip l cnh c chi ph nh nht t v n // cc nh cha c s dng w: TOUR = TOUR + ; COST = COST + C(v, w); v = w; // khi w c s dng } // Chuyn i hon thnh TOUR = TOUR + ; COST = COST + C(v, u); }

Minh ha vic thc hin:

1 2 7 5 1 4 4 3 C = 2 4 1 2 7 4 1 3 5 3 2 3

1 5 3 5 3 2 7 4 2

1 2 4 4

1

3

Chng II - Cac phng phap giai quyet van e

50

1. TOUR = ; COST = 0; u = 1; w = 2; 2. TOUR = ; COST = 1; u = 2;

1 1 2 1

w = 5; 5 3. TOUR = {, }; COST = 4; u = 5; 1 w = 3; 5 4. TOUR = {, , } COST = 6; u = 3; 1 w = 4; 5 2 1 3 2 1 3

1 2

2 3

2 3 3 1 4 5. TOUR = {, , , }; COST = 7; u = 1; TOUR = {, , , , }; COST = 14;

Tm min trong cc phn t cn li ca hng. Xut pht ct no th b ct 1 2 4 5 3 1 2 7 5 1 4 4 3 2 4 1 2 7 4 1 3 5 3 2 3

Chng II - Cac phng phap giai quyet van e

51

Do khng quay lui nn li gii va tm cha chc l ng i ngn nht. Tht vy, li gii va tm c chiu di ln hn ng i: TOUR2 = {, , , , } vi COST2 = 10. II.3.3. Nguyn l hng ch, phng php leo ni (Hill-Climbing) - Vi thut gii s dng nguyn l hng ch hay leo i (Hill climbing) gii bi ton ti u BT3*, ta s dng cc thut ton TmKim vi mt t iu chnh, trong khng ci t c ch quay lui ! u im ca nguyn l ny l trong mt s trng hp, c th tm thy rt nhanh li gii. Nhng nhc im ca n l trong nhiu trng hp khc, c th tn ti li gii ti u nhng thut gii ny khng tm ra, hoc n ch tm thy li gii ti u a phng! (Ch ch n ti u a phng trc mt, khng d phng lu li ng i qua quay lui khi lc hng, khng bit li mt bc tin nhiu bc hn!) Leoi(x0, DICH) DONG = ; // tp DONG c cu trc stack MO = x0; if (P(x0)) // hay if (x0 DICH) XutLiGii(x0, ); Dng; while (MO ) x = get(MO); // ly mt phn t x ra khi tp MO Push(x, DONG); // a x vo tp DONG if ( phn t tt nht y B(x) m tt hn x) // cha chc tn ti d B(x) ! if (P(y) ng) // hay if (y DICH) XutLiGii(y, DONG); Dng; MO = MO Uy; // a y vo tp MO write (Khng tm thy li gii); Tht ra MO ch gm khng qu 1 phn t ! V vy, c th thay thut ton trn bi: Leoi2(x0, DICH) DONG = ; // tp DONG c cu trc stack x = x0; Push(x, DONG); if (P(x0)) XutLiGii(DONG); Dng; while (B(x) and phn t tt nht y B(x) m tt hn x) //cha chc tn ti d B(x) !

Chng II - Cac phng phap giai quyet van e

52

Push(y, DONG); // a x vo tp DONG if (P(y)) // hay if (y DICH) XutLiGii(DONG); Dng; x = y; write (Khng tm thy li gii); - Mt bin th ca thut gii Leoi_2 l th tc sau: Hill_Climbing { - Bc 1: n = nh xut pht; - Bc 2: if (n DICH) then Dng; - Bc 3: else Chn h0(ni) b nht trong s mi nh con ni B(n) (gi nh ny l Next(n)); - Bc 4: if (h0(n) < h0(Next(n)) then Dng; else n = Next(n); - Bc 5: Goto 2; }- Nhn xt: khc phc nhc im ca thut ton: nhanh ri vo ln cn ca ti u a phng m khng thot ra c, ta c th kt hp thm thut gii di truyn GA.

II.3.4. Nguyn l sp th t, nguyn l trng khp nht Ta minh ha cc nguyn l trn qua bi ton phn cng cng vic trn cc my v bi ton xp hng vo container. - V d 26: (Bi ton phn cng cng vic) Gi s c n my: P1, . . ., Pn v m cng vic: J1, . . ., Jm. Cc cng vic c tin hnh ng thi v c th c thc hin trn bt k my no. Mi ln mt cng vic c a vo my, my ch dng khi cng vic hon tt. Thi gian hon tt cng vic Ji l ti. Thi gian np cng vic vo my l 0. Vn t ra l: B tr cng vic vo cc my sao cho tng thi gian x l ht mi cng vic l b nht. M hnh 1: . 3 my: P1, P2, P3. . 6 cng vicJi ti 1 2 2 5 3 8 4 1 5 5 6 1

Chn phng n: (J2, J5, J1, J4, J6, J3 ); T = 12.

Chng II - Cac phng phap giai quyet van e

53

P1: P2:

J2 J5

5 5 J3 12

P3: J1 J4 J6 2 3 4

* Nguyn l sp th t: Sp xp cng vic theo th t thi gian gim dn. B tr cng vic theo th t trn: L* = (J3, J2, J5 , J1, J4, J6 ); T = 8. y l li gii ti u. 8 P1: J3 P2: P3: J2 J5 5 J1 7

J4 J6 5 6 7

M hnh 2(Phn v d v nguyn l sp th t khng cho li gii ti u) . 2 my: P1, P2. . 5 cng vic Ji 1 2 3 4 5 ti 3 3 2 2 2 Phng n:(J1, J2, J3, J4, J5 ) khng ti u (sp gim dn theo thi gian): T=7. Phng n ti u l: L* = (J1, J3, J4, J2, J5 ); T = 6. - V d 27.1: Bi ton ng gi (xp hng vo container) Cho dy cc gi hng:1, 2, 3, 4, 6, 7, 7, 9; kch thc container: 13. Vn t ra: cn xc nh s container t nht cha ht hng. - Cc cch (heuristics) xp thng khc nhau vo container: H1: - Th t: ty - Cch xp ty . H2: - Th t: Gim dn theo kch thc - Cch xp: Ln trc, nh sau. Nguyn l trng khp nht H3: - Th t: ty - u tin xp trng kht. H4: - u tin xp trng kht. - Sau xp theo Th t: Gim dn ca kch thc

Chng II - Cac phng phap giai quyet van e

54

p dng nguyn l ny vo v d trn, ta c phng n ti u: (9, 7, 7; 4, 6, 3; , , 2; , , 1;) cha trong 3 container. 4 6 9 7 1 2 3 7

- V d 27.2: (Phng n thu c t nguyn l trng kht nht khng l phng n ti u !) Cho dy cc gi hng:2, 2, 5, 6, 8, 9; kch thc container: 16. . Phng n thu c t nguyn l trng kht nht: cn 3 thng . Phng n ti u ch cn 2 thng ! (Bi tp) - Nhn xt: i vi cc bi ton phc tp v a dng trong thc t, nu ch p dng ring mt phng php, tng hay mt nguyn l heuristic ring r th khng th gii quyt ni. Khi ta cn p dng chin lc lai nhiu phng php, tung v nguyn l gii mt cch ph hp.

Chng II - Cac phng phap giai quyet van e

55

Bi tp1. Tm biu thc gii tch tng minh t cc h thc truy hi sau: a. +an = an-1 + 2n, n 1 a0 = 1 + b. an = 2an-1 + 1, n 1 a0 = 1 c. *Fn = b1 Fn-1 + b2 Fn-2, n 2 vi {F0, F1}, b1, b2 cho trc (trng hp tng qut) d. +Dy s Fibonacci: F0 = 0, F1= 1 Fn = Fn-1 + Fn-2 , n 2 e. *un 4un-1 + 4un-2 = 2n, n 2 u0 = 0, u1 = 1 f. *T(n) = 2T(n/2) + n 1, n 2 T(1) = 1 g. un = un-1 - un un-1, n 1 u0 = 1 h. **c0 = 0, c1 = 0cn = n + 1 + 2 n 1 c k , n 2 n k =1

2. Th hin phng php chia trbng cc thut ton qui gii cc bi ton sau: a. +Tm min v max ca mt dy s. b. *Tro i hai phn ca mng (khng nht thit c di bng nhau) m khng dng mng ph. Vit thut ton (bng nhiu phng php khc nhau, nu c th) v ci t chng trnh gii cc bi ton sau (trong c cc v d c gii thiu trong l thuyt): (Nguyn l qui hoch ng) 3. +V d 2: bi ton ngi giao hng. 4. V d 3 (bi ton sp ba l c gi tr ln nht): C n loi vt c khi lng {ai} v gi tr {ci} vo mt ba l c khi lng w (nguyn dng) . Gi s mi loi vt c nhiu xp. Hy tm cch xp sao cho t gi tr cao nht. 5. Tm dy cc h s ca nh thc. 6. Bi ton i tin: C n loi tin A1, A2, , An (nguyn dng). Hy tm cch dng cc loi tin ny c c s tin L cho trc (nguyn dng v khng b hn loi tin nh nht) sao cho tng s t l t nht.

Chng II - Cac phng phap giai quyet van e

56

(Phng php vt cn n gin hoc vt cn c quay lui) 7. +V d 4. 8. Bi ton 8 qun hu. 9. +Bi ton m i tun (ch c th s dng phn t cm canh). 10. *Tm cc tp con ca dy A cc s nguyn dng sao cho c tng bng mt s nguyn dng M cho trc (sp va kht cc vt vo ba l). (Nguyn l mt li) 11. +V d 5: tm nghim gn ng ca phng trnh f(x) = 0 trn [a, b], vi f(x) lin tc trn [a,b]. (Phng php sinh v th) 12. +V d 6: bi ton tm cc b chnh hp lp. 13. Tm cc b t hp, chnh hp (khng lp). (Phng php nhnh cn) 14. +V d 7: bi ton ngi du lch. (Phng php Monte-Carlo) 15. +V d 8: tm s t cng thc tnh din tch hnh trn hoc th tch hnh cu. 16. +V d 9: Kim tra gi thuyt Fermat bng thc nghim. 17. +Tnh gn ng din tch hnh phng gii hn gia trc honh v th hm s lin tc khng m trn on [a, b]. (Thut gii di truyn - GA) 18. *V d 10: gii phng trnh x2 = 25. (Nguyn l m cung ) 19. +V d 11: bi ton m cung. 20. +Da trn thut ton TmKim nhm tm li gii u tin cho bi ton BT3, ta c th ci bin thu c thut ton vt cn di dng lp VtCn tm mi li gii ca bi ton sau (bi tp): (BT4) - Bi ton 4: Problem_4(G = (S, A), x0, DICH) Cho th G = (S, A), vi nh xut pht x0 S, tp ch DICH S. Hy tm mi ng i t x0 n mt nh no thuc tp DICH. (Cc phng php tm kim trong khng gian trng thi theo chiu rng, chiu su, su dn, cc tiu) 21. +V d 12: bi ton Toci hay n2 1 s.

Chng II - Cac phng phap giai quyet van e

57

(Cc phng php tm kim trn th V/HOC theo: chiu rng, chiu su, su dn, cc tiu) 22. +V d 13: bi ton thp H Ni vi n = 2, 3. (Phng php GPS) 23. Bi ton chng minh tnh hng ng ca cc biu thc lgic sau: a. + [a (b c)] [c b a] b. *[a (ac b) (ab cd)] d (Phng php heuristic) 24. Tm thut gii heuristics gii bi ton thp H Ni vi: a. +n = 3 b. *n 2 bt k. 25. +Bi ton Toci hay n2 1 s . 26. +Tm ng i ngn nht t thnh ph A n thnh ph B da trn bn cc thnh ph sau y, trong ngoi cc khong cch tht s gia hai thnh ph c ch ra bi cc s trn cc cung, cn c dy h0 cha chiu di c lng t mt thnh ph bt k n B l khong cch ng chim bay t thnh ph n thnh ph B. A 366 B 0 C D F G L M O P R S T Z 160 242 178 77 244 241 380 98 193 253 329 374 Dy h0 cha khong cch c lng t cc nh n B O71

Z75 151 140 118 88

A S99

F211

R97

T111

L70

146

P100

B66

M75

G120

D

C

(Bn thnh ph)

Chng II - Cac phng phap giai quyet van e

58

(Nguyn l tham lam) 27. +V d 25: bi ton ngi du lch. 28. *Bi ton t mu (trn th). (Nguyn l leo i) 29. Tm ng i t nh 1 n mt trong cc nh thuc tp DICH = {5} trn th sau vi gi thnh ln nht: 5 1 7 4 5 4 2 3 1 2 3 6 1 (Nguyn l sp th t v nguyn l trng khp nht ) 30. +V d 26: bi ton phn cng cng vic. 31. +V d 27: bi ton sp xp vo container.

Chng III - Bieu dien va x ly tri thc

59

Chng III BIU DIN V X L TRI THC III.1. Khi nim v biu din v x l tri thcIII.1.1. T d liu n tri thc D liu Thng tin Tri thc Siu tri thc v C s tri thcSiu tri thc Mc tru tng Tri thc Thng tin D liu D liu th, cha c x l

- D liu (Data): c biu din di dng chui s, k t hay hn hp c hai loi m t bn thn n khng c ngha c lp. - Thng tin (Information): l d liu c t chc c y ngha i vi ngi nhn n. - Tri thc (Knowledge): l nhng thng tin lin quan n mt vn no c t chc c th gii quyt c vn . Siu tri thc (Meta Knowledge) l loi tri thc mc cao, n c tnh khi qut v tru tng hn tri thc. - C s tri thc (CSTT, Knowledge Base): l tp hp cc tri thc lin quan n mt vn c s dng trong mt h thng tr tu nhn to. N khng ch bao gm cc s kin m cn cha cc lut suy din v n c th c sp xp li khi c thm mt tri thc mi lm thay i mi lin h gia chng. H chuyn gia (Expert system) l mt h c s tri thc (Knowledgebased system) c xy dng t tri thc ca cc chuyn gia trong mt lnh vc no .Chng Trnh = Cu Trc D Liu + Thut Ton

H CHUYN GIA = CSTT + SUY LUN

Chng III - Bieu dien va x ly tri thc

60

III.1.2. Mt s c trng ca tri thc: t gii thch ni dung, c cu trc (s phn cp gia cc khi nim v mi quan h gia chng), c tnh lin h gia cc tri thc, tnh ch ng. III.1.3. Phn loi tri thc C th phn loi tri thc theo cc quan nim sau: * Tri thc tt nh v bt nh: - Tri thc tin nh (hay tt nh) : c lp vi cm gic, c tnh ph qut v phi mu thun - Tri thc tt yu (hay bt nh): thu c t kinh nghim m tnh ng sai ca n ch c th kim tra bng cm gic hay kinh nghim vi tin cy no v c th c mt mc mu thun no . * Tri thc tn ti di hai dng c bn: - Tri thc nh lng: thng gn vi cc loi heuristics khc nhau, n ph thuc vo cht lng cc hm nh gi heuristic v c th c dng lm c s chn cc chin lc iu khin. - Tri thc nh tnh gm 3 dng chnh: . Tri thc m t (hay khai bo): cho nhng thng tin v mt s kin, hin tng hay qu trnh m khng a ra thng tin v cu trc bn trong cng nh phng php s dng bn trong tri thc . N cho php m t cc mi lin h, rng buc gia cc i tng. . Tri thc th tc: cung cp cc phng php cu trc tri thc, ghp ni, suy din v tng hp cc tri thc mi t cc tri thc c. N to c s cho cng ngh x l tri thc: suy din, qui din, qui np, hc tri thc. . Tri thc iu khin: dng iu khin, phi hp cc ngun tri thc th tc v tri thc m t khc nhau. III.1.4. Cc phng php biu din tri thc: thng qua lgic (lgic c in hay tt nh: lgic mnh hay v t; lgic bt nh: lgic tnh hung, lgic xc sut, lgic kh xut, lgic m), lut sinh, mng ng ngha, khung (frame), ... III.1.5. Cc phng php x l tri thc: chuyn i, suy lun (chng minh t ng, cc phng php gii quyt vn , ), tng hp tri thc (lin kt, sp xp, khi qut ho, ).

Chng III - Bieu dien va x ly tri thc

61

Trong bt k mt h thng biu din tri thc u c cha 3 yu t: ngn ng biu din, c ch suy dn v cng c to lp c s tri thc cho tng lnh vc c th.

III.2. Mt s phng php biu din tri thcIII.2.1. Biu din tri thc nh lgic a. Lgic c in (hay tt nh) gm : lgic mnh , lgic v t * Lgic mnh : - Xt cc mnh p ch c th nhn mt trong hai gi tr lgic: ng (True, 1) hoc sai (False, 0). - Cc php ton lgic ni kt cc mnh : php hi (and, , v), php tuyn (or, , hoc), ph nh (not, , khng), ko theo (, ), tng ng (, , ), - Vi php bin i tng ng: . (a b) ((a b) (b a)) . (a b) (a b) (b a)( ai ) = V (ai ); ( V ai ) = (ai ) : ( DeMorgan)1i n 1i n 1 i n 1i n

. a (b c) (a b) (a c); a (b c) (a b) (a c): phn phi

. Cc php ton , c tnh giao hon , kt hp, ly ng.

- Cc php ton lgic c thc hin theo th t u tin gim dn sau: ph nh, hi, tuyn, ko theo, tng ng. - Mi biu thc logic mnh u c th a v dng biu thc tng ng ch cha cc php , v di dng: . chun hi:1 i n 1 ki m i

( V a ki )

. chun tuyn:1 i n 1 ki m i

V ( a ki )

trong : aki = pki hoc aki = pki, vi pki l mnh n. - Gi tr chn l ca mt biu thc c th c tnh da trn bng chn l. Nu biu thc c n bin mnh khc nhau th xc nh gi tr chn l ca n ta phi xt n 2n b gi tr ca cc bin mnh (hn ch l s b bng n t hp).

Chng III - Bieu dien va x ly tri thc

62

- chng minh mt biu thc lgic mnh l ng nht ng, ta c th dng: bng chn l, cc php bin i tng ng, s lgic, phng php GPS, cc thut ton: Robinson, Wong Havard (Vng Ho), suy din tin, suy din li m ta s xt trong phn sau. - Mt lut suy din dng chun Horn c biu din nh sau: q1 .... qm (1) p1 .... pn Ta thng gp cc trng hp c bit sau: . n = 0, m = 1: biu din cc s kin (facts) q = F(t1, ...., tk); . n 1, m = 1: ta c dng chun s cp dng biu din cc lut (rules): q (2) p1 .... pn Mi lut (1) u c th biu din di dng (2): (1) (p1 .... pn q2 .... qm q1}) Qu trnh suy din c th da trn 2 nguyn l:Modus Ponens : A, A B B B, A B Modus Tollens : A

- C s tri thc biu din bng logic mnh : da trn tp cc s kin Facts v tp cc lut suy din Rules (tng t cch xy dng mt chng trnh trong ngn ng lp trnh PROLOG). * Lgic v t: - V t p(x1, x2, ... , xn) l mt pht biu cha cc bin mnh x1, x2, ... , xn sao cho khi chng nhn cc gi tr lgic c th th n cng nhn mt trong hai gi tr lgic ng hoc sai. - Trong logic v t, ngoi cc php ton trong logic mnh , ngi ta cn s dng lng t tn ti (k hiu l ) v lng t vi mi (k hiu l ). - V d 1: V t p(x, y, z) biu din ng thc: x.y = z, cho ta mt v t ca 3 bin thc x, y, z. Tnh cht giao hon ca php nhn c din t: x, y p(x,y,z) p(y,x,z) - Logic v t cho php din t hu ht cc khi nim v nguyn l khoa hc c bn, nht l ton hc v vt l. C 2 phm vi ng dng c bn ca lgic hnh thc l: gii quyt vn v chng minh nh l t ng.

Chng III - Bieu dien va x ly tri thc

63

- Ngoi vic dng lgic v t thng thng (lgic v t bc 1), ngi ta cn nghin cu thm lgic v t bc cao. Lgic v t bc n l lgic v t m cc bin v t ca n thuc lgic v t bc n-1. * u im ca phng php lgic: - L ngn ng biu din kiu m t; - C kh nng suy din vi cc c ch quen thuc: modus ponens, modus tollens; - Kh trc quan i vi ngi s dng; - Kh gn gi v mt c php vi cc cu lnh ca ngn ng lp trnh logic nh PROLOG; - C th dng m t cu trc m hnh v x l ng m hnh; - C th kim tra tnh mu thun trong c s tri thc; - Tnh mun ho cao, do c th thm, bt, sa cc tri thc kh c lp vi nhau v c c c ch suy din. * Nhc im ca phng php lgic: - Mc hnh thc ho qu cao, dn ti kh hiu ng ngha ca cc v t khi xem xt chng trnh. - Nng sut x l thp (kh khn c bn trong qu trnh suy din l c ch hp v suy din vt cn). - Do tri thc c biu din bng logic v t nn cc u th s dng cu trc d liu khng c khai thc trit . b. Lgic bt nh gm: lgic tnh hung (cc kt xut ca n c th rt ra t cc tnh hung khng gian v thi gian xc nh c lin quan vi nhau), lgic xc sut, lgic kh xut v lgic m. III.2.2. Biu din tri thc nh lut sinh: thng qua cc lut nu th: Nu P1, P2, v Pn th Q , hay: P1 P2 Pn Q Cch biu din ny c p dng trong: - Lgic mnh v v t: vi P1,P2,, Pn l cc biu thc lgic v l php ko theo - Ngn ng lp trnh: lut sinh l cc cu lnh if (P1 and P2 and and Pn) then Q ; - Ngn ng t nhin: lut sinh l php dch. - H chuyn gia: l mt h c s tri thc, gm: . CSDL cc s kin F (Facts) : {f1, ..., fn} . Tp lut R (Rules) gm cc lut c dng:

Chng III - Bieu dien va x ly tri thc

64

f i1 f i2 K f ik q

. Phng php suy din tin v li, chng hn:f i1 , f i 2 , K , f i k F q F

III.2.3. Biu din tri thc nh mng ng ngha (Semantic Network) - V d 2: Ta c th biu din CSTT: . An l ngi . Ngi thch suy ngh . Ngi bit lao ng thng qua s III.2.3.1. Theo c ch lan truyn thng tin theo cc cung ni c th hin bng cc mi tn, ta thu c: An thch suy ngh v bit lao ng. Anl

NgiThch bit

Suy ngh(Hnh III.2.3.1)

Lao ng

- Biu din mng ng ngha bng th: Mng ng ngha l th c hng m rng: G = (V, R), trong : V = {x1, x2, , xn} l tp cc nh, R = {r1, r2, , rm} l tp cc quan h nhiu ngi trn V. - c im ca mng ng ngha: trc quan, c tnh k tha v lan truyn thng tin; kh kim tra tnh phi mu thun, - ng dng ca mng ng ngha: trong x l ngn ng t nhin (d dng hn trong vic hiu ng ngha ca cu, do c th tin hnh vic c v dch cc bi text), h chuyn gia, gii cc bi ton thng minh (chng hn, gii bi ton h thc lng trong tam gic), III.2.4. Biu din tri thc bng Frame - Tng t nh bn ghi (record), nhng ngoi cc trng d liu, khung (frame) cn c th c cc trng l cc thao tc, th tc hay lut suy din no , cc trng ny c th k tha cc tnh cht t cc khung khc (tng t nh khi nim lp trong lp trnh hng i tng OOP). Frame c tnh cu trc rt cao.

Chng III - Bieu dien va x ly tri thc

65

- V d: Frame MyTnhCNhn; { L mt dng ring ca MyTnhinT;KinTrc Sa MnHnh} {8 bits, 16 bits, 32 bits}; {1, .., 5}; Th tc xc nh tnh nng ca mn hnh;

Ngoi ra, ngi ta cn c th biu din tri thc bng b ba lin hp OAV (Object - Attribute Value), mng nron (ANN - Artificial Neural Network),

III.3. X l tri thc tt nh bng phng php suy din logicIII.3.1. Cc c ch lp lun vi tri thc tt nh - Suy din (Deduction, din dch): modus ponens, modus tollens, cc kiu suy din: tin v li. - Qui din (Abduction, tng t): Cho trc: A B. . A ~ A A B . B ~ B A B . A ~ A & B ~ B A B - Qui np (Induction): hon ton v khng hon ton Sau y ta s xt cc thut ton v thut gii nhm chng minh t ng cc biu thc lgic mnh . Bi ton A (BTA):Xt bi ton lgic mnh sau c hng ng hay khng:1 i m

GTi V KL j1 j m

vi {GTi , KLj} l cc biu thc lgic mnh bt k. Ti sao ta ch xt bi ton dng trn y (bi tp) ? III.3.2. Thut ton Vng Ho (Wong Havard) gii BTA * tng: p dng chin lc Chia tr nhm tch bi ton xut pht thnh cc bi ton con dng V n gin hn. Bi ton ban u s c gii khi v ch khi mi bi ton con s cp gii c.

Chng III - Bieu dien va x ly tri thc

66

* Trc tin, ta a v tri VT (hay v phi VP) v dng chun hi (hay chun tuyn tng ng) bng cch: . Thay cc php ton tng ng (nu c) bi cc php ton ko theo . Thay cc php ton bi cc php ton , . Dng cc lut De Morgan b cc du ca nguyn mt nhm mnh . Dng cc lut phn phi (nu cha gp dng chun cn tm) ca php tuyn i vi php hi (hay ca php hi i vi php tuyn tng ng). Trong thut ton Wong, sau khi a VT v dng chun hi v VP v dng chun tuyn, ta s s dng cc qui tc sau (hy chng minh ti sao ta c quyn s dng chng ? Bi tp). - Th tc Chuyn(VT,VP): thay cc du cc nhm chnh bn VT v cc du cc nhm chnh bn VP bi du phy; chuyn v cc mnh chnh dng ph nh p t v ny sang v kia v b i du (ch cn p). Ni cch khc, ta c th xem du phy (,) bn VT l php hi v du phy (,) bn VP l php tuyn. . V d 3: Kim tra tnh hng ng ca biu thc lgic mnh sau: VT (a) (b c) (a b) (b) c VP Cc nhm chnh trong: v tri VT l (a) v (bc), v phi VP l (ab), (b) v (c). VT (a) (b c) a, b c VT b, b c (a b) (b) c VP a b, b, c a b, a, c VPChuyn Chuyn

- Hm lgic Tch(VT,VP): tch mi nhm tuyn chnh trong VT (hay mi nhm hi chnh trong VP) thnh nhiu bi ton con dng V. Mi bi ton con gm mt mnh trong nhm chnh v gi nguyn cc nhm chnh khc. Nu tch c th th tc Tch(VT,VP) nhn gi tr true; nu ngc li, n nhn tr false. Vi v d 3 trn y, ta c s bin i nh hnh III.3.2.1 sau y. - Vi mi bi ton con, nu mi v ca n c mt mnh n ng c lp ging nhau th n c chng minh (hng ng). Bi ton xut pht ch c chng minh (hng ng) khi mi bi ton con ca n c chng minh. Ni cch khc, bi ton xut pht khng hng ng nu c tn ti mt bi ton con ca n

Chng III - Bieu dien va x ly tri thc

67

khng hng ng (khng th p dng qui tc tch cng nh chuyn c na v hai v khng c chung mt mnh n ng c lp no c). VT b, b c b, b a b, a, cChuyn Tch Tch

a b, a, c VP b, c a b, a, cTch

b a b, a, c, b b a, c, b CM b a, c, b CM

b, c a, c CM

b, c b, a, c CM

(Hnh III.3.2.1) Vy bi ton nu ra trong v d 3 l hng ng. * Thut ton Vng Ho { VT = VP = ; for i = 1 to m do { ChunHi(GTi); VT VT U {GTi }; } for i = 1 to n do { ChunTuyn(KLi); VP VP U {KLi }; } P {(VT,VP)}; while (P) do { (VT,VP) get(P); if (VT VP = ) then { Chuyn(VT,VP); if (VT VP = ) then if (not(Tch(VT,VP))) then exit(Khng thnh cng); // BT khng hng ng } } write(Thnh cng); // BT hng ng } * Nhn xt: . Thut ton Wong dng sau mt s hu hn bc v cho ra thng bo Thnh cng nu v ch nu t cc gi thit GT1, ..., GTm c th suy ra mt trong cc kt lun KL1, ..., KLn. . Nu s cc php ton lin kt trong GTi v trong KLj l M th thut ton s sinh ra t M n 2M dng (VT,VP) P (bng n t hp nu M kh ln !).

Chng III - Bieu dien va x ly tri thc

68

* V d 4 (biu thc hng ng): C th chng minh rng: [(a b c) (b c d) a b] d ? a VT v dng chun hi v VP v dng chun tuyn: VT {a b c, b c d, a, b}: dng chun hi VP {d}: dng chun tuyn Ta c th biu din qu trnh gii ca thut ton Wong thng qua th suy din hay th li gii nh sau: a b c, b c d, a, b da, b c d, a, b d; b c d, a, b d, a CM b, b c d, a, b d; b c d, a, b d, b CM c, b, a, b c, a, b CM d, b d c, c, a, b c, a, b CM d, c d c, d, a, b d CM c, b c d, a, b d

( th li gii trong thut ton Wong) * V d 5 (biu thc khng hng ng): Kim tra tnh hng ng ca biu thc: [(a b c) a] c ? (1) a VT v dng chun hi v VP v dng chun tuyn: VT {a b c, a}: dng chun hi VP {c}: dng chun tuyn th li gii: a b c, a c a, a c b, a c a c, b(2)

c, a c

Chng III - Bieu dien va x ly tri thc

69

BT con (2) sai v khng th tch, chuyn v khng c mnh chung. Do bi ton (1) xut pht cng sai. III.3.3. Thut ton Robinson gii BTA * tng: S dng: . phng php chng minh phn chng: [a b ng] [a b sai hay mu thun] . nguyn l hp gii: (a b) (a c) b c. (V sao? Hy chng minh). - Ta thng gp cc trng hp ring ca nguyn l ny: . nguyn l modus ponens: a ( a b) b . nguyn l modus tollens: (b (ab)) a - chng minh t cc gi thit GT1, ..., GTm suy ra mt trong cc kt lun KL1, ..., KLn, ta ch cn ly ph nh ca KL1, ..., KLn a v cng vi cc gi thit:P ( GTi )( KL j )1 i m 1 j m

Nu suy ra c mu thun t tp cc mnh P th qu trnh chng minh kt thc v kt lun BTA l hng ng. - suy ra c mu thun, Robinson a ra nguyn l hp gii trn y b sung thm cng ngy cng nhiu cc biu thc mnh trung gian mi cho n khi no trong P c 2 mnh n ng c lp l ph nh ca nhau th mu thun xy ra. * Thut ton Robinson (gii BTA) { P = ; for i = 1 to m do { GTi ChunHi(GTi); P P U GTi; } for i = 1 to n do {NotKLi ChunHi(KLi); P P U NotKLi;} if (MuThun(P)) then exit(Thnh cng); P1 = ; while (P P1 and not(MuThun(P))) do {P1 = P; HpGii(P);} if (MuThun(P)) then exit(Thnh cng); else exit(Khng thnh cng);

Chng III - Bieu dien va x ly tri thc

70

} trong , hm lgic MuThun(P) v th tc HpGii(P) c ni dung nh sau: Function MuThun(P): boolean { for each p P do for each q P and q p do if (p = q or q = p) then return(True); return(False); } Procedure HpGii(P) { for each p P do for each q P and q p do if (p = a b and q = a c) then P P U {b c}; } * V d 6 (biu thc hng ng): Xt bi ton trong v d 4, ta c: P {a b c, b c d, a, b, d} tin theo di, ta biu din qu trnh thc hin thut ton qua th hp gii nh sau:a b c b c c a b c d c b c d d

Mu thun ! * V d 7 (biu thc khng hng ng): Kim tra tnh hng ng ca biu thc: [(a b c) a] c ? Ly ph nh ca kt lun v a v dng chun hi, ta c: P {a b c, a, c} th hp gii: a b c, a, c b ca b b Khng thy mu thun cng khng cn cch no hp gii m c th sinh ra mnh mi na. Vy bi ton xut pht sai.

Chng III - Bieu dien va x ly tri thc

71

* Nhn xt: - Th tc Robinson s dng sau hu hn bc v cho ra thng bo Thnh cng nu v ch nu GT1 ... GTm KL1 ... KLn. - chng minh BTA khng hng ng, ta phi hp gii ht tt c cc kh nng cho n khi khng th sinh ra thm biu thc mnh no mi trong P. - Cng nh th tc Wong H., th tc Robinson c nhc im l ty theo th t ly cc cp mnh hp gii c th xy ra hin tng trn b nh (do bng n t hp) i vi cc bi ton c kch thc ln. - C th p dng mt s heuristic cho thut ton trn thu c thut gii Robinson, chng hn: khi p dng nguyn l hp gii, sau khi thm vo tp P mnh (b c), c th b hai mnh (a b) v (a c) ra khi P. * V d 8 (biu thc hng ng nhng c th kt lun sai nu p dng heuristic khng ng): Kim tra tnh hng ng ca biu thc: [ a (a b) (a c)] c (3) Ly ph nh ca kt lun v a v dng chun hi, ta c: P {a b, a c, a, c} . Nu hp gii trc hai mnh a b v a c b ri loi chng th trong P cn li: P {b, a c, c} Hp gii tip tc th: P {b, a}: khng c mu thun cng khng th hp gii c na: bi ton sai chng ? Tht ra, bi ton (3) vn ng ! . Nu hp gii trc hai mnh a c v a c c ri loi chng th trong P cn li: P {c, a b, c} Khi mu thun xy ra gia c v c. Vy bi ton xut pht ng ! * Ch : trnh tnh trng kt lun sai nh trn, khi thay thut ton Robinson thnh thut gii Robinson, ta nn ch rng ngoi vic thm heuristic trn vo th tc hp gii, ta phi b i thng bo exit(Khng thnh cng). Nu xut hin mu thun th kt lun Thnh cng v dng. Nu khng xut hin mu thun th khng c thng bo exit(Khng thnh cng), ngha l khng c quyn kt lun g khi tnh trng ny xy ra ! * Bi ton B (BTB) Input: - Tp cc mnh gi thit: GT = {g1, ... , gn} = 1in gi

Chng III - Bieu dien va x ly tri thc

72

- Tp RULE gm m lut c dng chun r : p1 ... pn q - Tp cc mnh kt lun: KL = {q1, ... , qk} = 1ik qi Output: Thng bo Thnh cng nu mi qi KL c th suy din t GT nh s dng tp lut RULE. - chng minh cc bi ton lgic mnh , ngi ta cn dng phng php suy din tin (hay li), bng cch xut pht t gi thit (hay kt lun tng ng), da trn cc nguyn l suy din: . Modus ponens: A, A B B . Modus tollens: B, A B A ta thm vo cc mnh mi c chng minh ng (hay cc mnh cn phi chng minh thm tng ng) cho n khi thu c kt lun (hay gi thit tng ng) th dng. III.3.4. Thut ton suy din tin gii BTB * tng: Qu trnh suy din tin bt u t tp TrungGian cc mnh ng xut pht (tp gi thit) v n s c lm n dn bng cch thm vo cc s kin mi ng nh cc lut suy din trong RULE, cho n khi cc kt lun cn chng minh c pht hin. * Thut ton suy din tin SDT { TrungGian = GT; THA = Lc(RULE, TrungGian);

// THA l tp cc lut r c dng p1 ... pn q m piTrungGian,i=1..n

while (KL TrungGian and THA ) do { r get(THA); // r THA c dng r: p1 ... pn q TrungGian TrungGian U {q}; RULE RULE \ {r}; THA = Lc(RULE, TrungGian) } if (KL TrungGian) then write(Thnh cng) else write(Khng thnh cng);

} * V d 9: Cho trc tp cc s kin gi thit: GT = {a, b}. S dng tp RULE cc lut: r1: a c r2: b d

Chng III - Bieu dien va x ly tri thc

73

r3: a e r4: a d e r5: b c f r6: e f g Cn suy ra kt lun: KL = {g}. . Ta c: TrungGian = {a, b}; RULE = {r1-r6}. Do THA = {r1,r2,r3}. . p dng lut r1: a c, ta c TrungGian = {a,b,c} v RULE={r2-r6}. Do : THA = {r2, r3, r5}. . Lc ny, KL = {g} {a, b, c} = TrungGian v THA . Ta li tip tc qu trnh, bng cch chn r2 thc hin, ... Ta minh ha qu trnh trn bng th suy din tin, trong mi nh ng vi tp TrungGian ti thi im ang xt v s c mt cung i t nh TrungGian n nh TrungGian U {q} tng ng vi lut r c lc v c dng r : p1 ... pn q m pi TrungGian, i=1,.., n. TrungGian ={a,b} r1 TrungGian = {a,b,c} r2 r3 r5 r2 {a,b,d} r3 {a,b,e}

TrungGian ={a,b,c,d} {a,b,c,e} {a,b,c,f} r3 r4 r5

TrungGian ={a,b,c,d,e} r5 r4

TrungGian ={a,b,c,d,e,f} r6 r4

KL TrungGian ={a, b, c, d, e, f, g} ( th suy din tin) * V d 10 (biu thc khng hng ng): Kim tra tnh hng ng ca biu thc:

Chng III - Bieu dien va x ly tri thc

74

[(a b c) a] c ? TrungGian = GT = {a}, KL = {c}, RULE = {r1: a b c }. Khi : THA = v KL TrungGian. Vy bi ton trn khng hng ng. * Nhn xt: .Vi cc th t khc nhau chn r t tp THA, ta s c cc c ch duyt theo chiu su, theo chiu rng, ... trn th. . Nu trong BTB thay tp kt lun KL = 1ik qi bi: KL = V1ik qi th cn hiu chnh thut ton SDT ra sao ? (Bi tp) . trnh cc kt lun sai, vi mi bin mnh p xut hin trong biu thc cn chng minh, bng cc qui tc bin i tng ng lgic, chuyn v cng dng p hoc cng dng p. III.3.5. Thut ton suy din li gii BTB * Vi suy din li, a ra kt lun B ta th tm tt c cc lut c dng: A1 ... An B c B, ta cn chng minh A1 ,... , An (cc kt lun mi c thm vo tp kt lun). Qu trnh xc nh Ai cng din ra tng t nh i vi B. Nu n mt lc no tm thy mt Aio no khng th dn xut c t cc gi thit th ta quay lui sang lut khc sinh ra B v li tip tc qu trnh trn. Nu khng tm c Aio nh vy (ngha l mi Ai u c dn xut t gi thit) th qu trnh dn xut ra B thnh cng. thc hin qu trnh quay lui, ta s dng hai tp c cu trc ngn xp GOAL v VET: GOAL l tp lu cc mnh cn phi chng minh n thi im ang xt v VET l tp lu cc lut s dng chng minh cc ch (k c ch trung gian). * Thut ton suy din li SDL {1 if (KL GT) then exit(Thnh cng); else {2 GOAL = ; VET = ; CMc = True; for each q KL do GOAL = GOAL U {(q,0)}; repeat

Chng III - Bieu dien va x ly tri thc

75

{3 (f,i) get(GOAL); if (f GT) then {4 Tm_Lut(f, i, RULE, j); // Tm lut rj : leftj f if (j m) then { VET = VET U {(f,j)}; for each t leftj\GT do GOAL=GOAL U {(t,0)}; } else {5 back = true; // dng bin ny quay lui while (f KL and back) do {6 repeat {(g,k)get(VET); // Ly lut rk:leftkg ra khi VET // quay lui n lut khc m cng g GOAL = GOAL \ leftk; } until (f leftk); Tm_Lut(g, k, RULE, s); // Tm lut rs:lefts g if (s m) then { for each t lefts \ GT do GOAL = GOAL U {(t,0)}; VET = VET U {(g,s)}; back = false; } else f = g; }5 }6 if (f KL and back) then CMc = False;// B hu qu ca vic chn sai lut r v dn n vic // khng CM c mnh f c gi nh cn CM

}3 until (GOAL = or not(CMc)); if (not(CMc)) then exit(Khng Thnh cng) else exit(Thnh cng); }1 }2

}4

Trong th tc trn ta s dng th tc: Tm_Lut(f, i, RULE, k) tm xem c lut rk no k t lut th i+1 tr i m cng suy ra c f (rk:leftk f). Nu khng c lut no nh th th qui c ly k = m+1. * V d 11: Cho trc tp cc s kin gi thit GT = {a, b}. S dng tp RULE cc lut:

Chng III - Bieu dien va x ly tri thc

76

r1. abc r2. ahd r3. bce r4. adm r5. abo r6. oem Cn suy ra KL = {m}. Ban u GOAL = VET = ; p dng th tc Tm_Lut(m, 0, RULE, j), ta c j = 4 (r4 l lut u tin sinh ra m). Khi VET = {(m,4)}; GOAL = {(d,0)} (v a GT nn ch cn xt (d,0)). Ta tip tc qu trnh v c bng theo di sau:GOAL(back)

(f,i) 1 (d,0) (h,0)

CM

j d 2 7

leftj\GT

VET

(g,k) l leftl\GT

Quaylui

{(m,0)} (m,0) {(d,0)} {(h,0)}

true

{(m,4)} h {(d,2);(m,4)} {(m,4)}

(d,2)

7

true

d (m,4) 6 o,e {(o,0),(e,0)} {(m,6)} false(thot while 6) {(e,0)} o 5 {(o,5),(m,6)} e 3 c {(e,3),(o,5),(m,6)} {(c,0)} c 1 {(c,1),(e,3),(o,5),(m,6)} (GOAL = : thot vng while{2}2 ; CMc = True: Thnh cng !)

Ta c th biu din qu trnh suy din li trn y thng qua th (V/HOC) suy din li nh sau:{m}* r4 {a,d}k *{a} Khng cn phn ny ! {d}k r2 {a,h}k *{a} {h} k *{a} r6 {o,e}* {o}* r5 {a,b}* *{b} *{b} {e}* r3 {b,c}* {c}* r1 {a,b}* *{a} ( th suy din li) *{b}

Chng III - Bieu dien va x ly tri thc

77

- V d 12: Cho trc tp cc s kin gi thit GT = {a}. S dng tp RULE cc lut: r1. abc r2. ahd r3. bce r4. adm r5. abo r6. oem Cn suy ra KL = {m}. Ban u GOAL = VET = . p dng th tc Tm_Lut(m, 0, RULE, j), ta c j = 4 (r4 l lut u tin sinh ra m). Khi VET = {(m,4)}; GOAL = {(d,0)} (v a GT nn ch cn xt (d,0)). Ta tip tc qu trnh, s c bng theo di sau:GOAL(back)

(f,i)

CM

j

leftj\GT

VET

(g,k) l leftl\GT

Quaylui

{(m,0)} (m,0) 1 true d {(m,4)} {(d,0)} (d,0) 2 h {(d,2);(m,4)} {(h,0)} (h,0) 7 {(m,4)} (d,2) 7 true d (m,4) 6 {o,e} {(o,0),(e,0)} {(m,6)} (thot while 6) false {(e,0)} o 5 b {(o,5),(m,6)} {(b,0),(e,0)} b 7 {(m,6)} (o,5) 7 true o (m,6) 7 m false (f = m KL : thot while {6}6; do : CMc= false (v GOAL = ): thot vng while{2}2; CMc= false: Khng thnh cng !)

th suy din li:{m}k r4 {a,d}k *{a} {d}k r2 {a,h}k *{a} {h}k *{a} r6 {o,e}k {o}k r5 {a,b}k {b}k {b}k {e}k r3 {b,c}k

Khng cn phn ny ! {c}k r1 {a,b}k *{a} {b}k

( th suy din li)

Chng III - Bieu dien va x ly tri thc

78

* Nhn xt: - Qu trnh suy din li tng t nh qu trnh tm th con li gii trong th V/HOC biu din tp lut. - tng hiu qu ca th tc suy din li c th a vo 2 tp: tp NG cha cc s kin c khng nh l ng v tp SAI cha cc s kin c khng nh l sai. Mi khi ly mt s kin (f, i) no ta cn kim tra trc f NG hay f SAI ?

III.4. X l tri thc bt nh bng phng php suy din logic III.4.1. Cc c ch lp lun vi tri thc bt nh v khng chnh xc - Khi nim: Trn thc t, c nhiu mnh c pht biu khng chnh xc, mang tnh bt nh, chng khng hn hon ton ng cng khng hon ton sai. Tnh ng - sai ca chng khng c xc nh v th hin r rng nh trong lgic mnh c in. Ta c th m rng tnh ng sai ca mnh p thng qua mt hm o ng ca n: (p) [0; 1]. - M hnh xc sut: Xt P l tp cc mnh ng kn i vi cc php ton , (do c ) v nh x ( o xc sut) Pr: P [0, 1] tha cc tnh cht: . Pr(p) + Pr(p) = 1, p P . Pr(p q) = Pr(p).Pr(q), p, q P . T : Pr(p q) = Pr(p) + Pr(q) Pr(p q) (Chng minh ? Bi tp) - M hnh khi lut: Biu din mnh : . Nu p th q bi lut bnh thng: p q . Nu p th thng thng (ni chung, hu nh, ) q bi khi lut: pq ! III.4.2. Phn b kh xut ca khi lut v cc php ton ni kt * Phn b kh xut (PBKX) ca khi lut: - PBKX ca mt cp s kin i ngu nhau p v p (hay p): (p), ( p ) tha: max ((p), ( p )) = 1 - PBKX ca mt s kin p trong khi lut l b:

(p) (p)

Nu ta khng th khng nh c p l tuyt i ng th: (p) = 1, nhng ( p ) = ( [0, 1)) - PBKX ca mt khi lut p q ! c biu din bi ma trn:

(p q ) (p q )

(p q ) ( p q )

Chng III - Bieu dien va x ly tri thc

79

Bi tp1. +Bng cc php bin i tng ng trong lgic mnh , hy chng minh: a. Ta lun c th a mt lut suy din dng chun Horn: q1 .... qm p1 .... pn v dng chun s cp: q p1 .... pn b. Nguyn l chng minh phn chng: (a b ng) (a b sai hay mu thun) c. Nguyn l hp gii. d. Nguyn l modus ponens v tollens. e. Trong vic chng minh t ng tnh hng ng ca cc biu thc lgic mnh , ti sao ngi ta thng xt bi ton dng BTA ? f. Quy tc Chuyn v Tch trong th tc Vng Ho. g. Phng php Qui din (Abduction, tng t): Cho trc: A B. . A ~ A A B . B ~ B A B . A ~ A & B ~ B A B 2. +Hy a v dng chun hi v chun tuyn ln lt cho v tri (VT) v v phi (VP) ca cc biu thc lgic mnh sau: a. [(a b c d) (c e) a] [b e] b. [(a b c d) (c e) a] [b c e] c. [(a b c d) (c e) a] [d c b] d. [(a b c d) (c b e) a] [b c e] e. [b c e] [(a b (c d)) (c e) a] f. [a(bc) ] [(ab)c] g. {[(a b c d) (c e) a] [(a b e) a]} [b e] h. {[(a b c d) (c e) a] [(a b e d) a]} [b c e] 3. *Nu trong bi ton BTB thay tp kt lun KL = 1ik qi bi KL = V1ik qi th cn hiu chnh thut ton suy din tin SDT ra sao ? 4. +Kim tra tnh hng ng ca cc biu thc lgic trong bi tp 2 chng III (c th p dng vi heuristics rt gn hay chuyn i tng ng cho vic gii tr nn n gin hn) bng cc phng php: i) bin i lgic ii) phng php suy din tin iii) phng php suy din li iv) thut ton Vng Ho (Wong Havard) v) thut ton Robinson. Nu thay thut ton Robinson bng thut gii Robinson th cc kt qu c lun trng nhau khng ? Ti sao?

80

Chng IV

LP TRNH LGICIV.1. GII THIU NGN NG LP TRNH LGIC PROLOG IV.1.1. M u Mt trong nhng mc tiu ln v quan trng ca tr tu nhn to (TTNT) l m phng trn my tnh nhng t duy v hnh vi ca con ngi. Trc nhng nm 1960, khi cha c nhm cc ngn ng lp trnh (NNLT) chuyn phc v cho lnh vc TTNT nh cc NNLT x l k hiu (LISP- LISt Processing) v lp trnh lgic (PROLOG PROgramming in LOGic), nhng thnh tu l thuyt trong TTNT cha c ng dng rng ri trong thc t. Chng ny nhm gii thiu Prolog, mt trong nhng NNLT thuc h ny. NNLT Prolog do Alain Colmerauer v nhm cng s thit k ra vo nm 1972 ti i hc Marseille Php. Prolog c xy dng trn c s l thuyt ca lgic v t, nhm biu din, m t cc tri thc cng cc mi quan h c bn gia chng. T , khi c trang b sn mt c ch suy lun thng qua mt mt suy din, Prolog s sn sinh ra v kim tra nhiu mi quan h h qu khc. Khc vi nhiu NNLT th tc c in truyn thng, Prolog thuc nhm NNLT m t. gii quyt mt bi ton, c bit l cc bi ton x l k hiu tru tng v suy lun lgic, ta ch cn chn cch biu din ph hp v m t cc i tng cng cc tnh cht v mi quan h c bn bit gia chng. Thng qua mt suy din ca Prolog, ta s nhn c cc cu tr li lin quan n cc mi quan h nhn qu v cc kt lun lin quan n bi ton cn gii quyt. Khi tri thc bit v bi ton khng tng thm, vic tr li cc kt lun khc lin quan n bi ton cn gii l hin nhin thng qua cc cu hi thm m khng cn phi lp trnh li nh cc NNLT kiu th tc. Chnh v vy, NNLT Prolog thuc kiu hi thoi v mt chng trnh ngun trong Prolog thng gn hn rt nhiu so vi mt chng trnh ngun ca cc NNLT th tc truyn thng khc nh Pascal, C, nhm cng gii quyt mt bi ton chuyn bit trong lnh vc TTNT. * V d 1: m t cc s kin (fact): Socrate v To l ngi, qui tc lgic (hoc lut, rule): h bt c ai l ngi th ngi s phi cht, ta dng hai v t chnh: LNgi(Ai), Cht(Ai) nh sau: LNgi(Socrate). LNgi(To). Cht(Ai) :- LNgi(Ai). //hoc: Cht(Ai) if LNgi(Ai). Da trn cc tri thc va m t, ta c th yu cu Prolog tr li cc cu hi lin quan sau: Goal: LNgi(Socrate) yes Goal: LNgi(mo) no

81 Goal: Cht(Socrate) yes Goal: Cht(mo) no hoc: Goal: LNgi(Ai) Ai = Socrate, Ai = To (2 solutions) Goal: Cht(Ai) Ai = Socrate, Ai = To (2 solutions) Cc khi nim chnh trong Prolog l: v t (predicate), i tng, bin, s kin (fact), qui tc (rule), cu hi (ch, mc tiu: Goal), danh sch. Vi k thut thng c dng trong Prolog l: quay lui (mc nh l tm kim theo chiu su trn cy suy din), qui, lt ct. IV.1.2. V t, s kin, qui tc, mc tiu trong Prolog a. V t, i tng, hng, bin * Quan h gia cc i tng trong mt bi ton, mt mnh c biu din bng cc v t v cc i ca v t biu din cc i tng thuc quan h hay c tnh cht no . chuyn mt mnh thng thng sang dng v t (predicate) trong Prolog, ngi ta thng chn ng t chnh trong phn v ng lm tn v t v cc thnh phn khc lm cc i tng ng ca v t. - Phn loi cc i tng trong Prolog: hng, bin hay i tng phc hp (l mt loi i tng ca mt v t m bn thn n li l mt v t khc). - Cc kiu d liu chun (c s) c sn trong Prolog: int, real, char, string, symbol. Ngoi ra, Prolog cn cho php cc kiu d liu ring do ngi dng nh ngha. - Kiu (d liu) ca i tng c th thuc kiu chun hoc do ngi dng nh ngha. - Ta qui c Name l mt dy k t (gm: ch ci la tinh, ch s hoc du gch di _) m k t u tin phi l ch ci. (Do , trong Name khng c c khong trng v khng c bt u l ch s !). Khi dng Name biu din tn ca cc i tng hay v t, ngi ta thng dng mt trong hai cch vit sau d c v trnh hiu nhm ngha: gh_di, gh_u hay ghDi, ghu; suy_lun hay SuyLun, so_1_Han_Thuyen hay so_1_HanThuyen, (cho v d vi dy k t khng phi l mt Name ?) - Tn ca i tng l mt Name. - Hng l i tng m gi tr ca chng c gn ngay khi khai bo trong phn constants v khng i trong sut chng trnh. Tn ca hng l mt Name m k t u tin phi l ch ci thng (c bit l khi s dng gi tr ca chng). - Bin l i tng m gi tr ca chng c th thay i trong chng trnh. Tn ca bin (tr bin v danh, c k hiu l du gch di _) l mt Name m k t u tin l ch ci hoa. Bin c phn thnh 3 loi:

82 . bin rng buc l bin m ti thi im ang xt n c gn vi mt gi tr xc nh; . bin t do l bin m ti thi im ang xt n cha hoc khng c gn vi mt gi tr xc nh no c; do , ti nhng thi im khc nhau mt bin c th chuyn t t do sang rng buc v ngc li trong qu trnh quay lui khi tm kim li gii; . bin v danh (c k hiu l du gch di _) l bin m ta khng quan tm (do , khng cn lu li hay ghi nh) n gi tr ca n. Ch : Cc bin trong Prolog khi c s dng khng cn phi khai bo trc (v thng thng, chng c khai bo ngm trong phn khai bo kiu cho cc v t) b. S kin, qui tc: Cc v t trong Prolog thng c th hin di hai dng: s kin hay qui tc. - S kin (fact) l cc mnh hng ng v n thng c th hin bng cc v t m cc i ca chng u l i tng hng. Chng hn, trong v d 1, LNgi(Socrate) l mt s kin. - Qui tc (rule) l mt mnh ko theo ng v chng thng c th hin bi cc v t m cc i ca chng cha cc bin. Qui tc thng gm hai phn: Phnu v PhnThnQuiTc, chng c ni vi nhau bi t kho if hoc :-, theo c php sau: Phnu if PhnThnQuiTc. hoc: Phnu :- PhnThnQuiTc. (PhnThnQuiTc lun c kt thc bi mt du chm .) Chng hn, trong v d 1, Cht(Ai) l mt qui tc. . to nn cc qui tc phong ph, ta c th dng thm trong PhnThnQuiTc cc php ton lgic ni kt cc mnh : and (hay du phy , ), or (hay du chm phy ;), not(v t). . Cc v t (s kin, qui tc) phi c khai bo kiu trong phn Predicates trc khi c lit k, nh ngha v c s dng trong phn Clauses v Goal. c. Mc tiu, cu hi: Sau khi lp trnh, cc yu cu ca ngi dng c th c bit thng qua cc cu hi, v t a vo trong phn mc tiu Goal. C hai loi Goal: - Goal trong (a ni dung cn hi vo phn Goal trong chng trnh ngun): ch tm ra li gii u tin v khng t ng xut chng ra mn hnh. Nu mun xut chng, c th s dng v t chun xut d liu: write; nu mun tm cc li gii k tip, c th dng thm v t chun lun sai: fail. - Goal ngoi: tm v t ng xut mi li gii (ra ca s hi thoi Dialog, vi t kha Goal: u mi cu hi). Nu ch mun xut ra li gii u tin, c th s dng v t chun lt ct !.

83

IV.1.3. Cu trc chnh ca mt chng trnh trong Prolog Mt chng trnh ca Prolog thng bao gm mt s cc phn chnh v theo th t sau: Constants % on khai bo cc i tng hng Domains % on khai bo kiu cc i tng ring ca ngi dng Database % on khai bo kiu cho cc v t ca c s d liu Predicates % on khai bo kiu cho v t s dng trong cc on sau Clauses % on lit k s kin v nh ngha qui tc khai bo trong phn Predicates Goal % on a vo cc v t cu hi, c th t trc phn Clauses Ch : Mt chng trnh c th thiu mt s (hoc tt c !) phn trn. a. on khai bo cc i tng hng: c bt u bi t kho Constants v theo c php sau: TniTngHng = TriTngHng [Name] TriTngHng c kiu d liu chun (int, real, char, string, symbol). b. on khai bo kiu d liu ring ca ngi dng: c bt u bi t kho Domains v theo mt trong cc c php sau: . Dy TnKiuDLiu = KiuDLiu [Name, ] trong : KiuDLiu l kiu d liu chun (int, real, char, string, symbol) hoc kiu d liu ring ca ngi dng; . Dy TnKiuDanhSch = KiuPhnTChung* [KiuDLiu] [Name , ] . TnKiuiTngPhcHp = Dy TnVT(Kiui, ) [Name] [Name(KiuDLiu, ); ] . file = Dy TnFileHnhThc [Name; ] Cc tn file ca cc thit b chun sau khng cn phi khai bo: screen, keyboard, printer. c. on khai bo kiu cho v t s dng trong cc on Goal v Clauses phn tip theo c bt u bi t kho Predicates v theo c php sau: . TnVT(DyKiui) [Name]([KiuDLiu, ]) on khai bo kiu cho cc v t ca c s d liu (CSDL) c bt u bi t kho Database v cng theo c php nh phn Predicates. im khc bit ca cc v t khai bo trong on Database l: cc v t tng ng vi chng

84 trong phn Clauses c cc i l cc i tng hng hoc cc bin rng buc c th a vo CSDL b nh trong theo cc v t chun ring bit. Ch : C th khai bo nhiu v t cng tn nhng: cng s i vi kiu khc nhau hoc c s i khc nhau hoc thm ch khng c i no ! Khi , chng phi c khai bo lin tip nhau. d. on lit k cc s kin v nh ngha cc qui tc khai bo trong phn Predicates hoc Database, c bt u bi t kho Clauses theo c php sau: . Lit k cc s kin: TnVT(Dy TrHng). . nh ngha cc qui tc: TnVT(Dy iTng) :- PhnThnQuiTc(Dy iTng). hoc: TnVT(Dy iTng) if PhnThnQuiTc(Dy iTng). trong : PhnThnQuiTc c th gm cc v t, mnh c ni kt vi nhau bi cc php ton lgic nh: and (,), or (;), not(VT(i)), nhng i ca VT trong not phi l hng hoc bin rng buc. Tt c cc v t u phi c kt thc bi mt du chm .. * Ch : - Cc v t cng tn phi c lit k hay nh ngha lin tip nhau. - C ch tm kim mc nh trong Prolog theo chiu su. Th t ca cc mnh cng tn (cng cc i ca chng) trong phn Clauses c th c ngha khc nhau v nh hng n tc tm kim. - Cn n th t v u tin cc php ton lgic trong PhnThnQuiTc. - Qui tc: A:- B1; B2. tng ng vi: A:- B1. A:- B2. - biu din mnh : B and (C or D), dng qui tc sau l sai: A:- B, C; D. % hoc: A:- B, (C;D). cng sai ! Khi , c nhiu cch ng biu din chng: C1: A:- B, E. E:- C; D. hoc C2: A:- B, C. A:- B, D. hoc C3: A:- B, C; B, D. e. on mc tiu (i vi Goal trong), a vo cc v t cu hi, kt hp vi cc php ton lgic, c bt u bi t kha Goal.

85 Nu nhn chng trnh theo quan nim Top-Down, on ny c th t trc phn Clauses. * V d 2 (minh ha vic dng Goal trong, Goal ngoi; c ch tm kim nghim bi ca Goal ngoi): Domains Ai = symbol Predicates Thch(Ai, Ai) Clauses Thch(A, b). Thch(b, c). Thch(X, Z):- Thch(X, Y), Thch(Y, Z). Goal %trong: a vo trong chng trnh ngun %Cc i trong v t u rng buc: Thch(A, b). %Kt qu: rng Thch(A, c), write(ng). %Kt qu: ng %C i trong v t l bin t do: Thch(A, Ai). %Kt qu: rng Thch(A, Ai), write(A thch: , Ai, ; ). %Kt qu (xut mt li gii): A thch: b Thch(Ai, c), write(Ai, thch c; ), fail. % Kt qu (xut nhiu li gii): b thch c; A thch c Goal %ngoi: ch a vo ca s hi thoi %Cc i trong v t u rng buc: > Thch(A, b) yes %C i trong v t l bin t do: > Thch(A, Ai) Ai=b, Ai=c (2 solutions). > Thch(A, Ai), !. Ai=b (1 solutions). > Thch(Ai_1, Ai_2) kt qu l g ? (Bi tp) * V d 3(minh ha: cc php ton lgic trong PhnThnQuiTc, cc qui tc cng tn): Domains Ai = symbol Predicates Me(Ai, Ai) Cha(Ai, Ai) Cha(Ai) ChaMe(Ai, Ai, Ai) ChaHoacMe(Ai, Ai) Nam(Ai) Nu(Ai) Nguoi(Ai)

86 Dung() Sai Clauses Cha(ba_1, con_1). Cha(ba_1, con_2). Cha(Ba):- Cha(Ba, _). Me(ma_1, con_1). Me(ma_2, con_2). ChaMe(Ba, Ma, Con) :- Cha(Ba, Con), Me(Ma, Con). ChaHoacMe(BaMa, Con) :- Cha(BaMa, Con) ; Me(BaMa, Con). Nam(con_1). Nam(Ai):- Cha(Ai). Nguoi(Ai):- Cha(Ai) ; Me(Ai) ; ChaHoacMe(_, Ai). % Nu(Ai):- Nguoi(Ai), not(Nam(Ai)). Nu(Ai):- not(Nam(Ai)). % khng tr li c cu hi: Nu(Ai) !? Dung(). %Hoac: Dung():- true. Sai:- not(Dung()). Goal %ngoi: Cho kt qu l g vi tng goal sau ? > Nu(con_2) ? > Nu(Ai) ? * V d 4(minh ha i tng phc hp; c ch tm kim nghim bi ca Goal ngoi): Domains Ai, Ten = symbol Gi = Mo(Ten) ; B(Ten) ; Rng Predicates Thich(Ai, Gi) Clauses Thich(a, Meo(miu)). Thich(tu,rong). Thich(b, Meo(miu)). Thich(b, Bo(miu)). Thich(c, X) :- Thich(a, X) , Thich(b, X). Goal %ngoi > Thich(c, Gi) Cho kt qu l g ? (Bi tp)

87

IV.2. DANH SCH, QUI, LT CT TRONG PROLOG Danh sch l mt trong nhng cu trc d liu rt quan trng v c s dng thng xuyn trong lp trnh x l k hiu bng Prolog. qui l k thut thng dng trong Prolog. Do c ch tm kim t ng mc nh trong Prolog theo chiu su, nn, trong nhiu tnh hung, nu mun ngn chn vic tm kim tip tc khng cn thit, Prolog cho php dng lt ct thc hin vic ny. IV.2.1. Danh sch a. nh ngha: Danh sch l mt dy c th t cc phn t. Mt cch qui, ta c th nh ngha danh sch l: - rng (khng c phn t no), hoc: - gm mt phn t u v danh sch ui b. Khai bo, biu din danh sch: TnKiuDanhSch = KiuChungCcPhnT* trong : KiuChungCcPhnT c th l kiu d liu chun, kiu do ngi dng nh ngha, kiu phc hp, hoc thm ch l danh sch. - Danh sch rng: [] - Biu din danh sch theo kiu qui: BinKiuDS = [PhnTu | DanhSchui] - Biu din danh sch theo kiu lit k: [PhnTThNht , PhnTThHai | DSchCnLi] V mt l thuyt, c th biu din danh sch bng v t hoc cy, biu ngang. * V d 1: Tm phn t u v danh sch ui ca cc danh sch sau: [a, b, c], [a], [[1, 2], [3], [4,5]] , [] ? (Bi tp) IV.2.2. qui - C ch quay lui v tm kim nghim bi trong Prolog a. C ch quay lui v tm kim nghim bi: Minh ha qua v d: * V d 2: %trace QH_1_2 QH_1(a, b). QH_1(a, c). QH_2(d, b). QH_2(e, c). QH_2(d, c).

88 QH_2(e, b). QH_1_2(B, M, C) :- QH_1(B, C), QH_2(M, C). Goal % ngoi > QH_1_2(a, e, Ai) Ai=b, Ai = c b. nh ngha: Mt thao tc qui F(x) trn tp D gm 2 phn : . iu kin dng: Mt thao tc s cp ( bit cch thc hin trc tip) trn tp con Xo D . Mt li gi qui F(H(x)), vi H(x)D, sao cho sau mt s hu hn ln gi qui s phi dn n iu kin dng (H(H(H())) Xo, xD\Xo). * V d 3(thao tc qui thiu iu kin dng): Ba(B, C):- Con(C, B). Con(C, B):- Ba(B, C). Goal: > Ba(a,b) ? c. K thut kh ui qui bng cch dng bin ph: * V d 4: Tnh chiu di ca mt danh sch. Do mt v t c th c nhiu tc dng, nn ch thch thm dng vo-ra (I, o) ch cc cch thc s dng v t cho ng. Domains ptu = real ds = ptu* i = integer Predicates ChieuDai(ds,i) % (i, i) (i, o) (o, i), ! (o, o), readchar(_) ChieuDaiPhu(ds, i, i) % dng vo-ra: (i, i, i) (i, i, o) % ChieuDaiPhu(i,0,_): lun khi to bin th 2 l 0 Clauses ChieuDai([], 0). ChieuDai([_|Duoi], Kq) :- ChieuDai(Duoi,KqPhu), Kq = KqPhu + 1. ChieuDaiPhu([], Kq, Kq). ChieuDaiPhu([_|Duoi], Phu, Kq) :- PhuMoi=Phu+1, ChieuDaiPhu(Duoi, PhuMoi, Kq). Goal %ngoi > ChieuDai([1,2,3], 3) ? > ChieuDai([1,2,3], Kq) ? > ChieuDaiPhu([1,2,3], 0, 3) ? > ChieuDaiPhu([1,2,3], 0, Kq) ? > ChieuDaiPhu(Nao, 0, 1) ?

89

Bi tp: Vit 2 qui tc qui (c v khng c qui ui) tnh giai tha ca mt s t nhin. Ch : Th t cc v t cng tn trong phn Clauses c th c ngha khc nhau, c bit l cc v t qui. Chng hn, xem tc dng ca 2 cch vit qui tc kim tra danh sch c 1 phn t sau (v sa li cho ng: bi tp): Cch 1: DS1PTu([_|D]) :- DS1PTu(D). DS1PTu([]). Cch 2: DS1PTu([]). DS1PTu([_|D]) :- DS1PTu(D). vi cch hi: DS1PTu(No) ? d. Vi thao tc qui c bn trn danh sch: * V d 5: Lp qui tc kim tra quan h thuc gia mt phn t v mt danh sch: Thuoc(Ptu, DSach) % (i, i) (o, i) (i, o) ? Thuoc(PT, [PT|_]). Thuoc(PT, [_|DSDuoi]) :- Thuc(PT, DSDuoi). * V d 6: Lp qui tc ni hai danh sch: Noi(DSach, DSach, DSach) % (i, i, i) (i, i, o) (o, o, i) (i, o, i) (o, i, i) ? Noi([], L, L). Noi([PT|L1], L2, [PT|L3]) :- Noi(L1, L2, L3). ThuocMoi(PT, DS) :- Noi(_, [PT|_], DS). IV.2.3. Lt ct (!) L do dng lt ct: Do c ch tm kim t ng mc nh trong Prolog theo chiu su, nhng trong nhiu bi ton vi cc c trng ring, ta khng cn c ch quay lui hoc tm tip li gii k tip. Khi , ta c th dng lt ct t c mc ch . a. C php, tc dng ca lt ct: Dng du chm than ! biu din lt ct. Lt ct l v t lun ng v c tc dng ngn: c ch quay lui v tip tc tm kim li gii i vi cc v t cng tn vi nhng v t ng trc lt ct trong mt mnh no . iu dn n vic tit kim thi gian ln b nh khi dng lt ct thch hp.

90 Ta minh ha lt ct qua vi trng hp sau: - i vi qui tc khng qui: VT_1 :- a, !, b. % (1) VT_1 :- c. % (2) Khi a sai th v t c c thc hin. Khi a ng, s gp ! v thc hin tip b (k c nghim bi ca b, nu b ng), nhng s khng bao gi tm tip li gii cho a v (k c trng hp b sai) khng quay xung VT_1 th hai trong (2) kim tra c , vi cc tr trong i ca VT_1 tng ng vi ln gi . - i vi qui tc qui: VT_2. VT_2 :- a, !, VT_2. % (3) VT_2 :- b. % (4) Khi a sai, (4) s c kim tra. Khi a ng, VT_2 trong (4) s khng c kim tra ng vi ln gi , mc d VT_2 trong thn qui tc ca (3) l sai v s khng bao gi tm tip li gii cho a . b. Cc tnh hung c th s dng lt ct: - Ch tm li gii u tin Goal ngoi. - Trong cc bi ton ch c duy nht mt li gii, sau khi tm c li gii u tin, ta dng lt ct dng ngay qu trnh tm kim. - Ta mun dng khi mt mnh sai (nhng khng cn tm cch khc tha mn mnh ), hoc thay cho v t not, bng cch s dng t hp lt ct v v t fail ph hp. - Dng lt ct trong cc chng trnh Sinh v Th. * V d 7 (minh ha vi tnh hung dng lt ct): Domains i, ptu = integer Predicates RangBuoc(ptu) % minh ha tnh hung GiaiThua(i, i) % minh ha tnh hung ThuongNguyen(i, i, i) % hai i u N, minh ha tnh hung Sinh_1_So(i) Clauses % RangBuoc(X) :- not(free(X)). % sai khi X l bin khng rng buc RangBuoc(X) :- free(X), !, fail. RangBuoc(_). GiaiThua(0, 1) :- !. GiaiThua(N, Kq) :- N1 = N-1, GiaiThua(N1, Kq1), Kq = Kq1*N. ThuongNguyen(B, C, T) :- Sinh_1_So(T), T*CB, !.

91

Sinh_1_So(0). Sinh_1_So(Sau) :- Sinh_1_So(Truoc), Sau = Truoc + 1. . * V d 8 (Bi tp: tm cc li sai, hn ch v m rng cc trng hp c dng vo-ra tt hn): Tnh s cha v m ca mi ngi. Domains Ai = symbol i = integer Predicates SoChaMe(Ai, i) Clauses SoChaMe(Adam, 0). SoChaMe(Eva, 0). SoChaMe(_,2). % Gi : SoChaMe(Adam, 0): !. hoc: SoChaMe(Adam, BN): !, BN=0., * Ch : - Php ton X = Y c th hiu theo hai ngha: . Php so snh nu c X v Y l bin (hay biu thc) rng buc; . Php gn nu ch mt trong hai v l bin t do, cn v kia l biu thc hay bin rng buc (v s v ngha, b li khi c hai v u khng rng buc!) - C th thay php ton = bi v t Bng(X,X). * Gi to cc lnh cu trc nh cc NNLT c in: - if (K) then A; else B; Neu(DK) :- !, A. Neu( _ ) :- B. - switch (BT) { case a1: A1; break; case a2: A2; break; case an: An; break; default: B; break; }; %Gi s dng: Switch(BT) Switch(a1) :- !, A1. Switch(a2) :- !, A2. Switch(an) :- !, An. Switch( _ ) :- B.

92

- repeat A until (DK); Repeat :- Lap, A, DK, !. Lap. Lap :- Lap. - while (K) do A; While :- K, !, A, While. While. - for (i=Bdau; i 0, !. For(I, N, Step) :- A(i), I_Sau = I+Step, For(I_Sau, N, Step). IV.3. CC V D IV.3.1. Bi ton Thp H Ni (Minh ha v t qui) V d 1: C 3 cc A, B, C. Trn cc A c n a trn chng ln nhau, vi ng knh khc nhau, sao cho a b lun nm trn a ln; hai cc B, C trng. Tm cch chuyn n a t A n C vi s ln di chuyn a t nht (2n-1), sao cho: mi ln ch di chuyn 1 a b nht trn cng ca mt cc ty sang mt cc khc a b lun nm trn a ln. %Program Thap_HaNoi Domains i = integer s = symbol Predicates HaNoi(i, i) ChuyenDia(i, i, s, s, s, i) Clauses HaNoi(N, SoLanDiChuyen) :- ChuyenDia(N, N, a, c, b, SoLanDiChuyen). ChuyenDia(1, Nhan, Tu, Den, _, 1) :- !, nl, write(Chuyen dia: , Nhan, tu , Tu, den , Den). ChuyenDia(N, Nhan, Tu, Den, Tgian, Tong):N1=N-1, NhanPhu=Nhan-1, ChuyenDia(N1, NhanPhu, Tu, TGian, Den, Tong1), ChuyenDia(1, Nhan, Tu, Den, Tgian, 1), ChuyenDia(N1, NhanPhu, TGian, Den, Tu, Tong2),

93 Tong = Tong1 + Tong2 + 1. Goal %trong makewindow(1, 3, 7, Thap Ha Noi, 0, 0, 25, 80), write(Nhap so dia n (1 0 (hay < 0) v sang tri (hay phi) X=NoOfCols ct ty theo n > 0 (hay < 0). o) framewindow(FrameAttr), (integer) (i): thay i thuc tnh ca khung ca s. p) framewindow(FrameAttr, FrameStr, FrameStrPos, FrameTypeStr), (integer, string, integer, integer) (i, i, i, i): thay i thuc tnh ca khung ca s theo cc ch sau: FrameAttr = thuc tnh khung FrameStr = tt ca khung FrameStrPos = nhn gi tr t 0 n rng ca s. N t v tr cho tt trn khung. Tt s t gia nu n bng 255 FrameTypeStr = mt chui gm 6 k t ch dng ca khung.

IV.4.4. CC V T CHUN KHC 1. Thao tc chuia) frontchar(String, FrontChar, RestString), (string, char, string) (i, o, o) (i, i, o) (i, o, i) (i, i, i) (o, i, i): tch mt chui thnh k t u v chui cn li. b) fronttoken(String, Token, RestString), (string, string, string) (i, o, o) (i, i, o) (i, o, i) (i, i, i) (o, i, i): tch mt chui thnh mt t v chui cn li. c) frontstr(Length, InpString, StartString, RestString), (integer, string, string, string) (i, i, o, o): tch t mt chui cho trc InpString ra mt chui con StartString bt u t k t th nht c di l Length v chui cn li RestString. d) concat(String1, String2, String3), (string, string, string) (i, i, o) (i, o, i) (o, i, i) (i, i, i): ni String1 v String2 thnh String3: String3 = String1 + String2. e) strlen(String, Length), (string, integer) (i, i) (i, o) (o, i): chiu di ca String l Length. Vi dng vo ra (o, i) ta c mt chui gm Length k t trng.

102 f) isname(StringParam), (string) (i): kim tra chui c l mt name (mt dy cc k t ch hoc s hoc du _ nhng bt u bng ch hay k t _ trong Turbo Prolog khng.

2. Chuyn i kiua) char_int(CharParam, IntgParam), (char, integer) (i, o) (o, i) (i, i): chuyn i gia mt k t v m ASCII tng ng vi n. b) str_int(StringParam, IntgParam), (string, integer) (i, o) (o, i) (i, i): chuyn i gia mt chui v mt s nguyn tng ng vi n. c) str_char(StringParam, CharParam), (string, char) (i, o) (o, i) (i, i): chuyn i gia mt chui v mt k t tng ng vi n. d) str_real(StringParam, RealParam), (string, real) (i, o) (o, i) (i, i): chuyn i gia mt chui v mt s thc tng ng vi n. e) upper_lower(StringInUpperCase, StringInLowerCase), (string, string) (i, o) (o, i) (i, i): chuyn i gia mt chui k t hoa v mt chui k t thng. f) upper_lower(CharInUpperCase, CharInLowerCase), (char, char) (i, o) (o, i) (i, i): chuyn i gia mt k t hoa v mt k t thng.

3. Thao tc di vi c s d liu tronga) consult(DosFileName), (string) (i): gi ra v b sung mt file c s d liu trong (file c khi to v lu mt c s d liu trong khng tn bng v t save(?)). b) consult(DosFileName, InternalDatabaseName), (string, InternalDatabaseName) (i, i): gi ra v b sung mt file c s d liu trong (file c khi to v lu