Regular Expressions Alphabet S 1. Æ, l và a Î å là các bi u th c chính quy. Nh ng bi u th ể ứ ữ ể ức này gọi là các biểu thức chính qui nguyên tố. 1. Nếu r1 và r2 là các biểu thức chính quy thì r1 + r2,
Trang 97Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinChương 3 Ngôn ngữ chính qui và văn phạm chính qui3.1 Biểu thức chính qui (Regular Expression)3.2 Mối quan hệ giữa BTCQ và ngôn ngữ chính qui3.3 Văn phạm chính qui (Regular Grammar) Trang 98Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinBiểu thức chính quiBiểu thức chính qui (BTCQ) là gì?Là một sự kết hợp các chuỗi kí hiệu của một bảng chữ cái ∑nào đó, các dấu ngoặc, và các phép toán +, ., và *. trong đóphép + biểu thị cho phép hội, phép . biểu thị cho phép kết nối, phép * biểu thị cho phép bao đóng sao.Ví dụNgôn ngữ {a} được biểu thị bởi BTCQ a.Ngôn ngữ {a, b, c} được biểu thị bởi BTCQ a + b + c.Ngược lại BTCQ (a + b.c)* biểu thị cho ngôn ngữ {λ, a, bc, aa, abc, bca, bcbc, aaa, aabc, .}. Trang 99Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinĐịnh nghĩa hình thức BTCQĐịnh nghĩa 3.1Cho ∑ là một bảng chữ cái, thì1. ∅, λ, và a ∈∑tất cả đều là những BTCQ hơn nữa chúng được gọi là những BTCQ nguyên thủy.2. Nếu r1và r2là những BTCQ, thì r1+ r2, r1. r2, r1*, và (r1) cũng vậy.3. Một chuỗi là một BTCQ nếu và chỉ nếu nó có thể được dẫn xuất từ các BTCQ nguyên thủy bằng một số lần hữu hạn áp dụng các quy tắc trong (2).Ví dụCho ∑ = {a, b, c}, thì chuỗi (a + b.c)*.(c + ∅) là BTCQ, vì nó được xây dựng bằng cách áp dụng các qui tắc ở trên. Còn (a + b+) không phải là BTCQ. Trang 100Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinNgôn ngữ tương ứng với BTCQĐịnh nghĩa 3.2Ngôn ngữ L(r) được biểu thị bởi BTCQ bất kỳ là được định nghĩa bởi các qui tắc sau.1. ∅ là BTCQ biểu thị tập trống,2. λ là BTCQ biểu thị {λ},3. Đối với mọi a ∈∑, a là BTCQ biểu thị {a},Nếu r1và r2là những BTCQ, thì4. L(r1+ r2) = L(r1) ∪ L(r2),5. L(r1.r2) = L(r1).L(r2),6. L((r1)) = L(r1),7. L(r1*) = (L(r1))*. Trang 101Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinNgôn ngữ tương ứng với BTCQ (tt)Qui định về độ ưu tiênĐộ ưu tiên của các phép toán theo thứ tự từ cao đến thấp là1. bao đóng – sao,2. kết nối,3. hội.Ví dụL(a* . (a + b)) = L(a*) L(a + b)= (L(a))* (L(a) ∪ L(b))= {λ, a, aa, aaa, . . .}{a, b}= {a, aa, aaa, . . . , b, ab, aab, . . .} Trang 102Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinXác định ngôn ngữ cho BTCQTìm ngôn ngữ của các BTCQ saur1= (aa)*(bb)*br2= (ab*a + b)*r3= a(a + b)*Kết quảL(r1) = {a2nb2m+1: n ≥ 0, m ≥ 0}L(r2) = {w ∈ {a, b}*: na(w)chẵn}L(r3) = {w ∈ {a, b}*: w được bắt đầu bằng a} Trang 103Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinTìm BTCQ cho ngôn ngữTìm BTCQ cho các ngôn ngữ sauL1= {tập tất cả các số thực của Pascal}L2= {w ∈ {0, 1}*: w không có một cặp số 0 liên tiếp nào}L3= {w ∈ {0, 1}*: n0(w) = n1(w)}Kết quảr1= (‘+’+ ‘-’+ λ)(0 + 1 + … + 9)+(‘.’(0 + 1 + … + 9)++ λ)(‘E’ (‘+’+ ‘-’+ λ)(0 + 1 + … + 9)++ λ)r2= [(1* 011*)* + 1*] (0 + λ) hoặc (1 + 01)* (0 + λ) Không tồn tại BTCQ biểu diễn cho L3 Trang 104Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinMột số phép toán mở rộngPhép chọn lựa r? hoặc [r]r ? = [r] = (r + λ)Phép bao đóng dương +r+= r.r*Chú ý(r*)* = r*(r1* + r2)* = (r1+ r2)*(r1r2* + r2)* = (r1+ r2)*Trong một số tài liệu phép cộng (+) được kí hiệu bằng dấu | thay cho dấu + . Chẳng hạn (a + b).c thì được viết là (a | b).c Trang 105Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinBTCQ biểu thị NNCQĐịnh lý 3.1Cho r là một BTCQ, thì tồn tại một nfa mà chấp nhận L(r). Vìvậy, L(r) là NNCQ.Bổ đềVới mọi nfa có nhiều hơn một trạng thái kết thúc luôn luôn cómột nfa tương đương với chỉ một trạng thái kết thúc.qf1qfnqf1qfnqftương đương vớiλλ Trang 106Lý thuyết Ôtômát & NNHT - Khoa Công Nghệ Thông TinThủ tục: re-to-nfaTừ bổ đề trên mọi nfa có thể được biểu diễn bằng sơ đồ như sauChứng minhThủ tục: re-to-nfaInput: Biểu thức chính qui r.Output: nfa M = (Q, Σ, δ, q0, F).B1. Xây dựng các nfa cho các BTCQ nguyên thủyMq0qfq0q1λq0q1aq0q1(a) nfa chấp nhận ∅ (b) nfa chấp nhận {λ}(c) nfa chấp nhận {a} [...]... thiết Q = {q 0 , q 1 , …, q n } và Σ = {a 1 , a 2 , …, a m }. B1. V = Q, S = q0 (tức là mỗi trạng thái trong nfa trở thành một biến trong văn phạm) Trang 97 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Chương 3 Ngơn ngữ chính qui và văn phạm chính qui 3.1 Biểu thức chính qui (Regular Expression) 3.2 Mối quan hệ giữa BTCQ và ngơn ngữ chính qui 3.3 Văn phạm chính qui (Regular Grammar) ... BTCQ. Ngơn ngữ được chấp nhận bởi nó là tập tất cả các chuỗi được sinh ra bởi các BTCQ mà là nhãn của một con đường nào đó đi từ trạng thái khởi đầu đến một trạng thái kết thúc nào đócủa ĐTCTT tổng quát (ĐTCTTTQ). Trang 118 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Văn phạm chính qui Văn phạm tuyến tính - phải và – trái. Văn phạm tuyến tính - phải sinh ra NNCQ. Văn phạm tuyến... - Khoa Cơng Nghệ Thơng Tin Biểu thức chính qui Biểu thức chính qui (BTCQ) là gì? Là một sự kết hợp các chuỗi kí hiệu của một bảng chữ cái ∑ nào đó, các dấu ngoặc, và các phép tốn +, ., và *. trong đó phép + biểu thị cho phép hội, phép . biểu thị cho phép kết nối, phép * biểu thị cho phép bao đóng sao. Ví dụ Ngơn ngữ {a} được biểu thị bởi BTCQ a. Ngôn ngữ {a, b, c} được biểu thị bởi BTCQ... lại BTCQ (a + b.c)* biểu thị cho ngôn ngữ {λ, a, bc, aa, abc, bca, bcbc, aaa, aabc, }. Trang 119 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Văn phạm tuyến tính - phải và - trái Định nghĩa 3.3 Một văn phạm G = (V, T, S, P) được gọi là tuyến tính - phải (TT-P) (right-linear) nếu tất cả luật sinh là có dạng A → xB A → x trong đó A, B ∈ V, x ∈ T*. Một văn phạm được gọi là tuyến tính -... nfa Input: Văn phạm tuyến tính-phải G P = (V, T, S, P) Output: nfa M = (Q, Σ, δ, q 0 , F) B1. Ứng với mỗi biến V i của văn phạm ta xây dựng một trạng thái mang nhãn V i cho nfa tức là: Q ⊃ V. B2. Ứng với biến khởi đầu V 0 , trạng thái V 0 của nfa sẽ trở thành trạng thái khởi đầu, tức là: S = V 0 B3. Nếu trong văn phạm có một luật sinh nào đódạng V i → a 1 a 2 …a m thì thêm vào nfa một và chỉ một... {a, b}, S, P), với các luật sinh S → A, A → aB | λ, B → Ab, không phải là một VPCQ. Đây là một ví dụ của văn phạm tuyến tính (VPTT). Văn phạm tuyến tính (Linear Grammar) Một văn phạm được gọi là tuyến tính nếu mọi luật sinh của nó có dạng có tối đa một biến xuất hiện ở vế phải của luật sinh và khơng có sự giới hạn nào trên vị trí xuất hiện của biến này. Trang 112 Lý thuyết Ơtơmát & NNHT -... tuyến tính - phải cho NNCQ. Sự tương đương giữa VPCQ và NNCQ. Trang 123 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thông Tin Văn phạm TT-P sinh ra NNCQ (tt) B4. Ứng với mỗi luật sinh của văn phạm có dạng V i → a 1 a 2 …a m V j thêm vào nfa các chuyển trạng thái δ*(V i , a 1 a 2 …a m ) = V j B5. Ứng với mỗi luật sinh dạng V i → a 1 a 2 …a m thêm vào nfa các chuyển trạng thái δ*(V i , a 1 a 2 …a m )... được xây dựng bằng cách áp dụng các qui tắc ở trên. Cịn (a + b +) khơng phải là BTCQ. Trang 124 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thơng Tin Ví dụ Xây dựng một nfa chấp nhận ngơn ngữ của văn phạm sau: V 0 → aV 1 | ba V 1 → aV 1 | abV 0 | b Nfa kết quả V 0 V 1 V f a b b a b a a Trang 122 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thông Tin Văn phạm TT-P sinh ra NNCQ Định lý 3.3 Cho... L(r 1 ).L(r 2 ), 6. L((r 1 )) = L(r 1 ), 7. L(r 1 *) = (L(r 1 ))*. Trang 127 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thông Tin Sự tương đương giữa VPCQ và NNCQ Nhận xét Lớp VPTT-P tương đương với lớp NNCQ Định lý 3.5 Ngôn ngữ L là chính qui nếu và chỉ nếu tồn tại một VPTT-T G sao cho L = L(G). Ta chứng minh mối quan hệ tương đương thông qua VPTT-P. Bổ đề 1 Từ VPTT-TG T đã cho ta xây...Trang 100 Lý thuyết Ơtơmát & NNHT - Khoa Cơng Nghệ Thông Tin Ngôn ngữ tương ứng với BTCQ Định nghĩa 3.2 Ngôn ngữ L(r) được biểu thị bởi BTCQ bất kỳ là được định nghĩa bởi các qui tắc sau. 1. ∅ là BTCQ biểu thị tập trống, 2. λ là BTCQ biểu thị {λ}, 3. Đối với mọi a ∈∑, a là BTCQ biểu thị {a}, Nếu r 1 và r 2 là những BTCQ, thì 4. L(r 1 + r 2 ) = L(r 1 ) ∪ L(r 2 ), 5. L(r 1. r 2 ) . Ngôn ngữ chính qui và văn phạm chính qui3 .1 Biểu thức chính qui (Regular Expression)3.2 Mối quan hệ giữa BTCQ và ngôn ngữ chính qui3 .3 Văn phạm chính qui. thức chính qui Biểu thức chính qui (BTCQ) là gì?Là một sự kết hợp các chuỗi kí hiệu của một bảng chữ cái ∑nào đó, các dấu ngoặc, và các phép toán +, ., và