Chương 7: NGÔN NGỮ HÌNH THỨC VÀ VĂN PHẠM SINH

22 1.5K 14
Chương 7: NGÔN NGỮ HÌNH THỨC VÀ VĂN PHẠM SINH

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 7. Văn phạm ngôn ngữ hình thức Chương 7 NGÔN NGỮ HÌNH THỨC VĂN PHẠM SINH Trong các chương 7, 8, 9 chúng ta sẽ nghiên cứu về ngôn ngữ hình thức, trong đó chủ yếu là các lớp ngôn ngữ phi ngữ cảnh ngôn ngữ chính quy. Sẽ nghiên cứu trên 2 phương diện : • Thiết bị tự động sinh hoặc đoán nhận ngôn ngữ : Trọng tâm xem xét là các văn phạm (sinh) ôtômat (đoán nhận). • Tính chất của các lớp ngôn ngữ phi ngữ cảnh (Context-Free Grammar) chính quy (Regular Grammar). Các ngôn ngữ trên đóng vai trò quan trọng trong thiết kế các ngôn ngữ lập trình chương trình dịch. I. NGÔN NGỮ HÌNH THỨC 1. Khái niệm về ngôn ngữ Ngôn ngữ là phương tiện giao tiếp giữa người người, người máy, máy máy. Ngôn ngữ tự nhiên có cú pháp phong phú nhưng ngữ nghĩa không chặt chẽ. Để giao tiếp giữa người máy hoặc máy máy cần có ngôn ngữ với văn phạm chặt chẽ hơn mà ta gọi là ngôn ngữ hình thức. 2. Các yếu tố cơ bản của ngôn ngữ hình thức • Bảng chữ cái : là một tập hợp Σ hữu hạn, khác rỗng. Mỗi phần tử được gọi là một kí tự. Ví dụ : Σ = bảng kí tự tiếng Anh. Σ = {0, 1} … • Xâu ký tự (từ) : Dãy hữu hạn liên tiếp các kí tự của bảng chữ cái Σ. Ví dụ : beautiful, 0010110, … Độ dài của một xâu là số kí tự trong xâu. Nếu kí hiệu ω là một xâu thì l(ω) là độ dài của xâu. Xâu rỗng được kí hiệu là λ có độ dài là 0. • Ngôn ngữ : Là một tập hợp bất kỳ các từ trên bảng chữ cái Σ. Tập tất cả các từ (kể cả từ rỗng) trên Σ được kí hiệu Σ*. Kí hiệu Σ + = Σ* \ {λ}. Các tập {λ} ∅ được xem là ngôn ngữ trên bảng chữ cái bất kỳ. Một ngôn ngữ thường đựoc kí hiệu bởi L, L ⊆ Σ*. Ví dụ : {a, ab, aba, aabb} là một ngôn ngữ trên bảng chữ cái {a, b}. 1 Chương 7. Văn phạm ngôn ngữ hình thức 3. Các phép toán trên ngôn ngữ (lấy phần sau) 4. Các bài toán trên ngôn ngữ Đối với một ngôn ngữ ta thường quan tâm đến các vấn đề : − Kiểm tra tính rỗng (emptiness), hữu hạn (finite), vô hạn (infinite) của một ngôn ngữ. − Kiểm tra tính thuộc của một xâu đối với một ngôn ngữSinh xâu bất kỳ của một ngôn ngữ. − Tính đóng của ngôn ngữ đối với phép toán Để giải quyết các vấn đề này, trước hết ta cần tìm các biểu diễn ngôn ngữ. Ngôn ngữ thường được biểu diễn bởi văn phạm (sinh) hoặc các máy hình thức hữu hạn trạng thái. II. VĂN PHẠM NGÔN NGỮ SINH BỞI VĂN PHẠM 1. Định nghĩa văn phạm Để biểu diễn một ngôn ngữ trên bảng chữ cái cho trước ta có thể thực hiện bằng một trong các cách sau : Cách 1 : Đối với một xâu thuộc ngôn ngữ đã cho ta có thể chọn một quy cách hoạt độngcủa “thiết bị tự động” để sau một số hữu hạn bước làm việc nó dừng lại sinh ra chính xâu đó. Cách 2 : “Thiết bị tự động” có khả năng lần lượt sinh ra tất cả xâu trong ngôn ngữ. Cách 3 : Với một xâu ω cho trước, “thiết bị tự động” có thể cho biết xâu đó có thuộc ngôn ngữ đã cho hay không ? Trong lý thuyết văn phạm đã chứng minh được 3 cách làm việc trên đối với văn phạm là tương đương nhau. Do đó ta có thể quan tâm chỉ 1 trong 3. ở đây ta sẽ xét cách 1 tức cách mà văn phạm sinh ra các từ, vì vậy ta còn gọi là văn phạm sinh. (Chú ý, việc sinh các từ còn có thể sử dụng nhiều thiết bị khác nhau như ôtômat, văn phạm sinh, máy Turing …, văn phạm sinh được đưa ra bởi Chomsky vào các năm 1956, 1957) Định nghĩa 1 : Văn phạm G là một bộ 4 thành phần G = <Σ, ∆, I, R>, trong đó : • Σ, ∆ là các tập hữu hạn, rời nhau khác rỗng. Tập Σ được gọi là bảng từ điển cơ bản, mỗi phần tử của nó được gọi là kí tự cơ bản hay kết thúc (terminal). Tập ∆ được gọi là từ điển hỗ trợ, các phần tử của nó được gọi là kí tự hỗ trợ hay không kết thúc (nonterminal). Đặt V = Σ ∪ ∆ được gọi là từ điển dầy đủ. • Kí hiệu I ∈ ∆ được gọi là kí hiệu ban đầu • R là tập các quy tắc, mỗi phần tử của nó có dạng α → β, ở đây α, β là các từ 2 Chương 7. Văn phạm ngôn ngữ hình thức trên từ điển đầy đủ V, α ≠ λ → là kí hiệu hình thức ∉ V (tức α ∈ V + , β ∈ V * ). Định nghĩa 2 : Cho văn phạm G = <Σ, ∆, I, R> một qui tắc r = α → β ∈ R. Cho ω là một từ trên V. Giả thiết ω có dạng ξ 1 αξ 2 (được gọi là một vị trí hay một xuất hiện của α trong ω). Khi đó ta nói xâu η = ξ 1 βξ 2 nhận được từ ω bằng cách áp dụng qui tắc r. Xâu η được gọi là dẫn được trực tiếp từ ω trong văn phạm G được kí hiệu là omega |= G η hay đơn giản hơn ω |= η. Định nghĩa 3 : Dãy các xâu D = (ω 0 , ω 1 , …, ω k ) với ω i ∈ V* được gọi là một dẫn xuất của xâu ω k từ ω 0 trong văn phạm G = <Σ, ∆, I, R> nếu ω i-1 |= ω i , với i = 1, 2, …, k. Số k được gọi là độ dài của dẫn xuất D. Dẫn xuất của ω k từ ω 0 trong văn phạm G được kí hiệu ω 0 |-G ω k hay đơn giản hơn ω 0 |- ω k . Hiển nhiên ω |= η ⇒ ω |- η. Nếu ω i nhận được từ ω i-1 bởi qui tắc r thì ta nói qui tắc r được áp dụng ở bước thứ i. 2. Ngôn ngữ của văn phạm Định nghĩa 4 : Cho văn phạm G = <Σ, ∆, I, R> D = (ω 0 , ω 1 , …, ω k ) là một dẫn xuất của xâu ω k từ ω 0 trong văn phạm G. Nếu ω 0 = I ω k ∈ Σ* thì ω k được gọi là một xâu (từ) sinh bởi văn phạm G. Khi đó D được gọi là dẫn xuất đầy đủ trong G. Tập tất cả các từ được sinh bởi văn phạm G được gọi là ngôn ngữ sinh bởi văn phạm G được kí hiệu L(G). Khi đó : L(G) = {ω | ω ∈ Σ* I |- G ω}. Ví dụ các ngôn ngữ {0 n 1} {01 n } được sinh bởi tập các qui tắc : {I → 0I, I → 1} {I → I1, I → 0 }. Định nghĩa 5 : Hai văn phạm được gọi là tương đương nhau nếu chúng sinh cùng một ngôn ngữ, tức G G’ tương đương khi chỉ khi L(G) = L(G’). III. PHÂN LOẠI VĂN PHẠM CỦA CHOMSKY Định nghĩa 6 : Các loại văn phạm IV. MỘT SỐ VÍ DỤ VỀ VĂN PHẠM VÝ dô 1 : ∅, {λ}, {a 1 , a 2 , …, a n }, Σ+, Σ* VÝ dô 2 : {a n b m }, {a n b n }, {a n b n a m }, {a m b n a n } VÝ dô 3 : Ngôn ngữ đối xứng gương (tập con của palindrom), Ngôn ngữ đối xứng. VÝ dô 4 : Ngôn ngữ gồm các số chính phương. VÝ dô 5 : Ngôn ngữ trên {a, b} gồm các xâu có số chữ cái a bằng số chữ cái b. 3 Chương 7. Văn phạm ngôn ngữ hình thức Để chứng minh L là một ngôn ngữ được sinh bởi một văn phạm nào đó là điều rất khó. Nói chung, ta không có một chiến lược chứng minh tổng quát nào cả mà thường dựa vào đặc điểm của văn phạm thường sử dụng cách chứng minh qui nạp theo độ dài của xâu kí tự của L. Để chứng minh L = L(G) ta cần phải chứng minh hai vế của khẳng định : i. nếu I |- ω thì ω ∈ L ngược lại ii. nếu ω ∈ L thì I |- ω nghĩa là mọi dẫn xuất đầy đủ trong G đều chỉ sinh ra xâu thuộc L mọi xâu thuộc ngôn ngữ L đều có thể xây dựng được một dẫn xuất đầy đủ trong G. Ta minh hoạ điều này thông qua ví dụ 5 ở trên. Kí hiệu d(a, ω) là số lần xuất hiện của kí tự a trong ω, khi đó L = {ω ∈ {a, b}* | d(a,ω) = d(b,ω)}. Văn phạm G sinh ra L có thể được xây dựng theo 2 cách : Cách 1 : I → aB | bA A → aI | bAA | a B → bI | aBB | b Chứng minh bằng qui nạp theo độ dài của xâu ω các khẳng định sau : i. I |- ω ⇔ d(a, ω) = d(b, ω) ii. A |- ω ⇔ d(a, ω) = d(b, ω) + 1 iii. B |- ω ⇔ d(a, ω) = d(b, ω) – 1 Bước cơ sở : − Với n = 1. i) không xảy ra, còn ii) iii) đúng vì khi đó ω = a hoặc ω = b. Do đó A |- ω ⇔ A |- a ⇔ d(a, ω) = d(b, ω) + 1 hoặc B |- ω ⇔ B |- b ⇔ d(a, ω) = d(b, ω) – 1 − Với n = 2. ii) iii) không xảy ra, còn i) đúng vì khi đó ω hoặc bắt đầu là a hoặc b. Do đó : I |- ω có dẫn xuất I, aB, ab hoặc I, bA, ba ⇒ d(a, ω) = d(b, ω). Ngược lại giả thiết d(a, ω) = d(b, ω) ⇒ ω = ab hoặc ω = ba ta có dẫn xuất như trên. Bước qui nạp : Giả thiết các khẳng định trên đúng với n ≤ k, ta chứng minh đẳng thức cũng đúng với n = k+1. i. Giả thiết ω = aω’. Ta có : I |- ω I |= aB ⇔ B |- ω’, do giả thiết qui nạp của iii) ⇔ d(a, ω’) = d(b, ω’) - 1 ⇔ d(a, aω’) = d(b, aω’) ⇔ d(a, ω) = d(b, ω). Trường hợp ω = bω’ chứng minh tương tự. ii. Giả thiết ω = aω’. Ta có : A |- ω = aω’ A |= aI ⇔ I |- ω’, do giả thiết qui nạp 4 Chương 7. Văn phạm ngôn ngữ hình thức của i) ⇔ d(a, ω’) = d(b, ω’) ⇔ d(a, aω’) = d(b, aω’) + 1 ⇔ d(a, ω) = d(b, ω) + 1. Trường hợp ω = bω’. A |- bω’ A |= bAA ⇔ AA |- ω’, đặt ω’ = ω’ 1 ω’ 2 ⇔ A |- ω’ 1 A |- ω’ 2 do giả thiết qui nạp của ii) ⇔ d(a, ω’ 1 ) = d(b, ω’ 1 ) + 1 d(a, ω’ 2 ) = d(b, ω’ 2 ) + 1 ⇔ d(a, ω’) = d(b, ω’) + 2 ⇔ d(a, bω’) = d(b, bω’) + 1 ⇔ d(a, ω) = d(b, ω) + 1. iii. Chứng minh tương tự ii. Từ đó ta thấy i), ii), iii) đúng. Do i) ta có L = L(G). Ví dụ : Tìm dẫn xuất đầy đủ của xâu ω = babbaababa. − I → bA → baI → babA → babbAA → babbaIA → babbabAA → babbabaA → babbabaaB → babbababA → babbababa Cách 2 : I → II | aIb | bIa | ab | ba Ta đưa ra định nghĩa đệ qui của tập xâu kí tự L như sau : i. ab, ba ∈ L ii. Nếu ω ∈ L thì aωb, bωa, ωω cũng thuộc L. iii. Các xâu thuộc L chỉ được tạo từ i. ii. chứng minh rằng xâu ω có d(a, ω) = d(b, ω) khi chỉ khi ω ∈ L. Chứng minh : 1. Dễ thấy xâu ω được tạo từ i. ii. luôn luôn có d(a, ω) = d(b, ω). 2. Ngược lại xét bất kỳ xâu có d(a, ω) = d(b, ω), ta cần chứng minh xâu ω ∈ L bằng qui nạp theo độ dài của xâu ω. Bước cơ sở : Xét ω = ab hoặc ω = ba khi đó theo i. ω ∈ L. Bước qui nạp : Giả thiết mọi xâu có độ dài < k có d(a, ω) = d(b, ω) đều thuộc L. Ta cần chứng minh mọi xâu có độ dài k có d(a, ω) = d(b, ω) cũng thuộc L. Thật vậy : − Xét ω = aω’b hoặc ω = bω’a ⇒ ω’ cũng có d(a, ω) = d(b, ω) có độ dài = k-2 < k, do giả thiết qui nạp ⇒ ω’ ∈ L. Theo ii. ta có ω ∈ L. − Xét ω = aω’a. Do d(a, ω) = d(b, ω) nên d(a, ω’) = d(b, ω’) – 2. Dễ thấy có thể chia ω’ thành 2 xâu con ω’ 1 ω’ 2 sao cho ω = aω’ 1 ω’ 2 a (nếu không sẽ dẫn đến mâu thuẫn với d(a, ω) = d(b, ω)). Trong đó ω 1 = aω’ 1 ω 2 = ω’ 2 a có số kí tự a = số kí tự b. Theo giả thiết qui nạp ω 1 ω 2 ∈ L. Theo ii) ⇒ ω ∈ L. Từ đó khẳng định được chứng minh. Dựa trên định nghĩa đệ qui của L ta dễ dàng chứng minh được văn phạm G như đã định nghĩa sinh ra ngôn ngữ L. 5 Chương 7. Văn phạm ngôn ngữ hình thức Theo định nghĩa trên ta cũng có thể xây dựng dẫn xuất cho các xâu của L như sau : • Nếu xâu ω có dạng aω’b hoặc bω’a thì sử dụng qui tắc I→ aIb hoặc I → bIa (trường hợp ω’ ≠ λ) hoặc qui tắc I→ ab hoặc I → ba (trường hợp ω’ = λ). • Nếu xâu ω có dạng aω’a thì : − Bước 1: sử dụng qui tắc I → II tạm gọi I 1 I 2 . − Bước 2 : Tách xâu ω’ thành ω’ 1 ω’ 2 sao cho d(a, aω’ 1 ) = d(b, aω’ 1 ) d(a, ω 2 ’a) = d(b, ω 2 ’a). − Bước 3 : áp dụng đệ qui quá trình trên để I 1 → aω’ 1 , I 2 → ω’ 2 a. Quá trình chấm dứt khi xâu được sinh hoàn toàn. • Nếu xâu ω có dạng bω’b quá trình thực hiện tương tự dạng aω’a. Ví dụ : Tìm dẫn xuất đầy đủ của xâu ω = babbaababa. − I → babbaababa có dẫn xuất I, bIa − I → abbaabab có dẫn xuất I, aIb − I → bbaaba có dẫn xuất I, bIa − I → baab có dẫn xuất I, II − I → ba có dẫn xuất I, ba − I → ab có dẫn xuất I, ab Tóm lại ta có dẫn xuất cuối cùng là : − I → bIa → baIba → babIaba → babIIaba → babbaIaba → babbaababa V. MỘT SỐ TÍNH CHẤT VỀ VĂN PHẠM Định nghĩa 7 : (Đồng lực của dẫn xuất) Định nghĩa 8 : (Dẫn xuất không lặp) §Þnh lý 1 : Đối với một dẫn xuất bất kỳ luôn tồn tại dẫn xuất không lặp đồng lực với nó. Chøng minh : Cắt bỏ đoạn giữa 2 lần lặp  §Þnh lý 2 : ∀G luôn có G’ sao cho : L(G) = L(G’) Chøng minh : Xây dựng G’ như sau : Σ’ = Σ ; I’ = I ∆ = ∆ ∪ ∆’ trong đó ∆’ = { a | a ∈ Σ a ∉ V} R’ = R 1 ∪ R 2 trong đó R 1 = thay mỗi kí hiệu a trong R bởi a 6 Chương 7. Văn phạm ngôn ngữ hình thức R 2 = { a → a | ∀a ∈ Σ } Khi đó mọi dẫn xuất có thể chuyển tương đương từ G sang G’ bằng cách thay mọi kí tự a bởi a kết hợp với luật dẫn a → a.  Định nghĩa 9 : (Các phép toán trên ngôn ngữ) : hợp, giao, hiệu, phần bù, nhân ghép lặp. §Þnh lý 3 : Lớp ngôn ngữ sinh bởi văn phạm là đóng đối với phép hợp, giao ghép Chøng minh : Cho Gi = <Σ i , ∆ i , Ii, Ri> (i = 1,2). Trong đó giả thiết ∆ 1 ∩ ∆ 2 = ∅ (nếu cần có thể đổi tên các kí hiệu phụ của G 2 . Xây dựng các văn phạm G = <Σ, ∆, I, R> cho các phép toán hợp, nhân ghép giao như sau : Hợp : Σ = Σ 1 ∪ Σ 2 ; ∆ = ∆ 1 ∪ ∆ 2 ∪ {I} R = R 1 ∪ R 2 ∪ {I → I 1 , I → I 2 } Nhân ghép : Σ = Σ 1 ∪ Σ 2 ; ∆ = ∆ 1 ∪ ∆ 2 ∪ {I} R = R 1 ∪ R 2 ∪ {I → I 1 I 2 } Giao : Σ = Σ 1 ∩ Σ 2 ; ∆ = ∆ 1 ∪ ∆ 2 ∪ Γ 1 ∪ Γ 2 ∪ {I} trong đó : Γ 1 = { a | a ∈ Σ }, Γ 2 = { b | b ∈ Σ 2 } R = R 1 ’ ∪ R 2 ’ ∪ R’’ ∪ R’’’ ∪ {I → I 1 I 2 } trong đó R 1 ’ R 2 ’ nhận được từ R 1 , R 2 bằng cách thay a bởi a b bởi b R’’ = { a b → b a | ∀a ∈ Σ 1 , ∀b ∈ Σ 2 } (có |Σ 1 | * |Σ 2 | luật) R’’’ = { a a → a | ∀a ∈ Σ 1 ∩ Σ 2 } (có |Σ 1 ∩ Σ 2 | luật) Chứng minh các ngôn ngữ hợp nhân ghép là dễ dàng, việc chứng minh cho ngôn ngữ giao tương đối phức tạp, do đó ta chỉ đưa ra ý tưởng chứng minh ở đây. • Do ∆ 1 ∩ ∆ 2 = ∅ nên ta thấy việc sinh các từ ω từ I 1 I 2 là độc lập nhau, mặt khác I → I 1 | I 2 nên từ I có thể sinh ra hoặc ω 1 (nếu I → I 1 ) hoặc ω 2 (nếu I → I 2 ). Ngược lại nếu ω được sinh bởi I 1 hoặc I 2 thì cũng chính là dẫn xuất trong G nếu kết hợp với I → I 1 hoặc I → I 2 . • Tương tự với phép nhân ghép trong đó I 1 đảm nhận việc sinh ra xâu ω 1 I 2 sinh xâu ω 2 mọt cách độc lập nhau. Do đó, với xâu ω = ω 1 ω 2 nếu I |- ω thì cũng có thể xây dựng được I 1 |- ω 1 I 2 |- ω 2 , ngược lại là điều dễ thấy. • Đối với phép giao nếu I 1 |- ω 1 I 2 |- ω 2 thì có thể xây dựng I |- ω 1 ’ω 2 ’ trong đó ω 1 ’ 7 Chương 7. Văn phạm ngôn ngữ hình thức nhận được từ ω 1 bằng cách thay các kí tự a ∈ Σ 1 bởi a b ∈ Σ 2 bởi b . Tiếp theo áp dụng các qui tắc của R’’ hoán vị các kí tự a về cùng với a tiếp tục áp dụng R’’’ để sinh a từ a a . Ngược lại cũng tương tự nếu ω sinh được từ G thì cũng có thể tách được các cặp kí tự a a về theo qui luật sinh của G 1 G 2 , sau đó tách ω thành ω 1 ω 2 sinh bởi I 1 I 2 . VÝ dô 1 : Cho 3 ngôn ngữ L 1 = {an, n ≥ 0}, L 2 = {bn, n ≥ 0} L 3 = {cn, n ≥ 0} được sinh bởi các văn phạm G 1 , G 2 G 3 có :        λ→= =∆ =Σ = }|aAA{R A }A{ }a{ G 1 1 1 1        λ→= =∆ =Σ = }|bBB{R B }B{ }b{ G 2 2 2 2        λ→= =∆ =Σ = }|bCC{R C }C{ }c{ G 3 3 3 3 • Khi đó, hợp của L 1 L 2 là L 4 = {an, bm | n, m ≥ 0} được sinh bởi văn phạm G 4 như sau :        λ→λ→→= =∆ =Σ = }|bBB,|aAA,B|AD{R D }B,A,D{ }b,a{ G 4 4 4 4 • Tương tự, hợp của L 2 L 3 là L 5 = {bn, cm | n, m ≥ 0} được sinh bởi văn phạm G 5 như sau :        λ→λ→→= =∆ =Σ = }|cCC,|bBB,C|BE{R E }C,B,E{ }c,b{ G 5 5 5 5 • Khi đó, ngôn ngữ L 6 = {an, bm, ck | n, m, k ≥ 0} là hợp của 2 ngôn ngữ L 4 L 5 sẽ được sinh bởi văn phạm G 6 như sau :        λ→→λ→λ→→→= =∆ =Σ = }|cCC,C|BE,|bBB,|aAA,B|AD,E|DI{R I }E,D,C,B,A,I{ }c,b,a{ G 6 6 6 6 8 Chương 7. Văn phạm ngôn ngữ hình thức Chú ý trong G 6 xâu bm có thể sinh bởi 2 cách : I → D → B → bB → … → bmB → bm hoặc I → E → B → bB → … → bmB → bm Tuy nhiên có thể quan niệm L 6 như hợp mở rộng của3 ngôn ngữ L 1 , L 2 , L 3 từ đó có thể xây dựng G 6 gọn hơn như sau :        λ→λ→λ→→= =∆ =Σ = }|cCC,|bBB,|aAA,C|B|AI{R I }C,B,A,I{ }c,b,a{ G 6 6 6 6 VÝ dô 2 : Cho các ngôn ngữ L 1 , L 2 L 3 như trong ví dụ 1, khi đó nhân ghép của L 1 L 2 là L = {anbm | n, m ≥ 0} được sinh bởi văn phạm G như sau :        λ→λ→→= =∆ =Σ = }|bBB,|aAA,ABI{R I }B,A,I{ }b,a{ G Tương tự ngôn ngữ {anbmck | n, m, k ≥ 0} là nhân ghép của 3 ngôn ngữ L 1 , L 2 L 3 sinh bởi văn phạm G cũng được xây dựng như sau :        λ→λ→λ→→= =∆ =Σ = }|cCC,|bBB,|aAA,ABCI{R I }C,B,A,I{ }c,b,a{ G Ví dụ 3 : Cho ngôn ngữ L 1 = {anbm | n, m ≥ 0} được sinh bởi văn phạm G 1 :        λ→→= =∆ =Σ = }|bAA,A|aII{R I }A,I{ }b,a{ G 111 1 11 1 1 L 2 = {anb | n ≥ 0} được sinh bởi văn phạm G 2 :        →→= =∆ =Σ = }bB,B|aII{R I }B,I{ }b,a{ G 222 2 22 2 2 để xây dựng văn phạm G sinh ngôn ngữ L = L 1 ∩ L 2 = {anb | n ≥ 0 } đầu tiên ta cần xác định các tập kí hiệu phụ : 9 Chương 7. Văn phạm ngôn ngữ hình thức Γ 1 = }b,a{ Γ 2 = }b,a{ tập các qui tắc : R 1 ’ = { I 1 → a I 1 | A, A → b A | λ} R 2 ’ = { I 2 → a I 2 | B, B → b } R’’ = { a b → b a , b a → a b } R’’’ = { a a → a, b b → b } Tóm lại ta có văn phạm G như sau :          →→→→ →→λ→→→= =∪∪∪∆∪∆=∆ =Σ∩Σ=Σ = }bbb,aaa,baab,abba bB,B|IaI,|AbA,A|IaI,III{R I }b,a,b,a,B,A,I,I,I{}I{}b,a{}b,a{ }b,a{ G 221121 2121 21 Để chứng minh G sinh ra L, ta minh hoạ bằng ví dụ. Lấy ω = aab ∈ L 1 ∩ L 2 , khi đó ω có dẫn xuất đầy đủ D 1 trong G 1 D 2 trong G 2 như sau : D 1 = (I 1 , aI 1 , aaI 1 , aaA, aabA, aab) D 2 = (I 2 , aI 2 , aaI 2 , aaB, aab) − Từ qui tắc I → I 1 I 2 dựa trên tập qui tắc R’ 1 , R’ 2 ta thấy dãy kết hợp từ D 1 , D 2 đổi các kí tự kết thúc thành các kí tự đối ngẫu cũng cho ta một dẫn xuất D trong G, cụ thể : D = (I, I 1 I 2 , …, a a b I 2 , … a a b a a b ) áp dụng tiếp tập qui tắc R’’ hoán vị từ a a b a a b ta được a a a a b b , cuối cùng áp dụng tập qui tắc R’’’ ta được từ a a a a b b |- aab. Như vậy ta đã xây dựng được một dẫn xuất đầy đủ của ω trong G, nói cách khác G cũng sinh ω. Ngược lại, giả thiết G sinh ω = aab, bằng cách xây dựng ngược với chứng minh trên ta cũng xây dựng được dẫn xuất đầy đủ trong G 1 G 2 . 10

Ngày đăng: 06/09/2013, 10:50

Hình ảnh liên quan

1. Cho bảng chữ cái Σ= {0, 1}. Hãy chỉ ra : - Chương 7: NGÔN NGỮ HÌNH THỨC VÀ VĂN PHẠM SINH

1..

Cho bảng chữ cái Σ= {0, 1}. Hãy chỉ ra : Xem tại trang 11 của tài liệu.
e. Σ*. R ={ I→ aI, I→ λ| ∀a Σ} {an n≥ 0} trên bảng chữ {a, b} - Chương 7: NGÔN NGỮ HÌNH THỨC VÀ VĂN PHẠM SINH

e..

Σ*. R ={ I→ aI, I→ λ| ∀a Σ} {an n≥ 0} trên bảng chữ {a, b} Xem tại trang 12 của tài liệu.
9. Xây dựng văn phạm G với bảng chữ chỉ gồm 2 chữ cái a, b sinh các ngôn ngữ sau: a.{a ω | ω∈Σ* }. - Chương 7: NGÔN NGỮ HÌNH THỨC VÀ VĂN PHẠM SINH

9..

Xây dựng văn phạm G với bảng chữ chỉ gồm 2 chữ cái a, b sinh các ngôn ngữ sau: a.{a ω | ω∈Σ* } Xem tại trang 13 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan