17204 - Bai Giang Ngon Ngu Hinh Thuc Va Otomat

Embed Size (px)

Citation preview

B GIAO THNG VN TI TRNG I HC HNG HI B MN: KHOA HO C MA Y TI NH KHOA: CNG NGH THNG TIN BI GING NGN NG HNH THC V TMAT TN HC PHN : Ngn ng hnh thc v tmat M HC PHN :17204 TRNH O TO : I HC CHNH QUY DNG CHO SV NGNH : CNG NGH THNG TIN

HI PHNG - 2008 Bi ging mn hc: Ngn ng hnh thc v Otomat i CNG CHI TIT Tn hc phn: Ngn ng hnh thc v tmat Loi hc phn: 1 B mn ph trch ging dy: Khoa hc My tnhKhoa ph trch: CNTT M hc phn: 17204Tng s TC:2 TS titL thuytThc hnh/XeminaT hcBi tp ln n mn hc 45450000 iu kin tin quyt: Sinh vin phi hc xong mn hc ton ri rc. Mc tiu ca hc phn: -Cung cp cc kin thc c bn v ngn ng, vn phm v otomat. -C bn v chng trnh dch. Ni dung ch yu Gm cc phn: - Vn phm v ngn ng - Ngn ng chnh quy v otomat y xung - Ngn ng phi ng cnh v otomat y xung - C bn v chng trnh dch Ni dung chi tit ca hc phn: TN CHNG MC PHN PHI S TIT TSLTTH/XeminaBTKT M U Chng I. Vn phm v ngn ng.050401 1.1. Bng ch ci, t v ngn ng 1.2. Tch ghp, php chia, php soi gng 1.3. Cc php ton trn ngn ng 1.4. Vn phm 1.5. Cc v d v vn phm Chng II. Ngn ng chnh quy v otomat hu hn16120301 2.1. Ngun v ngn ng c sinh bi ngun 2.2. Cc php ton trn ngun 2.3.Otomathuhnkhngliravngnngc on nhn bi otomat hu hn khng li ra 2.4.StngngcangunvOtomathuhn khng li ra 2.5. S tng ng ca ngun v vn phm chnh quy 2.6. S tng ng ca ngun v biu thc chnh quy 2.7. Bi tp tng hp 2.8. Tnh ng ca lp ngn ng chnh quy 2.9. iu kin cn ca ngn ng chnh quy 2.10. iu kin cn v ca lp ngn ng chnh quy 2.11. Otomat hu hn c li ra 2.12. Ngn ng chnh quy Bi ging mn hc: Ngn ng hnh thc v Otomat ii TN CHNG MC PHN PHI S TIT TSLTTH/XeminaBTKT ChngIII.Ngnngphingcnhvotomaty xung. 09060201 3.1. Cy v php th cy 3.2. Dng chun Chomsky 3.3. Cy dn xut v cc tnh cht 3.8. Khi nim v Otomat y xung Chng IV: C bn v chng trnh dch15120201 4.1.Gii thiu chng trnh dch 4.2.Chng trnh dch4.2.1.nh ngha chng trnh dch 4.2.2.Cu trc ca chng trnh dch 4.2.3.Cu trc tnh (cu trc logic) 4.2.4.Cu trc ng 4.2.5.V tr ca chng trnh dch trong h thng dch 4.3.S cn thit nghin cu chng trnh dch 4.4. B phn tch c php Nhim v ca sinh vin : Tham d cc bui thuyt trnh ca gio vin, t hc, t lm bi tp do gio vin giao, tham d cc bi kim tra nh k v cui k. Ti liu hc tp : -Nguyn Vn Ba, Ngn ng hnh thc, Trng i hc Bch khoa H ni, 1997 -PhannhDiu,Lthuytotomatvthutton,NhxutbnihcvTrunghc Chuyn nghip, 1971 - c Gio, ng Huy Run, Ngn ng hnh thc, Nh xut bn KHKT, 1991 -Phm Hng Nguyn, Gio trnh chng trnh dch, H KHTN HN -Nguyn Vn Ba, Phn tch c php, H Bch khoa HN Hnh thc v tiu chun nh gi sinh vin:-Hnh thc thi cui k : Thi vit. -Sinh vin phi m bo cc iu kin theo Quy ch ca Nh trng v ca B Thang im: Thang im ch A, B, C, D, F im nh gi hc phn: Z = 0,2X + 0,8Y. Bi ging ny l ti liu chnh thc v thng nht ca B mn Khoa hc my tnh, Khoa Cng ngh thng tin v c dng ging dy cho sinh vin. Ngy ph duyt://2010 Trng B mn: Thc s Nguyn Hu Tun Bi ging mn hc: Ngn ng hnh thc v Otomat iii MC LC Ni dungTrang Mc lc Chng 1: Vm phm v ngn ng1 1. 1. Bng ch ci, t v ngn ng1 1. 2. Tch ghp, php chia, php soi gng 2 1. 3. Cc php ton trn ngn ng4 1. 4. Vn phm6 1. 5. Cc v d v vn phm8 Bi tp8 Chng 2: Ngn ng chnh quy v Otomat hu hn9 2. 1. Ngun v ngn ng c sinh bi ngun9 2. 2. Cc php ton trn ngun10 2. 3. Otomat hu hn khng li ra v ngn ng c on nhn bi Otomat hu hn khng li ra18 2. 4. S tng ng ca ngun v Otomat hu hn26 2. 5. S tng ng ca ngun v vn phm chnh quy30 2. 6. S tng ng ca ngun v biu thc chnh quy30 2. 7. Bi tp tng hp30 2. 8. Tnh ng ca lp ngn ng chnh quy31 2. 9. iu kin cn ca ngn ng chnh quy31 2. 10. iu kin cn v ca lp ngn ng chnh quy31 2. 11. Otomat hu hn c li ra31 2. 12. e - Ngn ng chnh quy31 Bi tp31 Chng 3: Ngn ng phi ng cnh v Otomat y xung32 3. 1. Cy v php th cy32 3. 2. Dng chun Chomsky32 3. 3. Cy dn xut v cc tnh cht32 3. 4. Khi nim v Otomat y xung32 Bi tp32 Chng 4: C bn v chng trnh dch33 4. 1. Gii thiu v chng trnh dch33 4. 2. Chng trnh dch33 4. 2. 1. nh ngha chng trnh dch 33 4. 2. 2. Cu trc ca chng trnh dch37 4. 2. 3. Cu trc tnh ca chng trnh dch44 4. 2. 4. Cu trc ng ca chng trnh dch50 4. 2. 5. V tr ca chng trnh dch trong h thng dch58 4. 3. S cn thit phi nghin cu chng trnh dch58 4. 4. B phn tch c php60 Bi tp62 Mt s thi mu63 Ti liu tham kho64 Bi ging mn hc: Ngn ng hnh thc v Otomat 1 CHNG 1: VN PHM V NGN NG Kinthccbn:tipthuttnidungcachngny,sinhvincncmtscckin thc lin quan v chui, k hiu, t trong cc ngn ng t nhin nh ting Vit, ting Anh; cu trccphpcaccchngtrnhmytnhvitbngmtsngnnglptrnhcbnnh Pascal, C 1.1. Bng ch ci, t, ngn ng Cc ngn ng lp trnh (nh Pascal, C, ...) ln ngn ng t nhin (nh ting Vit, ting Anh, ...) u c th xem nh l tp hp cc cu theo mt cu trc quy nh no . Cu ca ngn ng, trongtingVitnh"Anlsinhvingii"haytrongPascallmtonchngtrnhbtu bng t kha program cho n du chm cu kt thc chng trnh, u l mt chui lin tip cc t, nh An, gii hay begin, if, x2, 215, tc cc chui hu hn cc phn t ca mt b ch ci c s no . Ta c th xem chng nh l cc k hiu c bn ca ngn ng. Tnhnxt,tadntimtquannimhnhthcvngnngnhsau(theotin): Ngn ng, mt cch khng chnh xc l mt h thng thch hp cho vic biu th cc ngh, cc s kin hay cc khi nim, bao gm mt tp cc k hiu v cc quy tc vn dng chng.nh ngha trnch cung cp mt nim trc quan v ngn ng ch khng l mt nh ngha chnh xc nghin cu v ngn ng hnh thc. Chng ta bt u xy dng nh ngha ny bng cc khi nim m mi ngn ng u t nn tng trn . 1.1.1.Bng ch ci Mt dy hu hn hoc v hn cc phn t, k hiu E c gi l mt bng ch ci trong mi phn t a e E c gi l mt k hiu (mt ch ci). V d: E = {0,1}: Bng ch ci nh phn E = {0,1,,9} : Bng ch ci thp phn 1.1.2.T Mt dy k hiu a1, a2,, an(ai, i=1 n) c gi l mt t e E. V d : E = {0,1} a1 = 0, a2 = 1, a3 = 00, a4 = . , T rng c k hiu l ., mi bng ch ci u sinh ra t rng. Tng s cc k hiu to nn t c gi l di ca t. V d :E = {a,b,c} a1 = aabb, a2 = ac, | a1| = 4, |a2| = 2 Bi ging mn hc: Ngn ng hnh thc v Otomat 2 di ca t rng = 0. Nu a l mt t thuc bng ch ci E, A l mt bng ch ci cha bng ch ci E th a e A . V d : E = {0,1} ,A = {0,1,2,,9} a1 =

0110 e E , E e A a e ATp hp tt c cc t e E k c t rng k hiu l E*. Tp hp tt c cc t e E tr rng k hiu l E+. Vy E+ = E* \ {.}1.1.3.Ngn ng Ngn ng l mt tp hp cc cu c mt cu trc qui nh no . Mt cu ca ngn ng l mt dy (hay xu) cc t c sn c lit k trong mt bng ch no ,nh l cc k hiu c bn ca ngn ng. Gi s c bng ch ci E. Tp A e E* c gi l mt ngn ng sinh bi E . V d :E = {a,b,c} A = {x e E*/x bt u bi k hiu a} c gi l mt ngn ng e E*. Ngn ng trng k hiu |. Mi bng ch ci E u sinh ra |. Ngn ng trng v ngn ng cha t rng l khc nhau.1.2. Tch ghp, php chia, php soi gng 1.2.1. Tch ghp hai xu Gi s c bng ch ci ECc t o = a1a2a3an , | = a1a2am ( ai e E ) Tch ghp ca o v | c hnh thnh bng cch ghp t | vo sau t o.

_ = o.| = a1a2a3ana1a2am V d :E={0,1} o = 011, | =1101 _ = 0111101 Tnh cht ca tch ghp + Tch ghp khng c tnh cht giao hon o|=|o + Tch ghp c tnh cht kt hp (o|)_ = o (|_) Bi ging mn hc: Ngn ng hnh thc v Otomat 3 + Tch ghp ca mt xu vi mt xu rng bng chnh n o.. =..o = oVi tch ghp: _=o.|o : Tip u ng | : Tip v ng 1.2.2. Chia xu Gi s c z = x.y( x,y,z eE* ) + Php chia tri Nu ta thc hin ngt b xu x ra khi z c ngha l ta thc hin php chia tri xu z cho x v kt qu l xu y. K hiux\Z = y +Php chia phiNutathchinngtxuyrakhixu zcnghaltathchinphpchiaphixu z cho xu y v kt qu l xu x. K hiuZ/y = x V d : E = {0,1}, x = 10, y = 11 Z = x.y = 1011 x\Z= 11

Z/y= 10 1.2.3. Php soi gng +Gi s c bng ch ci E +T o = a1a2am-1am e E* +T o = amam-1a2a1 c gi l t soi gng ca t o hay cn gi l t ngc ca t o| o | = | o| 1.3.Cc php ton trn ngn ng 1.3.1. Php hp hai ngn ng Gi s c bng ch ci E, A, B, C l cc ngn ng c sinh ra bi E C = AB = {x e E*/x e A hoc x e B} V dE = {a,b,c}A = {a, b, ab, ac, cb}, B = {aa, bb, cc} Bi ging mn hc: Ngn ng hnh thc v Otomat 4 C = AB = {a, b, ab, ac, cb, aa, bb, cc} + Tnh chtPhp hp c tnh cht giao honAB = BAC tnh cht kt hp (AB)C= A(BC) 1.3.2.Php giao hai ngn ng +Gi s c bng ch ci E, A, B, C l cc ngn ng sinh ra bi E C = A B = {x e E* | x e A v x e B} V d : E = {a, b} A = {a, ab, ac, cb}, B = {b, ab, cb, aa, bc} C = A B = {ab, cb} + Tnh cht Tnh kt hpC (A B) = B (A C) Tnh giao honA B = B A A |=| A = | 1.3.3.Php tch ghp hai ngn ng + Gi s c bng ch ci E, A, B, C l cc ngn ng c sinh bi t E C=A.B={z e E*| z=x.y | x e A, y e B} V d : E = {a, b, c}A = {a, b, ab, ac}, B{c, cb} C = A.B = {ac, bc, abc, acc, acb, bcb, abcb. accb} + Tnh cht - Khng c tnh cht giao hon A.B = B.A - C tnh cht kt hp A.(B.C) = (A.B).C - C tnh cht phn b (i vi php hp) A.(BC) = (A.B)(A.C) Bi ging mn hc: Ngn ng hnh thc v Otomat 5 - Tnh cht ly tha A.A.AA = An 1.3.4.Php hiu Gi s c bng ch ci E, A, B, C l cc ngn ng sinh bi E C = A\B = {x e E* | x e A, x e B} c gi l ngn ng hiu ca hai ngn ng A v B. V d : E = {a, b, c} A = {a, b, ac, bc, aa}, B = {b, bc, ab, bb} C = B\A = {b, ab, bb} 1.3.5.Php ly phn b Gi s c bng ch ci E, A, B l cc ngn ng c sinh ra bi E A = CB = { x e E*/ x eB} c gi lngn ng phn b hay ngn ng b ca ngn ng B. V d : Cho B = {a, bc}. Khi ngn ng b ca ngn ng B s l :A = {x e E* | x = a, x = bc}. 1.3.6.Php chia hai ngn ng Gi s c bng ch ci E, A, B l cc ngn ng c sinh ra bi E. Tp cc t C = {z e E*| x e A, y e B, x=y.z} c gi l php chia tri ca ngn ng A cho ngn ng B v k hiu B\A . Tp cc t C = {z e E* | x e A, y e B, x = z.y } c gi l php chia phi ca ngn ng A cho ngn ng B v k hiu l A/ B. V d : E = {a, b, c} A = {a, bc, abc, aba} , B = {., b, ab, cbc} B\A= { a, bc, abc, aba, c} A/B = {a, bc, abc, aba} 1.3.7. Php soi gng ngn ng Gi s c bng ch ci E ,A, B l cc ngn ng c sinh bi E. Bi ging mn hc: Ngn ng hnh thc v Otomat 6 B = = {x e E* / x l t soi gng ca x e A }. V d E = {0, 1} A = {0, 1, 10, 110} B = ={0, 1, 01, 011} 1.3.8.Php lp Gi s c bng ch ci E, A l ngn ng c sinh bi E. A* = {. }AA .An gi l ngn ng lp ca ngn ng A. Tnh cht :-(A* )* = A* -{.}* = {.} -(C)* = {.}CC.C = {.} -(C)+ = CC.C = C 1.4. Vn phm Vi mc ch sn sinh (hay on nhn) ngn ng, vn phm c dng nh mt cch thc hiu qu biu din ngn ng.1.4.1. nh ngha vn phm cu trc (Grammar)Theo t in, vn phm, mt cch khng chnh xc, l mt tp cc quy tc v cu to t v cc quy tc v cch thc lin kt t li thnh cu. hiu r hn khi nim ny, ta xt v d cy minh ha cu trc c php ca mt cu n trong ngn ng ting Vit "An l sinh vin gii" th d 1.5 ca chng 1. Xut pht t nt gc theo dn n nt l, ta nhn thycc t nhng nt l cacy nhAn, sinh vin, gii, l nhng t to thnh cu c sn sinh. Ta gi l cc k hiu kt thc bi v chng khng cn pht sinh thm nt no trn cy v cu c hon thnh. Tri li, cc nt trong ca cy nh cu n, ch ng, danht, s khngc mttrong dngcu sn sinh, chngchgi vai tr trunggiantrong vic sinh chui, dng din t cu trc cu. Ta gi l cc k hiu cha kt thc. Qu trnh sn sinh cu nh trn thc cht l s din t thng qua cu trc cy cho mt qu trnh pht sinh chui. Cc chui c pht sinh bt u t mt k hiu cha kt thc c bit, sau mi bc thay th mt k hiu cha kt thc no trong chui thnh mt chui ln ln gm cc khiu kt thc v cha, cho n khi khng cn mt k hiu cha kt thc no na th hon thnh. Qu trnh ny chnh l phng thc pht sinh chui ca mt vn phm, c nh ngha hnh thc nh sau: Bi ging mn hc: Ngn ng hnh thc v Otomat 7 nh ngha : Vn phm cu trc G l mt h thnggm bn thnh phnxc nh nh sauG (E,V, S, P), trong :-E: tp hp cc k hiu kt thc (terminal)-V : tp hp cc bin (variables) hay cc k hiu cha kt thc (non terminal)-P:tphuhnccquytcngphpcgilcclutsinh(production.-S: k hiu cha kt thc dng lm k hiu bt u (start) Ngi ta thng dng cc ch ci Latinh vit hoa (A, B, C, ...) ch cc k hiu trong tp bin V; cc ch ci Latinh u bng vit thng (a, b, c, ...) dng ch cc k hiu kt thc thuc tp E.Nhn xt : Bng quy c ny chng ta c th suy ra cc bin, cc k hiu kt thc v k hiu bt ucavnphmmtcchxcnhvduynhtbngcchxemxtcclutsinh.Vvy, biu din vn phm, mt cch n gin ngi ta ch cn lit k tp lut sinh ca chng. 1.4.2. S phn cp Chomsky trn vn phmBng cch p t mt s quy tc hn ch trn cc lut sinh, Noam Chomsky ngh mt h thng phn loi cc vn phm da vo tnh cht ca cc lut sinh. H thng ny cho php xy dngccbnhndnghiuquvtngthchvitnglpvnphm.Tac4lpvnphm nh sau :1) Vn phm loi 0: Mt vn phm khng cn tha rng buc no trn tp cc lut sinh c gi l vn phm loi 0 hay cn c gi l vn phm khng hn ch (Unrestricted Grammar)2) Vn phm loi 1: Nu vn phm G l vn phm cc php th dng o| v tha |o| wB hoc A > w vi A, B l cc bin n v w l chui k hiu kt thc (c th rng); hoc c dng tuyn tnh tri (left-linear): A > Bw hoc A > w th G l vn phm loi 3 hay cn c Bi ging mn hc: Ngn ng hnh thc v Otomat 8 gi l vn phm chnh quy RG (Regular Grammar)Ngn ng ca lp vn phm ny c gi l ngn ng chnh quy (RL)K hiu : L0, L1, L2, L3 l cc lp ngn ng sinh ra bi cc vn phm loi 0, 1, 2, 3 tng ng. Ta c : L3 c L2 c L1 c L0 v cc bao hm thc ny l nghim ngt. 1.6.Cc v d v vn phm Cho bng ch ci = { }1 2, ,...,na a a . Xy dng vn phm sinh cc ngn ng sau: VD 1. L = E* VD 2. L = E+ VD 3. L = Cc xu c di chn dng trn E VD 4. L = Cc xu c di chn trn E VD 5. L = Cc xu c di l trn E VD 6. Cho bng ch ci E { } 0,1, 2 . y dng vn phm G sinh ngn ng L nh sau: L = gm cc t bt u bng 011, cha t con 11211 v kt thc bng 1210 BI TP Bi 1. Cho cc ngn ng sau: L1 = {a, ab, abb, aabbb, abbaa, aaaabb, ababba} L2 = {., ab, bb, aba, bbb, aabb} Tm cc ngn ng hp, giao, tch ghp, lp ca L1v L2. Tm ngn ng chia tri, chia phi ca L1 cho L2. Tm ngn ng soi gng ca L1. Bi 2. Cho bng ch ci E = {a, b, c}. Xy dng vn phm sinh ngn ngL = {anb2n+1ck eE*|n > 0, k > 0} Bi ging mn hc: Ngn ng hnh thc v Otomat 9 CHNG II: NGN NG CHNH QUY V OTOMAT HU HN 2.1. Ngun v ngn ng c sinh bi ngun 2.1.1. nh ngha: Ngun l mt a th c hng v c khuyn, c mt nh tch ra lm nh vo, k hiu l( O), mt tp con cc nh m mi nh ny c gi l mt nh ra hay nh kt v t trong mt ch nht (), ng thi trn mi cung ghi mt k hiu thuc bng ch ci E{.}. Cungtrnghitrnggilcungrnghaycungtrngvthngngitakhngghit rng trn cc cung ny. Cung trn ghi k hiu thuc E c gi l cung ct yu. nh kt yu l nh c cung ct yu i ti. V d v ngun :

2.1.2.Ngun n nh NgunIcgilngunnnhnunkhngchacungrngvhaicungtyxut pht t mt nh u c ghi bng hai k hiu khc nhau.Ngun I1 l ngun n nh. 2.1.3. Ngun y Ngun y l ngun m t mt nh cc cung i ra phi cha y cc k hiue bng ch ci E. 2.1.4.Ngun n nh v y L ngun va n nh va y V d : r0 r1 r2 a,b,c c ab,c a,b Hnh 1.2. Ngun n nh v y I2 S1 S2 S3 S4 S5 a b,c a,c b,a c a Hnh 1.1. Ngun I1 Bi ging mn hc: Ngn ng hnh thc v Otomat 10 2. 1. 5. T c sinh bi ngun -TcsinhbingunldycckhiucabngchciEnmtrncccungca ngun i t nh vo v n mt trong nhng nh kt. - Ngn ng c sinh bi ngun I l tp hp cc t c sinh bi ngun I, k hiu l N(I) = {x e E*| x e NI(v(I),s), s e F(I)}. Trong v(I): nh vo F(I): Tp nh kt - Theo ngun trn ta xc nh ngn ng c sinh bi ngun I NI(s1,s3) = {b,c} NI(s1,s4) = NI(s1,s3).{b,a}.c* = {b,c}.{b,a}.{cs|s = 0,1,2,} = {bbcs,bacs,cbcs,cacs | s = 0,1,2} NI(s1,s2) = {a}NI(s1,s4).{a} = {a}. {bbcsa,bacsa,cbcsa,cacsa} ={bbcsa,bacsa,cbcsa,cacsa,a | s=0,1,2} NI(s1,s5)=NI(s1,s2).{a,c} =bbcsaa,bacsaa,cbcsaa,cbcsaa,aa,bbcsac,bacsac,cbcsac,cacsac,ac|s=0,1,2} Ngn ng c sinh bi ngun I1 l : N(I1)=NI(s1,s4)NI(s1,s5)={bbcs,bacs,cbcs,cacs|s=0,1,2}bbctaa,bactaa,cbctaa, cbctaa, aa, bbctac, bactac, cbctac, cactac, ac|t= 0,1,2} = {aa, ac, bbcs, bacs, cbcs,cacs, bbctaa, bactaa, cbctaa, cbctaa, bbctac, bactac, cbctac, cactac |s, t = 0,1,2} 2.2. Cc php ton trn ngun 2.2.1. Php n nh ha GisngunIchannhvytrnbngchciE,cnxydngngunKn nh, y tng ng vi n. Thut ton n nh ho ngun nh sau: 1)i vi k hiu a ty thuc E v nh s ty ca ngun I xc nh tp: T1(s,a) = {u e D(I) |a e N(s,u)}. i vi tp con M ty ca tp D(I) v mi k hiu a e E xc nh tp: H1(M,a) = M seT1(s,a). 2) Xy dng ngun n nh y K a.nh v cung: Bi ging mn hc: Ngn ng hnh thc v Otomat 11 nh vo ca K: v(K)= {v(I)}. i vi mi nh M e A(K) c xc nh, ta xc nh nh H1(M,a) v k mt cung trn ghi k hiu a i t nh M sang nh H1(M,a). b.Tp nh kt ca K :F(K) = {M e A(K) | M F(I) = C } c.Vi cch xy dng nh trn c ngun K tng ng vi ngun I v K n nh, y . Ch : Nu ta loi tp rng ra khi A(K) th ngun K nhn c n nh, nhng khng y . V d : Cho ngun cha n nh v y I : Thc hin n nh ha ngun I : Ngun n nh y , tng ng vi I l : 2. 2. 2. Php ly phn b Gi s I l ngun ty trn bng ch ci E. xy dng ngun sinh ngn ng phn b ca ngn ng do I sinh ra ta thc hin mt thut ton gm cc bc sau: 1.Nu I cha n nh v y , ta xy dng ngun K n nh, y tng ng vi I, tc l N(I)= N(K). S0 S1 S2 a,b ab a,b Hnh 1.3. Ngun I cha n nh y q0={S0} q2={S0,S2 } a q1={S0,S1} q2={S0,S2 } b b b a a bb q0 q1 q2 q3 aa a b a b a b Hnh 1.4. Ngun I' n nh y Bi ging mn hc: Ngn ng hnh thc v Otomat 12 2.Trn ngun K ta i cc nh kt thnh khng kt v khng kt thnh kt. Khi ngun nhn c s sinh ra ngn ng phn b ca ngn ng do ngun K sinh ra. VyN(M) = CE N(K) = CE N(I). 2.2.3.Php hp ngun Gi s I1 v I2 l cc ngun trn bng ch ci E. Cn xy dng ngun I sinh ngn ng l hp ca hai ngn ng do I1 v I2 sinh ra, tc l N(I) = N(I1)N(I2). Ngun I c gi l ngun hp ca cc ngun I1 v I2. Thut ton: xydngngunIhpcahaingunI1vI2,taginguyncutrccaI1vI2,thm vo mt nh mi (khng ph thuc I1 cng nh I2) v tha nhn nh ny l nh vo ca ngun I, ng thi t nh mi thm vo k cc cung rng i ti cc nh v(I1) v v(I2). Tp nh kt ca ngun I l F(I) = F(I1)F(I2). Vi cch xy dng trn d dng nhn thy rng: N(I) = N(I1)N(I2). Ch : Ta c th m rng php hp trn cho s (s>2) ngun ty . nh l: i vi s (s > 1) ngun tyI1,I2,,In lun lun xy dng c ngunI, n sinh ra ngn ng l hp ca cc ngn ng do I1, I2,, Insinh ra, tc l N(I)= si 1 =N(Ii). Cho 2 ngun I1 v I2 : Hp ca I1 v I2 l : Hnh 1.5. Ngun I1 v I2 q0 q1 q2 ba c S0 S2 a c b S1 Hnh 1.6. Hp caI1 v I2 v(I) S0 S2 a c b q0 q1 q2 ba c S1 Bi ging mn hc: Ngn ng hnh thc v Otomat 13 2.2.4.Php giao ngun Gi s c cc ngun I1, I2. Cn xy dng ngun I, sinh ngn ng l giao ca cc ngn ng do I1, I2 sinh ra, tc l N(I)= N(I1) N(I2). Ngun I c gi l ngun giao ca cc ngun I1, I2. Thut ton xy dng ngun giao I: c ngun giao I ca cc ngun I1, I2 ta xc nh nh v cung ca n bng php quy np nh sau: 1.nh vo ca ngun I: v(I) = {v(I1), v(I2)}; 2.Gi s B = (P,Q), trong P _ D(I1), Q _ D(I2) l cc nh ty c xc nh v a l k hiu bt k thuc E. Khi xc nh nh C =1IH (P,a),2IH (Q,a)), ng thi k mt cung trn ghi k hiu a, i t nh B sang C. 3.nh D = (S,R) c tha nhn l nh kt ca ngun I (D eF(I)) khi v ch khi S F(I1) = C v R F(I2) = C. Vi cch xy dng trn ngun I sinh ngn ng l giao ca cc ngn ng do I1, I2 sinh ra. Ly v d vi 2 ngun I1 v I2 (hnh 1.5 ) S0, q0 C, q1 C, S2 S2,C C,C C, q2 a c b b a,b,c a,c a,b,c a,b,c c a,b S0,q0 Bi ging mn hc: Ngn ng hnh thc v Otomat 14 Ngun giao ca chng l : 2.2.5.Php tch ghp hai ngun ivihaingunI1,I2ty,cnxydngngunI,sinhngnngltchghpcacc ngn ng do I1, I2 sinh ra, tc l N(I)= N(I1).N(I2). Ngun I c gi l ngun tch ghp ca ngun I1, I2. Thut ton xy dng ngun tch ghp: xy dng ngun tch ghp (I) ca ccngunI1,I2, tagi nguyn cutrc caI1,I2 tha nhnnhvoI1lnhvocangunI(v(I)=v(I1)),ccnhktcangunI2lnhktca ngun I(F(I)=F(I2)), ng thi t mi nh kt ca ngun I1 k mt cung rng i ti nh vo ca ngun I2. ng thi chuyn cc nh kt ca I1 thnh nh thng. Vi cch xy dng nh trn ngun I, sinh ngn ng l tch ghp ca cc ngn ng do I1,I2 sinh ra. Tch ghp ca hai ngun I1 v I2 (hnh 1.5) : 2.2.6.Php lp i vi ngun I1 ty , cn xy dng ngun I1 sinh ngn ng l lp ca ngn ng do I sinh ra. Ngun I1 c gi l ngun lp ca ngun I. Thut ton xy dng ngun lp I: xy dng ngun I, sinh ngn ng l lp ca ngn ng do ngun I1 sinh ra, ta gi nguyn S1S0 a Hnh 1.7. Ngun giao cu I1 v I2 S0 a c b q0 q1 q2 ba c S1 S2 Hnh 1.8. Tch ghp 2 ngun I1 v I2 Bi ging mn hc: Ngn ng hnh thc v Otomat 15 cu trc ca I1, thm vo mt nh mi v tha nhn nh ny l nh vo ng thi l nh kt duynhtcangunI.Tnhmikthmmtcungrngitinhv(I1),ngthitmi nh kt ca ngun I1 k mt cung rng i ti nh mi thm. Ngun sinh ngn ng l lp ct ca ngn ng c sinh bi I1 ch khc vi ngun trn ch: nh mi thm ch c tha nhn l nh vo, cn tp nh kt ca I1 c tha nhn l nh kt ca ngun mi. Vi cch xy dng trn ngun lp (ngun lp ct I) sinh ngn ng l lp (lp ct) ca ngn ng do I1 sinh ra, tc l N(I) = N(I1) * (N(I) = N(I1)*) . Ngun lp ca ngun I1 : 2.2.7.Php soi gng ngun i vi ngun I1 ty, cn xy dng ngun I sinh ngn ng soi gng ca ngn ng do I1 sinh ra. Ngun I c gi l ngun soi gng ca ngun I1. Thut ton xy dng ngun soi gung: c ngun I sinh ngn ng soi gng ca ngn ng do I1 sinh ra ta thc hin cc bc sau: 1)Thmvomtnhmi,thanhnnlnhvocangunI,ngthitnhmi thm (v(I)) k cc cung rng i ti nh kt ca ngun I1. 2)Tha nhn nh vo ca I1 (v(I1)) l nh kt duy nht ca ngun I. F(I) = {v(I1)}; 3)i vi mi cung ca ngunI1, gi nguyn k hiu ghi trn n, nhng i chiu ngc li. S0 S2 a c b S1 SI Hnh 1.9. Ngun lp ca I1 Bi ging mn hc: Ngn ng hnh thc v Otomat 16 Vi cch xy dng trn ta c : N(I) = N(I1). Ngun soi gng ca I1 : 2.2.8.Php chia tri GisI1,I2 lccnguntrnbngchciE.CnxydngngunKsinhngnngl thng bn tri ca cc ngn ng do I1, I2 sinh ra.Ngun K c gi l ngun thng bn tri ca cc ngun I1, I2. Thut ton xy dng ngun thng bn tri: 1)Xy dng ngun giao I ca cc ngun I1, I2. 2)ThmvomtnhmivthanhnnhnylnhvocangunK.khiubng v(K); 3)Tp nh kt: F(K) = F(I1); 4)Gi s Q = (S,T) l mt nh ty ca ngun giao I. Khi i vi mi nh x eS (S _ A(I1)) t nh vo ca ngun K (v(K)) c cung i ti x khi v ch khi T F(I2) = C. Vi cch xy dng ny ta c:N(K) = 2. 2. 9. Php chia phi GisI1,I2 lccnguntrnbngchciE.CnxydngngunKsinhngnngl thng bn phi ca cc ngn ng do I1, I2 sinh ra. Ngun K c gi l ngun thng bn phi ca cc ngun I1, I2. Thut ton xy dng ngun thng bn phi: 1)Da vo cu trc ca I1 i vi mi s1 eD(I1) xy dng ngun Isic nh vo l si (v(Isi) = si) v F(Isi) = F(I1) N(I1) N(I2) S1 a c b S0 S2 SI Hnh 1.10. Ngun soi gng ca I1 Bi ging mn hc: Ngn ng hnh thc v Otomat 17 2)Xy dng ngun giao K1 ca I1 v I2. i vi mi Isixy dng ngun giao Ksi ca Isi v I2. 3)Xy dng ngun thng bn phi (K) ca ngun I1 v I2. Ngun K nhn c trn c s bin i ngu nhin bng cch sau: -Tha nhn nh vo ca I1 l nh vo ca ngun K, tc l v(K) v(I1) . - nh si e D(I1) c tha nhn l nh kt ca ngun K v ch khi N(Ksi) = C VicchxydngnhtrnngunKsinhngnnglthngbnphicaccngnng I1,I2 sinh ta, tc l N(K) =N(I1) N(I2) Bi ging mn hc: Ngn ng hnh thc v Otomat 18 2. 3.Otomat hu hn khng li ra v ngn ng c on nhn bi otomat hu hn khng li ra: Nghin cu cc Otomat l mt phn rt quan trng trong l thuyt tin hc.Chng c dng onnhnccngnng.CbnloiOtomatthngcsdng,lOtomathuhn khng li ra on nhn cc lp ngn ng chnh quy. Otomat hu hn c li ra vi chc nng bin i t vo thnh mt t c cng di. Otomat xc sut on nhn lp ngn ng ngu nhin. V cui cng l Otomat y xung dng on nhn lp ngn ng phi ng cnh. Phn ny tas nghin cu v Otomat hu hn. 2. 3.1.Otomat n nh (H) Mt cch trc quan ta c th quan nim Otomat hu hn nh mt my on nhn xu, m cc b phn v cung cch lm vic ca n nh sau: - C mt bng vo, dng ghi xu vo (xu cn c on nhn); mi k hiu ca xu vo (thuc mt b ch ci E ) c ghi trn mt ca bng vo. - C mt u c, mi thi im quan st mt trn bng vo. - C mt b iu khin Q gm mt s hu hn trng thi; mi thi im n c mt trng thi(Hnh 1.3.1). - Otomat hu hn lm vic theo tng bc ri rc. Mi bc lm vic c m t nh sau: Tytheotrngthihinthicabiukhinvkhiuucquanstc,motomat chuynsangmttrngthimi,ngthiucdchchuynsangphimt.Quylut chuyn sang trng thi mi c cho bi mt hm, gi l hm chuyn, o : Q E Q. - TrongQcphnbitmttrngthiq0,giltrngthiuvmttphpFcctrng thi gi l cc trng thi cui. - TaniOtomatonnhn(haythanhn)mtxuvoveE*,nuOtomatxutphtt 01100111 Hnh 1.3.1. Cc b phn ca Otomat hu hn Bng vo Q B iu khin Bi ging mn hc: Ngn ng hnh thc v Otomat 19 trng thi u q0, vi u c quan st k hiu bn tri nht caxu v, sau mt s hu hn bc lm vic, n c xong xu v (tc l u c vt khi mt phi ca v) v ri vo mt trong cc trng thi cui. - TphpmixuconnhnbiOtomathpthnhngnngconnhnbi Otomat . Ta ch rng tp Q th hin cc trng thi ghi nh ca Otomat trong qu trnh on nhn, v nh vy kh nng ghi nh ca Otomat l hu hn. Mt khc, hm chuyn o l hm ton phn v n tr, cho nn bc chuyn ca Otomat lun lun c xc nh mt cch duy nht. Chnh v hai c im ny m Otomat m t nh trn c gi l Otomat hu hn n nh. V d 1.3.1 : Xt H A, trong E = {0,1}, Q = {q0, q1, q2 , q3} , F= {q0} Hm o cho nh sau : oo q0q1q2q3 0q2q3 q0q1 1q1q0q3q2 cho d hnh dung hn, ta thng biu din hm chuyn di dng mt th nh hng, gi l biu chuyn nh sau: Mi nt tng ng vi mt trng thi, nt u tr bi mt mi tn c ch u nt cui c khoanh bi hai vng. Nu co(q,a) = p th c mt cung i t nt q n p, v cung mang nhn a. Biu chuyn cho Otomat hu hn ni trn s nh hnh sau : Cho xu vo 110101. Qu trnh on nhn xu vo din t bng cc bc chuyn nh sau, trong cho gn hnh v ta lc bt cc khung ca bng vo v ca b iu khin : q0q1 q3 q2 u 1 1 1 1 1 1 0 0 q0 110101 q1 q0 q2 q3q1 110101110101110101110101110101110101 q0 Bi ging mn hc: Ngn ng hnh thc v Otomat 20 V q0 e F, vy xu vo 110101 c tha nhn. 2. 3. 1. 1.nh ngha Otomat hu hn n nh, khng li ra l mt b nm : A = {S, E, S0, o, F } Trong : S : Tp hu hn cc trng thi ca Otomat E : Bng ch ci vo ca Otomat S0 eE : Trng thi khi u o: S x E S : Hm chuyn trng thi F e S : Tp cc trng thi cui TagimthnhtrngcaHlmtxucdngqxviqeQvxeE*.Cthhiu rng xu qx biu din cho tnh hung tc thi ca H mt lc no : H ang trng thi q, cn x l phn xu vo cha c vt qua trn bng, v k hiu c nhm lc l k hiu bn tri nht ca x (hnh di) Qu trnh on nhn mt xu vo ca H l qu trnh bin i cc hnh trng qx p da vo hm chuyn o. Nu c xu vo w = x1x2 xn th qu trnh on nhn nh sau: S0x1x2 xnS1x2 xnSnxnSn+1.TrongS0w(viS0 ltrngthiu) c gi l hnh trng u. Nu Sn+1 e F th ta ni xu w c A tha nhn (on nhn) V d 1.3.2 Cho H A :A=({S0,S1,S2}, {a,b,c}, S0, o ,{S2}) vi hm chuyn o nh sau : o S0 S1 S2 aS1 S0S1 bS0S1 S2 cS1S2S2 x q Hnh 1.3.3 . Mt tnh hung tc thi ca H Bi ging mn hc: Ngn ng hnh thc v Otomat 21 Qu trnh on nhn xu w = aabccb l : S0aabccb S1abccb S0bccb S0ccb S1cb S2b S2 *)Cc tnh cht ca hm chuyn trng thi o ( s, .)=S, s eSo (s, ax) = o (o (s, a), x), a e E , x e E*, s e S 2. 3. 1. 2. Ngn ng on nhn bi Otomat hu hn n nh L tt c cc t (xu) e E* c on nhn bi H, k hiu l T(A) T(A) = {x e E* | o (S0, x )e F} 2. 3. 2.Otomat khng n nh (HK) 2. 3. 2. 1. nh nghaOtomat hu hn khng n nh l mt b nm A={S, E, S0, o, F} Trong : S: Tp hu hn cc trng thi E: Bng ch ci S0 e S : Trng thi khi u o : S x E P (P l mt tp trng thi e S) F e S: Tp cc trng thi kt V d 1.3.3.A=({t0, t1, t2}, {0, 1}, {t0} , o, {t1,t2} o t0 t1 t2 0t1{t0, t1}t1 1{t1,t2 }t0 *) Mt s tnh cht ca HK o(Q, . )= Q,(Q=S SiSie) o (Q, ax)=o (o (Q,a),x) , a e E, x e E* Bi ging mn hc: Ngn ng hnh thc v Otomat 22 o(Q,a)= P, (P= Q Sie o (S,a)) Qu trnh on nhn xu vo ca HK tng t nh ca H. V d i vi HK A on nhn xu 00101 nh sau: t000101 t10101 {t0, t1}101 {t0, t1}01 {t0, t1}1 {t1, t2) e F 2. 3.2.2.Ngn ng c on nhn bi Otomat hu hn khng n nh Ngn ng c on nhn bi Otomat khng n nh l cc xu e E* y Otomat t trng thi u ti mt trong cc trng thi kt, k hiu l T(A) T(A) ={x e E*| o(s0,x) F = C} Lu:OtomatAvotomatBcgilhaiotomattngngnhaunuchngon nhn cng mt ngn ng, tc l T(A) = T(B) 2. 3.3.Tnh y v n nh ca Otomat nh ngha: Otomat hu hn (n nh hay khng n nh) A = (S, E, S0, o, F) c gi l mt otomat y nu hm chuyn trng thi xc nh khp ni trn tp S E, ngha lseS,aeEu co(s,a)eStrongtrnghpAnnhvo(s,a)S= Ctrong trng hp A khng n nh. nh ngha: Otomat A c gi l otomat n nh v y nu n va l otomat n nh va l otomat y . V d1.3.4 Cho Otomat A= ({s0, s1, s2, s3, s4}, {a,b,c}, s0, o, {s1, s2}) Trong hm chuyn trng thi c xc nh bng bng sau : o s0 s1 s2 s3 s4 as1 s2 s1 s4 s4 bs2 s3 s4 s3 s4 cs3 s4 s3 s2 s4 Nhn xt : Cn c vo bng chuyn ca otomat A = (S, E , S0, o, F) ta c nhn xt sau y : Bi ging mn hc: Ngn ng hnh thc v Otomat 23 1.Otomat A n nh khi v ch khi trong bng chuyn ca n khng c v tr no cha qu mt trng thi thuc S. 2.Otomat A y khi v ch khi mi v tr ca bng chuyn u cha t nht mt trng thi thuc S. 2. 3.4.Php n nh ho mt Otomat GisA=(S,E,S0,o,F)lmtOtomatchannhhocchay.Cnxydng otomat M n nh v y tng ng vi A (on nhn cng ngn ng do A on nhn). Thut ton n nh ho: Gi s A=(S, E, S0, o, F) l mt Otomat hu hn khng li ra ty . xy dng otomat M hu hn n nh, dy v tng ng vi A ta thc hin mt s bc sau: 1) Xc nh hm hai bin : T: 2s E 2s bng cc quan h sau: s e S, a e E , T(s, a)={s e S | s e o(s,a) } B _ S, a e E, T(B,a)= B seT(s,a) 2) Khi otomat M l mt b nm: M = (Q, E, Q0, f, P ) trong :Q _ 2s, Q0 = {S0}, P = {q e Q| q F = C } V hm chuyn trng thi f c xc nh bng quan h sau: q e Q, a e E (f(q, a) = T(q, a)) Vi cch xc nh nh trn ta c T(M) = T(A). V d 1.3.5. Cho Otomat n nh A1 = ({s0, s1, s2, s3}, {a, b, c}, s0, o1, {s2, s3}) vi hm chuyn o c xc nh bng bng chuyn sau : o1 s0s1s2s3 as1s2s1 bs2s2s3 cs3s3s2 Xy dng Otomat M1 n nh, y tng ng vi otomat A . Bi ging mn hc: Ngn ng hnh thc v Otomat 24 V A n nh nhng cha y nn ta ch cn thm vo mt trng thi mi (s4) cho hm chuyn xc nh khp ni, ta c otomat M1 tng ng vi A1 M1 = ({s0, s1, s2, s3, s4}, {a, b, c}, s0, o1, {s2, s3}) Trong hm chuyn c xc nh bng bng sau: o1 s0s1s2s3s4 as1s2s1s4s4 bs2s2s4s3s4 cs3s4s3s2s4 V d 1.3.6 :Cho Otomat A A= ( { s0, s1, s2}, {0,1}, {s0}, o, {s2}) trong o xc nh bng bng sau : o s0s1s2 0{s0, s1}s1 1s2s0 A cha n nh v y , tin hnh n nh ho Otomat ta c Otomat n nh, y nh sau : T(s0, 0) = {s0, s1} = q1 T(s0, 1) = C = q2 T(s1, 0) = C = q2 T(s1, 1) = {s2} =q3 T(s2, 0) = {s1} = q4 T(s2, 1) = {s0} = q0 T(q1, 0)= T( {s0, s1}, 0)= T(s0, 0)T(s1, 0) = {s0, s1}C = {s0, s1} = q1 T(q1, 1) = T({s0, s1}, 1) = T(s0, 1)T(s1, 1) = {s2} = q3 T(q3, 0) = T(s2, 0) ={s1}= q4 T(q3, 1) = T(s2, 1) ={s0} = q0 T(q4, 0) = T(s1, 0) = C = q2 Bi ging mn hc: Ngn ng hnh thc v Otomat 25 T(q4, 1) = T(s1, 1) = {s2} =q3 Ta xc nh c Otomat n nh y A1 vi Otomat A nh sau : A1= ({q0, q1, q2, q3, q4}, {0, 1}, {q0}, o1, {q3)v hm chuyn o1c cho bng bng sau : o1 q0q1q2q3q4 0q1q1q2q4q2 1q2`q3q2q0q3 Bi ging mn hc: Ngn ng hnh thc v Otomat 26 2. 4.S tng ng ca ngun v Otomat hu hn khng li ra nh ngha: Ngun I v Otomat hu hn khng li ra A c gi l tng ng nu chng sinh ra cng mt ngn ng, ngha l N(I)=N(A). Vn t ra l: Khi c ngun I cn xy dng Otomat A tng ng vi n, v ngc li, khi cho mt otomat hu hn khng li ra cn xy dng ngun I tng ng vi otomat ny. 2.4.1. Xy dng otomat tng ng vi ngun2.4.1.1. Xy dng Otomat c th khng n nh tng ng vi ngun Thut ton: Gi s c ngun I trn bng ch ci E . xy dng otomat A c th khng n nh y tng ng vi ngun I ta thc hin mt s bc sau: 1) Xy dng hm hai bin T: T: 2D(I) E 2D(I) c xc nh bng quan h sau: s e (D(I){v(I)}), a e E, T(s,a)={q _ D(I)} a e E, T(C,a) = C 2) Xc nh tp trng thi kt v trng thi khi u Tp {v(I)} c tha nhn l trng thi khi u ca otomat A v c k hiu l Q0. Tp trng thi kt (F) ca otomat c xc nh nh sau: {q _ D(I) | q F(I) = | }{q0}nu . e N(I) {q _ D(I) | q F(I) = |} nu . e N(I) 3) Otomat khng n nh A c dng : A=(Q, E ,Q0, o, F) Trong Q l tp trng thi ca Otomat v hm chuyn trng thi o c xc nh bng quan h: q e Q, a e E(o(q,a) = T(q,a)). BngthuttonnytacxydngcotomatAtngngvingunI,tcl N(A)=N(I). V dCho ngun : F= S0 S1 S2 ab a,b,c a,b,c Bi ging mn hc: Ngn ng hnh thc v Otomat 27 -Xc nh tp trng thi : T(s0,a)= {s0, s1}T(s0,b)= {s0} T(s0,c)= {s0} T(s1,a) = C T(s1,b)= {s2}T(s1,c)=C T(s2,a)= {s2} T(s2,b)= {s2}T(s2,c)= {s2}- Otomat tng ng vi ngun c dng sau : A= ({s0, s1, s2}, {a, b, c}, s0, o, s2) v hm chuyn o c xc nh bng bng sau : o s0s1s2 A{s0, s1}s2 Bs0s2s2 Cs0s2 2.4.1.2. Xy dng Otomat tng ng n nh, y tng ng vi ngun. Thut ton: Gi s c ngun I trn bng ch ci E. xy dng otomat A n nh y tng ng vi ngun I ta thc hin mt s bc sau: 1) Xy dng hm hai bin T: T: 2D(I) E 2D(I) c xc nh bng quan h sau: s e (D(I){v(I)}), a e E, T(s,a)={s e D(I) | a eNI(s, s)} Bi ging mn hc: Ngn ng hnh thc v Otomat 28 q _ D(I), a e E, T(q,a) = q seT(s,a) a e E, T(C,a) = C 2) Xc nh tp trng thi kt v trng thi khi u Tp {v(I)} c tha nhn l trng thi khi u ca otomat A v c k hiu l Q0. Tp trng thi kt (F) ca otomat c xc nh nh sau: {q _ D(I) | q F(I) = | }{q0}nu . e N(I) {q _ D(I) | q F(I) = |} nu . e N(I) 3) Otomat n nh y A c dng : A=(Q, E ,Q0, o, F) Trong Q l tp trng thi ca Otomat v hm chuyn trng thi o c xc nh bng quan h: q e Q, a e E(o(q,a) = T(q,a)). BngthuttonnytacxydngcotomatAtngngvingunI,tcl N(A)=N(I). Xt v d trn, ta i xy dng Otomat n nh y tng ng vi ngun. T(s0,a) = {s0, s1} = q1 T(s0,b) = {s0} = q0 T(s0,c) = {s0} = q0 T(s1,a) = C = q2 T(s1,b) = {s2} = q3 T(s1,c) =C = q2 T(s2,a) = {s2} = q3 T(s2,b) = {s2} = q3 T(s2,c) = {s2} = q3 T(q1,a) = T({s0, s1},a) = T(s0,a)T(s1,a)= {s0, s1}C ={s0, s1} = q1 T(q1,b) = T({s0, s1},b) = T(s0,b)T(s1,b) = {s0, s2} = q4 T(q1,c) = T(({s0, s1},c) = T(s0,c)T(s1,c) = {s0}C = s0 = q0 T(q3,a) = T(s2,a)= q3 F = Bi ging mn hc: Ngn ng hnh thc v Otomat 29 T(q3,b) = T(s2,b)= q3 T(q3,c) = T(s2,c)= q3 T(q4,a) = T({s0, s2},a) = T(s0,a)T(s2,a) = {s0, s1}{s2} = {s0, s1, s2} = q5 T(q4,b) = T({s0, s2},b) = T(s0,b)T(s2,b) ={s0, s2} = q4 T(q4,c) = T({s0, s2},c) = T(s0,c)T(s2,c) ={s0, s2} = q4T(q5,a) = T({s0, s1, s2},a) =T(s0,a)T(s1,a)T(s2,a) = ({s0, s1, s2} = q5 T(q5,b) = T({s0, s1, s2},b) =T(s0,b)T(s1,b)T(s2,b) = ({s0, s2} = q4 T(q5,c) = T({s0, s1, s2},c) =T(s0,c)T(s1,c)T(s2,c) = ({s0, s2} = q4 Vy Otomat A n nh v y tng ng vi ngun l : A=({q0, q1, q2, q3, q4, q5}, {a, b, c}, q0, o, {q3, q4, q5}) v hm chuyn trng thi o c xc nh bng bng sau : o q0q1q2q3q4q5 aq1q1q2q3q5q5 bq0q4q2q3q4q4 cq0q0q2q3q4q4 2.4.2. Xy dng ngun tng ng vi Otomat Thut ton: Gi s c otomat A =(S, E, S0, o, F).Ta xy dng ngun I tng ng vi otomat bng cc bc thc hin sau: 1)Xcnhnh:Lyccimtrnmtphnghoctrongkhngiantngngcctrng thi ca otomat v dng ngay cc k hiu trng thi t tn cho cc im tng ng. nhtngngvitrngthikhiucthanhnlnhvocangun,ngthi cng oc k hiu bng v(I) (v(I) S0). nh s c tha nhn l nh kt khi v ch khi s e F. 2)Xc nh cnh : s, s e S, a e E .T nh s sang tp cc nh si c cung ghi k hiu a khi v ch khi si e o(s,a). Bng thut ton ny ta xy dng c ngun tng ng vi otomat A. V d : Cho Otomat A= ({s0, s1, s2}, {a, b, c}, s0, o, s2 ) o s0 s1 s2 Bi ging mn hc: Ngn ng hnh thc v Otomat 30 as1s1s2 bs1 c{s1,s2} Xy dng ngun tng ng vi Otomat : 2. 5. S tng ng ca ngun v vn phm chnh quy 2.5.1. Xy dng ngun tng ng vi vn phm chnh quy. Thut ton V d 2.5.2. Xy dng vn phm chnh quy tng ng vi ngun. Thut ton V d 2. 6. S tng ng ca ngun v biu thc chnh quy 2. 6.1. Xy dng ngun tng ng vi biu thc chnh quy. Thut ton V d 2. 6.2. Xy dng biu thc chnh quy tng ng vi ngun. Thut ton V d 2. 7. Bi tp tng hp Cho mt ngn ng chnh quy L. Xy dng ngun, vn phm chnh quy, Otomat hu hn v biu thc chnh quy sinh ngn ng L Cho bng ch ci = { }1 2, ,...,na a a . Xy dng vn phm sinh cc ngn ng sau: VD 1. L = E* VD 2. L = E+ VD 3. L = Cc xu c di chn dng trn E VD 4. L = Cc xu c di chn trn E VD 5. L = Cc xu c di l trn E S0 S1 S2 a c a,b,ca Bi ging mn hc: Ngn ng hnh thc v Otomat 31 VD 6. Cho bng ch ci E { } 0,1, 2 . y dng vn phm G sinh ngn ng L nh sau: L = gm cc t bt u bng 011, cha t con 11211 v kt thc bng 1210 2. 8. Tnh ng ca lp ngn ng chnh quy 2.8.1. Lp ngn ng chnh quy 2.8.2. Tnh ng ca lp ngn ng chnh quy 2. 9. iu kin cn ca lp ngn ng chnh quy 2.9.1. Otomat ti tiu 2.9.2. iu kin cn ca lp ngn ng chnh quy. 2. 10. iu kin cn v ca lp ngn ng chnh quy 2.10.1. Quan h tng ng bt bin phi ch s hu hn 2.10.2. iu kin cn v 2. 11. Otomat hu hn c li ra 2.10.1. nh ngha 2.10.2 Cch biu din 2. 12. e-Ngn ng chnh quy (Siu ngn ng chnh quy) 2.12.1. Cc nh ngha 2.12.2. Cc php ton trn siu ngn ng 2. 12. 3. Tnh ng ca siu ngn ng chnh quy. BI TP Bi 1. Cho bng ch ci E = {a, b, c}. Xy dng vn phm sinh ngn ngL = {anb2n+1ck eE*|n > 0, k > 0} Bi 2. Cho 2 ngun I1 v I2. Tm ngun b, ngun hp, ngun tch ghp, ngun soi gng ca I1 v I2. Bi 3.. Cho E = {a, b, c}. Xy dng ngun I sinh ngn ng sau y: a. N(I) = {o = abncc, vi n nguyn dng} b. N(I) = {o = ab2nca, vi n nguyn dng} c. N(I) = {o = ab2n-1cb, vi n nguyn dng} d. N(I) = {o = ab|c, vi |eE*} Bi 4.Cho E = {0, 1}. Xy dng ngun I sinh ngn ng sau y: a. N(I) = {o = 01|0, vi |eE*} Bi ging mn hc: Ngn ng hnh thc v Otomat 32 b. N(I) = {o = 1|1, vi | c di l} c. N(I) = {o = 11|01, vi | c di chn dng} d. N(I) = {o = 11|01, vi | c di chn} Bi ging mn hc: Ngn ng hnh thc v Otomat 33 Chng 3. NGN NG PHI NG CNH V OTOMAT Y XUNG 3.1. Cy v php th cy 3.2. Dng chun Chomsky 3.3. Cy dn xut v cc tnh cht. 3.3.1. Vn v hn ca ngn ng phi ng cnh 3.3.2. Tnh ng ca lp ngn ng phi ng cnh. 3.3.3 Tnh nhp nhng ca ngn ng phi ng cnh. 3.4. Khi nim v Otomat y xung 3.4.1. Otomat y xung khng n nh v ngn ng phi ng cnh 3.4.1.1. nh ngha 3.4.1.2. Hnh trng 3.4.1.3. Hm chuyn 3.4.1.4. Ngn ng c on nhn bi Otomat y xung khng n nh. 3.4.2. Giao ca ngn ng phi ng cnh v ngn ng chnh quy. 3.4.3. Otomat y xung n nh. 3.4.3.1. nh ngha. 3.4.3.2. V d. 3.4.3.3. Tnh cht. BI TP Bi 1. Trnh by iu kin cn ca ngn ng chnh quy v ng dng. Bi 2. Trnh by iu kin cn v ca ngn ng chnh quy. cho v d v phn hoch. Bi 3. Trnh by nh ngha Otomat hu hn c li ra, cc cch biu din Otomat hu hn c li ra. Cho v d minh ha. Bi ging mn hc: Ngn ng hnh thc v Otomat 34 CHNG 4. C BN V CHNG TRNH DCH 4.1. Gi thiu v chng trnh dch Chngnysgiithiumtcchtngquanvvnbindchbngcchmtcc thnh phn ca mt trnh bin dch v mi trng hat ng ca n. Mc ch ca mn hc: N m vng cac nguyn ly xy d ng m t chng trinh di ch t o hi u vban ch t va s du ng c hiuqu cc ngn ng lp trnh . C kh nng t thit k v xy dng c mt chng trnh dch cho mt ngn ng n gin (ngn ng PL/0). Nng cao kha nng l p trinh thng qua cac bai th c hanh xy d ng cac thanh ph n cho m t chng trinh di ch. Cc bi thc hnh trong mn hc l cc bi phc tp , k t h p nhi u ki n thc vngn ng hinh thc , phn tich vn pha m, c u truc va giai thu t , v vy sinh vin c iu kin luy n t p thi t kva vi t cac chng trinh ln, phc ta p cao. Nhng ki n thc cua mn ho c cung co th c s du ng trong cac linh v c khac nh x ly ngn ng tnhin. 4.2. Chng trnh dch 4.2.1. nh ngha Chng ta u bit c rt nhiu loi my tnh khc nhau nh my PC, my Macshintos vi cc chp khc nhau v mt ngn ng my khc nhau (tp cc ch th lnh khc nhau).Vic xy dng cc ng dng trc tip trn ngn ng my l rt kh v phc tp. i vi cc ng dng ln th iu ny gn nh l khng kh thi. V vy nhu cu c mt ngn ng trung gian, gn vi ngn ng t nhin l tt yu, v khi cn c mt h thng (chng trnh) dch cc chng trnh trn ngn ng ny sang m my c th chy c. Nhng chng trnh lm nhim v nh vy gi l cc chng trnh dch. Ngoi ra nhi m vucua m t chng trinh di ch khng chi la chuy n m t chng trinh t m t ngn ng l p trinh sang ngn ng may ma t ng quat la chuy n m t chng trinh vi t m t ngn ng nay sangngn ng khac .Thng thng ngn ng ngu n la ngn ng b c cao va ngn ng ich la ngn ng b c th p, v d nh t C hay Pascal sang Asembly. Nimtcchngin,trnhbindchlmtchngtrnhlmnhimvcmtchng trnh c vit bng mt ngn ng - ngn ng ngun (source language) - ri dch n thnh mt chngtrnhtngngmtngnngkhc-ngnngch(targetlanguague).Mtphn quan trng trong qu trnh dch l ghi nhn li cc li c trong chng trnh ngun thng bo li cho ngi vit chng trnh. Bi ging mn hc: Ngn ng hnh thc v Otomat 35 nhngha:Chngtrnhdchlmtchngtrnhthchinvicchuynimtchng trnhhaymtonchngtrnhtmtngnngny(gilngnngngun)sangngnng khc (gi l ngn ng ch) tng ng. S mt chng trnh dch nh sau:

Hnh 1.1 - Mt trnh bin dch H thng bin dch Trong h thng bin dch nh Borland C, hay Turbo Pascal, ton b chng trnh ngun c trnhbindchchuynsangchngtrnhchdngmmy.Chngtrnhchnycth chy c lp trn my m khng cn h thng bin dch na. H thng Thng dch (Interpreter) Trongmththngthngdch,chngtrnhthngdchcchngtrnhnguntheotng lnh v phn tchri thc hin n, v d nh hiu hnh thc hin cccu lnh DOS, hay h qun tr c s d liu Foxpro. Mtkiukhctrongmththngthngdchlngnngngunkhngcchuynsang ngn ng my m chuyn sang mt ngn ng trung gian. Mt chng trnh s c nhim v c chng trnh ngn ng trunggian ny v thc hin tng cu lnh. Ngn ng trunggian c gi l ngn ng ca mt myo, v chng trnh thng dch thc hin ngn ng ny cn c gi l my o. Mt h thng nh vy c th c m t nh s di y: chngtrnh ngun(ngn ng bc cao) chng trnh dch chngtrnh ngun(ngn ng bc cao) chngtrnh ch(ngn ng my) Li Bi ging mn hc: Ngn ng hnh thc v Otomat 36 MtvdrtctrngchohthngthngdchkiunylhthngdchJava.Mngun JavacdchradngBytecode.FilechnycmttrnhthngdchgilmyoJava thchin.ChnhvvymngitaniJavacthchytrnmihiuhnhccimyo Java. Mtchngtrnhthngdchckchthcnhtrnhbindchnhngchychmhn.Mt chng trnh bin dch kt hp vi mt chng trnh thng dch to thnh mt chng trnh dch. Cc c trng cua m t ngn ng l p trinh b c cao Mc ch chnh ca mn hc ny l xy dng mt chng trnh dch cho mt ngn ng bc cao.Vvytrongphnnychngtanhclinhngctrngcamtngnngbccao,m nhng c trng ny s c chng ta phn tch trong cc giai on ca mt chng trnh dch. Chng ta s khng phn tch mi c im trong ngn ng bc cao nh lp, cu trc, i tng, m ch xt nhng c trng c bn nht c nhng tm hiu bc u cho vic thit k v xy dng mt chng trnh dch. T vng Cngnhngnngtnhin,ngnnglptrnhcngcxydngdatrnbtvng. T vng trong ngn ng lp trnh thng c xy dng da trn b ch gm c: + ch ci: A .. Z, a . . z + ch s: 0..9 + cc k hiu ton hc: +, - , *, /, (, ), =, , !, %, / + cc k hiu khc: [, ], . . .Cc t vng c ngn ng hiu bao gm cc t kha, cc tn hm, tn hng, tn bin, cc php ton, . . . Chng trnh ngun Compiler CT NN trung gian Interpreter Kt qu Hnh 1.2 H thng thng dch Bi ging mn hc: Ngn ng hnh thc v Otomat 37 Cc t vng ny c nhng qui nh nht nh v d nh tn th vit bi ch ci u tin v sau l khng hoc nhiu ch ci hoc ch s, php gn trong ngn ng C l = cn trong Pascal l :=, v. v. . . xy dng mt chng trnh dch, h thng phi tm hiu tp t vng ca ngn ng ngun v phn tch bit c tng loi t vng v cc thuc tnh ca n,nhim v ny thuc modun phn tch t vng. C php C php l thnh phn quan trng nht trong mt ngn ng. Nh chng ta bit trong ngn ng hnh thc th ngn ng l tp cc cu tha mn vn phm ca ngn ng . V d nhcu = ch ng + v ng v ng = ng t + b ng v.v. . .Trong ngn ng lp trnh, c php ca n c th hin bi mt b lut c php. B lut ny dng m t cu trc ca chng trnh, cc cu lnh. Chng ta quan tm n cc cu trc ny bao gm: 1)cc khai bo 2)biu thc s hc, biu thc logic 3)cc lnh: lnh gn, lnh gi hm, lnh vo ra, . . . 4)cu lnh iu kin if 5)cu lnh lp: for, while 6)chng trnh con (hm v th tc) Nhim v trc tin l phi bit c b lut c php ca ngn ng m mnh nh xy dng chng trnh cho n. Chng trnh phi phn tch chng trnh ngun thnh cc cu trc c php ca ngn ng, t kim tra tnh ng n v mt ng php ca chng trnh ngun. Vn ny thuc cng vic ca modun phn tch c php. Mt vn na l tcc cu trc ny, phi chuyn thnh cc cu trc tng ng ngn ng ch th no. Nhim v ny l ca phn sinh m. Ng ngha Kim tra ng ngha ca chng trnh v mt phn ca mt chng trnh dch. Ng ngha ca mt ngn ng lp trnh lin quan n: + Kiu, phm vi ca hng v bin Bi ging mn hc: Ngn ng hnh thc v Otomat 38 + Phn bit v s dng ng tn hng, tn bin, tn hm Chng trnh dch phi kim tra c tnh ng n trong s dng cc i lng ny. V d kim tra khng cho gn gi tr cho hng, kim tra tnh ng n trong gn kiu, kim tra phm vi, kim tra s dng tn nh tn khng c khai bo trng, dng cho gi hm phi l tn c thuc tnh hm, . . .Nhim v ny l ca phn phn tch ng ngha. 4.2.2. Cu trc ca chng trnh dch 4.2.2.1. M hnh phn tch - tng hp ca mt trnh bin dch Chng trnh dch thng bao gm hai qu trnh : phn tch v tng hp - -

Hnh 1.2 - M hnh phn tch - tng hp Trong qu trnh phn tch chng trnh ngun s c phn r thnh mt cu trc phn cp, thngldngcy-cycphp(syntaxtree)mtrongcmintlmttontvcc nhnh con l cc ton hng. V d 1.1: Cy c php cho cu lnh gn position := initial + rate * 60

Bi ging mn hc: Ngn ng hnh thc v Otomat 39 Bi ging mn hc: Ngn ng hnh thc v Otomat 40 4.2.2.2.Mi trng ca trnh bin dch Ngoi trnh bin dch, chng ta c th dng nhiu chng trnh khc na c th to ra mt chng trnh ch c th thc thi c (executable). Mt chng trnh ngun c th c phn thnhccmodulevclutrongcctptinringr.Cngvictphplicctptinny thng c giao cho mt chng trnh ring bit gi l b tin x l (preprocessor). B tin x l c th "bung" cc k hiu tt c gi l cc macro thnh cc cu lnh ca ngn ng ngun. Ngoi ra, chng trnh ch c to ra bi trnh bin dch c th cn phi c x l thm trckhichngcthchyc.Thngthng,trnhbindchchtoramlnhhpng (assembly code) trnh dch hp ng (assembler) dch thnh dng m my ri c lin kt vi mt s th tc trong th vin h thng thnh cc m thc thi c trn my. Thng thng mt chng trnh dch l mt chng trnh trong h thng lin hon gip cho ngi lp trnh c c mt mi trng hon chnh pht trin cc ng dng ca h. V d nh mt h thng son tho, mt h thng cho php tm li, phn chnh l mt chng trnh dch sang ngn ng ch cho php ti v chy chng trnh. + b son tho chng trnh ngun. + tin x l: x l mt s chc nng ban u to mt chng trnh ngun hon chnh, v d nh b qua cc ch thch; x l cc macro, kt hp cc tp tin, . . . + kim li: bao gm b kim li chng trnh + dch ra ngn ng ch: dch ra ngn ng ch nhng ang dng nh v lic, hay c th dng ngn ng assembly. +ti/linkt:tivobnhmycthtothnhmtchngtrnhchyctrn mt cu trc my c th. Hnh sau trnh by mt qu trnh bin dch in hnh :

Bi ging mn hc: Ngn ng hnh thc v Otomat 41

Hnh 1.3 - Mt trnh x l ngn ng in hnh 4.2.2.3. S phn tch chng trnh ngunPhnnygiithiuvccqutrnhphntchvcchdngnthngquamtsngnng nh dng vn bn. 1. Phn tch t vng (Lexical Analysis) Trong mt trnh bin dch, giai on phn tch t vng s c chng trnh ngun ttri sang phi (qut nguyn liu - scanning) tch ra thnh cc th t (token). V d 1.2:Bi ging mn hc: Ngn ng hnh thc v Otomat 42 Qu trnh phn tch t vng cho cu lnh gn position := initial + rate * 60 s tch thnh cc token nh sau: 1. Danh biu position 2. K hiu php gn := 3. Danh biu initial 4. K hiu php cng (+) 5. Danh biu rate 6. K hiu php nhn (*) 7. S 60 Trong qu trnh phn tch t vng cc khong trng (blank) s b b qua. 2. Phn tch c php (Syntax Analysis) Giaionphntchcphpthchincngvicnhmccthtcachngtrnhngun thnh cc ng on vn phm (grammatical phrase), m sau s c trnh bin dch tng hp ra thnh phm. Thng thng, cc ng on vnphm ny c biu din bng dngcy phn tch c php (parse tree) vi : - Ngn ng c c t bi cc lut sinh. - Phn tch c php da vo lut sinh xy dng cy phn tch c php. V d 1.3:Gi s ngn ng c t bi cc lut sinh sau : Stmt id := expr expr + expr | expr * expr | id | number Vi cu nhp: position := initial + rate * 60, cy phn tch c php c xy dng nh sau : Bi ging mn hc: Ngn ng hnh thc v Otomat 43

Hnh 1.4 - Mt cy phn tch c php

Cu trc phn cp ca mt chng trnh thng c din t bi quy lut qui. V d 1.4: 1) Danh biu (identifier) l mt biu thc (expr). 2) S (number) l mt biu thc. 3) Nu expr1 v expr2 l cc biu thc th: expr1 + expr2 expr1 * expr2 (expr) cng l nhng biu thc. Cu lnh (statement) cng c th nh ngha qui : 1) Nu id1 l mt danh biu v expr2 l mt biu thc th id1 := expr2 l mt lnh (stmt). 2) Nu expr1 l mt biu thc v stmt2 l mt lnh th Bi ging mn hc: Ngn ng hnh thc v Otomat 44 while(expr1)dostmt2 If(expr1)thenstmt2 u l cc lnh. Ngi ta dng cc qui tc qui nh trn c t lut sinh (production) cho ngn ng. S phnchiagiaqutrnhphntchtvngvphntchcphpcngtutheocngvicthc hin. 3. Phn tch ng ngha (Semantic Analysis) Giai on phn tch ng ngha s thc hin vic kim tra xem chng trnh ngun c cha li vngnghahaykhngvtphpthngtinvkiuchogiaionsinhmvsau.Mtphn quan trng trong giai on phn tch ng ngha l kim tra kiu (type checking) v p chuyn i kiu.

V d 1.5: Trong biu thc position := initial + rate * 60 Cc danh biu (tn bin) c khai bo l real, 60 l s integer v vy trnh bin dch i s nguyn 60 thnh s thc 60.0

thnh Bi ging mn hc: Ngn ng hnh thc v Otomat 45

Hnh 1.5 - Chuyn i kiu trn cy phn tch c php Bi ging mn hc: Ngn ng hnh thc v Otomat 46 4.2.3. Cu trc tnh (cu trc logic) ca chng trnh dchdhnhdung,mttrnhbindchcchiathnhccgiaion,migiaionchuyn chng trnh ngun t mt dng biu din ny sang mt dng biu din khc. Mt cch phn r in hnh trnh bin dch c trnh by trong hnh sau.

Hnh 1.6 - Cc giai on ca mt trnh bin dch Vic qun l bng k hiu v x l li c thc hin xuyn sut qua tt c cc giai on.

1. Qun l bng k hiu Mtnhimvquantrngcatrnhbindchlghiliccnhdanhcsdngtrong chngtrnhngunvthuthpccthngtinvccthuctnhkhcnhaucaminhdanh. Nhngthuctnhnycthcungcpthngtinvvtrlutrccpphtchomtnh Bi ging mn hc: Ngn ng hnh thc v Otomat 47 danh, kiu v tm vc ca nh danh, v nu nh danh l tn ca mt th tc th thuc tnh l cc thng tin v s lng v kiu ca cc i s, phng php truyn i s v kiu tr v ca th tc nu c. Bng k hiu (symbol table) l mt cu trc d liu m mi phn t l mt mu tin dng lu tr mt nh danh, bao gm cc trng lu gi k hiu v cc thuc tnh ca n. Cu trc ny cho php tm kim, truy xut danh biu mt cch nhanh chng.

Trong qu trnh phn tch t vng, danh biu c tm thy v n c a vo bng k hiu nhng ni chung cc thuc tnh ca n c th cha xc nh c trong giai on ny.

V d 1.6:Chng hn, mt khai bo trong Pascal c dng varposition, initial, rate : real ththuctnhkiurealchathxcnhkhiccdanhbiucxcnhvavobngk hiu.Ccgiaionsaunhphntch ngnghavsinhmtrunggianmiathmcc thng tin ny vo v s dng chng. Ni chung giai on sinh m thng a cc thng tin chi tit v v tr lu tr dnh cho nh danh v s s dng chng khi cn thit.

Bng k hiu

2. X l li Migiaioncthgpnhiuli,tuynhinsaukhiphthinrali,tythucvotrnh bin dch m c cc cch x l li khc nhau, chng hn : - Dng v thng bo li khi gp li u tin (Pascal). - Ghi nhn li v tip tc qu trnh dch (C). Bi ging mn hc: Ngn ng hnh thc v Otomat 48 Giai on phn tch t vng thng gp li khi cc k t khng th ghp thnh mt token.Giai on phn tch c php gp li khi cc token khng th kt hp vi nhau theo ng cu trc ngn ng. Giai on phn tch ng ngha bo li khi cc ton hng c kiu khng ng yu cu ca php ton hay cc kt cu khng c ngha i vi thao tc thc hin mc d chng hon ton ng v mt c php. 3. Cc giai on phn tch Giai on phn tch t vng: c tng k t gp li thnh token, token c th l mt danh biu,tkha,mtkhiu,...Chuikttothnhmttokengillexeme-trtvngca token . V d 1.7: Danh biu rate c token id, tr t vng l rate v danh biu ny s c a vo bng k hiu nu n cha c trong .

Giaionphntchcphpvphntchngngha:Xydngcutrcphncpcho chui cc token, biu din bi cy c php v kim tra ngn ng theo c php. V d 1.8: Cy c php v cu trc lu tr cho biu thc

position := initial + rate * 60

Bi ging mn hc: Ngn ng hnh thc v Otomat 49 Hnh 1.7 - Cy c php v cu trc lu tr 4. Sinh m trung gian Saukhiphntchngngha,mtstrnhbindchstoramtdngbiudintrunggian ca chng trnh ngun. Chng ta c th xem dng biu din ny nh mt chng trnh dnh cho mtmytrutng.Chngc2ctnhquantrng:dsinhvddchthnhchngtrnh ch. Dng biu din trung gian c rt nhiu loi. Thng thng, ngi ta s dng dng "m my 3 a ch" (three-address code), tng t nh dng hp ng cho mt my m trong mi v tr b nh c th ng vai tr nh mt thanh ghi. M my 3 a ch l mt dy cc lnh lin tip, mi lnh c th c ti a 3 i s.

V d 1.9:t1 := inttoreal (60) t2 := id3 * t1 t3 := id2 + t2 id1 := t3 Dng trung gian ny c mt s tnh cht: - Mi lnh ch cha nhiu nht mt ton t. Do khi to ra lnh ny, trnh bin dch phi xc nh th t cc php ton, v d * thc hin trc +. - Trnh bin dch phi to ra mt bin tm lu tr gi tr tnh ton cho mi lnh. - Mt s lnh c t hn 3 ton hng. 5. Ti u mGiai on ti u m c gng ci thin m trung gian c th c m my thc hin nhanh hn. Mt s phng php ti u ha hon ton bnh thng. V d 1.10: M trung gian nu trn c th ti u thnh: t1 := id3 * 60.0 Bi ging mn hc: Ngn ng hnh thc v Otomat 50 id1 := id2 + t1 ti u m, ta thy vic i s nguyn 60 thnh s thc 60.0 c th thc hin mt ln vo lcbindch,vvycthloibphptoninttoreal.Ngoira,t3chcdngmtln chuyn gi tr cho id1 nn c th gim bt. Cmtkhcbitrtlngiakhilngtiuhomccctrnhbindchkhcnhau thc hin. Trong nhng trnh bin dch gi l "trnh bin dch chuyn ti u", mt phn thi gian ng k c dnh cho giai on ny. Tuy nhin, cng c nhng phng php ti u gip gim ng k thi gian chy ca chng trnh ngun m khng lm chm i thi gian dch qu nhiu. 6. Sinh mGiai on cui cng ca bin dch l sinh m ch, thng l m my hoc m hp ng. Cc v tr vng nh c chn la cho mi bin c chng trnh s dng. Sau , cc ch th trung gian c dch ln lt thnh chui cc ch th m my. Vn quyt nh l vic gn cc bin cho cc thanh ghi.V d 1.11: S dng cc thanh ghi (chng hn R1, R2) cho vic sinh m ch nh sau:

MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDFR2, R1 MOVF R1, id1 Ton hng th nht v th hai ca mi ch th tng ng m t i tng ngun v ch. Ch F trong mi ch th cho bit ch th ang x l cc s chm ng (floating_point). Du # xc nh s 60.0 xem nh mt hng s. Tm li qu trnh thc hin ca mt chng trnh bin dch nh sau: (1)Phn tch t vng (Lexical Analysis) (2)Phn tch c php (Syntatic Analysis) (3)Phn tch ng ngha (Semantic Analysis) (4)Sinh m trung gian (Intermediate code generation) (5)Ti u m (Code Optimization) Bi ging mn hc: Ngn ng hnh thc v Otomat 51 (6)Sinh m ch (Code generation) (7) Qun l bng k hiu Bi ging mn hc: Ngn ng hnh thc v Otomat 52 Hnh 1.8 - Minh ha cc giai on bin dch mt biu thc Bi ging mn hc: Ngn ng hnh thc v Otomat 53 4.2.4. Cu trc ng (cu trc theo thi gian) ca chng trnh dchCcgiaionmchngtacptrnlthchintheotrnhtlogiccamttrnhbin dch. Nhng trong thc t, ci t cc hot ng ca nhiu hn mt giai on c th c nhm li vi nhau. Thng thng chng c nhm thnh hai nhm c bn, gi l: k u (Front end) v k sau (Back end). K u gm cc giai on: phn tch t vng, phn tch c php, phn tch ng ngha v sinh m trung gian. K sau gm cc giai on ti u m trung gian v sinh m ch. Bng thit k ny, i vi cc ngn ng ngun, chng ta ch cn quan tm n vic sinh ra m trung gian m khng cn bit m my ch ca n l g. iu ny lm cho cng vic ngin, khng ph thuc vo my ch. Cn giai on sau th cng tr nn n gin hn v ngn ng trung gian thng th gn vi m my. V n cn th hin u im khi chng ta xy dng nhiu cp ngn ng. V d c n ngn ng ngun, mun xy dng chng trnh dch cho n ngn ng nysang m ngn ng ch th chng tacn n*mchng trnh dch; cn nu chng ta xy dng theo kin trcfront end v back end th chng ta ch cn n+m chng trnh dch. V d: Pascal C Java Byte code MIPSSPARCPowerPC nngn ng ngun Ngn ng trung gian mngn ng ch Bi ging mn hc: Ngn ng hnh thc v Otomat 54 1. K u (Front end) K u bao gm cc giai on hoc cc phn giai on ph thuc nhiu vo ngn ng ngun v hu nh c lp vi my ch. Thng thng, n cha cc giai on sau: Phn tch t vng, Phn tch c php, Phn tch ng ngha v Sinh m trung gian. Mt phn ca cng vic ti u ha m cng c thc hin k u. Front end cng bao gm c vic x l li xut hin trong tng giai on. 2. K sau (Back end) K sau bao gm mt s phn no ca trnh bin dch ph thuc vo my ch v ni chung ccphnnykhngphthucvongnngngunmlngnngtrunggian.Trongksau, chng ta gp mt s vn ti u ho m, pht sinh m ch cng vi vic x l li v cc thao tc trn bng k hiu. 3. Thit k duyt mt lt v nhiu lt Cu trc ng ca chng trnh dch dch (hay cu trc theo thi gian) cho bit quan h gia cc phn khi n hot ng. Cc giai on ca chng trnh dch (phn tch t vng, phn tch c php,phntchngngha,tiu,sinhm)cthhotngtheohaicch:lnlthayng thi.Mt s giai on bin dch thng c ci t bng mt lt (pass) duy nht bao gm vic c mt file d liu vo, ri phn tch v cho kt qu ra mt file ch. Ngi ta hay nhm nhiu giai on vo mt lt v hot ng ca cc giai on ny an xen ln nhau. V d nh cc giai on phn tch t vng, phn tch c php, phn tch ng ngha v sinh m trung gian c th c nhmlithnhmtlt.Khi dngttsaugiaionphntch c th c dch trc tip thnh m trung gian. ychngtaxemxthai thit k ca mt chng trnh. Th nht l thit k duyt mt lt.Trongthitknymts thnhphncachngtrnhc thchinngthi.Bphntch c php ng vai tr trung tm, n s gi b phn tch t vng khi n Sinh m trung gian Ti u m Sinh m Chng trnh ngun Phn tchc php Phn tcht vng Phn tch ng ngha Chng trnh ch Bi ging mn hc: Ngn ng hnh thc v Otomat 55 cn mt t t tip theo v n gi b phn tch ng ngha khi n mun chuyn cho mt cu trc c php c phn tch. B phn tch ng ngha li a cu trc sang phn sinh m trung gian sinh ra cc m trong mt ngn ng trung gian ri a vo b ti u v sinh m. Trongcu trc duyt nhiu lt, cc thnh phn trongchng trnh cthc hin ln lt vclpvinhau.Quamimtphn,ktqusclulivlmuvochobctip theo. Sau y l S thit k duyt nhiu lt Ngitachmuncmtstltbivmiltumtthi giancvghiratptintrunggian.Ngclinuchngtagomqu nhiugiaionvotrongmtltthcthsphiduytrtonb chngtrnhtrongbnh,bivmtgiaioncthcnthngtin theomtthtkhcvithtnctora.Dngbiudintrung giancachngtrnhcthlnhnnhiusovichngtrnhngun hoc chng trnh ch, v th s gp vn v b nh lu tr. ivimtsgiaion,nhmchngvomtltlmnysinh mt s vn . Chng hn cc ngn ng nh PL/1, Algol 68 hay Foxpro cho php cc bin c dng trc khi khai bo. Chng ta khng th to ramchchomtktcunukhngbitckiuccbincmt trongktcu.Tngtphnlnccngnnglptrnhucho php dng lnh goto vi mt nhn khai bo sau. Chng ta khng th xc nh c a ch ch ca mt lnh nhy nh th cho n khi chng ta thycmnguntrongonvmchcsinhra.Trong nhngtrnghpnhthny,chngtacthdngkthutinsau (backpatching):dnhmtchtrngchoccthngtinangthiu,v in vo khong ny khi c c thng tin .Nusosnhgiahaithitknyththitkduytnhiultn gin hn v mt logic thc hin v c thc hin ht giai on ny li n giaionkhc.Tuynhinchngtrnhschychmhnnhiulnv phitruyxutliktqucaccgiaiontrctthitblutr ngoi. Tronggiotrnhnychngtanghincuccgiaioncamt Phn tch t vng Phn tch c php Phn tch ng ngha Sinh m trung gian Ti u m Sinh m ch m ch M ngun Bi ging mn hc: Ngn ng hnh thc v Otomat 56 chng trnh dch mt cch ring r nhng theo thit k duyt mt lt. 4. Gii thi u ngn ng PL/0 Ngn ng PL/0 l mt ngn ng lp trnh nh, cc cu lnh ca n ta nh ngn ng lp trnh Pascal. N thng c s dng minh ha cch xy dng mt chng trnh dch. Mc d rt ngin,nhngngnngPL/0chanhngntinhnhcangnngbccao,nginv thch hp vic tm hiu mt ngn ng lp trnh bc cao. V kiu d liu th PL/0 ch c kiu d liu nguyn V cc cu lnh th PL/0 cha hu ht cc cu lnh c bn: cu lnh gn, cu lnh iu kin IF, cu lnh lp WHILE, cc ton t s hc. N khng c cu lnh vo/ra. NgnngPL/0Ccutrckhi,thhinkhycckhinimvnhnghachng trnh con. N cng cho php xy dng mt chng trnh con qui. V d v mt chng trnh vit trong ngn ng PL/0: Const m:=7, n:=82; Var x, y, z, q, r; Procedure Multiply; Var a, b; Begin a := b; b := y; z := 0; while b>0 do begin if b=a then z := z+a; a := 2*a; b := b/2;end; End; Procedure Divide; Var w; Begin r := x; q := 0; w := y; while wy do begin q := 2*q; w := w/2; if w block . block -> { CONST idetifier := number ( , identifier := number )* ; } { VAR identifier ( , identifier ) * ; } { ( PROCEDURE identifier ; block ; ) * } statement statement -> identifier := expression | CALL identifier | BEGIN statement ( ; statement ) * END | IF condition THEN statement | WHILE condition DO statement | expression -> fragment ( ( + | - | * | / ) fragment )* fragment ->identifier| number| ( + | - ) fragment| ( expression ) condition -> ODD expression | expression ( = | | < | | >= ) expression Ngn ng PL/0 s c s dng thc hnh minh ha cc bc xy dng mt chng trnh dch hon chnh trong ti liu ny . Vi c nay se giup chung co c stim hi u cuthva su s c hn vvi c xy d ng chng trinh di ch cho m t ngn ng hoan chinh. Nhim v hc chng trnh dch + xy dng b phn tch t vng + xy dng b phn tch c php + xy dng b phn tch ng ngha + xy dng b sinh m trung gian + xy dng b sinh m my o + chng trnh thng dch chy my o + chng trnh qun l bng k hiu Bi ging mn hc: Ngn ng hnh thc v Otomat 58 Chng ta s xy dng cc phn vic ny trn mt ngn ng c th l ngn ng PL/0. c thm Cc th h ngn ng lp trnh Cc chng trnh dch u tin xut hin vo nhng nm u thp k 50. Kh c thch ra thi im chnh xc ca s kin v c vi nhm c lp vi nhau cng nghin cu v thc hin cng vic ny. Cc th h u tin Trc khi my tnh c th thc hin mt nhim v, n cn phi c lp trnh hot ng bngcchtccthutton,biuthctrongngnngmyvobnhchnh.Ngungcca vic c qu trnh lp trnh ny l do c cc nhu cu a dng ngi lp trnh mong mun din t c tt c cc thut ton bng ngn ng my. Phng php ny cn phi c ci tin ngoi nhim v sn sng cho thit k thut ton cn gip ngi lp trnh trnh hay pht hin v nh v c cc li v gip cha li trc khi cng vic c hon thnh. Bc u tin nhm loi b cc kh khn ny t qu trnh lp trnh l vt b vic dng cc consbuntvdgylidngbiudinccmphptonvcctontctrongngn ng my. Ch n gin bng cch chn cc tn m t cho cc b nh v cc thanh ghi biu dinccmphpton,ngilptrnhcthtngcrtnhiutnhcccamtchui cc lnh. V d, chng ta hy xem mt th tc vit bng m my c nhim v cng ni dung ca cc nh 6C v 6D li vi nhau v t kt qu vo 6E. Cc lnh thc hin cng vic ny vit trong m 16 nh sau: 156C 166D 5056 306E C000 Nu by gi chng ta gn mt ci tn PRICE (gi tin) cho v tr 6C, TAX (thu) cho 6D v TOTAL (tng s) cho 6E, v chng ta c th biu din cng th tc ny nh di y s dng k thut gi l t k hiu gi nh; LD R5, PRICE LD R6, TAX ADDIR0, R5 R6 STR0, TOTAL HLT Bi ging mn hc: Ngn ng hnh thc v Otomat 59 a s chng ta s cng nhn l dng th hai d vn cn kh, th vic thc hin cng vic biu din mc ch v ngha ca th tc tt hn nhiu dng u. Khi k thut ny ln u tin c cng b, ngi lp trnh dng b k hiu ny thit k chng trnh gc trn giy v sau s dch n ra dng m my. Vic ny cng khng mt nhiu thi gian lm do vic chuyn i thc hin tng i my mc. H qu l vic dng cc k hiu ny dn n vic hnh thc ha n thnh mt ngn ng lp trnh gi l ngn ng Assembly, v mt chng trnh gi l Assembler dng dch t ng cc chng trnh khc vit trong ngn ngAssemblythnhngnngmytngng.ChngtrnhnycgilAssembler(trnh dch hp ng) do nhim v ca n l tng hp thnh cc lnh my bng cch dch cc k hiu gi nh v cc tn. Ngy nay Assembler tr thnh mt chng trnh tin ch thng thng trong hu ht cc my tnh. Vi nhng h thng nh vy, ngi lp trnh c th g mt chng trnh trong dng k hiu gi nh nh cc b son tho ca h thng, ri yu cu h thng dng Assembler dch chng trnh v lu thnh tp m sau c th dng chy c. NhvyccngnngAssemblycphttrinutin,chngxuthinnhlmt bc tin khng l trn con ng tm kim cc mi trng lp trnh tt hn. Trong thc t, c nhiunghincuvchngbiudinmtngnnglptrnhmivtondin.Do,cc ngn ng Assembly c coi l cc ngn ng th h th hai, cn ngn ng th h u tin chnh l bn thn cc ngn ng my. Mc d ngn ng th h th hai ny c rt nhiu u im so vi ngn ng my, chng vn cn qu vn tt. Ngn ng Assembly v nguyn tc cng ging nh ngn ng my tng ng. S khcnhaunginchlcphpdngbiudinchng.Sgingnhaugiangnng assembly v ngn ng my cn dn n vic ngn ng Assembly ph thuc vo tng loi my c th.Cclnhdngtrongchngtrnhchlbiudinccthuctnhcamy.Mtkhc,mt chng trnh vit trong ngn ng assembly khng d chuyn sang mt loi my khc v thng phi vit li cho thch ng vi cc thanh ghi v tp lnh ca my mi. Mt nhc im na ca ngn ng assembly l mt ngi lp trnh, mc d khng buc phi m cc lnh dng tng bit, th thng b bt phi ngh n cc chi tit, cc thnh phn nh ny, khng c tp trung vo vic tm gii php tt hn. Tnh cnh ny cng ging nh thit k mt ngi nh m phi ch n xi mng, vi va, gch ngi, inh, Tuy qu trnh thit k mt ngi nh t nhng thnh phn nh nh th cng thc hin c, nhng vic thit k s n gin i rt nhiu nu chng ta suy ngh bt u t cc phng, nn, ca s, mi. Bi ging mn hc: Ngn ng hnh thc v Otomat 60 Nh vy nguyn l thit k da trn cc phn t nh i ln khng phi l nguyn l thch hp trong vic thit k. Qu trnh thit k tt hn l dng cc nguyn l mc cao hn, mi nguyn lnybiudinmtkhinimlinquanviccthuctnhchnhcasnphm.Mikhimt thit k c hon tt, cc thit k gc c th c dch sang cc khi nim mc thp hn, lin quan n vic thc hin, ging mt nh xy dng cui cngs chuyn thit k trn giy sang chi tit cc vt liu xy dng. Theo trit l ny, cc nh khoa hc my tnh bt u pht trin cc ngn ng lp trnh tt hn chovicvitphnmmsoviccngnnglptrnhbcthpassembly.Ktqulccngn ng th h th ba ra i, khc vi cc th h trc ch chng va l ngn ng mc cao, li va c lp vi my. Nichung,phngphpcaccngnnglptrnhthhthbanylnhnbitbcc nguyn l bc cao cho vic pht trin phn mm. Mi mt nguyn l ny c thit k sao cho n c th thc hin nh l mt chui cc nguyn l thp c trong ngn ng my. V d, cu lnh:assign Total the value Price plus Tax hoc Total: =Price + Tax chothymthnhngmccaokhngcnquantmnvicmt mytnhcthphi thc hin n nh th no. Cc pht trin gn y Ni chung, thut ng ngn ng th h th t c dng trong mt s sn phm phn mm m c cho php ngi dng t bin i (ty bin) phn mm ca h m khng cn c chuyn mn. Ngi lp trnh trong cc ngn ng nh vy thng c yu cu chn t nhng g hin trn mn hnh dng cu hoc biu tng. Nhng sn phm phn mm bao gm c bng tnh gip duy tr cc bng d liu dng cc bn ghi k ton, h CSDI gip duy tr v ly li thng tin, cc phn mm ha gip pht trin cc ha, th, nh cc b x l vn bn mnh cho php cc ti liu c th kt hp, sp xp li, v i dng. Thm na, cc phn mm ny nhiu khi li c b li to nn cc h thng tng th. Vi nhng h thng nh vy, mt nh kinh t c th kin trc nnvbiniccmhnhkinht,phntchnhngthayinhhngkhcnhaucthc trong nn kinh t ni chung hoc trong mt lnh vc kinh doanh c th no , v a ra kt qu dng mt ti liu vit vi cc hnh ha, lc lm cc phng tin tr gip trc quan. Mt ngi qun l doanh nghip nh c th ty bin cng snphm ny pht trin mt h thng cho vic duy tr kho v tm ra cc nh hng ca cc mc lu chuyn thp no R rng l Bi ging mn hc: Ngn ng hnh thc v Otomat 61 nutaphivitccchngtrnhlmttccctybinnythulnhngchngtrnh ln. Nhng h thng ny c coi l thay th cho cc ngn ng lp trnh do mi trng lp trnh ca chng gn gi vi ng dng hn cc mi trng m cc ngn ng th h th ba cung cp. V d, thay cho vic m t cc thng tin c biu din trong my nh th no, mt bng d liu c th hin th trn mn hnh my tnh ra lm sao, hoc c h thng c cp nht thng tin nh th no, th ngi lp trnh dng cc phn mm th h th t ch cn m t cc mc d liu s xut hin trn bng tnh v chng quan h vi nhau nh th no. Do vy, ngi dng c th ty bin v dng bng tnh m khng cn quan tm (hoc hiu) v cc chi tit lin quan n cc k thut ang c s dng. Thut ng ngn ng th h th nm c dng cho khi nim lp trnh m t,vi vic nhn mnh phng php cbitc bit nh lp trnh logic. T tng nythng minh hn cc t tng trc y. n gi chng ta s ch rng t tng lp trnh khai bo cho php ngi dng my tnh gii cc bi tan m ch cn quan tm n l bi ton g ch khng phi l n c gii nh th no. Quan im ny c th l thi qu i vi bn. Ti sao chng ta li hy vng gii c mt bi ton m khng cn phi quan tm n cch gii n nh th no. Cu tr li l chng ta khng gii bi ton ny m my tnh gii h. Vi phng php ny, nhim v ca chng ta n thun ch l khai bo v bi ton, trong khi my tnh phi thc hin nhim v tm li gii cho n. Tttngcathhngnnglptrnhthnm,tathynuvnccphttrinln nh vy, th cho n mt lc no my tnh s hiu c trc tip ngn ng t nhin ca con ngi. Truynthnggiangivmybng ngn ng my, trong con ngi phi m t chi tit mi bc li gii Truynthnggiangivmybng ngnngtnhincaconngi,trong my s t sinh ra ton b li gii 4.2.5. V tr ca chng trnh dch trong h thng dch Trongthct,chngtrnhdchthngcdngtrongmththnglinhonnhiuchc nng, to ra mt mi trng chng trnh dch hon chnh. 4.3. S cn thit phi nghin cu chng trnh dch Vic nghin cu chng trnh dch s gip chng ta: Bi ging mn hc: Ngn ng hnh thc v Otomat 62 - Nm vng cc nguyn l ngn ng lp trnh v cng c quan trng nht ca cc nh tin hc, l chng trnh dch. Trn c s hiu su c tng ngn ng lp trnh, nm c im mnh, im yu ca tng ngn ng, t chn c ngn ng ph hp vi n ca mnh. - Bit la chn chng trnh dch thch hp ca cng mt ngn ng lp trnh. - Hiu rx cc la chn trong cc chng trnh dch, t ty chn ti u cho cng vic cn thc hin - Nng cao trnh tay ngh, ci thin k nng v hiu bit v lp trnh. - Vn dng c hiu qu vo cc cng vic c th, c th t mnh xy dng c mt chng trnh dch theo yu cu. Dng cc kin thc ca mn chng trnh dch vo cc ng dng khc. - p dngcc kin thc hc vchng trnhdch vo cc ngnh ngh khc nh x l ngn ng t nhin. 4.4. B phn tch c php. Phn tch c php tch chng trnh ngun thnh cc phn theo vn phm v biu din cu trc nybngmtcy(gilcyphntch),hoctheomtcutrctngngvicy.yl bc quan trng nht ca ton b qu trnh dch. BI TP 1.Th no l mt chng trnh dch 2.So snh h thng bin dch v thng dch 3.So snh thit k duyt mt lt v nhiu lt 4.u im ca kin trc k trc v k sau 5.Tm hiu ngn ng HTML v t t v c php Bi ging mn hc: Ngn ng hnh thc v Otomat 63 MT S THI MU s 1. Bi1: Cho bng ch ci ={a,b,c} L1={xe*| x cha t con bc v kt thc bi l k hiu a} a)Xy dng ngun sinh ngn ng L1. b)Xy dng vn phm tng ng vi ngun Bi 2: Cho bng ch ci ={k,m,n} L2={xe*| x cha t con kmn} a)Xy dng vn phm sinh ngn ng L2. b)Xy dng Otomat hu hn n nh tng ng vi ngun. c)Xy dng vn phm sinh ngn ng soi gng vi ngn ng L2. s 2. Bi1: Cho bng ch ci ={a,b,c} L1={xe*| x bt u bi l b v cha t con ca} a)Xy dng ngun sinh ngn ng L1. b)Xy dng Otomat n nh, y tng ng vi ngun Bi 2: Cho bng ch ci ={m,n,p} L2={xe*| x cha t con mn} a)Xy dng vn phmG sinh ngn ng L2. b)Chuyn vn phm G v dng chun Chomsky. c)Xy dng cy dn xut sinh t o=pmnnp t vn phm chun Chomsky. s 3. Bi1: Cho bng ch ci ={m,n,p} L1={xe*| x cha ng 3 k hiu n, cc k hiu m,p l bt k} a)Xy dng ngun sinh ngn ng L1. b)Xy dng Otomat tng ng vi ngun Bi 2: Cho bng ch ci ={a,b,c} L2={xe*| x bt u bi a v c di l} a)Xy dng ngun I sinh ngn ng L2. b)Xy dng Otomat hu hn tng ng vi ngun. c)Xy dng ngun soi gng vi ngun I. Bi ging mn hc: Ngn ng hnh thc v Otomat 64 TI LI U THAM KHA O -[1] Nguyn Vn Ba, Ngn ng hnh thc, Trng i hc Bch khoa H ni, 1997 -[2]PhannhDiu,Lthuytotomatvthutton,NhxutbnihcvTrung hc Chuyn nghip, 1971 -[3] c Gio, ng Huy Run, Ngn ng hnh thc, Nh xut bn KHKT, 1991 -[4] Phm Hng Nguyn, Gio trnh chng trnh dch, H KHTN HN -[5] Nguyn Vn Ba, Phn tch c php, H Bch khoa HN