You are on page 1of 32

Chng III : tmt hu hn v biu thc chnh quy

CHNG III TMT HU HN V BIU THC CHNH QUY


Ni dung chnh: Trong chng ny, ta s nghin cu mt loi "my tru tng" gi l tmt hu hn. Chng l cng c dng on nhn mt lp ngn ng kh n gin gi l lp ngn ng chnh quy. Trc ht, hai dng ca tmt hu hn s ln lt c trnh by v c s chng minh rng chng tng ng nhau v kh nng on nhn ngn ng. Tip , ta s cp n biu thc chnh quy - mt phng tin khc xc nh ngn ng v ta li thy rng lp ngn ng do cc tmt hu hn chp nhn chnh l lp ngn ng chnh quy. Phn tip theo ca chng s cp n mi quan h gia c ch tmt v cc biu thc chnh quy dng k hiu cho ngn ng. Cui chng ny, mt vi ng dng c th ca tmt hu hn s c trnh by. Mc tiu cn t: Kt thc chng ny, sinh vin cn nm vng : Khi nim tmt hu hn, cc thnh phn, cc dng v s khc bit c bn gia hai dng. Cch thc chuyn i tng ng t dng n nh sang khng n nh v ngc li. Vit biu thc chnh quy k hiu cho tp ngn ng chnh quy. Mi lin quan gia tmt hu hn v biu thc chnh quy. V s chuyn trng thi (n nh hoc khng n nh) t mt biu thc chnh quy. Tm cc ng dng thc t khc t m hnh tmt hu hn. Kin thc c bn: tip thu tt ni dung ca chng ny, sinh vin cn c mt s cc kin thc lin quan v l thuyt th, l thuyt mch; hiu cc khi nim c bn v kin trc my tnh; c s dng qua mt s trnh son tho vn bn thng thng Ti liu tham kho : [1] John E. Hopcroft, Jeffrey D.Ullman Introduction to Automata Theory, Languages and Computation Addison Wesley Publishing Company, Inc 1979 (Chapter 2 : Finite Automata and Regular Expressions). [2] Phan Th Ti Trnh bin dch Nh xut bn Gio dc 1986 (Chng 3 : B phn tch t vng).

20

Chng III : tmt hu hn v biu thc chnh quy [3] J.A.Garcia and S.Moral- Theory of Finite Automata : http://decsai.ugr.es/~jags/fat.html [4] Donald R. Biggar - Regular Expression Matching Using Finite Automata: http://www3.sympatico.ca/dbiggar/FA.home.html

I. TMT HU HN (FA : Finite Automata)


tmt hu hn FA l mt m hnh tnh ton ca h thng vi s m t bi cc input v output. Ti mi thi im, h thng c th c xc nh mt trong s hu hn cc cu hnh ni b gi l cc trng thi (states). Mi trng thi ca h thng th hin s tm tt cc thng tin lin quan n nhng input chuyn qua v xc nh cc php chuyn k tip trn dy input tip theo. Trong khoa hc my tnh, ta c th tm thy nhiu v d v h thng trng thi hu hn, v l thuyt v tmt hu hn l mt cng c thit k hu ch cho cc h thng ny. Chng hn, mt h chuyn mch nh b iu khin (Control Unit) trong my tnh. Mt chuyn mch th bao gm mt s hu hn cc cng (gate) input, mi cng c 2 gi tr 0 hoc 1. Cc gi tr u vo ny s xc nh 2 mc in th khc nhau cng output. Mi trng thi ca mt mng chuyn mch vi n cng bt k s l mt trng hp trong 2n php gn ca 0 v 1 i vi cc cng khc nhau. Cc chuyn mch th c thit k theo cch ny, v th chng c th c xem nh h thng trng thi hu hn. Cc chng trnh s dng thng thng, chng hn trnh san tho vn bn hay b phn tch t vng trong trnh bin dch my tnh cng c thit k nh cc h thng trng thi hu hn. V d b phn tch t vng s qut qua tt c cc dng k t ca chng trnh my tnh tm nhm cc chui k t tng ng vi mt tn bin, hng s, t kha, Trong qu trnh x l ny, b phn tch t vng cn phi nh mt s hu hn thng tin nh cc k t bt u hnh thnh nhng chui t kha. L thuyt v tmt hu hn thng c dng n nhiu cho vic thit k cc cng c x l chui hiu qu. My tnh cng c th c xem nh mt h thng trng thi hu hn. Trng thi hin thi ca b x l trung tm, b nh trong v cc thit b lu tr ph mi thi im bt k l mt trong nhng s rt ln v hu hn ca s trng thi. B no con ngi cng l mt h thng trng thi hu hn, v s cc t bo thn kinh hay gi l neurons l s c gii hn, nhiu nht c th l 235. L do quan trng nht cho vic nghin cu cc h thng trng thi hu hn l tnh t nhin ca khi nim v kh nng ng dng a dng trong nhiu lnh vc thc t. tmt hu hn (FA) c chia thnh 2 loi: n nh (DFA) v khng n nh (NFA). C hai loi tmt hu hn u c kh nng nhn dng chnh xc tp chnh quy. tmt hu hn n nh c kh nng nhn dng ngn ng d dng hn tmt hu hn khng n nh, nhng thay vo thng thng kch thc ca n li ln hn so vi tmt hu hn khng n nh tng ng.

21

Chng III : tmt hu hn v biu thc chnh quy

1.1. tmt hu hn n nh - DFA (Deterministic Finite Automata)


Mt tmt hu hn n nh (DFA) - gi tt l FA -gm mt tp hu hn cc trng thi v mt tp cc php chuyn t trng thi ny ti trng thi khc trn cc k hiu nhp (input symbols) c chn t mt b ch ci no . Mi k hiu nhp c ng mt php chuyn khi mi trng thi (c th chuyn tr v chnh n). Mt trng thi, thng k hiu l q0, gi l trng thi bt u (trng thi tmt bt u). Mt s trng thi c thit k nh l cc trng thi kt thc hay trng thi chp nhn. Mt th c hng, gi l s chuyn (transition diagram) tng ng vi mt DFA nh sau: cc nh ca th l cc trng thi ca DFA; nu c mt ng chuyn t trng thi q n trng thi p trn input a th c mt cung nhn a chuyn t trng thi q n trng thi p trong s chuyn. DFA chp nhn mt chui x nu nh tn ti dy cc php chuyn tng ng trn mi k hiu ca x dn t trng thi bt u n mt trong nhng trng thi kt thc. Chng hn, s chuyn ca mt DFA c m t trong hnh 3.1. Trng thi khi u q0 c ch bng mi tn c nhn "Start". Ch c duy nht mt trng thi kt thc, cng l q0 trong trng hp ny, c ch ra bng hai vng trn. tmt ny chp nhn tt c cc chui s 0 v s 1 vi s s 0 v s s 1 l s chn. Th d 3.1 :
c Start 1

q0
0

1 q1 0 b

a 0 q2 d 1 0 q3

Hnh 3.1 - S chuyn ca mt DFA Mt iu cn lu , DFA s dng mi trng thi ca n gi ch mt phn ca chui s 0 v 1 ch khng phi cha mt s thc s, v th DFA cn dng mt s hu hn trng thi. nh ngha

22

Chng III : tmt hu hn v biu thc chnh quy Mt cch hnh thc ta nh ngha tmt hu hn l b gm nm thnh phn (Q, , , q0, F), trong : . Q l tp hp hu hn cc trng thi. . l b ch ci nhp hu hn. . l hm chuyn nh x t Q Q, tc l (q, a) l mt trng thi c cho bi php chuyn t trng thi q trn k hiu nhp a. . q0 Q l trng thi bt u . F Q l tp cc trng thi kt thc. Ta v DFA nh l b iu khin hu hn, vi mi trng thi thuc Q, DFA c mt chui cc k hiu a t vit trn bng (nh hnh v). Input 0 1 1 0 0 1 0 1

B iu khin Hnh 3.2 - M t mt DFA Trong mt ln chuyn, DFA ang trng thi q c k hiu nhp a trn bng, chuyn sang trng thi c xc nh bi hm chuyn (q, a), ri dch u c sang phi mt k t. Nu (q, a) chuyn n mt trong nhng trng thi kt thc th DFA chp nhn chui c vit trn bng input pha trc u c, nhng khng bao gm k t ti v tr u c va dch chuyn n. Trong trng hp u c dch n cui chui trn bng, th DFA mi chp nhn ton b chui trn bng. Hm chuyn trng thi m rng c th m t mt cch hnh thc hot ng ca mt DFA trn chui, ta m rng hm chuyn p dng i vi mt trng thi trn chui hn l mt trng thi trn tng k hiu. Ta nh ngha hm chuyn nh mt nh x t Q * Q vi ngha (q, w) l trng thi DFA chuyn n t trng thi q trn chui w. Mt cch hnh thc, ta nh ngha : 1. (q, ) = q 2. (q, wa) = ( (q, w), a), vi mi chui w v k hiu nhp a. Mt s quy c v k hiu : Q l tp cc trng thi. K hiu q v p (c hoc khng c ch s) l cc trng thi, q0 l trng thi bt u. l b ch ci nhp. K hiu a, b (c hoc khng c ch s) v cc ch s l cc k hiu nhp. l hm chuyn. F l tp cc trng thi kt thc.
23

Chng III : tmt hu hn v biu thc chnh quy w, x, y v z (c hoc khng c ch s) l cc chui k hiu nhp.

Ngn ng c chp nhn bi DFA Mt chui w c chp nhp bi tmt hu hn M (Q, , , q0, F) nu (q0, w) = p vi p F. Ngn ng c chp nhn bi M, k hiu L(M) l tp hp: L(M) = { w | (q0, w) F } Th d 3.2 : Xt s chuyn hnh 3.1. Theo khi nim hnh thc, ta c DFA c xc nh bi M (Q, , , q0, F) vi Q = {q0, q1, q2, q3}, = {0, 1}, F = {q0} v hm chuyn nh sau: Trng thi q0 q1 q2 q3 Inputs 0 q2 q3 q0 q1 1 q1 q0 q3 q2

Gi s chui w = 110101 c nhp vo M. Ta c (q0, 1) = q1 v (q1, 1) = q0 ,vy (q0, 11) = ((q0,1),1) = (q1, 1) = q0. Tip tc (q0, 0) = q2, vy (q0, 110) = ((q0, 11), 0) = q2. Tip tc ta c (q0, 1101) = q3, (q0, 11010) = q1 V cui cng (q0, 110101) = q0 F. (Hay (q0, 110101) = (q1, 10101) = (q0, 0101) = (q2, 101) = (q3, 01) = (q1, 1) = q0 F) Vy 110101 thuc L(M). Ta c th chng minh rng L(M) l tp mi chui c s chn s 0 v s chn s 1. Theo m t DFA nh trn, ta thy cng c th dng bng hm chuyn (transition table) m t cc php chuyn trng thi ca mt tmt hu hn. Trong bng hm chuyn, hng cha cc trng thi thuc tp trng thi ca tmt v ct l cc k hiu thuc b ch ci nhp. Bng hm chuyn gi cho chng ta mt cu trc d liu m t cho mt tmt hu hn, ng thi cng cho thy c th d dng m phng hot ng ca DFA thng qua mt chng trnh my tnh, chng hn dng cu trc vng lp. Gii thut m phng hot ng ca mt DFA . Input : Chui nhp x kt thc bi $ . Output : Cu tr li "YES" nu DFA chp nhn chui x v "NO" nu ngc li. . Gii thut : q := q0 ; c := nextchar ; { c l k hiu nhp c c tip theo } While c < > $ do begin q := (q, c); c := nextchar ; end

24

Chng III : tmt hu hn v biu thc chnh quy

Nhn xt : Mt cch tng qut, ta thy tp Q ca DFA th hin cc trng thi lu tr ca tmt trong qu trnh on nhn ngn ng, v nh vy kh nng lu tr ca tmt l hu hn. Mt khc, hm chuyn l hm ton phn v n tr, cho nn cc bc chuyn ca tmt lun lun c xc nh mt cch duy nht. Chnh v hai c im ny m DFA m t nh trn c gi l tmt hu hn n nh.

1.2. tmt hu hn khng n nh - NFA (Nondeterministic Finite Automata)


Xt mt dng sa i m hnh DFA chp nhn khng, mt hoc nhiu hn mt php chuyn t mt trng thi trn cng mt k hiu nhp. M hnh mi ny gi l tmt hu hn khng n nh (NFA). Mt chui k hiu nhp a1 a2 ... an c chp nhn bi mt NFA nu c tn ti mt chui cc php chuyn, tng ng vi chui nhp, t trng thi bt u n trng thi kt thc. Chng hn, chui 01001 c chp nhn bi tmt trong hnh di y v c chui php chuyn qua cc trng thi q0, q0, q0, q3, q4, q4 c nhn tng ng l 0, 1, 0, 0, 1. NFA ny chp nhn tt c cc chui c hai s 0 lin tip hoc hai s 1 lin tip. Th d 3.3 :
Start 1 0 q0 0 q3 0 1 0 q4

1 q1 1

q2 0 1 25

Chng III : tmt hu hn v biu thc chnh quy

Hnh 3.3 - S chuyn ca mt NFA Ch rng c th xem tmt hu hn n nh - DFA (hay gi tt l FA) l mt trng hp c bit ca NFA, trong mi trng thi ch c duy nht mt php chuyn trn mi k hiu nhp. V th trong DFA, vi mt chui nhp w v trng thi q, ch c ng mt ng i nhn w bt u t q. xc nh chui w c c chp nhn bi DFA hay khng ch cn kim tra ng i ny. Nhng i vi NFA, c th c nhiu ng i c nhn l w, v do tt c phi c kim tra thy c hay khng c ng i ti trng thi kt thc. Tng t nh DFA, NFA cng hot ng vi mt b iu khin hu hn c trn bng nhp. Tuy nhin, ti mi thi im, b iu khin c th cha mt s bt k trng thi. Khi c s la chn trng thi k tip, chng hn nh t trng thi q0 trn k hiu nhp 0 hnh 3.3, ta phi tng tng nh c cc bn sao ca tmt ang thc hin ng thi. Mi trng thi k tip m tmt c th chuyn n s tng ng vi mt bn sao ca tmt m ti b iu khin ang cha trng thi . Chng hn, vi chui 01001, ta c : q0
0 0

q0

1 1

q0

0 0

q0

0 0

q0

1 1

q0

q3

q1

q3
0

q3

q1

q4 nh ngha

q4

Mt cch hnh thc ta nh ngha tmt hu hn khng n nh NFA l mt b 5 thnh phn (Q, , , q0, F) trong Q, , q0 v F c ngha nh trong DFA, nhng l hm chuyn nh x t Q 2Q. Khi nim (q, a) l tp hp tt c cc trng thi p sao cho c php chuyn trn nhn a t trng thi q ti p. Hm chuyn trng thi m rng thun tin trong vic m t hot ng tmt trn chui, ta m rng hm chuyn nh x t Q * 2Q nh sau :
26

Chng III : tmt hu hn v biu thc chnh quy 1. (q, ) = {q} 2. (q, wa) = { p | c mt trng thi r trong (q, w) m p thuc (r, a)} = ((q, w), a) 3. (P, w) = q P (q, w) , P Q. Ngn ng c chp nhn bi NFA Ngn ng L(M), vi M l tmt hu hn khng n nh NFA (Q, , , q0, F) l tp hp : L(M) = {w | (q0, w) c cha mt trng thi trong F } Th d 3.4 : Xt s chuyn ca hnh 3.3. Theo khi nim hnh thc, ta c : NFA M ({q0, q1, q2, q3, q4}, {0, 1}, , q0, {q2, q4}) vi hm chuyn nh sau : Trng thi q0 q1 q2 q3 q4 Inputs 0 {q0,q3} {q2} {q4} {q4} 1 {q0,q1} {q2} {q2} {q4}

Xt chui nhp w = 01001 Ta c : (q0, 0) = {q0, q3} (q0, 01) = ((q0, 0),1) = ({q0, q3},1) = (q0, 1) (q3, 1) = {q0, q1} Tng t , ta c th tnh : (q0, 010) = {q0, q3} (q0, 0100) = {q0, q3, q4} v (q0, 01001) = {q0, q1, q4} Do q4 F nn w L (M). Cu hi : 1. Hy cho nhn xt v im khc bit quan trng gia DFA v NFA ? 2. Theo bn, dng n nh hay khng n nh s dng nhn dng mt chui d dng hn ?

1.3. S tng ng gia DFA v NFA


V mi DFA l mt NFA, nn r rng lp ngn ng c chp nhn bi NFA cng bao gm cc tp chnh quy (y chnh l ngn ng c chp nhn bi DFA ). Tuy nhin, khng c c s ni rng NFA ch chp nhn duy nht cc tp hp ny. iu cho thy DFA c th m phng c hot ng ca NFA, ngha l vi mi NFA,
27

Chng III : tmt hu hn v biu thc chnh quy ta c th xy dng mt DFA tng ng (chp nhn cng mt ngn ng vi n). t mt DFA m phng hot ng ca NFA l cho php cc trng thi ca DFA tng ng vi tp cc trng thi ca NFA. Ti mi thi im, DFA lu gi trong b iu khin tt c cc trng thi m NFA c th chuyn n khi c cng mt input nh DFA. NH L 3.1 : Nu L l tp c chp nhn bi mt NFA th tn ti mt DFA chp nhn L. Chng minh t M (Q, , , q0, F) l NFA chp nhn L. Ta xy dng DFA M' (Q, , , q0, F) tng ng nh sau: - Cc trng thi ca M l tt c cc tp hp con ca tp trng thi ca M, hay Q= 2Q. Ti mi thi im, M s lu gi trong trng thi ca n tt c cc trng thi c th ca M. Mt phn t trong Q c k hiu l [q1, q2,..., qi], trong cc trng thi q1, q2,..., qi Q. Ta xem [q1, q2,..., qi] l mt trng thi n ca DFA tng ng vi mt tp trng thi ca NFA. - q0 = [q0]. - F' l tp hp cc trng thi ca Q c cha t nht mt trng thi kt thc trong tp F ca M. - Ta nh ngha hm chuyn nh sau : ([q1, q2,..., qi], a) = [p1, p2,..., pj] nu v ch nu ({q1, q2,..., qi }, a) = {p1, p2,..., pj} By gi ta chng minh quy np theo di ca chui nhp x rng: (q0, x) = [q1, q2,..., qi] (q0, x) = {q1, q2,..., qi} (1) Vi x= 0 , ta c x = v q0 = [q0] nn (1) hin nhin ng Gi s (1) ng vi cc chui nhp c di ti m. Xt chui nhp c di m + 1, t chui ny l xa vi a , ta c : (q0, xa) = ((q0, x), a) Theo nh ngha : ([p1, p2,..., pi], a) = [r1, r2,..., rk] ({p1, p2,..., pj}, a) = {r1, r2,..., rk}. Mt khc theo gi thit quy np (q0, x) = [p1, p2,..., pj] (q0, x) = {p1, p2,..., pj}, nn thay vo ta c : (q0, xa) = [r1, r2,..., rk] (q0, xa) = {r1, r2,..., rk}. D thy rng (q0, x) F' khi v ch khi (q0, x) c cha t nht mt trng thi F. Vy L(M) = L(M) V NFA v DFA chp nhn cng cc tp hp, nn ta s khng phn bit chng tr khi iu tht s cn thit, s n gin hn hiu c hai cng l tmt n nh. Th d 3.5 : Cho NFA M ({q0, q1}, {0, 1}, , q0, {q1}) vi hm chuyn nh sau : (q0, 0) = {q0, q1}, (q0,1) = {q1}, (q1, 0) = , (q1, 1) = {q0, q1} Ta xy dng DFA tng ng M (Q, {0, 1}, , [q0], F) chp nhn L(M) nh sau : . Q : cha tt c cc tp con ca {q0, q1}, vy Q = {[q0], [q1], [q0, q1], } . Hm chuyn :
28

Chng III : tmt hu hn v biu thc chnh quy V (q0, 0) = {q0, q1} nn ([q0], 0) = [q0, q1] Tng t : ([q0], 1) = [q1] ([q1], 0) = ([q1], 1) = [q0, q1] Mt khc : (, 0) = (, 1) = Cui cng : ([q0, q1],0) = [q0, q1] ( v ({q0, q1},0) = (q0, 0) (q1, 0) = {q0, q1} = {q0, q1}) ([q0, q1], 1) = [q0, q1] ( v ({q0, q1},1) = (q0, 1) (q1, 1) = {q1} {q0, q1} = {q0, q1}) . Tp trng thi kt thc F' = {[q1], [q0, q1]} Thc t, c rt nhiu trng thi ca NFA khng c hm chuyn n t trng thi bt u [q0]. Do , thng thng, cch tt nht l ta nn xy dng DFA tng ng bt u t trng thi [q0] v thm vo cc trng thi mi cho DFA ch khi c cc hm chuyn t mt trng thi c thm vo trc . Cu hi : Bn c nhn xt g v kch thc gia mt DFA v mt NFA tng ng vi n chp nhn cng mt tp ngn ng ?

1.4. NFA vi -dch chuyn (NFA)


Ta m rng m hnh NFA cho php cc php chuyn trn nhn rng . S chuyn sau y ca mt NFA chp nhn chui gm mt s bt k (c th l 0) ch s 0 sau l mt s bt k ch s 1 v sau na l mt s bt k ch s 2. Thng thng, ta ni NFA chp nhn mt chui w nu c ng truyn nhn w t trng thi bt u n mt trng thi kt thc. Chng hn, chui 002 c chp nhn bi ng truyn q0, q0, q0, q1, q2, q2 vi cc cung nhn 0, 0, , , 2. Th d 3.6 : S chuyn ca mt NFA vi -dch chuyn :
0 Start q0 1 2

q1

q2

Hnh 3.4 - NFA vi -dch chuyn nh ngha: Mt cch hnh thc ta nh ngha NFA vi -dch chuyn l b 5 thnh phn (Q, , , q0, F) vi tt c cc thnh phn c ngha nh trn, nhng hm chuyn l nh x t Q ( {}) 2Q.

29

Chng III : tmt hu hn v biu thc chnh quy Khi nim (q, a) gm tt c cc trng thi p sao cho c php chuyn nhn a t q ti p, trong a l mt k hiu thuc hoc l . Hm chuyn trng thi m rng: Ta m rng hm chuyn thnh hm chuyn * nh x t Q * 2Q. *(q,w) cha tt c cc trng thi p sao cho c th i t q ti p theo ng i nhn w (c th cha cnh nhn ). Ta s dng -CLOSURE(q) xc nh tp tt c cc nh p sao cho c ng i t q ti p vi nhn . Th d 3.7 : Trong hnh 3.4, -CLOSURE(q0) = {q0, q1, q2}. V ng i ch c mt nh q0 (khng c cung trn ng i) l ng i t q0 ti q0 c tt c cc cnh nhn l . ng i q0, q1 ch ra rng q1 thuc -CLOSURE(q0). V ng i q0, q1, q2 ch ra rng q2 thuc -CLOSURE(q0). t -CLOSURE(P) = qP -CLOSURE(q), trong P l mt tp cc trng thi v q l mt trng thi. Ta nh ngha hm * nh sau: 1. *(q, ) = -CLOSURE(q) 2. *(q, wa) = -CLOSURE(P), trong tp P = {p | c r trong *(q, w) sao cho p (r, a)}, w * v a Hay *(q, wa) = -CLOSURE((*(q, w), a) Ta m rng v * trn tp hp cc trng thi R nh sau : 3. (R, a) = qR (q, a), v 4. *(R, w) = qR *(q, w) Cu hi : Hy so snh s khc bit gia hm chuyn v * ? Nhn xt : *(q, a) v (q, a) khng nht thit bng nhau v *(q, a) gm tt c cc trng thi c th chuyn n c t q trn nhn a gm c ng i nhn , trong khi (q, a) ch gm cc trng thi c th n c t q ch bng cc cung nhn a. Tng t *(q, ) c th cng khng bng (q, ). V vy ta phi phn bit k hiu v * i vi NFA vi -dch chuyn. Ngn ng c chp nhn bi NFA: Ta nh ngha L(M), ngn ng c chp nhn bi NFA M = (Q, , , q0, F) l tp hp cc chui : L(M) = {w | *(q0, w) c cha t nht mt trng thi trong F} Th d 3.8 : Xt s chuyn ca hnh 3.4.

30

Chng III : tmt hu hn v biu thc chnh quy Theo khi nim hnh thc, ta c NFA M ({q0, q1, q2}, {0, 1, 2}, , q0, {q2}) vi hm chuyn nh sau : Inputs Trng thi 0 1 2 q0 {q0 } { q1} q1 {q1} {q1} q2 {q2} Xt chui nhp w = 012. Ta cn tnh *(q0, 012) Ta c : *(q0, ) = -CLOSURE(q0) = {q0, q1, q2} vy *(q0, 0) = -CLOSURE((*(q0, ), 0) = -CLOSURE(({q0, q1, q2}, 0)) = -CLOSURE((q0, 0) (q1, 0) (q2, 0)) = -CLOSURE({q0} ) = -CLOSURE({q0}) = {q0, q1, q2} * v (q0, 01) = -CLOSURE((*(q0, 0), 1)) = -CLOSURE(({q0, q1, q2}, 1)) = -CLOSURE((q0, 1) (q1, 1) (q2, 1)) = -CLOSURE( {q1} ) = -CLOSURE({q1}) = {q1, q2} * (q0, 012) = -CLOSURE(( *(q0, 01), 2)) = -CLOSURE(({q1, q2}, 2)) = -CLOSURE((q1, 2) (q2, 2)) = -CLOSURE( {q2}) = -CLOSURE({q2}) = {q2} * Do (q0, 012) c cha trng thi q2 F nn chui w L(M). Gii thut m phng hot ng ca mt NFA : . Input : Chui nhp x c kt thc bi $. . Output : Cu tr li "YES" nu NFA chp nhn chui x v "NO" nu ngc li. . Gii thut : q := -CLOSURE(q0); c := nextchar ; { c l k hiu nhp c c tip theo } While c <> $ do begin q := -CLOSURE((q, c)); c := nextchar ; end

31

Chng III : tmt hu hn v biu thc chnh quy If q in F then write ("YES") else write ("NO");

1.5. S tng ng gia NFA c v khng c -dch chuyn


Tng t nh NFA, kh nng c th thc hin php chuyn trn nhn ca NFA cng khng lm cho NFA chp nhn c cc tp hp khng chnh quy. Ta c th dn chng iu ny bng cch m phng hot ng ca mt NFA bi mt NFA khng c -dch chuyn. NH L 3.2 : Nu L c chp nhn bi mt NFA c -dch chuyn th L cng c chp nhn bi mt NFA khng c -dch chuyn. Chng minh t M (Q, , , q0, F) l NFA vi -dch chuyn. Ta xy dng NFA M(Q, , , q0, F) tng ng khng c -dch chuyn, trong : F {q0} nu -CLOSURE(q0) cha mt trng thi thuc F . F = F trong cc trng hp cn li . (q, a) l *(q, a) vi q Q v a . Ch rng M khng c -dch chuyn nn ta c th dng thay cho *, nhng phi phn bit v *. Ta chng minh bng quy np trn | x | rng (q0, x) = *(q0, x). Tuy nhin, iu c th khng ng vi x = v (q0, ) = {q0} trong khi *(q0, ) = -CLOSURE(q0). Do , c s quy np bt u vi di chui l 1. Vi | x | = 1 th x l mt k hiu a v (q, a) = *(q, a) theo nh ngha . Xt | x | > 1: t x = wa vi a l mt k hiu trong . Ta c (q, wa) = ((q0, w), a) Theo gi thit quy np th (q0, w) = *(q0, w). t *(q0, w) = P, ta cn ch ra rng (P, a) = *(q0, wa). Ta c (P, a) = qP (q, a) = qP *(q, a). Hn na v P = *(q0, w) nn qP *(q, a) = *(q0, wa) ( theo quy tc 2 trong nh ngha *). Vy (q0, wa) = *(q0, wa) y chng minh ta cn phi ch ra rng (q0, x) cha mt trng thi trong F nu v ch nu *(q0, x) cha mt trng thi trong F. Nu x = th iu hin nhin ng (theo nh ngha ca F) Nu x th ta t x = wa vi a .

32

Chng III : tmt hu hn v biu thc chnh quy Nu *(q0, x) cha mt trng thi trong F th chc chn (q0, x) cha cng trng thi trong F. Ngc li, nu (q0, x) cha mt trng thi trong F khc hn q0 th (q0, x) phi cha mt trng thi trong F (v tp F v F ch chnh lch nhau trng thi q0). Nu (q0, x) c cha trng thi q0 v q0 cng l mt trng thi thuc tp trng thi kt thc F th v *(q0, x) = -CLOSURE(( *(q0, w),a)), nn trng thi chung trong -CLOSURE(q0) v trong F phi trong *(q0, x). Th d 3.9 : Chuyn NFA vi -dch chuyn hnh 3.4 sang dng NFA khng c cha -dch chuyn. Ta xy dng NFA tng ng M(Q, , , q0, F) chp nhn L(M) vi cc thnh phn : . Q = {q0, q1, q2} . = {0, 1, 2} . Trng thi bt u : q0 . F' = {q0, q2} do -CLOSURE(q0) = {q0, q1, q2} c cha q2 F . Hm chuyn ca M c xc nh theo cng thc : * * (q, a) = (q, a) = -CLOSURE(( (q0, ), a) Kt qu c ch ra trong bng hm chuyn sau : Trng thi q0 q1 q2 S chuyn trng thi:
0 Start q0 0, 1 1 q1 0, 1, 2 1, 2 2 q2

0 {q0, q1, q2}

Inputs 1 {q1, q2} {q1, q2}

2 {q2} {q2} {q2}

Hnh 3.5 - NFA tng ng cho th d 3.9

1.6. Gii thut xy dng DFA t NFA


Qua kho st cc dng m rng t m hnh tmt hu hn ban u, ta thy DFA thc cht l mt trng hp c bit ca NFA, nhng : - N khng c s truyn rng (truyn trn nhn )
33

Chng III : tmt hu hn v biu thc chnh quy - Vi mi trng thi q v k hiu nhp a, ch c duy nht mt ng truyn n mt trng thi khc. Gi s mi trng thi ca DFA l mt tp trng thi ca NFA, DFA dng trng thi ca mnh lu gi tt c cc trng thi ca NFA t c sau khi NFA c mt k t nhp. Nh vy sau khi c cc k t nhp a1, a2, ... , an, DFA trng thi l tp con ca cc trng thi thuc NFA, t c khi NFA i t trng thi bt u theo mt con ng no c tn a1a2 ... an. S trng thi ca DFA lc phi bng s phn t trong tp ly tha ca s trng thi NFA. Song, trn thc t trng hp xu nht ny t khi xy ra. Cc trng thi thc s c dng trong s chuyn cho mt DFA s c xc nh theo cc php chuyn trng thi trn nhn l mi k hiu t trng thi bt u ca DFA, v sau ln lt c b sung thm vo tp trng thi nu nh n cha c trong . Gii thut chi tit c trnh by nh sau : Input: Mt tmt hu hn khng n nh NFA. Output: Mt tmt hu hn n nh DFA nhn dng cng ngn ng nh NFA. Phng php: Xy dng bng hm chuyn cho DFA m phng ng thi tt c cc chuyn dch ca NFA trn chui nhp cho trc. Ta dng cc tc v sau lu gi cc tp trng thi ca NFA : (q : l mt trng thi ca NFA, T : l tp trng thi ca NFA) a) -closure(q) : l tp trng thi ca NFA t c t trng thi q trn s truyn rng. b) -closure(T) : l tp trng thi ca NFA t c t tt c cc trng thi q thuc tp T trn s truyn rng. c) (T, a) : l tp trng thi ca NFA t c t tt c cc trng thi q thuc tp T trn s truyn bng k hiu a. Phn tch: Trc khi c vo mt k t nhp, DFA c th mt trng thi bt k trong cc trng thi thuc -closure(q0) vi q0 l trng thi bt u ca NFA. Gi trng thi ny l T. Gi s cc trng thi ca T l cc trng thi t c t q0 trn cc k hiu nhp v gi s a l k hiu nhp k tip. Khi c a, NFA c th chuyn n mt trng thi bt k trong tp trng thi (T, a). Khi chng ta cho php s truyn rng, NFA c th bt k trng thi no trong -closure((T, a)) sau khi c a. Gii thut : Trng thi bt u -closure(q0) ch l mt trng thi trong cc trng thi ca DFA v trng thi ny cha c nh du; While C mt trng thi T ca DFA cha c nh du do Begin nh du T; { xt trng thi T}

34

Chng III : tmt hu hn v biu thc chnh quy For Vi mi k hiu nhp a do begin U:= -closure((T, a)) If U khng c trong tp trng thi ca DFA then begin Thm U vo tp cc trng thi ca DFA v trng thi ny cha c nh du; [T, a] := U; {[T, a] l phn t ca bng chuyn DFA} end; end; End; Ta xy dng cc trng thi v bng hm chuyn cho DFA theo cch nh sau : - Mi trng thi ca DFA tng trng bi mt tp trng thi ca NFA m NFA c th chuyn n sau khi c mt chui k hiu nhp gm: tt c s truyn rng c th xy ra trc hoc sau cc k hiu c c. - Trng thi bt u ca DFA l -closure(q0) - Cc trng thi v hm chuyn s c thm vo D bng gii thut trn. - Mt trng thi ca DFA l trng thi kt thc nu n l tp cc trng thi ca NFA cha t nht mt trng thi kt thc ca NFA. Vic tnh ton -closure(T) c th xem nh qu trnh tm kim mt th ca cc nt t cc nt cho trc v th bao gm ton nhng cnh c nhn ca NFA. Gii thut n gin tm -closure(T) l dng Stack lu gi cc trng thi m cnh ca chng cha c kim tra cho s truyn rng. Th d 3.10 : To DFA t NFA sau

2 Start 0

10

Hnh 3.6 Th d chuyn NFA c -dch chuyn Cc bc xy dng tp trng thi cho DFA : 1) Trng thi bt u ca DFA : -closure(0) = {0, 1, 2, 4, 7} = A*
35

Chng III : tmt hu hn v biu thc chnh quy 2) -closure((A, a)) = -closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8} = B* 3) -closure((A, b)) = -closure({5}) = {1, 2, 4, 5, 6, 7} = C* 4) -closure((B, a)) = -closure({3, 8}) = B 5) -closure((B, b)) = -closure({5, 9}) = {1, 2, 4, 5, 6, 7, 9} = D* 6) -closure((C, a)) = -closure({3, 8}) = B 7) -closure((C, b)) = -closure({5}) = C 8) -closure((D, a)) = -closure({3, 8}) = B 9) -closure((D, b)) = -closure({5, 10}) = {1, 2, 4, 5, 6, 7, 10} = E* 10) -closure((E, a)) = -closure({3, 8}) = B 11) -closure((E, b)) = -closure({5}) = C T cc tp trng thi ny, ta xc nh c A l trng thi bt u, E l trng thi kt thc (v trong E c cha trng thi 10 l trng thi kt thc ca NFA) v bng hm chuyn ca DFA nh sau : Trng thi A B C D E K hiu nhp a b B C B D B C B E B C

T bng hm chuyn nh trn, ta xy dng s chuyn trng thi cho DFA tng ng nhn dng cng ngn ng c dng nh sau : b b
Start

C a b b a a D b E

a a

Hnh 3.7 DFA tng ng cho th d 3.10 Nhn xt : Mc d c s khc nhau trong nh ngha, ta thy dng khng n nh NFA c nh ngha tng qut hn dng n nh DFA, nhng r rng kh nng nhn dng cng lp ngn ng ca chng l tng ng nhau. Trong thc t, cc my tnh s hon ton l n nh, trng thi ca chng ti mi thi im l xc nh c duy nht t mt chui nhp bt k v trng thi bt u.

36

Chng III : tmt hu hn v biu thc chnh quy Cu hi : Ti sao cn nh ngha dng khng n nh ? Mt s gi cu tr li: 1. Trong mt s cc bi ton mang tnh chn la, c nhiu hng gii quyt (nhiu cch i) nh trong cc chng trnh tr chi (games) th thng thng hng gii quyt tt nht (cch i tt nht) l khng bit trc c, nhng c th tm thy c bng cch s dng chin lc tm kim quay lui (backtracking). Khi c mt vi kh nng chn la c th, ta chn mt kh nng trong chng v i theo hng cho n khi xc nh hng l tt nht hay cha. Nu cha phi l hng tt nht, ta phi quay v im quyt nh cui cng trc v th kho st theo mt hng khc. Mt gii thut m phng qu trnh tm kim quay lui ny l mt gii thut khng n nh. 2. Khng n nh i khi cn rt hu hiu trong vic gip gii quyt cc bi ton d dng. Chng hn, trong mt s bi ton th vic xy dng mt NFA c v t nhin v n gin hn vic tm mt DFA cho chng. Tng t nh vy, khng n nh cn l mt c ch hiu qu dng m t vn phm sinh ra ngn ng mt cch sc tch (s chn la cc lut sinh sinh t cng mt bin). 3. Trong thc t, mt vi kt qu l d dng c chng minh i vi NFA hn l DFA. V vy vic cho php c ch khng n nh thng lm n gin ha cc l lun hnh thc m khng nh hng n tnh tng qut ca kt lun.

II. BIU THC CHNH QUY (RE : Regular Expressions)


Lp ngn ng c chp nhn bi mt tmt hu hn cng c th c m t thng qua mt dng biu thc ngn gn v sc tch gi l biu thc chnh quy. Trong phn ny, chng ta s gii thiu s kt hp ca cc php ton hp, ni kt v bao ng Kleene trn cc tp hp chui nh ngha biu thc chnh quy v chng t rng lp ngn ng c chp nhn bi mt tmt hu hn th thc s l lp ngn ng c m t bi biu thc chnh quy.

2.1. nh ngha
Cho l mt b ch ci. Biu thc chnh quy trn v cc tp hp m chng m t c nh ngha mt cch quy nh sau: 1) l biu thc chnh quy k hiu cho tp rng
37

Chng III : tmt hu hn v biu thc chnh quy 2) l biu thc chnh quy k hiu cho tp {} 3) a , a l biu thc chnh quy k hiu cho tp {a} 4) Nu r v s l cc biu thc chnh quy k hiu cho cc tp hp R v S th (r + s), (rs) v ( r*) l cc biu thc chnh quy k hiu cho cc tp hp R S, RS, R* tng ng. Trong khi vit biu thc chnh quy ta c th b bt cc du ngoc n vi lu rng th t u tin ca cc php ton xp theo th t gim dn l: php bao ng, php ni kt, php hp. Chng hn : Biu thc ((0(1*)) + 1) c th vit l 01*+ 1. Cu hi : Nh trn ta ni, biu thc chnh quy dng k hiu cho mt lp ngn ng. Bn hy th lit k mt vi chui v hnh dung lp ngn ng c k hiu bi biu thc chnh quy r = 01*+ 1 trn ? Php ton bao ng dng cng c th c s dng khi vit biu thc chnh quy. Ta c th vit rt gn rr* hay r*r thnh r+. Nu cn thit phn bit th ta s dng k hiu r cho biu thc chnh quy r v L(r) cho ngn ng c k hiu bi biu thc chnh quy r; ngc li mt cch tng qut, ta c th dng r cho c hai. Th d 3.11 : Mt s biu thc chnh quy k hiu cho cc ngn ng : . 00 l biu thc chnh quy biu din tp {00}. . (0+1)* k hiu cho tp hp tt c cc chui s 0 v s 1, k c chui rng = {, 0, 1, 00, 01, 10, 11, 010, 011, 0010 ... } . (0+1)*00(0+1)* k hiu cho tp hp tt c cc chui 0,1 c t nht hai s 0 lin tip. = {00, 000, 100, 0000, 0001, 1000, 1001, 011001, ... } . (1+10)* k hiu cho tt c cc chui 0, 1 bt u bng s 1 v khng c hai s 0 lin tip = {, 1, 10, 11, 1010, 111, 101010, ... } * . (0+)(1+10) k hiu cho tt c cc chui khng c hai s 0 lin tip. = {, 0, 01, 010, 1, 10, 01010, 0111, ... } * . (0+1) 011 k hiu cho tt c cc chui 0, 1 tn cng bi 011. = {011, 0011, 1011, 00011, 11011, ... } * * * . 0 1 2 k hiu cho tt c cc chui c mt s bt k cc s 0, theo sau l mt s bt k s 1 v sau na l mt s bt k s 2. = {, 0, 1, 2, 01, 02, 12, 012, 0012, 0112, ... } * * * . 00 11 22 k hiu cho tt c cc chui trong tp 0*1*2* vi t nht mt trong mi k hiu. 00*11*22* c th c vit gn thnh 0+1+2+ Th d 3.12 : Biu thc chnh quy k hiu cho tp hp cc chui tn bin ng trong ngn ng lp trnh Pascal :
38

Chng III : tmt hu hn v biu thc chnh quy Mt chui tn bin (identifiers) c gi l hp l trong mt chng trnh Pascal nu nh n bt u bng t nht mt ch ci v theo sau l cc ch ci, s, k hiu underline hoc mt vi k hiu cho php khc trn bn phm my tnh. Biu thc chnh quy c dng nh sau : r = (A + + Z + a + + z) (A + + Z + a + + z + 0 + + 9 + _ + )* Th d 3.13 : Biu thc chnh quy k hiu cho tp hp cc s nguyn trong ngn ng lp trnh Pascal : Mt chui s nguyn trong mt chng trnh Pascal c th bt u bng du m (-) hoc du dng (+) hay khng cha k hiu du, v theo sau l mt chui cc k hiu s vi t nht l mt s. Biu thc chnh quy c dng nh sau : r = ( + + - + ) ( 0 + + 9 (0 + +9 )* Nhn xt : Thng thng, vic tm mt biu thc chnh quy k hiu cho mt ngn ng kh hn vic xc nh ngn ng c k hiu bi mt biu thc chnh quy v khng c gii thut cho loi bi ton ny.

2.2. Mt s tnh cht i s ca biu thc chnh quy


D dng chng minh rng, nu cho r, s, t l cc biu thc chnh quy th ta c cc ng thc sau : 1. r+s=s+r 2. r+r=r 3. r + (s+t) = (r+s) + t 4. r (st) = (rs) t 5. r (s+t) = rs + rt 6. (r+s) t = rt + st 7. r = r = r 8. r = r = 9. r+=r 10. * = 11. ( + r)* = r* 12. r + r* = r* 13. ( r* )* = r* 14. ( r* s* )* = (r+s)* Trong , ta c r = s c ngha l L(r) = L(s).

III. S TNG NG GIA TMT HU HN V BIU THC CHNH QUY


Nh trn ni, cc ngn ng c chp nhn bi tmt hu hn cng l cc ngn ng c m t bi biu thc chnh quy. Chnh v s tng ng ny, m ngi ta gi ngn ng chp nhn bi tmt hu hn l cc tp chnh quy. Trong phn ny, thng qua hai nh l, ta s ch ra bng quy np theo kch thc ca (s php ton trong) biu thc chnh quy rng c tn ti mt NFA vi -dch chuyn chp nhn cng ngn ng; ng thi vi mi DFA cng c mt biu thc chnh quy xc nh chnh ngn ng ca n.
39

Chng III : tmt hu hn v biu thc chnh quy

NH L 3.3: Nu r l biu thc chnh quy th tn ti mt NFA vi -dch chuyn chp nhn L(r). Chng minh Ta s chng minh quy np theo s php ton ca biu thc chnh quy r rng c tn ti mt NFA M vi -dch chuyn c mt trng thi kt thc v khng c cc php chuyn khi trng thi ny chp nhn biu thc chnh quy r: L(M) = L(r). . r khng c php ton: Vy r phi l , hoc a (vi a ). Cc NFA di y tho mn iu kin:
Start

q0

Start

q0 r=

qf

Start

q0

a r=a

qf

r=

Hnh 3.7 - Cc NFA cho cc kt hp n . r c cha cc php ton: Gi s nh l ng vi r c t hn i php ton, i 1. Xt r c i php ton. C 3 trng hp : 1) r = r1+ r2. C hai biu thc chnh quy r1, r2 c t hn i php ton, vy ta c 2 tmt hu hn NFA M1 (Q1, 1, 1, q1, {f1}) v M2 (Q2, 2, 2, q2, {f2}) sao cho L(M1) = L(r1) v L(M2) = L(r2). V cc trng thi c th thay i tn nn ta gi s hai tp trng thi Q1 v Q2 l ri nhau. t q0 l trng thi bt u mi v {f0} l tp trng thi kt thc mi, ta xy dng NFA M (Q1 Q2 {q0, f0}, 1 2, , q0, {f0}), trong c xc nh nh sau: . (q0, ) = {q1, q2} . (q, a) = 1(q, a) vi q Q1 - {f1} v a 1 {} . (q, a) = 2(q, a) vi q Q2 - {f2} v a 2 {} . (f1, ) = (f2, ) = {f0} Ch do gi thit quy np l khng c php chuyn no ra khi f1, f2 trong M1, M2. V vy tt c cc php chuyn ca M1 v M2 u c trong M. Cch xy dng M ch ra trong hnh a. Bt k ng i no trong s chuyn ca M t q0 ti f0 phi bt u bng cch i ti q1 hoc q2 bng nhn . Nu ng i qua q1 th n theo mt ng i no trong M1 ti f1 ri sau ti f0 bng nhn . Tng t trong trng hp ng i qua q2. C mt ng i t q0 n f0 nhn x khi v ch khi c ng i nhn x trong M1 t q1 n f1 hoc c ng i nhn x trong M2 t q2 n f2. Vy L(M) = L(M1) L(M2)
Start 40

q0

q1

M1

f1

f0

q2

M2
B

f2

Chng III : tmt hu hn v biu thc chnh quy

Hnh a - Php hp
Start q1

M1

f1

q2

M2

f2

Hnh b - Php ni kt

Start q0

q1

M1

f1

f0

Hnh c - Php bao ng Hnh 3.8 - Cc NFA cho kt hp phc 2) r = r1 r2 t M1 v M2 l cc tmt NFA nh trong trng hp trn v ta xy dng tmt M (Q, , , {q1}, {f2}), trong c xc nh nh sau: . (q, a) = 1(q, a) vi q Q1 - {f1} v a 1 {} . (f1, ) = {q2} . (q, a) = 2(q, a) vi q Q2 v a 2 {} Cch xy dng M ch ra trong hnh b. Mi ng i trong M t q1 ti f2 l ng i c nhn x t q1 ti f1 sau l mt cung t f1 ti q2 nhn v tip n l ng i t q2 ti f2. Vy L(M) = {xy | x L(M1) v y L(M2)} hay L(M) = L(M1) L(M2). 3) r = r t M1 (Q1, 1, 1, q1, {f1}) v L(M1) = r1. Xy dng M (Q1 {q0, f0} 1, , q0, {f0}), trong c cho: . (q0, ) = (f1, ) = {q1, f0} . (q, a) = 1(q, a) vi q Q1 - {f1} v a 1 {} Cch xy dng M c ch ra trong hnh c. Mi ng i t q0 ti f0 gm: hoc ng i t q0 ti f0 bng nhn ; hoc ng i t q0 ti q1 bng nhn v sau l ng i t q1 ti f1 trn chui thuc L(M), ri n f0 bng nhn . Nh vy c ng i t q0 ti f0 nhn l x nu v ch nu ta c th vit x = x1 x2 ... xj vi j 0 (trng hp j = 0 khi x = ) xi L(M1). Vy L(M) = L(M1)*.
*

41

Chng III : tmt hu hn v biu thc chnh quy Th d 3.14 : Xy dng NFA chp nhn lp ngn ng c k hiu bi biu thc chnh quy r = 01* + 1. Ta thy L(r) = { 1, 0, 01, 011, 0111, 01111, 011111, } l tp ngn ng cha cc bit n 0, 1 v cc chui bit nh phn bt u bng bit 0, theo sau l mt chui bit 1 vi di tu . Theo quy lut th t u tin, biu thc 01* + 1 thc cht l (0(1*)) + 1, v vy n c dng r1 + r2 vi r1 = 01* v r2 = 1. Ta s ln lt xy dng cc NFA cho cc biu thc chnh quy con, sau da vo cc quy tc kt hp xy dng NFA cho ton b biu thc chnh quy cho. . NFA cho r2 = 1 d dng xy dng :
Start q1

q2

. NFA cho r1 = 01*: Ta tch r1 = r3 r4 , trong r3 = 0 v r4 = 1* + NFA cho r3 = 0 :


Start q3

q4

+ NFA r4 = 1* : Ta vit r4 = r5*, trong r5 = 1. NFA cho r5 = 1 :


Start q5

q6

Theo quy tc 3) ta xy dng c NFA cho r4 = r5* = 1* nh sau :

Start q7

q5

q6

q8

Theo quy tc 2) ta xy dng c NFA cho r1 = r3 r4 = 01* nh sau :

Start

q3

q4

q7

q5

q6

q8

Cui cng, theo quy tc 1) ta xy dng NFA cho r = r1 + r2 = 01*+ 1 nh sau :

42

Chng III : tmt hu hn v biu thc chnh quy


1

q1

q2

Start q9


q10

q3

q4

q7

q5

q6

q8

Hnh 3.9 - NFA cho v d 3.13 Phn chng minh ca nh l 3.3 trn cng chnh l c s ca gii thut chuyn i mt biu thc chnh quy thnh tmt hu hn. Mt im cn lu l th t u tin ca cc php ton c s dng trong biu thc chnh quy, iu ny rt quan trng cho qu trnh tch biu thc chnh quy thnh cc biu thc con trong nhng trng hp vit biu thc chnh quy dng tt (khng c du ngoc). By gi, ta cn chng t rng mi tp hp c chp nhn bi mt tmt hu hn th cng c k hiu bi mt s biu thc chnh quy. NH L 3.4 : Nu L c chp nhn bi mt DFA, th L c k hiu bi mt biu thc chnh quy. Chng minh t L l tp hp c chp nhn bi DFA M ({q1, q2,..., qn}, , , q1, F). t Rkij l tp hp tt c cc chui x sao cho (qi, x) = qj v nu (qi, y) = ql, vi y l tin t bt k ca x, khc x hoc , th l k. Tc l Rkij l tp hp tt c cc chui lm cho tmt i t trng thi qi ti qj khng i ngang qua trng thi no (c nh s) ln hn k. (Ch , khi nim "i ngang qua mt trng thi" c ngha l c php chuyn vo v ra khi trng thi , nn i hoc j u c th ln hn k). V ch c n trng thi nn Rnij s l tp hp tt c cc chui lm tmt i t qi ti qj. Ta nh ngha Rkij mt cch quy nh sau: Rkij = Rk-1ik (Rk-1kk ) Rk-1kj Rk-1ij R0ij = { a | (qi, a) = qj } { a | (qi, a) = qj } {}
*

(1) nu i j nu i = j

Mt cch hnh thc, Rkij nh ngha nh trn l cc chui nhp hay nguyn nhn a M t qi ti qj khng i ngang qua trng thi cao hn qk, ngha l xy ra hoc mt trong hai trng hp sau :

43

Chng III : tmt hu hn v biu thc chnh quy 1) Nm trong Rk-1ij ( khng bao gi i ngang qua mt trng thi no cao nh qk). 2) Bao gm mt chui trong Rk-1ik (chui lm M chuyn n qk), theo sau bi khng hoc nhiu chui trong Rk-1kk (chui lm M chuyn t qk tr v qk m khng ngang qua qk hoc mt trng thi no cao hn) v cui cng l mt chui trong Rk-1kj (chui lm M chuyn t qk n qj ). Ta s ch ra rng vi mi i, j v k tn ti biu thc chnh quy rkij k hiu cho ngn ng Rkij. Ta quy np theo k nh sau: . k = 0 : khi R0ij l tp hp hu hn cc chui c mt k hiu hoc . Vy r0ij c th vit di dng a1 + a2 + ... + ap (hoc a1 + a2 + ... + ap+ nu i = j). Trong {a1, a2,..., ap} l tp hp tt c cc k hiu a sao cho (qi, a) = qj. Nu khng c k hiu a no nh th th (hoc khi i = j) k hiu cho r0ij. . Cng thc (1) cho Rkij ch lin quan n cc php ton trn biu thc chnh quy: hp, ni kt, v bao ng. Hn na theo gi thit quy np, vi mi l, k v m tn ti biu thc chnh quy rk-1lm sao cho L(rk-1lm) = Rk-1lm. Vy i vi rkij ta c th chn biu thc chnh quy : (rk-1ik) (rk-1kk)* (rk-1kj) + rk-1ij Cui cng ta c nhn xt rng L(M) = qj F Rn1j v Rn1j k hiu cho tt c cc nhn ca tt c cc ng i t q1 ti qj. Vy L(M) c k hiu bi biu thc chnh quy r = rn1j1 + rn1j2+ ... + rn1jp, trong tp F = {qj1, qj2,..., qjp} Th d 3.15 : Vit biu thc chnh quy k hiu cho ngn ng c chp nhn bi DFA sau :
1 Start q1 0 0 q2 1 0, 1 q3

Hnh 3.10 DFA cho v d 3.13 Gi DFA c ch ra trong hnh 3.10 l M ({q1, q2, q3}, {0, 1}, , q1, {q2, q3}). Ta thy, tp hp tt c cc chui c chp nhn bi DFA trn l cc chui lm cho tmt chuyn t trng thi bt u q1 n mt trong hai trng thi kt thc q2 v q3 v khng chuyn qua s ti a l 3 (k = 3) trng thi ca tmt. Vy ta cn vit biu thc chnh quy k hiu cho tp hp ny nh sau : r = r312 + r313 Theo cng thc c chng minh trong nh l, ta c th tnh c cc gi tr rkij vi i, j l ch s cc trng thi t 1 n 3 v vi k = 0, 1 v 2, nh ch ra trong bng sau: r
44
k

11

k=0

k=1

k=2 (00)*

Chng III : tmt hu hn v biu thc chnh quy rk12 rk13 rk21 rk22 rk23 rk31 rk32 rk33 0 1 0 1 0+1 0 1 0 + 00 1 + 01 0+1 0(00)* 0*1 0(00)* (00)* 0*1 (0 + 1)(00)*0 (0 + 1)(00)* + (0 + 1)0*1

Bng cch dng cc cng thc tng ng nh (r + s) t = rt + st v ( + r)* = r* n gin cc biu thc, chng hn khi tnh biu thc : r122 = r021 (r011 )* r012 + r022 = 0()*0 + = 00 + Tng t, khi n gin biu thc r213 = r112 (r122 )* r123 + r113 = 0(00 + )*(1 + 01) + 1 ta nhn thy (00 + )* tng ng vi (00)* v (1 + 01) th tng ng vi ( + 0)1 nn ta rt gn : r213 = 0(00)*( + 0)1 + 1 Mt khc, ch rng (00)*( + 0) th tng ng vi 0*, v th 0(00)*( + 0)1 + 1 cng bng 00*1 + 1 hay cui cng l 0*1. hon thnh vic xy dng biu thc chnh quy cho M, ta cn tnh r312 v r313. Ta vit: r312 = r213 (r233 )* r232 + r212 = 0*1( + (0 + 1)0*1)*(0 + 1)(00)* + 0(00)* = 0*1((0 + 1)0*1)*(0 + 1)(00)* + 0(00)* v r313 = r213 (r233 )* r233 + r213 = 0*1( + (0 + 1)0*1)*( + (0 + 1))0*1) + 0*1 = 0*1((0 + 1)0*1)* Vy biu thc chnh quy c dng : r = r312 + r313 = 0*1((0 + 1)0*1)*( + (0 + 1)(00)*) + 0(00)*

Iv. MT VI NG DNG CA TMT HU HN


C nhiu kiu phn mm thit k nhm c t s chuyn i t ng t dng biu thc chnh quy sang vic ci t my tnh mt cch hiu qu tng ng vi tmt hu hn. Trong phn ny, ta s cp n hai ng dng trong s chng.

4.1. B phn tch t vng

45

Chng III : tmt hu hn v biu thc chnh quy Cc k hiu t vng (token) trong mt ngn ng lp trnh th hu ht khng c s ngai l, c biu din nh cc tp hp chnh quy. Chng hn, cc nh danh ca ALGOL: cc ch ci vit hoa hoc thng, theo sau bi mt dy bt k ca ch ci (letter) hoc ch s (digit) vi di khng gii hn c th c biu din nh sau : (letter) (letter + digit)* trong "letter" thay th cho A + B +...+ Z + a + b +...+ z v "digit" l 0 + 1 +...+ 9. Mt v d khc, cc nh danh ca FORTRAN c di gii hn l 6 v cc ch ci ch cho php dng ch vit hoa hoc k hiu $ c biu din nh sau : (letter) ( + letter + digit)5 vi "letter" l $ + A + B + ... + Z . Trong SNOBOL, cc hng s s hc c th c biu din nh sau : ( + ) (digit + ( digit * + ) + digit+ ) Mt s cng c pht sinh b phn tch t vng nhn input nh mt dy cc biu thc chnh quy m t cc k hiu t vng v pht sinh mt tmt hu hn n gin nhn dng mi k hiu t vng. Thng thng, chng chuyn i biu thc chnh quy thnh mt NFA vi -dch chuyn v sau xy dng tp hp con cc trng thi c th pht sinh DFA mt cch trc tip hn l tm cch loi b cc php chuyn nhn . Mi trng thi kt thc xc nh k hiu t vng c th tm thy. Hm chuyn ca FA s c m ha bng mt trong vi cch nhm chim t khng gian hn so vi bng hm chuyn t chc di dng mng hai chiu. B phn tch t vng c thit lp bng cch pht sinh mt chng trnh c nh thng dch cc bng m, cng vi cc bng minh ha c th s nhn dng ca FA trn cc k hiu t vng (vit di dng cc biu thc chnh quy). B phn tch t vng dng ny c th c dng nh mt chng trnh con c lp (module) trong mt trnh bin dch ngn ng.

4.2. Trnh son tho vn bn


Hin nhin, cc trnh son tho vn bn hoc cc chng trnh tng t cho php thay th mt chui bi mi chui kt hp vi mt biu thc chnh quy cho trc. Chng hn, trnh son tho vn bn ed trong UNIX cho php mt cu lnh nh sau : /aba*c/ tm s xut hin u tin ca chui c dng nh trn. Hay cu lnh : s/bbb*/b/ cho php thay th cc chui c dng bbb* thnh chui c mt k t b. Hay trong cc cu lnh ca MS-DOS v NC, v d cu lnh : Del tmp*.??? s cho php xa i tt c cc file vi tn tp tin bt u bng tmp, sau l mt chui bt k v c phn m rng l 3 k t ty . Du * trong trng hp ny k hiu cho mt chui bt k, cn du ? k hiu cho mt k t ty . y cng l mt dng k hiu ca biu thc chnh quy thay th cho chui.

46

Chng III : tmt hu hn v biu thc chnh quy Hay chng hn, mt v d v x l chui khc c p dng cho vic tm kim theo mu trn cc trang Web. Trong tt c cc v d trn, k hiu * xc nh mi biu thc a1 + a2 + ... + an trong cc ai l tt c cc k t cho php trong my tnh tr k t xung dng (newline). Ta c th chuyn mt biu thc chnh quy r sang DFA chp nhn mi r. Ch rng s hin din ca k hiu * s cho php ta nhn dng mt thnh phn ca L(r) bt u t bt k v tr no trong dng. lm c iu ny, cc ng dng phi thc hin qu trnh chuyn i t mt biu thc chnh quy sang NFA. V v c ch hot ng ca NFA kh phc tp nn thng thng ngay sau , NFA li phi c bin i tip thnh dng DFA tng ng. Tuy nhin, s chuyn i t mt biu thc chnh quy sang DFA tn nhiu thi gian hn vic s dng DFA kim tra cc mu bng cch duyt qua chng mt ln, tuy DFA c th c s trng thi l hm m ca di biu thc chnh quy. Thc t, trong trnh son tho vn bn UNIX, biu thc chnh quy vi mi r c chuyn thnh mt NFA c -dch chuyn v sau NFA ny c m phng mt cch trc tip. Cu hi :
Hy t lin h mt s cc ng dng thc t khc dng ch tmt hu hn ? c

Tng kt chng III: Phn ni dung chng III tp trung nghin cu c ch hot ng ca cc dng tmt hu hn, mi tng quan gia chng, cng nh s tng ng ca chng vi biu thc chnh quy. Ty theo cc yu cu thc t ca ng dng, ta c th chuyn t dng phc tp nht sang cc dng n gin hn. C th tm tt s tng quan gia cc nh l trong chng ny theo s sau :

nh l 1

DFA
nh l 4

NFA
nh l 2

RE
nh l 3

NFA

47

Chng III : tmt hu hn v biu thc chnh quy

BI TP CHNG III

3.1. M t ngn ng c chp nhn bi cc tmt hu hn vi s chuyn c cho nh sau : a)


0 A 1 1 B 0 0,1 C

b)
1 A 1 1 B 0 0 C 0 1 D

3.2. Xy dng cc s chuyn tmt hu hn chp nhn cc ngn ng sau trn b ch ci = {0, 1} a) Tp cc chui kt thc l 00. b) Tp cc chui c 3 k hiu 0 lin tip. c) Tp cc chui m k hiu th 3 k t cn phi ca chui l 1. d) Tp mi chui m bt c chui con no c di bng 5 u c cha t nht 2 con s 0. 3.3. Tm cc s chuyn tmt hu hn on nhn cc ngn ng sau : a) Tp cc chui trn {0, 1} c cha mt s chn cc s 0 v mt s l cc s 1 b) Tp cc chui trn {0, 1} c di chia ht cho 3. c) Tp cc chui trn {0, 1} khng cha 101 nh mt chui con. 3.4. Xy dng DFA tng ng vi mi NFA sau : a) N1({0,1,2,3},{a,b},1,0,{3}) vi 1 1 0 1 2 3 a {0, 1} {2} {3} {3} b {1} {2} {3} b) N2 ({0,1,2,3}, {a,b}, 2,0, {1,3}) vi 2 2 0 1 2 3 a {1, 3} {2} {3} b {1} {1, 2} {0} {0}

48

Chng III : tmt hu hn v biu thc chnh quy

c)

a, b 1 a 2 a, b 3 a, b 4

d)
a, b 1 a, b a a 2 0 a, b 3 a, b a 4

3.5. Tm NFA khng c -dch chuyn nhn dng cng ngn ng vi cc NFA sau : a)
q0 a a, q1 a, b q2 a 1 c, q3

b)
0

q0
0

q2

q3

q1

3.6. Vit biu thc chnh quy v v NFA on nhn cc ngn ng sau : a) Tp hp cc chui trn = {1, 2, 3} sao cho k hiu cui cng c xut hin trc . b) Tp hp cc chui trn = {0, 1} trong c mt cp k t 0 cch nhau bi mt chui con c di 4i, vi i 0 no . 3.7. Vit biu thc chnh quy cho mi ngn ng sau trn = { 0, 1} : a) Tp hp cc chui trong mi cp 0 lin tip u xut hin trc mi cp 1 lin tip.

49

Chng III : tmt hu hn v biu thc chnh quy b) Tp hp cc chui cha nhiu nht mt cp 0 lin tip v nhiu nht mt cp 1 lin tip. 3.8. M t (bng li) ngn ng c cc biu thc chnh quy sau c t : a) 0(0 + 1)* 0 b) (0+ 1)*0(0 + 1) (0 + 1) c) (11+ 0)*(00+ 1) d) (1+ 01+ 001)*( + 0 + 00) e) [ 00 + 11 + (01+ 10) (00+ 11)*(01+ 10)]* 3.9. Chng t cc biu thc chnh quy sau k hiu cho cng mt ngn ng : (aa)* + (a) , (aa + aaaa)* , (aa)* (aa)* (aa)* , 3.10. V NFA vi -dch chuyn c cho bi cc biu thc chnh qui sau. Sau , hy chuyn sang DFA tng ng : a) ( a* + b*)* b) (( + a) b*)* c) (a + b)* abb (a + b)* d) ab + (a + bb) a*b e) (a + ab + aab)*(+ a+ aa) f) 10 + (0 + 11)0*1 g) 01 [ (( 10)*+ 111)* + 0]*1 3.11. Hy tm cc biu thc chnh qui tng ng vi cc s chuyn trng thi sau: a) b)
0 1 0 A 1 1 C 1 C 1 0 0 B A 0 1 0 B

BI TP LP TRNH
3.12. Vit chng trnh trong Pascal / C m phng mt FA chp nhn ngn ng c biu din bi biu thc chnh quy sau : [ A ... Z, a ... Z ]+ [ A ... Z, a ... Z, 0 ... 9, _ ]* + [ 0 ... 9]+ + op 3.13. Vit chng trnh cho ra mt FA tng ng khi u vo l mt biu thc chnh quy.
50

Chng III : tmt hu hn v biu thc chnh quy

3.14. Vit chng trnh cho ra DFA khi u vo l mt NFA.

51

You might also like