1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Tin học lí thuyết: Chương 5 - Võ Huỳnh Trâm

7 93 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 572,6 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Tin học lí thuyết - Chương 5: Văn phạm phi ngữ cảnh cung cấp cho người học các kiến thức: 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. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

• 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

2

là hệ thống gồm 4 thành phần

• 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

S → AB

A → aA

A → a

B → bB

B → b

S → AB

A → aAa

B → bBb hay

:

• 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

: G=({S, A, B}, {a, b}, P, S) với P gồm các luật sinh:

3

• 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 ααα γγγγ ta sẽ thu ñược chuỗi αβγ

αβγ :

α γ ⇒⇒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

cho CFG G(V, T, P, S)

(chuỗi w gồm toàn ký hiệu kết thúc và ñược dẫn ra từ S)

4

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

(1) Mỗi nút có một nhãn, là một ký hiệu ∈∈ (V ∪ T ∪ {ε} ) (2) Nút gốc có nhãn là S (ký hiệu bắt ñầu)

(3) Nếu nút trung gian có nhãn A thì A ∈∈ V (4) 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 (5) 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ó

Trang 2

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:

1

3

6

10

2

5

9

4

11

S

A

b

b

a

S

a

S

A

a a

nếu G(V, T, P, S) là một CFG thì ⇒⇒ ααα nếu và chỉ nếu có cây dẫn xuất trong văn phạm sinh ra αα

6

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)

• 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

7

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

xét văn phạm G với luật sinh:

E →→ E + E    E * E    (E)    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

8

• Hoặc 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

• Hoặc 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

Trang 3

●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)

• 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 →→ ε

10

một ký hiệu X ñược gọi là có ích nếu có một dẫn xuất

⇒ ααα β β β ⇒⇒ với α, β là các chuỗi bất kỳ và w ∈∈∈ T*

⇒ c

• 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

11

Cho CFG G(V, T, P, S) với L(G) ≠ Ø, có một CFG G'(V', T', P', S)

Begin

∅;

 A

→ w v

∈ T }

While

≠≠≠≠ N

do begin

∪ { A

 A

→ ααα v

α

α ∈∈ (

∪ O d V * }

end;

End;

12

Cho CFG G(V, T, P, S), ta có thể tìm ñược CFG G'(V', T', P', S)

⇒ ααα ββββ

• ðặt V' = {S} ; T' = Ø

• 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

➢ Thêm các ký hiệu kết thúc của α1 α2 , αn vào

• Lặp lại cho ñến khi không còn biến hoặc ký hiệu kết thúc nào ñược thêm vào nữa

Trang 4

A → aBb | ε

B → A | cB | cC

C → AC | BCD

D → ab

• Áp dng b ñ 1:

V' = {S, A, B, D}

S → A

A → aBb | ε

B → A | cB

D → ab

• Áp dng b ñ 2:

V' = {S, A, B}

S → A

A → aBb | ε

B → A | cB

14

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 ε

: xác ñịnh tập biến rỗng Nullable

ii.B →X1X2 Xn, ∀∀Xi ∈ Nullable⇒ B ∈⇒ ∈∈ Nullable

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:

i Nếu Xi ∉ Nullable thì αi = Xi

ii Nếu Xi ∈ Nullable thì αi = Xi   ε iii Không phải tất cả αi ñều bằng ε

15

loại bỏ luật sinh ε trong văn phạm sau:

S → AB

A → aA    ε

B → bB    ε

: xác ñịnh tập biến rỗng Nullable

i A →ε ⇒ A ∈⇒ ∈∈ Nullable

ii B →ε ⇒ B ∈⇒ ∈∈ Nullable iii.S → AB ⇒⇒⇒ S ∈∈∈ Nullable

xây dựng tập luật sinh P'

S → AB    Aε  εB

A → aA    aε

B → bB    bε

: 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'

16

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ị

ñặ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:

(mỗi biến A ∈∈ V) d

Tính ∆A = { B  B ∈∈∈ V và A ⇒⇒ *

B } ;

(mỗi biến B ∈∈ ∆A) d

(mỗi luật sinh B → α thuộc P) d

(B → α không là luật sinh ñơn vị) t

Thêm luật sinh A → α vào P'

;

Trang 5

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

18

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

giả sử CFL L=L(G) với CFG G(V, T, P, S)

: 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à ε

: 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

: 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 →X1X2 Xi Xn

a

A → X1X2 Ca Xn

Ca → a

A → B1B2 Bm (m>2)

A → B1 D1

D1 → B2 D2

Dm-2 → Bm-1 Bm

19

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

: ∆s = {S, A, B} , ∆A = {A, B} , ∆B = {B}

S → aA  a    bB  b  ABA

A → aA  a  bB  b

B → bB  b

: 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

20

: thay thế các luật sinh có ñộ dài vế phải > 2:

→ CaA  a    CbB  b  A 1

A → CaA  a  CbB  b

B → CbB  b

Ca → a

Cb → b

Trang 6

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

ðặ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

A → βiB (1 ≤ i ≤ s)

B → αi

B → αiB (1 ≤ i ≤ r)

Thì ta có G1 tương ñương G, hay L(G) = L(G1)

22

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 c

(có thể rỗng) ðặt G là CFG sinh ra CFL không chứa ε

: xây dựng G' có dạng CNF tương ñương G

: ñổ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}

: 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 ( i i h )

• 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})*

: thay thế các Ai – luật sinh về ñúng dạng

: thay thế các Bk – luật sinh về ñúng dạng (

23

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;

end;

24

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

: G thỏa CNF

: ta có V = {A1, A2, A3}

: ta cần sửa ñổi luật sinh A3 → A2A2

•Áp dụng bổ ñề 3: A3 → A3A1A2 aA2

• Á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 A 1A2B

Trang 7

: 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  bA 1A1   aA2BA1A1  bBA1A1  aA1

aA2A1A3  bA1A3   aA2BA1A3  bBA1A3  aA3

: thay thế các Bk – luật sinh

B → aA2A1A1A2  bA1A1A2   aA2BA1A1A2  bBA1A1A2  aA1A2 

aA2A1A3A2  bA1A3A2   aA2BA1A3A2  bBA1A3A2  aA3A2 

aA2A1A1A2B bA1A1A2B   aA2BA1A1A2B bBA 1A1A2B  aA1A2B

aA2A1A3A2B bA1A3A2B   aA2BA1A3A2B bBA1A3A2B  aA3A2B

26

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

chứng minh một ngôn ngữ không là CFL 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ó: vx ∈ anbncn, |vx| ≤ |vwx| ≤ n nên vx không thể chứa cả ký

hiệu a và c (vì giữa a và c có n ký hiệu b)

• 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 (và không chứa ký hiệu c) thì chuỗi uv0wx0y ∉ L vì có số ký hiệu c lớn hơn số ký hiệu a

 Nếu vx không chứa ký hiệu a thì chuỗi uv0wx0y ∉ L vì có số

ký hiệu b (hoặc c) nhỏ hơn số ký hiệu a

27

CFL ñóng với phép hợp, phép kết nối và phép bao ñóng Kleen

CFL không ñóng với phép giao CFL không ñóng với phép lấy phần bù

Ngày đăng: 30/01/2020, 17:19

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm