SlideShare une entreprise Scribd logo
1  sur  27
Chương 5:      Văn phạm phi ngữ cảnh
               (Context Free Grammar)

 Nội dung:
    • Văn phạm phi ngữ cảnh (CFG)
    • Giản lược văn phạm phi ngữ cảnh
    • Chuẩn hóa văn phạm phi ngữ cảnh
    • Các tính chất của văn phạm phi ngữ cảnh



                                                1
Văn phạm phi ngữ cảnh

Định nghĩa: là hệ thống gồm 4 thành phần G(V, T, P, S)
   • V : tập hữu hạn các biến (ký tự chưa kết thúc)
   • T : tập hữu hạn các ký tự kết thúc (V ∩ T = Ø)
   • P : tập hữu hạn các luật sinh dạng A → α (α∈ (V∪T)*)
   • S : ký hiệu bắt đầu của văn phạm
Quy ước:
  • V: chữ in hoa (A, B, C, ..); T: chữ in thường (a, b, c, .., w, x, y..)
  • α, β, γ, .. biểu diễn chuỗi ký hiệu kết thúc và biến
Ví dụ: G=({S, A, B}, {a, b}, P, S) với P gồm các luật sinh:
             S → AB
             A → aA                             S → AB
             A→a                hay             A → aAa
             B → bB                             B → bBb
                                                                        2
             B→b
Dẫn xuất và ngôn ngữ

Dẫn xuất:
• Nếu A → β là luật sinh trong văn phạm G và α, γ là 2 chuỗi bất kỳ,
  thì khi áp dụng luật sinh A → β vào chuỗi αAγ ta sẽ thu được
  chuỗi αβγ :
                             αAγ ⇒ G αβγ
• Giả sử: α1 ⇒ G α2, α2 ⇒ G α3, ..., αm-1 ⇒ G αm, ta có:
                              α1 ⇒*G αm
• Ta có: α ⇒*G α với mọi chuỗi α
• Thông thường, ta sẽ dùng ⇒ và ⇒* thay cho ⇒ G và ⇒*G

Ngôn ngữ sinh bởi CFG: cho CFG G(V, T, P, S)
               L(G) = { ww ∈ T* và S ⇒*G w }
      (chuỗi w gồm toàn ký hiệu kết thúc và được dẫn ra từ S)
                                                                  3
Cây dẫn xuất
Định nghĩa: cây dẫn xuất (hay cây phân tích cú pháp) của một văn
  phạm G(V, T, P, S) có đặc điểm
   – Mỗi nút có một nhãn, là một ký hiệu ∈ (V ∪ T ∪ {ε} )
   – Nút gốc có nhãn là S (ký hiệu bắt đầu)
   – Nếu nút trung gian có nhãn A thì A ∈ V
   – Nếu nút n có nhãn A và các đỉnh n1, n2, ..., nk là con của n theo
   thứ tự từ trái sang phải có nhãn lần lượt là X1, X2, ..., Xk thì A →
   X1X2...Xk là một luật sinh trong P
   – Nếu nút n có nhãn là ε thì n phải là nút lá và là nút con duy nhất
   của nút cha của nó


                                                                      4
Cây dẫn xuất
Ví dụ: xét văn phạm G({S, A}, {a, b}, P, S}, với P gồm:
                  S → aASa
                  A → SbASSba
Một dẫn xuất của G:
            S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa
                           S
                               1

                a          A                 S
                    2          3         4

                S                            A          a
                    5      b 6           7         8

                a                                       a
                           b
                    9          10                  11

Định lý 5.1: nếu G(V, T, P, S) là một CFG thì S ⇒* α nếu và chỉ   5
  nếu có cây dẫn xuất trong văn phạm sinh ra α.
Dẫn xuất trái nhất - Dẫn xuất phải nhất
Dẫn xuất trái nhất (phải nhất): nếu tại mỗi bước dẫn xuất, luật sinh
 được áp dụng vào biến bên trái nhất (phải nhất)
Ví dụ: xét văn phạm G với luật sinh:    S → AB
                                        A → aAa
                                        B → bBb
• Các dẫn xuất khác nhau cho từ aaabb:
   •S⇒    AB⇒   aAB ⇒   aaAB ⇒ aaaB ⇒ aaabB ⇒ aaabb
   •S⇒    AB⇒   AbB ⇒   Abb ⇒ aAbb ⇒ aaAbb ⇒ aaabb
   •S⇒    AB⇒   aAB ⇒   aAbB ⇒ aAbb ⇒ aaAbb ⇒ aaabb
   •S⇒    AB⇒   aAB ⇒   aaAB ⇒ aaAbB ⇒ aaabB ⇒ aaabb
• Dẫn xuất (a) là dẫn xuất trái nhất, (b) là dẫn xuất phải nhất
• Các dẫn xuất tuy khác nhau, nhưng có cùng một cây dẫn xuất
                                                                  6
Văn phạm mơ hồ

Khái niệm: một văn phạm phi ngữ cảnh G được gọi là văn phạm
 mơ hồ (ambiguity) nếu nó có nhiều hơn một cây dẫn xuất cho
 cùng một chuỗi w.
Ví dụ: xét văn phạm G với luật sinh:
                     E → E + E  E * E  (E)  a
Với chuỗi a + a * a, ta có thể vẽ đến 2 cây dẫn xuất khác nhau
                         E             E

                 E       *   E     E   +     E

             E   +   E       a     a    E   *     E

             a       a                 a         a

Điều này có nghĩa là biểu thức a + a * a có thể hiểu theo 2 cách khác
  nhau: (a + a) * a hoặc a + (a * a)                               7
Văn phạm mơ hồ

Khắc phục văn phạm mơ hồ:
  • Quy định rằng các phép cộng và nhân luôn được thực hiện theo
  thứ tự từ trái sang phải (trừ khi gặp ngoặc đơn)
                   E→ E+T E*T T
                   T → (E)  a
  • Quy định rằng khi không có dấu ngoặc đơn ngăn cách thì phép
  nhân luôn được thực hiện ưu tiên hơn phép cộng
                   E→ E+T T
                   T→ T*F F
                   F → (E)  a


                                                              8
Giản lược văn phạm phi ngữ cảnh
Trong CFG có thể chứa các yếu tố thừa:
   ●
     Các ký hiệu không tham gia vào quá trình dẫn xuất ra chuỗi ký
   hiệu kết thúc
   ●
     Luật sinh dạng A → B (làm kéo dài chuỗi dẫn xuất)

⇒ giản lược văn phạm nhằm loại bỏ những yếu tố vô ích, nhưng
 không được làm thay đổi khả năng sản sinh ngôn ngữ của văn
 phạm

   • Mỗi biến và mỗi ký hiệu kết thúc của văn phạm đều xuất
   hiện trong dẫn xuất của một số chuỗi trong ngôn ngữ
   • Không có luật sinh A → B (với A, B đều là biến)
   ●
     Nếu ngôn ngữ không chấp nhận chuỗi rỗng ε thì không cần luật
   sinh A → ε .                                                9
Các ký hiệu vô ích
Khái niệm: một ký hiệu X được gọi là có ích nếu có một dẫn xuất
                           S ⇒* αXβ ⇒* w
với α, β là các chuỗi bất kỳ và w ∈ T*.

⇒ có 2 đặc điểm cho ký hiệu có ích

   • X phải dẫn ra chuỗi ký hiệu kết thúc
   • X phải nằm trong dẫn xuất từ S




                                                                  10
Các ký hiệu vô ích
Bổ đề 1: (loại bỏ các biến không dẫn ra chuỗi ký hiệu kết thúc)
 Cho CFG G(V, T, P, S) với L(G) ≠ Ø, có một CFG G'(V', T', P', S)
 tương đương sao cho mỗi A ∈ V' tồn tại w ∈ T* để A ⇒* w

Giải thuật tìm V':
  Begin
     (1)   OldV' := ∅;
     (2)   NewV' := { A  A → w với w ∈ T* };
     (3)   While OldV' ≠ NewV' do
            begin
     (4)     OldV' := NewV';
     (5)     NewV' := OldV' ∪ {A  A → α với α ∈ (T ∪ OldV')* }
             end;
     (6)   V' := NewV';
                                                                  11
  End;
Các ký hiệu vô ích
Bổ đề 2: (loại bỏ các biến không được dẫn ra từ ký hiệu bắt đầu)
 Cho CFG G(V, T, P, S), ta có thể tìm được CFG G'(V', T', P', S)
 tương đương sao cho mỗi X ∈ (V' ∪ T') tồn tại α, β ∈ (V' ∪ T')*
 để S ⇒* αXβ

Cách tìm:
  • Đặt V' = {S}
  • Nếu A ∈ V' và A → α 1 α 2 ...  α n là các luật sinh trong P thì
       ➢   Thêm các biến của α 1, α 2, ..., α n vào V'
   • Lặp lại cho đến khi không còn biến nào được thêm vào nữa



                                                                         12
Các ký hiệu vô ích
Định lý 5.2: mỗi ngôn ngữ phi ngữ cảnh (CFL) không rỗng được
  sinh ra từ một văn phạm phi ngữ cảnh (CFG) không có ký
  hiệu vô ích
Ví dụ: xét văn phạm      S→A
                         A → aBb | ε
                         B → A | cB | cC
                         C → AC | BCD
                         D → ab

   • Áp dụng bổ đề 1:      • Áp dụng bổ đề 2:
     V' = {S, A, B, D}        V' = {S, A, B}
         S→A                      S→A
         A → aBb | ε              A → aBb | ε
         B → A | cB               B → A | cB
                                                         13
         D → ab
Luật sinh ε
Định lý 5.3: (loại bỏ luật sinh A → ε)
  Cho CFG G(V, T, P, S) và L là ngôn ngữ sinh ra bởi G. Khi đó L – {ε} là
  ngôn ngữ sinh ra bởi CFG G'(V, T, P', S) không có ký hiệu vô ích và
  không có luật sinh ε.

Cách tìm:
  ➢
    Bước 1: xác định tập biến rỗng Nullable
      •A→ε                           ⇒ A ∈ Nullable
      •B → X1X2...Xn, ∀Xi ∈ Nullable ⇒ B ∈ Nullable
  ➢
    Bước 2: xây dựng tập luật sinh P'
    Với mỗi luật sinh A → X1X2...Xn trong P, ta xây dựng luật sinh
  A → α1α2...αn với điều kiện:
       • Nếu Xi ∉ Nullable thì αi = Xi
       • Nếu Xi ∈ Nullable thì αi = Xi  ε
                                                                       14
       • Không phải tất cả αi đều bằng ε
Luật sinh ε
Ví dụ: loại bỏ luật sinh ε trong văn phạm sau:
                        S → AB
                        A → aA  ε
                        B → bB  ε
   ➢
       Bước 1: xác định tập biến rỗng Nullable
        • A→ε       ⇒ A ∈ Nullable
        •B→ε        ⇒ B ∈ Nullable
        •S → AB ⇒ S ∈ Nullable
   ➢
       Bước 2: xây dựng tập luật sinh P'
             S → AB  Aε  εB
             A → aA  aε
             B → bB  bε
Chú ý: văn phạm G' không chấp nhận chuỗi rỗng ε như văn phạm G.
 Để G' tương đương G, ta cần thêm luật sinh S → ε vào G'.    15
Luật sinh đơn vị
Định lý 5.4: (loại bỏ luật sinh A → B)
  Mỗi CFL không chứa ε được sinh ra bởi CFG không có ký hiệu vô
  ích, không có luật sinh ε hoặc luật sinh đơn vị.
Cách tìm: đặt L=L(G) là CFL không chứa ε và được sinh ra bởi văn
 phạm G(V, T, P, S). Theo định lý 3, ta có thể loại bỏ tất cả luật
 sinh ε trong G.
Để loại bỏ luật sinh đơn vị, ta xây dựng tập P' mới theo giải thuật:
    For (mỗi biến A ∈ V) do
     Begin
         Tính ΔA = { B  B ∈ V và A ⇒* B } ;
         For (mỗi biến B ∈ ΔA) do
            For (mỗi luật sinh B → α thuộc P) do
                If (B → α không là luật sinh đơn vị) then
                     Thêm luật sinh A → α vào P'                       16
     End ;
Luật sinh đơn vị
Ví dụ: loại bỏ luật sinh đơn vị trong văn phạm
                    E→ E+T T
                    T→ T*F F
                    F → (E)  a

Ta có: ΔE = {E, T, F} ⇒ thêm vào P' các luật sinh
                   E → E + T T * F  (E)  a
Tương tự:
  ΔT = {T, F} ⇒ thêm vào P' : T → T * F  (E)  a
  ΔF = {F}   ⇒ thêm vào P' : F → (E)  a



                                                    17
Dạng chuẩn Chomsky (CNF)
Định lý 5.5: một ngôn ngữ phi ngữ cảnh bất kỳ không chứa ε đều
  được sinh ra bằng một văn phạm nào đó mà các luật sinh có dạng
  A → BC hoặc A → a, với A, B, C là biến và a là ký hiệu kết thúc.
Cách tìm: giả sử CFL L=L(G) với CFG G(V, T, P, S)
  ➢
    Bước 1: thay thế tất cả các luật sinh có độ dài vế phải là 1
      • Áp dụng định lý 4.4 để loại bỏ luật sinh đơn vị và ε
  ➢
    Bước 2: thay thế tất cả luật sinh có độ dài vế phải lớn hơn 1 và
  có chứa ký hiệu kết thúc
         A → X1X2...Xi...Xn            A → X1X2...Ca...Xn
                                       Ca → a
                    a
  ➢
    Bước 3: thay thế các luật sinh mà vế phải có nhiều hơn 2 ký
  hiệu chưa kết thúc                   A → B1 D1
                                       D1 → B2 D2
         A → B1B2...Bm (m>2)           ...
                                                                  18
                                      Dm-2 → Bm-1 Bm
Dạng chuẩn Chomsky (CNF)
Ví dụ: tìm văn phạm có dạng CNF tương đương văn phạm sau:
                  S → A  ABA
                  A → aA  a  B
                  B → bB  b
Bước 1: Δs = {S, A, B} , ΔA = {A, B} , ΔB = {B}
                    S → aA  a  bB  b  ABA
                    A → aA  a  bB  b
                    B → bB  b
Bước 2: thay a bằng Ca và b bằng Cb trong các luật sinh có độ dài vế
  phải > 1:         S → CaA  a  CbB  b  ABA
                    A → CaA  a  CbB  b
                    B → CbB  b
                    Ca → a
                    Cb → b                                        19
Dạng chuẩn Chomsky (CNF)
Bước 3: thay thế các luật sinh có độ dài vế phải > 2:
                  S → CaA  a  CbB  b  AD1
                  A → CaA  a  CbB  b
                  B → CbB  b
                  Ca → a
                  Cb → b
                  D1 → BA




                                                        20
Dạng chuẩn Greibach (GNF)
Bổ đề 3: (thay thế các luật sinh trực tiếp)
 Cho G(V, T, P, S) là một CFG, đặt A → α1Bα2 là luật sinh trong P
 và B → β1β2...βr là các B - luật sinh; văn phạm G1(V, T, P1, S)
 thu được từ G bằng cách loại bỏ luật sinh A → α1Bα2 và thêm vào
 luật sinh A → α1β1α2α1β2α2...α1βrα2 tương đương G

Bổ đề 4: (dùng loại bỏ văn phạm đệ quy trái)
 Đặt G(V, T, P, S) là CFG; A → Aα1Aα2...Aαr là tập các A –
 luật sinh có A là ký hiệu trái nhất của vế phải (luật sinh đệ quy
 trái). Đặt A → β1β2...βs là các A - luật sinh còn lại; G1(V ∪ {B},
 T, P1, S) là CFG được tạo thành bằng cách thêm biến mới B vào V
 và thay các A - luật sinh bằng các luật sinh dạng:
    A → βi                          B → αi
                (1 ≤ i ≤ s)
    A → βi B                        B → αiB (1 ≤ i ≤ r)             21

Thì ta có G1 tương đương G, hay L(G) = L(G1)
Dạng chuẩn Greibach (GNF)
Định lý 5.6: mỗi CFL bất kỳ không chứa ε được sinh ra bởi một CFG
  mà mỗi luật sinh có dạng A → aα với A là biến, a là ký hiệu kết
  thúc và α là một chuỗi các biến (có thể rỗng)
Đặt G là CFG sinh ra CFL không chứa ε
Bước 1: xây dựng G' có dạng CNF tương đương G
Bước 2: đổi tên các biến trong G' thành A1, A2, ..., Am (m ≥1 ) với A1
  là ký hiệu bắt đầu. Đặt V = {A1, A2, ..., Am}
Bước 3: thay thế luật sinh sao cho nếu Ai → Ajγ thì j > i
    • Nếu j<i : áp dụng bổ đề 3. Nếu i=j : áp dụng bổ đề 4 (giải thuật)
    • Trong P chỉ chứa các luật sinh dạng: Ai → Ajγ (j > i), Ai → aγ
    hoặc Bk → γ với γ ∈ (V ∪ {B1,B2, ...,Bi-1})*
Bước 4: thay thế các Ai – luật sinh về đúng dạng (áp dụng bổ đề 3)
Bước 5: thay thế các Bk – luật sinh về đúng dạng (bổ đề 3)           22
Dạng chuẩn Greibach (GNF)
Giải thuật : (thay thế sao cho Ai→ Aiγ thì j > i)
     Begin
     (1) for k := 1 to m do begin
     (2)   for j := 1 to k-1 do
     (3)      for Mỗi luật sinh dạng Ak → Ajα do
                 begin
     (4)          for Tất cả luật sinh Aj → β do
     (5)            Thêm luật sinh Ak → βα;
     (6)          Loại bỏ luật sinh Ak → Ajα
                end;
     (7)    for Mỗi luật sinh dạng Ak → Akα do
                begin
     (8)          Thêm các luật sinh Bk → α và Bk → αBk;
     (9)         Loại bỏ luật sinh Ak → Akα
              end;
     (10)   for Mỗi luật sinh Ak → β trong đó β không bắt đầu bằng Ak do
     (11)     Thêm luật sinh Ak → βBk
         end;                                                              23
     end;
Dạng chuẩn Greibach (GNF)
Ví dụ: tìm văn phạm có dạng GNF cho văn phạm G sau:
                  A1 → A2A1 A2A3
                  A2 → A3A1 a
                  A3 → A2A2 b
Bước 1: G thỏa CNF
Bước 2: ta có V = {A1, A2, A3}
Bước 3: ta cần sửa đổi luật sinh A3 → A2A2
  • Áp dụng bổ đề 3: A3 → A3A1A2 aA2
                         A3 → A3A1A2 aA2  b
   • Áp dụng bổ đề 4, ta thu được tập luật sinh:
                  A1 → A2A1 A2A3
                  A2 → A3A1 a
                  A3 → aA2  b  aA2B  bB
                  B → A1A2 A1A2B                     24
Dạng chuẩn Greibach (GNF)
Bước 4: A3 đã có dạng chuẩn. Thay thế A3 vào A2 :
       B → A1A2 A1A2B
     A3→ aA2  b  aA2B  bB
     A2→ aA2A1  bA1  aA2BA1  bBA1  a
     A1→ aA2A1A1  bA1A1  aA2BA1A1  bBA1A1  aA1
         aA2A1A3  bA1A3  aA2BA1A3  bBA1A3  aA3
Bước 5: thay thế các Bk – luật sinh
     B → aA2A1A1A2  bA1A1A2  aA2BA1A1A2  bBA1A1A2  aA1A2
         aA2A1A3A2  bA1A3A2  aA2BA1A3A2  bBA1A3A2  aA3A2 
          aA2A1A1A2B bA1A1A2B  aA2BA1A1A2B  bBA1A1A2B 
  aA1A2B
         aA2A1A3A2B  bA1A3A2B  aA2BA1A3A2B  bBA1A3A2B  aA3A2B

                                                               25
Bổ đề bơm cho CFL
Bổ đề bơm: cho L là một CFL bất kỳ, tồn tại một số n chỉ phụ thuộc
 vào L sao cho nếu z ∈ L và |z| ≥ n thì ta có thể viết z=uvwxy sao
 cho: |vx| ≥ 1, |vwx| ≤ n và ∀i ≥ 0 ta có uviwxiy ∈ L
Ví dụ: chứng minh L = {aibici | i ≥ 1} không là CFL
   • Giả sử L là CFL, khi đó tồn tại số n theo bổ đề bơm
   • Xét chuỗi z = anbncn, |z| ≥ n, ta có thể viết z=uvwxy thỏa bổ đề
   • Ta có: vwx ∈ anbncn, |vwx| ≤ n nên vwx không thể đồng thời
   chứa cả ký hiệu a và c (vì giữa a và c có n ký hiệu b) → vx cũng
   không thể chứa cả ký hiệu a và c.
   • Do |vx| ≥ 1 và trong uvwxy chứa số ký hiệu a, b, c bằng nhau:
       
         Nếu vx có chứa ký hiệu a (nên không thể chứa ký hiệu c) thì
       khi bơm chuỗi vx, số ký hiệu c sẽ không đổi (luôn là n), nhưng
       số ký hiệu a sẽ thay đổi. Ví dụ: chuỗi uv0wx0y ∉ L vì có số ký
       hiệu a (ít hơn n) số ký hiệu c (luôn là n) không bằng nhau.
       
         Nếu vx không chứa ký hiệu a thì khi bơm chuỗi vx, số ký 26
       hiệu a không đổi, nhưng số ký hiệu b (hoặc c) sẽ thay đổi.
Tính chất đóng của CFL
Định lý 5.7: CFL đóng với phép hợp, phép kết nối và phép bao đóng
  Kleen.

Định lý 5.8: CFL không đóng với phép giao

Hệ quả: CFL không đóng với phép lấy phần bù




                                                              27

Contenu connexe

Tendances

Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tínhHoài Phạm
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++nataliej4
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Nhóc Nhóc
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Tú Cao
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#An Nguyen
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệHưởng Nguyễn
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhJojo Kim
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmTrần Gia Bảo
 
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...ThíckThọ Thì ThêThảm
 
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tínhTính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tínhChien Dang
 
Chuyen de toan logic roi rac li thuyet to hop
Chuyen de toan logic  roi rac li thuyet to hopChuyen de toan logic  roi rac li thuyet to hop
Chuyen de toan logic roi rac li thuyet to hoplephucduc06011999
 
Tom tat bai giang ly thuyet do thi - nguyen ngoc trung
Tom tat bai giang   ly thuyet do thi - nguyen ngoc trungTom tat bai giang   ly thuyet do thi - nguyen ngoc trung
Tom tat bai giang ly thuyet do thi - nguyen ngoc trungkikihoho
 
chuong 3. quan he
chuong 3. quan hechuong 3. quan he
chuong 3. quan hekikihoho
 
Bài giảng phương pháp số ths.phan thị hà[bookbooming.com]
Bài giảng phương pháp số   ths.phan thị hà[bookbooming.com]Bài giảng phương pháp số   ths.phan thị hà[bookbooming.com]
Bài giảng phương pháp số ths.phan thị hà[bookbooming.com]bookbooming1
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư việnThe Nguyen Manh
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiemDuy Vọng
 

Tendances (20)

Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tính
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Phương pháp tham lam
Phương pháp tham lamPhương pháp tham lam
Phương pháp tham lam
 
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tính
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềm
 
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
Thiết kế mạng lan cho tòa nhà 3 tầng - luận văn, đồ án, đề tài tốt nghiệp (Đặ...
 
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tínhTính toán khoa học - Chương 2: Hệ phương trình tuyến tính
Tính toán khoa học - Chương 2: Hệ phương trình tuyến tính
 
Ktmt chuong 5
Ktmt chuong 5Ktmt chuong 5
Ktmt chuong 5
 
Chuyen de toan logic roi rac li thuyet to hop
Chuyen de toan logic  roi rac li thuyet to hopChuyen de toan logic  roi rac li thuyet to hop
Chuyen de toan logic roi rac li thuyet to hop
 
Tom tat bai giang ly thuyet do thi - nguyen ngoc trung
Tom tat bai giang   ly thuyet do thi - nguyen ngoc trungTom tat bai giang   ly thuyet do thi - nguyen ngoc trung
Tom tat bai giang ly thuyet do thi - nguyen ngoc trung
 
chuong 3. quan he
chuong 3. quan hechuong 3. quan he
chuong 3. quan he
 
Bài giảng phương pháp số ths.phan thị hà[bookbooming.com]
Bài giảng phương pháp số   ths.phan thị hà[bookbooming.com]Bài giảng phương pháp số   ths.phan thị hà[bookbooming.com]
Bài giảng phương pháp số ths.phan thị hà[bookbooming.com]
 
Chia subnetmask
Chia subnetmaskChia subnetmask
Chia subnetmask
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
 
Bai 4 bieu dien do thi va thuat toan tim kiem
Bai 4   bieu dien do thi va thuat toan tim kiemBai 4   bieu dien do thi va thuat toan tim kiem
Bai 4 bieu dien do thi va thuat toan tim kiem
 

Plus de Minh Lê

Robust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like MechanismsRobust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like MechanismsMinh Lê
 
how neurons connect to each others?
how neurons connect to each others?how neurons connect to each others?
how neurons connect to each others?Minh Lê
 
Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7Minh Lê
 
Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4Minh Lê
 
Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3Minh Lê
 
Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2Minh Lê
 
Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Minh Lê
 
Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6Minh Lê
 
Xây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gramXây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gramMinh Lê
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy methodMinh Lê
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy methodMinh Lê
 
Parsimony problems
Parsimony problemsParsimony problems
Parsimony problemsMinh Lê
 
Food expert system
Food expert systemFood expert system
Food expert systemMinh Lê
 

Plus de Minh Lê (13)

Robust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like MechanismsRobust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like Mechanisms
 
how neurons connect to each others?
how neurons connect to each others?how neurons connect to each others?
how neurons connect to each others?
 
Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7
 
Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4
 
Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3Lý thuyết tính toán - BKHN - 3
Lý thuyết tính toán - BKHN - 3
 
Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2
 
Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1
 
Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6
 
Xây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gramXây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gram
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy method
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy method
 
Parsimony problems
Parsimony problemsParsimony problems
Parsimony problems
 
Food expert system
Food expert systemFood expert system
Food expert system
 

Lý thuyết tính toán - BKHN - 5

  • 1. Chương 5: Văn phạm phi ngữ cảnh (Context Free Grammar) Nội dung: • Văn phạm phi ngữ cảnh (CFG) • Giản lược văn phạm phi ngữ cảnh • Chuẩn hóa văn phạm phi ngữ cảnh • Các tính chất của văn phạm phi ngữ cảnh 1
  • 2. Văn phạm phi ngữ cảnh Định nghĩa: là hệ thống gồm 4 thành phần G(V, T, P, S) • V : tập hữu hạn các biến (ký tự chưa kết thúc) • T : tập hữu hạn các ký tự kết thúc (V ∩ T = Ø) • P : tập hữu hạn các luật sinh dạng A → α (α∈ (V∪T)*) • S : ký hiệu bắt đầu của văn phạm Quy ước: • V: chữ in hoa (A, B, C, ..); T: chữ in thường (a, b, c, .., w, x, y..) • α, β, γ, .. biểu diễn chuỗi ký hiệu kết thúc và biến Ví dụ: G=({S, A, B}, {a, b}, P, S) với P gồm các luật sinh: S → AB A → aA S → AB A→a hay A → aAa B → bB B → bBb 2 B→b
  • 3. Dẫn xuất và ngôn ngữ Dẫn xuất: • Nếu A → β là luật sinh trong văn phạm G và α, γ là 2 chuỗi bất kỳ, thì khi áp dụng luật sinh A → β vào chuỗi αAγ ta sẽ thu được chuỗi αβγ : αAγ ⇒ G αβγ • Giả sử: α1 ⇒ G α2, α2 ⇒ G α3, ..., αm-1 ⇒ G αm, ta có: α1 ⇒*G αm • Ta có: α ⇒*G α với mọi chuỗi α • Thông thường, ta sẽ dùng ⇒ và ⇒* thay cho ⇒ G và ⇒*G Ngôn ngữ sinh bởi CFG: cho CFG G(V, T, P, S) L(G) = { ww ∈ T* và S ⇒*G w } (chuỗi w gồm toàn ký hiệu kết thúc và được dẫn ra từ S) 3
  • 4. Cây dẫn xuất Định nghĩa: cây dẫn xuất (hay cây phân tích cú pháp) của một văn phạm G(V, T, P, S) có đặc điểm – Mỗi nút có một nhãn, là một ký hiệu ∈ (V ∪ T ∪ {ε} ) – Nút gốc có nhãn là S (ký hiệu bắt đầu) – Nếu nút trung gian có nhãn A thì A ∈ V – Nếu nút n có nhãn A và các đỉnh n1, n2, ..., nk là con của n theo thứ tự từ trái sang phải có nhãn lần lượt là X1, X2, ..., Xk thì A → X1X2...Xk là một luật sinh trong P – Nếu nút n có nhãn là ε thì n phải là nút lá và là nút con duy nhất của nút cha của nó 4
  • 5. Cây dẫn xuất Ví dụ: xét văn phạm G({S, A}, {a, b}, P, S}, với P gồm: S → aASa A → SbASSba Một dẫn xuất của G: S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa S 1 a A S 2 3 4 S A a 5 b 6 7 8 a a b 9 10 11 Định lý 5.1: nếu G(V, T, P, S) là một CFG thì S ⇒* α nếu và chỉ 5 nếu có cây dẫn xuất trong văn phạm sinh ra α.
  • 6. Dẫn xuất trái nhất - Dẫn xuất phải nhất Dẫn xuất trái nhất (phải nhất): nếu tại mỗi bước dẫn xuất, luật sinh được áp dụng vào biến bên trái nhất (phải nhất) Ví dụ: xét văn phạm G với luật sinh: S → AB A → aAa B → bBb • Các dẫn xuất khác nhau cho từ aaabb: •S⇒ AB⇒ aAB ⇒ aaAB ⇒ aaaB ⇒ aaabB ⇒ aaabb •S⇒ AB⇒ AbB ⇒ Abb ⇒ aAbb ⇒ aaAbb ⇒ aaabb •S⇒ AB⇒ aAB ⇒ aAbB ⇒ aAbb ⇒ aaAbb ⇒ aaabb •S⇒ AB⇒ aAB ⇒ aaAB ⇒ aaAbB ⇒ aaabB ⇒ aaabb • Dẫn xuất (a) là dẫn xuất trái nhất, (b) là dẫn xuất phải nhất • Các dẫn xuất tuy khác nhau, nhưng có cùng một cây dẫn xuất 6
  • 7. Văn phạm mơ hồ Khái niệm: một văn phạm phi ngữ cảnh G được gọi là văn phạm mơ hồ (ambiguity) nếu nó có nhiều hơn một cây dẫn xuất cho cùng một chuỗi w. Ví dụ: xét văn phạm G với luật sinh: E → E + E  E * E  (E)  a Với chuỗi a + a * a, ta có thể vẽ đến 2 cây dẫn xuất khác nhau E E E * E E + E E + E a a E * E a a a a Điều này có nghĩa là biểu thức a + a * a có thể hiểu theo 2 cách khác nhau: (a + a) * a hoặc a + (a * a) 7
  • 8. Văn phạm mơ hồ Khắc phục văn phạm mơ hồ: • Quy định rằng các phép cộng và nhân luôn được thực hiện theo thứ tự từ trái sang phải (trừ khi gặp ngoặc đơn) E→ E+T E*T T T → (E)  a • Quy định rằng khi không có dấu ngoặc đơn ngăn cách thì phép nhân luôn được thực hiện ưu tiên hơn phép cộng E→ E+T T T→ T*F F F → (E)  a 8
  • 9. Giản lược văn phạm phi ngữ cảnh Trong CFG có thể chứa các yếu tố thừa: ● Các ký hiệu không tham gia vào quá trình dẫn xuất ra chuỗi ký hiệu kết thúc ● Luật sinh dạng A → B (làm kéo dài chuỗi dẫn xuất) ⇒ giản lược văn phạm nhằm loại bỏ những yếu tố vô ích, nhưng không được làm thay đổi khả năng sản sinh ngôn ngữ của văn phạm • Mỗi biến và mỗi ký hiệu kết thúc của văn phạm đều xuất hiện trong dẫn xuất của một số chuỗi trong ngôn ngữ • Không có luật sinh A → B (với A, B đều là biến) ● Nếu ngôn ngữ không chấp nhận chuỗi rỗng ε thì không cần luật sinh A → ε . 9
  • 10. Các ký hiệu vô ích Khái niệm: một ký hiệu X được gọi là có ích nếu có một dẫn xuất S ⇒* αXβ ⇒* w với α, β là các chuỗi bất kỳ và w ∈ T*. ⇒ có 2 đặc điểm cho ký hiệu có ích • X phải dẫn ra chuỗi ký hiệu kết thúc • X phải nằm trong dẫn xuất từ S 10
  • 11. Các ký hiệu vô ích Bổ đề 1: (loại bỏ các biến không dẫn ra chuỗi ký hiệu kết thúc) Cho CFG G(V, T, P, S) với L(G) ≠ Ø, có một CFG G'(V', T', P', S) tương đương sao cho mỗi A ∈ V' tồn tại w ∈ T* để A ⇒* w Giải thuật tìm V': Begin (1) OldV' := ∅; (2) NewV' := { A  A → w với w ∈ T* }; (3) While OldV' ≠ NewV' do begin (4) OldV' := NewV'; (5) NewV' := OldV' ∪ {A  A → α với α ∈ (T ∪ OldV')* } end; (6) V' := NewV'; 11 End;
  • 12. Các ký hiệu vô ích Bổ đề 2: (loại bỏ các biến không được dẫn ra từ ký hiệu bắt đầu) Cho CFG G(V, T, P, S), ta có thể tìm được CFG G'(V', T', P', S) tương đương sao cho mỗi X ∈ (V' ∪ T') tồn tại α, β ∈ (V' ∪ T')* để S ⇒* αXβ Cách tìm: • Đặt V' = {S} • Nếu A ∈ V' và A → α 1 α 2 ...  α n là các luật sinh trong P thì ➢ Thêm các biến của α 1, α 2, ..., α n vào V' • Lặp lại cho đến khi không còn biến nào được thêm vào nữa 12
  • 13. Các ký hiệu vô ích Định lý 5.2: mỗi ngôn ngữ phi ngữ cảnh (CFL) không rỗng được sinh ra từ một văn phạm phi ngữ cảnh (CFG) không có ký hiệu vô ích Ví dụ: xét văn phạm S→A A → aBb | ε B → A | cB | cC C → AC | BCD D → ab • Áp dụng bổ đề 1: • Áp dụng bổ đề 2: V' = {S, A, B, D} V' = {S, A, B} S→A S→A A → aBb | ε A → aBb | ε B → A | cB B → A | cB 13 D → ab
  • 14. Luật sinh ε Định lý 5.3: (loại bỏ luật sinh A → ε) Cho CFG G(V, T, P, S) và L là ngôn ngữ sinh ra bởi G. Khi đó L – {ε} là ngôn ngữ sinh ra bởi CFG G'(V, T, P', S) không có ký hiệu vô ích và không có luật sinh ε. Cách tìm: ➢ Bước 1: xác định tập biến rỗng Nullable •A→ε ⇒ A ∈ Nullable •B → X1X2...Xn, ∀Xi ∈ Nullable ⇒ B ∈ Nullable ➢ Bước 2: xây dựng tập luật sinh P' Với mỗi luật sinh A → X1X2...Xn trong P, ta xây dựng luật sinh A → α1α2...αn với điều kiện: • Nếu Xi ∉ Nullable thì αi = Xi • Nếu Xi ∈ Nullable thì αi = Xi  ε 14 • Không phải tất cả αi đều bằng ε
  • 15. Luật sinh ε Ví dụ: loại bỏ luật sinh ε trong văn phạm sau: S → AB A → aA  ε B → bB  ε ➢ Bước 1: xác định tập biến rỗng Nullable • A→ε ⇒ A ∈ Nullable •B→ε ⇒ B ∈ Nullable •S → AB ⇒ S ∈ Nullable ➢ Bước 2: xây dựng tập luật sinh P' S → AB  Aε  εB A → aA  aε B → bB  bε Chú ý: văn phạm G' không chấp nhận chuỗi rỗng ε như văn phạm G. Để G' tương đương G, ta cần thêm luật sinh S → ε vào G'. 15
  • 16. Luật sinh đơn vị Định lý 5.4: (loại bỏ luật sinh A → B) Mỗi CFL không chứa ε được sinh ra bởi CFG không có ký hiệu vô ích, không có luật sinh ε hoặc luật sinh đơn vị. Cách tìm: đặt L=L(G) là CFL không chứa ε và được sinh ra bởi văn phạm G(V, T, P, S). Theo định lý 3, ta có thể loại bỏ tất cả luật sinh ε trong G. Để loại bỏ luật sinh đơn vị, ta xây dựng tập P' mới theo giải thuật: For (mỗi biến A ∈ V) do Begin Tính ΔA = { B  B ∈ V và A ⇒* B } ; For (mỗi biến B ∈ ΔA) do For (mỗi luật sinh B → α thuộc P) do If (B → α không là luật sinh đơn vị) then Thêm luật sinh A → α vào P' 16 End ;
  • 17. Luật sinh đơn vị Ví dụ: loại bỏ luật sinh đơn vị trong văn phạm E→ E+T T T→ T*F F F → (E)  a Ta có: ΔE = {E, T, F} ⇒ thêm vào P' các luật sinh E → E + T T * F  (E)  a Tương tự: ΔT = {T, F} ⇒ thêm vào P' : T → T * F  (E)  a ΔF = {F} ⇒ thêm vào P' : F → (E)  a 17
  • 18. Dạng chuẩn Chomsky (CNF) Định lý 5.5: một ngôn ngữ phi ngữ cảnh bất kỳ không chứa ε đều được sinh ra bằng một văn phạm nào đó mà các luật sinh có dạng A → BC hoặc A → a, với A, B, C là biến và a là ký hiệu kết thúc. Cách tìm: giả sử CFL L=L(G) với CFG G(V, T, P, S) ➢ Bước 1: thay thế tất cả các luật sinh có độ dài vế phải là 1 • Áp dụng định lý 4.4 để loại bỏ luật sinh đơn vị và ε ➢ Bước 2: thay thế tất cả luật sinh có độ dài vế phải lớn hơn 1 và có chứa ký hiệu kết thúc A → X1X2...Xi...Xn A → X1X2...Ca...Xn Ca → a a ➢ Bước 3: thay thế các luật sinh mà vế phải có nhiều hơn 2 ký hiệu chưa kết thúc A → B1 D1 D1 → B2 D2 A → B1B2...Bm (m>2) ... 18 Dm-2 → Bm-1 Bm
  • 19. Dạng chuẩn Chomsky (CNF) Ví dụ: tìm văn phạm có dạng CNF tương đương văn phạm sau: S → A  ABA A → aA  a  B B → bB  b Bước 1: Δs = {S, A, B} , ΔA = {A, B} , ΔB = {B} S → aA  a  bB  b  ABA A → aA  a  bB  b B → bB  b Bước 2: thay a bằng Ca và b bằng Cb trong các luật sinh có độ dài vế phải > 1: S → CaA  a  CbB  b  ABA A → CaA  a  CbB  b B → CbB  b Ca → a Cb → b 19
  • 20. Dạng chuẩn Chomsky (CNF) Bước 3: thay thế các luật sinh có độ dài vế phải > 2: S → CaA  a  CbB  b  AD1 A → CaA  a  CbB  b B → CbB  b Ca → a Cb → b D1 → BA 20
  • 21. Dạng chuẩn Greibach (GNF) Bổ đề 3: (thay thế các luật sinh trực tiếp) Cho G(V, T, P, S) là một CFG, đặt A → α1Bα2 là luật sinh trong P và B → β1β2...βr là các B - luật sinh; văn phạm G1(V, T, P1, S) thu được từ G bằng cách loại bỏ luật sinh A → α1Bα2 và thêm vào luật sinh A → α1β1α2α1β2α2...α1βrα2 tương đương G Bổ đề 4: (dùng loại bỏ văn phạm đệ quy trái) Đặt G(V, T, P, S) là CFG; A → Aα1Aα2...Aαr là tập các A – luật sinh có A là ký hiệu trái nhất của vế phải (luật sinh đệ quy trái). Đặt A → β1β2...βs là các A - luật sinh còn lại; G1(V ∪ {B}, T, P1, S) là CFG được tạo thành bằng cách thêm biến mới B vào V và thay các A - luật sinh bằng các luật sinh dạng: A → βi B → αi (1 ≤ i ≤ s) A → βi B B → αiB (1 ≤ i ≤ r) 21 Thì ta có G1 tương đương G, hay L(G) = L(G1)
  • 22. Dạng chuẩn Greibach (GNF) Định lý 5.6: mỗi CFL bất kỳ không chứa ε được sinh ra bởi một CFG mà mỗi luật sinh có dạng A → aα với A là biến, a là ký hiệu kết thúc và α là một chuỗi các biến (có thể rỗng) Đặt G là CFG sinh ra CFL không chứa ε Bước 1: xây dựng G' có dạng CNF tương đương G Bước 2: đổi tên các biến trong G' thành A1, A2, ..., Am (m ≥1 ) với A1 là ký hiệu bắt đầu. Đặt V = {A1, A2, ..., Am} Bước 3: thay thế luật sinh sao cho nếu Ai → Ajγ thì j > i • Nếu j<i : áp dụng bổ đề 3. Nếu i=j : áp dụng bổ đề 4 (giải thuật) • Trong P chỉ chứa các luật sinh dạng: Ai → Ajγ (j > i), Ai → aγ hoặc Bk → γ với γ ∈ (V ∪ {B1,B2, ...,Bi-1})* Bước 4: thay thế các Ai – luật sinh về đúng dạng (áp dụng bổ đề 3) Bước 5: thay thế các Bk – luật sinh về đúng dạng (bổ đề 3) 22
  • 23. Dạng chuẩn Greibach (GNF) Giải thuật : (thay thế sao cho Ai→ Aiγ thì j > i) Begin (1) for k := 1 to m do begin (2) for j := 1 to k-1 do (3) for Mỗi luật sinh dạng Ak → Ajα do begin (4) for Tất cả luật sinh Aj → β do (5) Thêm luật sinh Ak → βα; (6) Loại bỏ luật sinh Ak → Ajα end; (7) for Mỗi luật sinh dạng Ak → Akα do begin (8) Thêm các luật sinh Bk → α và Bk → αBk; (9) Loại bỏ luật sinh Ak → Akα end; (10) for Mỗi luật sinh Ak → β trong đó β không bắt đầu bằng Ak do (11) Thêm luật sinh Ak → βBk end; 23 end;
  • 24. Dạng chuẩn Greibach (GNF) Ví dụ: tìm văn phạm có dạng GNF cho văn phạm G sau: A1 → A2A1 A2A3 A2 → A3A1 a A3 → A2A2 b Bước 1: G thỏa CNF Bước 2: ta có V = {A1, A2, A3} Bước 3: ta cần sửa đổi luật sinh A3 → A2A2 • Áp dụng bổ đề 3: A3 → A3A1A2 aA2 A3 → A3A1A2 aA2  b • Áp dụng bổ đề 4, ta thu được tập luật sinh: A1 → A2A1 A2A3 A2 → A3A1 a A3 → aA2  b  aA2B  bB B → A1A2 A1A2B 24
  • 25. Dạng chuẩn Greibach (GNF) Bước 4: A3 đã có dạng chuẩn. Thay thế A3 vào A2 : B → A1A2 A1A2B A3→ aA2  b  aA2B  bB A2→ aA2A1  bA1  aA2BA1  bBA1  a A1→ aA2A1A1  bA1A1  aA2BA1A1  bBA1A1  aA1 aA2A1A3  bA1A3  aA2BA1A3  bBA1A3  aA3 Bước 5: thay thế các Bk – luật sinh B → aA2A1A1A2  bA1A1A2  aA2BA1A1A2  bBA1A1A2  aA1A2 aA2A1A3A2  bA1A3A2  aA2BA1A3A2  bBA1A3A2  aA3A2  aA2A1A1A2B bA1A1A2B  aA2BA1A1A2B  bBA1A1A2B  aA1A2B aA2A1A3A2B  bA1A3A2B  aA2BA1A3A2B  bBA1A3A2B  aA3A2B 25
  • 26. Bổ đề bơm cho CFL Bổ đề bơm: cho L là một CFL bất kỳ, tồn tại một số n chỉ phụ thuộc vào L sao cho nếu z ∈ L và |z| ≥ n thì ta có thể viết z=uvwxy sao cho: |vx| ≥ 1, |vwx| ≤ n và ∀i ≥ 0 ta có uviwxiy ∈ L Ví dụ: chứng minh L = {aibici | i ≥ 1} không là CFL • Giả sử L là CFL, khi đó tồn tại số n theo bổ đề bơm • Xét chuỗi z = anbncn, |z| ≥ n, ta có thể viết z=uvwxy thỏa bổ đề • Ta có: vwx ∈ anbncn, |vwx| ≤ n nên vwx không thể đồng thời chứa cả ký hiệu a và c (vì giữa a và c có n ký hiệu b) → vx cũng không thể chứa cả ký hiệu a và c. • Do |vx| ≥ 1 và trong uvwxy chứa số ký hiệu a, b, c bằng nhau:  Nếu vx có chứa ký hiệu a (nên không thể chứa ký hiệu c) thì khi bơm chuỗi vx, số ký hiệu c sẽ không đổi (luôn là n), nhưng số ký hiệu a sẽ thay đổi. Ví dụ: chuỗi uv0wx0y ∉ L vì có số ký hiệu a (ít hơn n) số ký hiệu c (luôn là n) không bằng nhau.  Nếu vx không chứa ký hiệu a thì khi bơm chuỗi vx, số ký 26 hiệu a không đổi, nhưng số ký hiệu b (hoặc c) sẽ thay đổi.
  • 27. Tính chất đóng của CFL Định lý 5.7: CFL đóng với phép hợp, phép kết nối và phép bao đóng Kleen. Định lý 5.8: CFL không đóng với phép giao Hệ quả: CFL không đóng với phép lấy phần bù 27