1. Trang chủ
  2. » Giáo án - Bài giảng

Ngôn ngữ hình thức và văn phạm sinh

21 754 0

Đ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

Nội dung

Chương Văn phạm ngôn ngữ hình thức Chương NGÔN NGỮ HÌNH THỨC VÀ VĂN PHẠM SINH Từ chương trở đi, nghiên cứu ngôn ngữ hình thức, chủ yếu lớp ngôn ngữ phi ngữ cảnh ngôn ngữ quy:  Thiết bị sinh ngôn ngữ tự động (văn phạm) đoán nhận ngôn ngữ (ôtômat)  Tính chất lớp ngôn ngữ phi ngữ cảnh (Context-Free Grammar) quy (Regular Grammar) Các ngôn ngữ đóng vai trò quan trọng thiết kế ngôn ngữ lập trình chương trình dịch I NGÔN NGỮ HÌNH THỨC Khái niệm ngôn ngữ Ngôn ngữ phương tiện giao tiếp người người, người máy, máy máy Ngôn ngữ tự nhiên có cú pháp phong phú ngữ nghĩa không chặt chẽ Để giao tiếp người máy máy máy cần có ngôn ngữ với văn phạm chặt chẽ mà ta gọi ngôn ngữ hình thức Các yếu tố ngôn ngữ hình thức  Bảng chữ : tập hợp  hữu hạn, khác rỗng Mỗi phần tử gọi 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 kí tự bảng chữ  Ví dụ : beautiful, 0010110, … Độ dài xâu số kí tự xâu Kí hiệu  xâu l() kí hiệu độ dài  Xâu rỗng kí hiệu  có độ dài  gọi ghép xâu   ( = ) xâu gồm kí tự  sau nối tiếp kí tự , ,  gọi khúc đầu khúc cuối  Trên sở ghép xâu ta định nghĩa n xâu tạo thành từ việc ghép n lần xâu  Từ đó, với a kí tự, ta kí hiệu an n kí tự a Qui ước n với n =   Ngôn ngữ : Là tập hợp từ (xâu kí tự) bảng chữ  Tập tất từ (kể từ rỗng)  kí hiệu * Kí hiệu + = * \ {} Các tập {}  xem ngôn ngữ bảng chữ Một ngôn ngữ thường kí hiệu L, L  * Ví dụ : {a, ab, aba, aabb} ngôn ngữ bảng chữ {a, b} Trong giảng cách ngắn gọn ta gọi ngôn ngữ thay cho ngôn ngữ hình thức Các phép toán ngôn ngữ Chương Văn phạm ngôn ngữ hình thức Do ngôn ngữ tập hợp (các xâu) nên có đầy đủ phép toán tập hợp, ngôn ngữ có phép toán đặc trưng xâu kí tự mà phạm vi giảng ta đề cập đến phép toán nhân ghép phép lặp Cho L, L1, L2 ngôn ngữ bảng chữ  (tức L1, L2  *)  Phép hợp: L1  L2 = {   * |   L1   L2 }  Phép giao: L1  L2 = {   * |   L1   L2 }  Phép hiệu: L1 \ L2 = {   * |   L1   L2 }  Phần bù: L = {   * |   L } (tức L = * \ L)  Nhân ghép: L1L2 = { 12  * |   L } Kí hiệu Ln thay cho LL…L (n lần ghép)  Lặp: L* = L0  L1  L2  …  L Qui ước L0 = {  } Ví dụ 1: Cho  = { a, b } L1 = { a, abc }, L2 = { 0, 10 } Khi đó:  L1  L2 = { a, abc, 0, 10 }  L1  L2 =   L1 \ L2 = { a, abc }  L1 = {   * |   a   abc }  L1L2 = { a0, a10, abc0, abc10 }  L1* = { an(abc)m | n, m  } (chú ý: với n = 0, m = 0, an(abc)m = ) Ví dụ 2: Cho  = { a, b } L1 = { an | n  0}, L2 = { bn | n  0} Khi đó: L1L2 = { anbm | n, m  0} (phân biệt { anbn | n  0} { anbm | n, m  0} ?) Các toán ngôn ngữ Đối với ngôn ngữ ta thường quan tâm đến vấn đề :  Kiểm tra tính rỗng (emptiness), hữu hạn (finite), vô hạn (infinite) ngôn ngữ  Kiểm tra tính thuộc xâu ngôn ngữ (đoán nhận)  Sinh xâu ngôn ngữ (sinh)  Tính đóng ngôn ngữ phép toán Các vấn đề này, liên quan đến cách biểu diễn ngôn ngữ, sinh ngôn ngữ đoán nhận ngôn ngữ Một ngôn ngữ thường biểu diễn qua cách:  trực định nghĩa (là tập xâu kí tự, định nghĩa mục này)  thông qua công cụ khác văn phạm sinh: “thiết bị tự động” sau số hữu hạn bước làm việc dừng lại sinh xâu ngôn ngữ Từ đó, thiết bị có khả sinh toàn ngôn ngữ (và xâu ngôn ngữ đó)  thông qua công cụ đoán nhận máy hữu hạn trạng thái (còn gọi ôtômat, otomat đẩy xuống): Với xâu  cho trước, “thiết bị tự động” otomat đọc kí tự xâu hết kết luận xâu thuộc hay không thuộc ngôn ngữ cho ?  biểu thức quy ngôn ngữ thuộc lớp quy Chương Văn phạm ngôn ngữ hình thức  … Các cách biểu diễn mối tương quan chúng với nội dung trình bày chương chương sau II VĂN PHẠM VÀ NGÔN NGỮ SINH BỞI VĂN PHẠM Định nghĩa văn phạm Định nghĩa : Văn phạm G thành phần G = , :  ,  tập hữu hạn, rời khác rỗng Tập  gọi bảng từ điển bản, phần tử gọi kí tự hay kết thúc (terminal) Tập  gọi từ điển hỗ trợ, phần tử gọi kí tự hỗ trợ hay không kết thúc (nonterminal) Đặt V =    gọi từ điển dầy đủ  Kí hiệu I   gọi kí hiệu ban đầu  R tập quy tắc, phần tử có dạng   , ,  từ từ điển đầy đủ V,     kí hiệu hình thức  V (tức   V+,   V*) Các kí tự bảng chữ  thường kí hiệu chữ thường: a, b, c, … Các kí tự bảng chữ  kí hiệu chữ viết hoa: A, B, C, … Các xâu hai bảng chữ (V) thường kí hiệu chữ Hy lạp , , , Định nghĩa : Cho văn phạm G = qui tắc r =     R Cho  từ V Giả thiết  có dạng 12 Thay   ta nhận xâu  = 12 Khi đó, ta nói  nhận từ  cách áp dụng qui tắc r Xâu  gọi dẫn trực tiếp từ  văn phạm G kí hiệu  ⊨G  hay đơn giản  ⊨  Định nghĩa : Dãy xâu D = (0, 1, …, k) với i  V* gọi dẫn xuất xâu k từ 0 văn phạm G = i-1 ⊨ i, với i = 1, 2, …, k Số k gọi độ dài dẫn xuất D Dẫn xuất k từ 0 văn phạm G kí hiệu 0 ⊢ G k hay đơn giản 0 ⊢ k Hiển nhiên  ⊨    ⊢  Nếu i nhận từ i-1 qui tắc r ta nói qui tắc r áp dụng bước thứ i Ngôn ngữ văn phạm Định nghĩa : Cho văn phạm G = D = (0, 1, …, k) dẫn xuất xâu k từ 0 văn phạm G Nếu 0 = I k  * k gọi xâu (từ) sinh văn phạm G Khi D gọi dẫn xuất đầy đủ G Tập tất từ sinh văn phạm G gọi ngôn ngữ sinh văn phạm G kí hiệu L(G) Khi : L(G) = { |   * I ⊢G } Ví dụ 3: Ngôn ngữ {0n1 | n  0} sinh tập qui tắc : {I  0I, I  1} tập qui tắc {I  Ia, I  b } sinh ngôn ngữ {ban} Tập qui tắc   1,   2, …,   k viết gọn thành   1 | 2 | … | k Chương Văn phạm ngôn ngữ hình thức Định nghĩa : Hai văn phạm gọi tương đương chúng sinh ngôn ngữ, tức G G’ tương đương L(G) = L(G’) III PHÂN LOẠi VĂN PHẠM CỦA CHOSMKY Định nghĩa : Các loại văn phạm  Nhóm 0: lớp văn phạm tổng quát Mọi r =    với     Nhóm 1: Văn phạm cảm ngữ cảnh (context-sensitive grammar) < |  |  |  |  Nhóm 2: Văn phạm phi ngữ cảnh (context-free grammar)  = A    Nhóm 3: Văn phạm quy (regular grammar):  = A   ( = a  = aB, với a  , B  ) IV MỘT SỐ VÍ DỤ VỀ VĂN PHẠM Ví dụ 4: : , {}, {a1, a2, …, an }, +, * Ví dụ 5: : {anbm }, {anbn }, {anbnam }, {ambnan } Ví dụ 6: : Ngôn ngữ đối xứng gương Ví dụ 7: : Ngôn ngữ gồm số phương Ví dụ 8: : Ngôn ngữ {a, b} gồm xâu có số chữ a số chữ b Để chứng minh L ngôn ngữ sinh văn phạm khó Nói chung, ta chiến lược chứng minh tổng quát mà thường dựa vào đặc điểm văn phạm thường sử dụng cách chứng minh qui nạp theo độ dài xâu kí tự L Để chứng minh L = L(G) ta cần phải chứng minh hai vế khẳng định : i I ⊢    L ngược lại ii   L I ⊢  nghĩa dẫn xuất đầy đủ G sinh xâu thuộc L xâu thuộc ngôn ngữ L xây dựng dẫn xuất đầy đủ G Ta minh hoạ điều thông qua ví dụ Kí hiệu d(a, ) số lần xuất kí tự a , L = {  {a, b}* | d(a,) = d(b,)} Văn phạm G sinh L xây dựng theo cách : Cách : I  aB | bA A  aI | bAA | a B  bI | aBB | b Chứng minh qui nạp theo độ dài xâu  khẳng định sau : i I ⊢   d(a, ) = d(b, ) ii A ⊢   d(a, ) = d(b, ) + Chương Văn phạm ngôn ngữ hình thức iii B ⊢   d(a, ) = d(b, ) – Bước sở :  Với n = i) không xảy ra, ii) iii)  = a  = b Do A ⊢   A ⊢ a  d(a, ) = d(b, ) + B ⊢   B ⊢ b  d(a, ) = d(b, ) –  Với n = ii) iii) không xảy ra, i)  bắt đầu a b Do : I ⊢  có dẫn xuất I, aB, ab I, bA, ba  d(a, ) = d(b, ) Ngược lại giả thiết d(a, ) = d(b, )   = ab  = ba ta có dẫn xuất Bước qui nạp : Giả thiết khẳng định với n  k, ta chứng minh đẳng thức với n = k+1 i Giả thiết  = a’ Ta có : I ⊢  I |= aB  B ⊢ ’, giả thiết qui nạp iii)  d(a, ’) = d(b, ’) -  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 ⊢ ’, giả thiết qui nạp i)  d(a, ’) = d(b, ’)  d(a, a’) = d(b, a’) +  d(a, ) = d(b, ) + Trường hợp  = b’ A ⊢ b’ A |= bAA  AA ⊢ ’, đặt ’ = ’1’2  A ⊢ ’1 A ⊢ ’2 giả thiết qui nạp ii)  d(a, ’1) = d(b, ’1) + d(a, ’2) = d(b, ’2) +  d(a, ’) = d(b, ’) +  d(a, b’) = d(b, b’) +  d(a, ) = d(b, ) + iii Chứng minh tương tự ii Từ ta thấy i), ii), iii) Do i) ta có L = L(G) Ví dụ : Tìm dẫn xuất đầy đủ xâu  = babbaababa  I  bA  baI  babA  babbAA  babbaIA  babbabAA  babbabaA  babbabaaB  babbababA  babbababa Cách : I  II | aIb | bIa | ab | ba Ta đưa định nghĩa đệ qui tập xâu kí tự L sau : i ab, ba  L ii Nếu   L ab, ba,  thuộc L iii Các xâu thuộc L tạo từ i ii Và chứng minh xâu  có d(a, ) = d(b, )   L Chứng minh : Dễ thấy xâu  tạo từ i ii luôn có d(a, ) = d(b, ) Ngược lại xét xâu có d(a, ) = d(b, ), ta cần chứng minh xâu   L qui nạp theo độ dài xâu  Chương Văn phạm ngôn ngữ hình thức Bước sở : Xét  = ab  = ba theo i   L Bước qui nạp : Giả thiết xâu có độ dài < k có d(a, ) = d(b, ) thuộc L Ta cần chứng minh xâu có độ dài k có d(a, ) = d(b, ) thuộc L Thật :  Xét  = a’b  = b’a  ’ có d(a, ) = d(b, ) có độ dài = k-2 < k, 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, ’) – Dễ thấy chia ’ thành xâu ’1 ’2 cho  = a’1 ’2a (nếu không dẫn đến mâu thuẫn với d(a, ) = d(b, )) Trong 1 = a’1 2 = ’2a 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 chứng minh Dựa định nghĩa đệ qui L ta dễ dàng chứng minh văn phạm G định nghĩa sinh ngôn ngữ L Theo định nghĩa ta xây dựng dẫn xuất cho xâu L sau :  Nếu xâu  có dạng a’b b’a sử dụng qui tắc I aIb I  bIa (trường hợp ’  ) qui tắc I ab I  ba (trường hợp ’ = )  Nếu xâu  có dạng a’a :  Bước 1: sử dụng qui tắc I  II tạm gọi I1I2  Bước : Tách xâu ’ thành ’1 ’2 cho d(a, a’1) = d(b, a’1) d(a, 2’a) = d(b, 2’a)  Bước : áp dụng đệ qui trình để I1  a’1, I2  ’2a Quá trình chấm dứt xâu sinh hoàn toàn  Nếu xâu  có dạng b’b trình thực tương tự dạng a’a Ví dụ : Tìm dẫn xuất đầy đủ 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 :  I  bIa  baIba  babIaba  babIIaba  babbaIaba  babbaababa V MỘT SỐ TÍNH CHẤT VỀ VĂN PHẠM Định lý 1: G có G’ cho : L(G) = L(G’) Chương Văn phạm ngôn ngữ hình thức Chứng minh: Xây dựng G’ sau : ’ =  ; I’ = I  =   ’ ’ = { a | a   a  V} R’ = R1  R2 R1 = thay kí hiệu a R R2 = { a a a  a | a   } Khi dẫn xuất chuyển tương đương từ G sang G’ cách thay kí tự a kết hợp với luật dẫn a  a  Định lý 2: : Lớp ngôn ngữ sinh văn phạm đóng phép hợp, giao ghép Chứng minh: Cho Gi = (i = 1,2) Trong giả thiết 1  2 =  (nếu cần đổi tên kí hiệu phụ G2 Xây dựng văn phạm G = cho phép toán hợp, nhân ghép giao sau : Hợp :  = 1  2 ;  = 1  2  {I} R = R1  R2  {I  I1, I  I2 } Nhân ghép :  = 1  2 ;  = 1  2  {I} R = R1  R2  {I  I1I2 } Giao :  = 1  2 ;  = 1  2  1  2  {I} : 1 = { a | a   }, 2 = { b | b  2 } R = R1’  R2’  R’’  R’’’  {I  I1I2 } R1’ R2’ nhận từ R1, R2 cách thay a a b b R’’ = { a R’’’ = { a b a  b a | a  1, b  2} (có |1| * |2| luật)  a | a  1  2 } (có |1  2| luật) Chứng minh ngôn ngữ hợp nhân ghép dễ dàng, việc chứng minh cho ngôn ngữ giao tương đối phức tạp, ta đưa ý tưởng chứng minh  Do 1  2 =  nên ta thấy việc sinh từ  từ I1 I2 độc lập nhau, mặt khác I  I1 | I2 nên từ I sinh 1 (nếu I  I1) 2 (nếu I  I2) Ngược lại  sinh I1 I2 dẫn xuất G kết hợp với I  I1 I  I2 Chương Văn phạm ngôn ngữ hình thức  Tương tự với phép nhân ghép I1 đảm nhận việc sinh xâu 1 I2 sinh xâu 2 cách độc lập Do đó, với xâu  = 12 I |-  xây dựng I1 |- 1 I2 |- 2, ngược lại điều dễ thấy  Đối với phép giao I1 |- 1 I2 |- 2 xây dựng I |- 1’2’ 1’ nhận từ 1 cách thay kí tự a  1 R’’ hoán vị kí tự a với a a b  2 b Tiếp theo áp dụng qui tắc tiếp tục áp dụng R’’’ để sinh a từ a a Ngược lại tương tự  sinh từ G tách cặp kí tự theo qui luật sinh G1 G2, sau tách  thành 1 2 sinh I1 I2 a a Ví dụ 1: Cho ngôn ngữ L1 = {an, n  0}, L2 = {bn, n  0} L3 = {cn, n  0} sinh văn phạm G1 , G2 G3 có : G1            {a}   {A} G A R  { A  aA |  }   {c}   {C }  { C  bC |  } C R    {a, b}     {D,A,B}   D   R  { D  A | B , A  aA |  , B  bB |  }  Tương tự, hợp L2 L3 L5 = {bn, cm | n, m  0} sinh văn phạm G5 sau : G  G         Khi đó, hợp L1 L2 L4 = {an, bm | n, m  0} sinh văn phạm G4 sau : G     {b}     {B}   B   R  { B  bB |  }            { b, c}   {E, B,C} E R  { E  B | C , B  bB |  , C  cC |  } Khi đó, ngôn ngữ L6 = {an, bm, ck | n, m, k  0} hợp ngôn ngữ L4 L5 sinh văn phạm G6 sau : G    {a, b, c}     { I, A , B , C , D , E }   I   R  { I  D | E , D  A | B , A  aA |  , B  bB |  , E  B | C , C  cC |  }  Chú ý G6 xâu bm sinh cách : I  D  B  bB  …  bmB  bm Chương Văn phạm ngôn ngữ hình thức I  E  B  bB  …  bmB  bm Tuy nhiên quan niệm L6 hợp mở rộng ngôn ngữ L1, L2, L3 từ xây dựng G6 gọn sau : G    {a, b, c}     { I, A , B , C }   I   R  { I  A | B | C , A  aA |  , B  bB |  , C  cC |  }  Ví dụ 2: Cho ngôn ngữ L1, L2 L3 ví dụ 1, nhân ghép L1 L2 L = {anbm | n, m  0} sinh văn phạm G sau :    G       {a, b}   { I, A , B } I R  { I  AB , A  aA |  , B  bB |  } Tương tự ngôn ngữ {anbmck | n, m, k  0} nhân ghép ngôn ngữ L1, L2 L3 sinh văn phạm G xây dựng sau :    G       {a, b, c}   { I, A , B , C } I R  { I  ABC , A  aA |  , B  bB |  , C  cC |  } Ví dụ : Cho ngôn ngữ L1 = {anbm | n, m  0} sinh văn phạm G1 : G1           {a, b}   {I1, A } I1 R  { I  aI | A , A  bA |  } L2 = {anb | n  0} sinh văn phạm G2 : G           {a, b}   {I2,B} I2 R  { I  aI |B , B  b} để xây dựng văn phạm G sinh ngôn ngữ L = L1  L2 = {anb | n  } ta cần xác định tập kí hiệu phụ : 1 = { a , b } 2 = { a , b } tập qui tắc : Chương Văn phạm ngôn ngữ hình thức R1’ = { I1  a I1 | A, A  b A | } R2’ = { I2  a I2 | B, B  b } R’’ = { a R’’’ = { a b a  b a  a, , b a b b  } a b b} Tóm lại ta có văn phạm G sau :        {a, b}         {a , b }  {a , b }  { I }  { I , I , I , A , B , a , b , a , b }  I G    R  { I  I I , I  aI | A , A  bA |  , I  aI | B , B  b 1 2   a b  ba, ba  a b, aa  a, b b  b}  Để chứng minh G sinh L, ta minh hoạ ví dụ Lấy  = aab  L1  L2,  có dẫn xuất đầy đủ D1 G1 D2 G2 sau : D1 = (I1, aI1, aaI1, aaA, aabA, aab) D2 = (I2, aI2, aaI2, aaB, aab)  Từ qui tắc I  I1 I2 dựa tập qui tắc R’1, R’2 ta thấy dãy kết hợp từ D1, D2 đổi kí tự kết thúc thành kí tự đối ngẫu cho ta dẫn xuất D G, cụ thể : D = (I, I1I2, …, a a b I2, … 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 a a a a b b , cuối áp dụng tập qui tắc R’’’ ta từ a a a a b b ⊢ aab Như ta xây dựng dẫn xuất đầy đủ  G, nói cách khác G sinh  Ngược lại, giả thiết G sinh  = aab, cách xây dựng ngược với chứng minh ta xây dựng dẫn xuất đầy đủ G1 G2 10 Chương Văn phạm ngôn ngữ hình thức BÀI TẬP I NGÔN NGỮ Cho bảng chữ  = {0, 1} Hãy : a Các ngôn ngữ có phần tử, phần tử độ dài 0, phần tử độ dài bảng chữ  b Các ngôn ngữ có phần tử xâu có độ dài 2, độ dài c Ngôn ngữ có số phần tử nhiều Liệt kê phần tử ngôn ngữ theo thứ tự tự điển độ dài tăng dần xâu d Liệt kê phần tử theo thứ tự tự điển độ dài tăng dần xâu ngôn ngữ có kí tự xâu e Liệt kê phần tử theo thứ tự tự điển độ dài tăng dần xâu ngôn ngữ có kí tự cuối xâu Chứng minh: a L = , L = {}, L1 = {0}, L1 = {1} b L2 = {00, 01, 10, 11}, L3 = {000, 001, 010, 011, 100, 101, 110, 111} c * = {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, …} d L1 = {0, 00, 01, 000, 001, 010, 011, … } e L2 = {1, 01, 11, 001, 011, 101, 111, …}  Biểu diễn ngôn ngữ sau dạng mô tả tính chất : a L = {, ab, aabb, aaabbb, … } b L = {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, …} Chứng minh: a L1 = {anbn | n  0} b * = {i1i2 … in | ij  {0, 1}  n  } Biểu diễn ngôn ngữ sau dạng liệt kê : a L = {a, bc}* b L = {anbn | n  1} c L = { anbm | m, n  1} d L = {(01)n0m | n, m  1} Chứng minh: a L = {, bc, bcbc, …, a, abc, abcbc, …, aa, aabc, aabcbc, … } b L = {ab, aabb, aaabbb, … } c L = {ab, abb, abbb, …, aab, aabb, aabbb, aaab, aaabb, …} d L = {010, 0100, 010000, …, 010100, 01010000, … } 11  Chương Văn phạm ngôn ngữ hình thức Hãy tìm hợp, giao, hiệu, phần bù, nhân ghép, lặp ngôn ngữ L1 L2 sau : a L1 gồm xâu bắt đầu L2 gồm xâu kết thúc b L1 = {ab, aabb, aaabbb, …} L2 = {ab, abab, ababab, … } c L1 = {anbn | n  0} L2 = { anbm | m, n  0} d L1 = {anbm | m  n  0} L2 = { anbm |  m  n} Chứng minh: a L1  L2 b {1, 0 |   * } …………… II VĂN PHẠM Các tập phần sau cần xây dựng văn phạm để sinh ngôn ngữ cho tập hợp Để đơn giản ta cần tập qui tắc sinh (các tập hợp khác : ,  hiểu ngầm) Xây dựng văn phạm G = sinh ngôn ngữ sau : a  b {} c {a1a2 … an} d + e * Chứng minh: a  R = {I  aI} (chính quy) R = {I  A} (phi ngữ cảnh)  b {} R = {I  } { phi ngữ cảnh quy mở rộng, sinh xâu rỗng }  c {a1a2 … an} R = {I  a1a2 … an } { phi ngữ cảnh } R = {I  a1A1, A1  a2A2, …, An-2  an-1An-1, An-1  an } { quy }  d + R = { I  aI , I  a | a   }  e * R = { I  aI | a , a   }  Tìm ngôn ngữ sinh văn phạm G = với  = {a, b} R cho : a R = {I  aIb | } Xây dựng dẫn xuất xâu aaabbb aaaabbbb b R = {I  aI | bI | a | b} Xây dựng dẫn xuất xâu abbaab abbabbaa c R = {I  aI | Ib |  } Xây dựng dẫn xuất xâu aaabb d R = {I  aI | bA, A  bA | } Xây dựng dẫn xuất xâu aaabb Xây dựng văn phạm G = sinh ngôn ngữ sau : a {anb | n  } Hãy dẫn xuất xâu aaab aaaaab b {ban | n  } Hãy dẫn xuất xâu baaa baaaaa Chứng minh: a R = {I  aI, I  b }  b R = {I  Ia, I  b }  Xây dựng văn phạm G = sinh ngôn ngữ sau : 12 Chương Văn phạm ngôn ngữ hình thức a Tập xâu nhị phân bắt đầu lại toàn bit b Tập xâu nhị phân kết thúc lại toàn bit Chứng minh: a Đây 7b với b = 1, a =  b Đây 7a với b = 0, a =  Xây dựng văn phạm G với bảng chữ gồm chữ a, b sinh ngôn ngữ sau : a {a |   * } b {b |   * } 10 Cho văn phạm : a G1 với tập qui tắc I  aI | Ib | aIb | c b G2 với tập qui tắc I  II | a | b c G3 với tập qui tắc I  aA | bB | c , A  Ia, B  Ib d G4 với tập qui tắc I  AB, A  Ic | a, B  dB | b e G5 với tập qui tắc I  IaI | b f G6 với tập qui tắc I  aII | b g G7 với tập qui tắc I  AA , A  aAa | bAb | c Hãy tìm L(Gi) (i = 7) gọi tên ngôn ngữ theo phân loại Chomsky Chứng minh: a L(G1) = { ancbm | n, m  } b L(G2) = { aa, ab, ba, bb } c Có thể ghép I  aA A  Ia thành aIa, tương tự I  bB B  Ib thành bIb, R = I  aIa | bIb | c Từ : L(G3) = {c’ |   {a, b}* ’ xâu đảo } d Có thể thay I  AB A  Ic | a thành I  IcB | cB, R = I  IcB | cB, B  dB | b Ta thấy I ⊢ (cB)n B  dmb, : L(G4) = { (cdmb)n, n, m  } e Do I  IaI nên I ⊢ dãy độ dài với I a xen kẽ nhau, thay I b ta có : L(G5) = {   {a, b }*  a, b xen kẽ đầu xâu b } f Do I  aII nên xâu sinh I phải bắt đầu a, mặt khác tất xâu trung gian phải kết thúc II nên xâu sinh I phải kết thúc bb Ngoài với I sinh aII nên có thêm kí tự aI, I thay thành b số kí tự a b sinh sau bước nhau, đoạn xâu sinh  với |a = |b Tóm lại L(G6) = { abb với |a = |b } g Xét A  aAa | bAb | c ta có A sinh xâu c’ (xem câu c với L(G3)) Vì I  AA nên xâu sinh I có dạng 1c1’2c2’, ’ đảo  rỗng Do : L(G7) = { 1c1’2c2’ | ’i đảo i rỗng }  11 Xây dựng văn phạm sinh ngôn ngữ : 13 Chương Văn phạm ngôn ngữ hình thức a L = { anbn | n  0} b L = { anbm | m, n  0} 12 Xây dựng văn phạm sinh ngôn ngữ : a L = { anbm | n > m  0} b L = { anbm | m > n  0} 13 Xây dựng văn phạm sinh ngôn ngữ : a L = { anbnan | n  0} b L = { anbncm | m, n  0} 14 Xây dựng văn phạm sinh ngôn ngữ : a L = { anbnam | m, n  0} b L = { ambnan | m, n  0} 15 Xây dựng văn phạm sinh ngôn ngữ L = {an bn-1 | n  1} a Cho biết văn phạm vừa xây dựng thuộc loại phân loại Chomski b Viết dẫn xuất đoán nhận xâu aaaabbb từ văn phạm vừa xây dựng Chứng minh: a  = {a, b},  = {I, A}, R = {I  aI | a | A, A  bA | } (phi ngữ cảnh) b I, aI, aaI, aaaI, aaaaI, aaaaA, aaaabA, aaaabbA, aaaabbbA, aaaabbb 16 Hãy xây dựng tập luật văn phạm phi ngữ cảnh, luật rỗng sinh ngôn ngữ L = {anbm | n  m  0} Chứng minh: Gọi L1 ngôn ngữ {anbm | n > m  0}, L2 ngôn ngữ {anbm | n < m  0} Khi L = L1  L2 Văn phạm xây dựng hợp văn phạm sinh L1 L2 Tập luật R = I  I1 | I // I sinh xâu theo I1 I2 I1  aI1b | A, A  aA | a // I1 sinh xâu thuộc L1 I2  aI2b | B, B  bB | b // I2 sinh xâu thuộc L2 17 Xây dựng tập luật văn phạm phi ngữ cảnh: L = {an(bmcp)kd n | n, m, p, k  0} Chứng minh: R = { I  aId | A, A  bA | B, B  cB | A |  } 18 Cho văn phạm với R = {I  AB | CA, B  BC | AB, A  Aab | a, C  aB | Cb | b } Hãy: a Tìm giái thích kí hiệu vô sinh và/hoặc không đến văn phạm b Viết lại (đầy đủ thành phần) văn phạm dạng chuẩn Chomsky 14 Chương Văn phạm ngôn ngữ hình thức c Cho biết ngôn ngữ sinh văn phạm ? Chứng minh: a Duyệt A  a C  b  {A, C} kí hiệu hữu sinh Duyệt I  AC  {A, C, I} hữu sinh Các luật lại không cho thêm kí hiệu hữu sinh mới, Kết luận B kí hiệu vô sinh b Viết lại tập luật thành: { I  CA, A  Aab | a, C  Cb | b } Thêm kí hiệu phụ a’, b’, c’ chuyển luật A  Aab C  Cb dạng chuẩn Chomsky: I: kí hiệu ban đầu  = {I, A, C, a’, b’, c’}  = {a, b} R = {I  CA, A  Ac’ | a, c’  a’b’, C  Cb’ | b, a’  a, b’  b} c Ngôn ngữ L = { bna(ab)m | n  1, m  } 19 Tìm ngôn ngữ sinh văn phạm sau : a R = {I  ABC, AB  iADj, Dij  jDi, DiC  BiC, iB  Bi, AB  , C   } i,j  {a, b} b R = {I  ABBDF, I  , B  |, DF  |, AD  AAE, BC  CB, BD  DCB, EB  BE, EC  AE, EF  BBDF } c R = {I  II, I  aIb, I  bIa, I  ab, I  ba } d R = {I  aI, I  a | a   } 20 Xây dựng văn phạm sinh ngôn ngữ L = {  |  từ đối xứng gương}  = {a, b} 21 Xây dựng văn phạm sinh ngôn ngữ L = { b |   * } với  = {a1, a2, …, an} 22 Xây dựng văn phạm sinh ngôn ngữ L = {  |   * } với  = {a1, a2, …, an} 23 *Kí hiệu d(a, ) số chữ a xuất xâu  Cho L ngôn ngữ sinh văn phạm G = với  = {a, b} R gồm luật sinh : I  aB | bA A  aI | bAA | a B  bI | aBB | b Chứng minh L = {  |   * d(a, ) = d(b, ) } Gợi ý : Hãy chứng minh qui nạp theo độ dài xâu  khẳng định sau : i I |-   d(a, ) = d(b, ) ii A |-   d(a, ) = d(b, ) + iii B |-   d(a, ) = d(b, ) – 24 *Ngôn ngữ L bảng chữ  = {a, b} định nghĩa sau : 15 Chương Văn phạm ngôn ngữ hình thức a ab, ba  L b Nếu 1, 2  L a1b, b1a, 12  L c Tập L gồm xâu sinh theo qui tắc d Chứng minh xâu   L có d(a, ) = d(b, ) ngược lại e Xây dựng văn phạm phi ngữ cảnh sinh L f Xây dựng thủ tục đệ qui sinh dẫn xuất đầy đủ xâu  văn phạm G 25 Cho định nghĩa tập L sau : i ab, ba  L ii Nếu 1, 2  L a1b, b1a, 12  L iii Tập L gồm xâu sinh theo qui tắc a Chứng minh xâu   L có d(a, ) = d(b, ) ngược lại b Xây dựng văn phạm phi ngữ cảnh sinh L c Xây dựng thủ tục đệ qui sinh dẫn xuất đầy đủ xâu  văn phạm G Chứng minh: a  : Giả thiết   L, chứng minh qui nạp theo định nghĩa ta kết  : ngược lại xét xâu  có d(a, ) = d(b, ), cần chứng minh   L qui nạp  Với n = 2, ta có  = ab  = ba theo i ta có   L  Giả thiết xâu ’ có độ dài bé n d(a, ’) = d(b, ’) ’  L Xét xâu  với độ dài n có d(a, ) = d(b, ) Xét trường hợp :   = a ’b b ’a, d(a, ) = d(b, ) nên có d(a, ’) = d(b, ’), từ theo giả thiết qui nạp ’  L Theo ii ta có   L   = a ’a b ’b, chứng minh trường hợp tương tự, ta chứng minh trường hợp  = a ’a Do d(a, ) = d(b, )  d(a, ’) = d(b, ’) – 2, nói cách khác tách ’ thành 1’ 2’ cho : d(a, ’1) = d(b, ’1) – d(a, ’2) = d(b, ’2) – 1, gọi 1 = a 1’ 2 = 2’a ta có : d(a, 1) = d(b, 1), d(a, 2) = d(b, 2)  = 12 Từ theo giả thiết qui nạp ta có 1 L Từ định nghĩa xây dựng văn phạm sinh tập xâu có số kí tự a số kí tự b sau: I  ab | ba (do i.) I  aIb, bIa, II (do ii.) Thủ tục đệ qui in dẫn xuất từ I đến  Function Derive(Var : xaukq; : string) : string; { xaukq xuất phát I, cần thay I , luật thay phụ thuộc vào , sau 16 Chương Văn phạm ngôn ngữ hình thức bước thay in xaukq, tiếp tục gọi đệ qui để thay I xaukq Dừng  ‘ab’ ‘ba’ } Var Prefix, Postfix : string; { Các phần đầu cuối , có a = b } Begin Do Case Case  = ‘ab’ or ‘ba’ Stuff(xaukq, ‘I’, ); Print(xaukq); Case  = a’b Stuff(xaukq, ‘I’, ‘aIb’); Print(xaukq); Derive(xaukq, ’); Case  = b’a Stuff(xaukq, ‘I’, ‘bIa’); Print(xaukq); Derive(xaukq, ’); Case  = a’a or  = b’b Stuff(xaukq, ‘I’, ‘II’); Print(xaukq); Tìm Prefix, Postfix ; Derive(xaukq, Prefix); Derive(xaukq, Postfix); EndCase; End;  26 *Kí hiệu pre() để khúc đầu  ( gọi khúc đầu  biểu diễn  = ,  gọi khúc sau ) Cho văn phạm G có tập qui tắc R = { I  aI | aIbI |  }  = {a, b} Chứng minh : L(G) = {   * | d(a, pre())  d(b, pre()), pre() } 27 Cho ngôn ngữ L = {   | d(a, ) = 2d(b, ) } a Hãy phát biểu định nghĩa đệ qui L b Xây dựng văn phạm sinh L Chứng minh: Tương tự tập 16, ngôn ngữ L định nghĩa đệ qui sau : i aab, aba, baa  L ii Nếu 1, 2  L aa1b, a1ab, ab1a, a1ba, ba1a, b1aa 12  L iii Không cách sinh khác Để chứng minh định nghĩa đắn ta cần chứng minh bổ đề phụ sau : Gọi ’ xâu kí tự từ  bỏ kí tự đầu cuối (gồm đầu + cuối đầu + cuối) kí tự bỏ  rơi vào trường hợp sau : 17 Đầu a a Cuối Aa Ab Đầu aa aa Cuối A B Chương Văn phạm ngôn ngữ hình thức a a b b b b Ba Bb Aa Ab Ba Bb ab ab ba ba bb bb A B A B A B trừ trường hợp chứa kí tự a kí tự b (các trường hợp 2, 3, 5), trường hợp lại ta tách  thành xâu khác rỗng 1 2 thuộc L Từ định nghĩa ta có tập luật sinh văn phạm G sinh L sau : I  aab, aba, baa I  aIab, aIba, bIaa I  aaIb, abIa, baIa I  II 28 Xây dựng văn phạm sinh tập L : biểu thức Bool biến (với phép toán +, ) Chứng minh: Dựa theo tập ta xây dựng tập L định nghĩa đệ qui Ta có định nghĩa đệ qui L sau : i 0, 1, x, y biểu thức Bool ii Nếu E1, E2 biểu thức Bool E1 + E2, (E1) (E2), E1 biểu thức Bool iii Biểu thức Bool xây dựng từ từ qui tắc Như vậy, văn phạm G có :  = { 0, 1, x, y, (, ), +, ,  } ={I} R = { I  | | x | y | (I + I) | (I.I) | (I) } Ví dụ 3: : biểu thức (x + y) (x + y) có dẫn xuất I  (I).(I)  (I + I).(I)  (x + y).(I + I)  (x + y)(I) + (I)  (x + y).(x) + (y)  29 Xây dựng văn phạm sinh ngôn ngữ L = { anbm | n  m } Chứng minh: Ta thấy L = { anbm | n > m }  { anbm | n < m } = L1  L2 , : R1 = { I1  aI1 | aA, A  aAb |  } (sinh trước xâu ap sau sinh tiếp xâu ambm } R2 = { I2  I2b | Bb, B  aBb |  } (sinh trước xâu bp sau sinh tiếp xâu ambm } Do L có tập sinh : R = { I  I1 | I2, I1  aI1 | aA, A  aAb | , I2  I2b | Bb, B  aBb |  } 30 Xây dựng văn phạm sinh ngôn ngữ L = { anbmck | n  m m  k } 18  Chương Văn phạm ngôn ngữ hình thức Chứng minh: Có thể thấy L = L1  L2, : L1 = { anbmck | n  m } L2 = { anbmck | k  m } áp dụng 20, ta có tập luật sinh R tương ứng : R1 = { J1  J1c | I1 | I2, I1  aI1 | aA, A  aAb | , I2  I2b | Bb, B  aBb |  } { sinh trước xâu ck, sau sinh anbm với n  m } R2 = { J2  aJ2 | I3 | I4, I3  bI3 | bC, C  bCc | , I4  I4c | Dc, D  bDc |  } { sinh trước xâu an, sau sinh bmck với m  k } Từ ta có văn phạm G sinh ngôn ngữ L = { anbmck | n  m m  k } với :   = { a, b }   = { J, J1, J2, I1, I2, I3, I4, A, B, C, D } với kí tự xuất phát J  Tập luật sinh hợp tập : J  J1 | J2 J1  J1c | I1 | I2 J2  aJ2 | I3 | I4 I1  aI1 | aA I3  bI3 | bC I2  I2b | Bb I4  I4c | Dc A  aAb |  C  bCc |  B  aBb |  D  bDc |   31 Cho văn phạm G có R = { I  aI | aIbI |  } Chứng minh L(G) = { x | prefix(x) có số chữ a  số chữ b } Chứng minh: Đầu tiên xét ngôn ngữ L định nghĩa đệ qui sau : i   L ii Nếu , 1, 2  L a a1b2  L iii Không cách tạo khác Để thuận tiện cho trình bày ta tạm qui ước : xâu gọi prefix khúc đầu có số kí tự a lớn hay số kí tự b Bằng qui nạp ta chứng minh L tập hợp prefix  : Nếu   L prefix Bước sở : xét  = , |a = |b nên  prefix 19 Chương Văn phạm ngôn ngữ hình thức Bước qui nạp : Giả thiết xâu thuộc L có độ dài < n prefix Ta cần chứng minh xâu   L có độ dài n prefix Thật :  Nếu  = a’, giả thiết qui nạp ’ prefix   prefix  Tương tự  = a1b2 1 2 prefix, từ dễ thấy  prefix  : Ngược lại  prefix   L Bước sở : Nếu  =  theo định nghĩa i ta có   L Bước qui nạp : Giả thiết prefix có độ dài < n thuộc L Ta cần chứng minh xâu có độ dài n thuộc L Thật với   , có trường hợp xảy :  Nếu tồn khúc đầu ngắn  T cho T|a = T|b viết  = a1b2, T = a1b 1, 2 prefix theo giả thiết qui nạp, chúng thuộc L Chứng minh điều dễ dàng dành cho độc tập Từ theo định nghĩa ii ta có   L  Ngược lại giả sử không tồn T cho T|a = T|b, độc giả dễ dàng chứng minh  có dạng a1 với 1 prefix, theo giả thiết qui nạp định nghĩa ii ta có   L Cuối tập R văn phạm G suy trực tiếp từ định nghĩa L nên L = L(G) Từ chứng minh ta đưa thủ tục đệ qui sinh xâu prefix  sau : Function Derive(Var : xaukq; : string) : string; { xaukq xuất phát I, cần thay I , luật thay phụ thuộc vào , sau bước thay in xaukq, tiếp tục gọi đệ qui để thay I xaukq Dừng  rỗng } Var 1, 2 : string; Begin If  = ‘’ then Begin Stuff(xaukq, ‘I’, ‘’); Print(xaukq); End Else If  = a1b2 then Begin Stuff(xaukq, ‘I’, ‘aIbI’); Print(xaukq); Derive(xaukq, 1); Derive(xaukq, 2); End Else Begin Stuff(xaukq, ‘I’, ‘aI’); Print(xaukq); Derive(xaukq, 1); {  = a1 } End; End;  III VĂN PHẠM TƯƠNG ĐƯƠNG 32 Hãy tìm văn phạm tương đương văn phạm tập từ đến 33 Hãy tìm văn phạm tương đương văn phạm tập từ 10 đến 12 20 Chương Văn phạm ngôn ngữ hình thức IV CÁC PHÉP TOÁN TRÊN NGÔN NGỮ 34 Cho văn phạm Gi = (i = 3) với : R1 = {I1  aI1b | ab | ba } ; R2 = {I2  I2e | A, A  cAd | cd } ; R3 = {I3  0I3 | A, A  1A | B, B  0B | } a Hãy xây dựng văn phạm G4 cho L(G4) = L(G1)  L(G2) b Hãy xây dựng văn phạm G5 cho L(G5) = L(G1)  L(G2)  L(G3) 35 Cho văn phạm Gi = (i = 3) với : R1 = {I1  aI1b | ba } ; R2 = {I2  aI2b | I2c | ba } ; R3 = {I3  aI3b | a } a Hãy xây dựng văn phạm G4 cho L(G4) = L(G1)  L(G2) b Hãy xây dựng văn phạm G5 cho L(G5) = L(G2)  L(G3) 36 Cho văn phạm Gi = (i = 3) với : R1 với tập qui tắc I  II | a | b R2 với tập qui tắc I  IaI | b R3 với tập qui tắc I  aII | b a Hãy xây dựng văn phạm G4 cho L(G4) = L(G1) L(G2) b Hãy xây dựng văn phạm G5 cho L(G5) = L(G2) L(G3) 37 Bằng cách xét hợp văn phạm, xây dựng văn phạm sinh ngôn ngữ L = { an, bn | n  1} 38 Bằng cách xét giao văn phạm, xây dựng văn phạm sinh ngôn ngữ L = { anbn | n  1} (Gợi ý : áp dụng 12) 39 Bằng cách xét giao văn phạm, xây dựng văn phạm sinh ngôn ngữ L = { ab |   {a, b}*} (Gợi ý : áp dụng 9) 40 Bằng cách xét nhân ghép văn phạm, xây dựng văn phạm sinh ngôn ngữ L = { anbm | m, n  1} 21 [...]... Hãy xây dựng văn phạm G4 sao cho L(G4) = L(G1) L(G2) b Hãy xây dựng văn phạm G5 sao cho L(G5) = L(G2) L(G3) 37 Bằng cách xét hợp của 2 văn phạm, hãy xây dựng văn phạm sinh ngôn ngữ L = { an, bn | n  1} 38 Bằng cách xét giao của 2 văn phạm, hãy xây dựng văn phạm sinh ngôn ngữ L = { anbn | n  1} (Gợi ý : áp dụng bài 12) 39 Bằng cách xét giao của 2 văn phạm, hãy xây dựng văn phạm sinh ngôn ngữ L = {... Hãy: a Tìm và giái thích các kí hiệu vô sinh và/ hoặc không đến được trong văn phạm trên b Viết lại (đầy đủ các thành phần) văn phạm trên dưới dạng chuẩn Chomsky 14 Chương 6 Văn phạm và ngôn ngữ hình thức c Cho biết ngôn ngữ được sinh bởi văn phạm ? Chứng minh: a Duyệt A  a và C  b  {A, C} là các kí hiệu hữu sinh Duyệt I  AC  {A, C, I} hữu sinh Các luật còn lại không cho thêm kí hiệu hữu sinh mới,... 20 Xây dựng văn phạm sinh ngôn ngữ L = {  |  là từ đối xứng gương} trên  = {a, b} 21 Xây dựng văn phạm sinh ngôn ngữ L = { b |   * } với  = {a1, a2, …, an} 22 Xây dựng văn phạm sinh ngôn ngữ L = {  |   * } với  = {a1, a2, …, an} 23 *Kí hiệu d(a, ) là số chữ cái a xuất hiện trong xâu  Cho L là ngôn ngữ được sinh bởi văn phạm G = với  = {a, b} và R gồm các luật sinh : I ... b L = { anbm | m, n  0} 12 Xây dựng văn phạm sinh ngôn ngữ : a L = { anbm | n > m  0} b L = { anbm | m > n  0} 13 Xây dựng văn phạm sinh ngôn ngữ : a L = { anbnan | n  0} b L = { anbncm | m, n  0} 14 Xây dựng văn phạm sinh ngôn ngữ : a L = { anbnam | m, n  0} b L = { ambnan | m, n  0} 15 Xây dựng văn phạm sinh ngôn ngữ L = {an bn-1 | n  1} a Cho biết văn phạm vừa xây dựng thuộc loại nào trong... ‘aI’); Print(xaukq); Derive(xaukq, 1); {  = a1 } End; End;  III VĂN PHẠM TƯƠNG ĐƯƠNG 32 Hãy tìm văn phạm tương đương của các văn phạm trong các bài tập từ 7 đến 9 33 Hãy tìm văn phạm tương đương của các văn phạm trong các bài tập từ 10 đến 12 20 Chương 6 Văn phạm và ngôn ngữ hình thức IV CÁC PHÉP TOÁN TRÊN NGÔN NGỮ 34 Cho các văn phạm Gi = (i = 1 3) với : R1 = {I1  aI1b | ab | ba... dựng dẫn xuất của xâu aaabb 7 Xây dựng văn phạm G = sinh các ngôn ngữ sau : a {anb | n  0 } Hãy chỉ ra dẫn xuất của xâu aaab và aaaaab b {ban | n  0 } Hãy chỉ ra dẫn xuất của xâu baaa và baaaaa Chứng minh: 8 a R = {I  aI, I  b }  b R = {I  Ia, I  b }  Xây dựng văn phạm G = sinh các ngôn ngữ sau : 12 Chương 6 Văn phạm và ngôn ngữ hình thức a Tập xâu nhị phân bắt đầu bằng...Chương 6 Văn phạm và ngôn ngữ hình thức BÀI TẬP I NGÔN NGỮ 1 Cho bảng chữ cái  = {0, 1} Hãy chỉ ra : a Các ngôn ngữ có 0 phần tử, 1 phần tử độ dài 0, 1 phần tử độ dài 1 trên bảng chữ cái  b Các ngôn ngữ có các phần tử là mọi xâu có độ dài 2, độ dài 3 c Ngôn ngữ có số phần tử nhiều nhất Liệt kê các phần tử của ngôn ngữ này theo thứ tự tự điển và độ dài tăng dần của các xâu d... của xâu được sinh là  với |a = |b Tóm lại L(G6) = { abb với |a = |b } g Xét A  aAa | bAb | c ta có A sinh ra xâu c’ (xem câu c với L(G3)) Vì I  AA nên xâu sinh bởi I sẽ có dạng 1c1’2c2’, trong đó ’ là đảo của  và có thể rỗng Do vậy : L(G7) = { 1c1’2c2’ | ’i là đảo của i và có thể rỗng }  11 Xây dựng văn phạm sinh ngôn ngữ : 13 Chương 6 Văn phạm và ngôn ngữ hình thức a L = { anbn... 6 Văn phạm và ngôn ngữ hình thức 4 Hãy tìm hợp, giao, hiệu, phần bù, nhân ghép, lặp của các ngôn ngữ L1 và L2 sau : a L1 gồm các xâu bắt đầu bởi 1 và L2 gồm các xâu kết thúc bởi 0 b L1 = {ab, aabb, aaabbb, …} và L2 = {ab, abab, ababab, … } c L1 = {anbn | n  0} và L2 = { anbm | m, n  0} d L1 = {anbm | m  n  0} và L2 = { anbm | 0  m  n} Chứng minh: a L1  L2 b {1, 0 |   * } …………… II VĂN PHẠM... aaaabbb từ văn phạm vừa xây dựng Chứng minh: a  = {a, b},  = {I, A}, R = {I  aI | a | A, A  bA | } (phi ngữ cảnh) b I, aI, aaI, aaaI, aaaaI, aaaaA, aaaabA, aaaabbA, aaaabbbA, aaaabbb 16 Hãy xây dựng tập luật của văn phạm phi ngữ cảnh, không có luật rỗng sinh ngôn ngữ L = {anbm | n  m  0} Chứng minh: Gọi L1 là ngôn ngữ {anbm | n > m  0}, L2 là ngôn ngữ {anbm | n < m  0} Khi đó L = L1  L2 Văn phạm

Ngày đăng: 05/06/2016, 09:13

TỪ KHÓA LIÊN QUAN

w