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

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

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

Thông tin tài liệu

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.

• Nếu A → β luật sinh văn phạm G α, γ chuỗi bất kỳ, áp dụng luật sinh A → β vào chuỗi α γ ta 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 chuỗi α • Thơng thường, ta dùng ⇒ ⇒ thay cho ⇒G ⇒ G • 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 văn phạm phi ngữ cảnh G cho CFG G(V, T, P, S)  ∈ ⇒ hệ thống gồm thành phần V : tập hữu hạn biến (ký tự chưa kết thúc) T : tập hữu hạn ký tự kết thúc (V ∩ T = Ø) P : tập hữu hạn luật sinh dạng A → α α∈ (V∪T S : ký hiệu bắt ñầu văn phạm ☎ Q • • • • c u í V ✠ d y : • 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 biến : G=({S, A, B}, {a, b}, P, S) với P gồm luật sinh: S → AB A → aA A→a B → bB B→b hay S → AB A → aAa B → bBb Printed with FinePrint - purchase at www.fineprint.com (chuỗi w gồm toàn ký hiệu kết thúc ñược dẫn từ S) dẫn xuất (hay phân tích cú pháp) văn phạm G(V, T, P, S) có đặc điểm (1) Mỗi nút có nhãn, ký hiệu ∈ (V ∪ T ∪ {ε} ) (2) Nút gốc có nhãn S (ký hiệu bắt ñầu) (3) Nếu nút trung gian có nhãn A A ∈ V (4) Nếu nút n có nhãn A đỉnh n1, n2, , nk n theo thứ tự từ trái sang phải có nhãn X1, X2, , Xk A → X1X2 Xk luật sinh P (5) Nếu nút n có nhãn ε n phải nút nút nút cha 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 G: S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa văn phạm phi ngữ cảnh G ñược gọi văn phạm mơ hồ (ambiguity) có nhiều dẫn xuất cho chuỗi w xét văn phạm G với luật sinh: E → E + E  E * E  (E)  a Với chuỗi , ta vẽ đến dẫn xuất khác S + E b E E E E S A E a A a G(V, T, P, S) CFG ⇒ α có dẫn xuất văn phạm sinh α bước dẫn xuất, luật sinh ñược áp dụng vào biến bên trái (phải nhất) → → → xét văn phạm G với luật sinh: • Các dẫn xuất khác cho từ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒   : ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ • Dẫn xuất (a) dẫn xuất trái nhất, (b) dẫn xuất phải • Các dẫn xuất khác nhau, có dẫn xuất Printed with FinePrint - purchase at www.fineprint.com E E a a a 11 10 a b a a E E + a a S ðiều có nghĩa biểu thức a + a * a hiểu theo cách khác nhau: • Hoặc quy định phép cộng nhân ln thực theo thứ tự từ trái sang phải (trừ gặp ngoặc ñơn) E→E+TE*TT T → (E)  a • Hoặc quy định khơng có dấu ngoặc đơn ngăn cách phép nhân ln thực ưu tiên phép cộng E→E+TT T→T*FF F → (E)  a ✱ ✼ ✸ ✱ w ) c ú h t t k i ✾ u ý h i } * } * ' ) l d V O ( T i ❖ ∪ ; w ' V N = e ' V : ( ) 11 ❪ ❭ ✸ ✱ ) u ñ t b ✾ u i h ý k ❬ t r a d n c ❩ ñ g ô h n k b i n c ✮ i b c l ( o h • X phải dẫn chuỗi ký hiệu kết thúc • X phải nằm dẫn xuất từ S n • ðặt V' = {S} ; T' = Ø • Nếu A ∈ V' A → α  α  α luật sinh P ó í c c ✧ u i ý h k h o α∈ Cho CFG G(V, T, P, S), ta tìm CFG G'(V', T', P', S) ∪ tồn α β ∈ ∪ ñể tương ñương cho ∈ ⇒ α β ✥ c m i ñ ✤ ñ c ó T →α v  A { A ; ' ∪ End; ✫ ký hiệu X gọi có ích có dẫn xuất ⇒ α β⇒ với α, β chuỗi w ∈ T* c ; w i ❖ v w ' V A N e V w d l = O ' ' V N e = ∈ end; ● ⇒ k h u a c r d n ô g h n k i { = l d O V ' ' V : w e N : l d ) ) O ( ( → V = : ) ( Nếu ngôn ngữ khơng chấp nhận chuỗi rỗng ε khơng cần luật sinh A → ε While begin • Mỗi biến ký hiệu kết thúc văn phạm ñều xuất dẫn xuất số chuỗi ngơn ngữ • Khơng có luật sinh A → B (với A, B ñều biến) m ✡ p h : w ' V N e  ≠ A ' d V l O ) ( ) ( v n a c g n n g n s n n s g n n y a m ✆c g ; ∅ ă ✜ ✏ ô h i ✂ ă ✂ h k i ñ t h l ñ k ô h n b n ✮ c i b c l ( o g h n n í h Begin ✚ , c v ô ✓ ✑ t y u g h ✏ n ✎ n i b l ✡ m o h m n h p ✡ ă v n ✆c l i g n ✂ ☞ ⇒ ✫ Cho CFG G(V, T, P, S) với L(G) ≠ Ø, có CFG G'(V', T', P', S) tương đương cho ∈ tồn ∈ ñể ⇒ Các ký hiệu khơng tham gia vào q trình dẫn xuất 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) ● ➢ Thêm ký hiệu kết thúc α α , α vào n n Thêm biến α α , α vào ➢ • Lặp lại khơng biến ký hiệu kết thúc ñược thêm vào 10 Printed with FinePrint - purchase at www.fineprint.com 12 : c ☎ ư ý ú 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 ε văn phạm G 15 ðể G' tương ñương G, ta cần thêm luật sinh S → ε vào G' → Mỗi CFL khơng chứa ε sinh CFG khơng có ký hiệu vơ ích, khơng có luật sinh ε luật sinh ñơn vị Printed with FinePrint - purchase at www.fineprint.com ) B A i h  t s n l u i b ✫ d o i g d e n t h o d o r I f o F r o F * Tính ∆A = { B  B ∈ V A ⇒ B } ; (mỗi biến B ∈ ∆A) (mỗi luật sinh B → α thuộc P) (B → α không luật sinh ñơn vị) Thêm luật sinh A → α vào P' ; d E 14 n iii Không phải tất αi ñều ε n F o i Nếu Xi ∉ Nullable αi = Xi ii Nếu Xi ∈ Nullable αi = Xi  ε (mỗi biến A ∈ V) B : ðể loại bỏ luật sinh ñơn vị, ta xây dựng tập P' theo giải thuật: e ☎ B c c : xác ñịnh tập biến rỗng Nullable i A → ε ⇒ A ∈ Nullable ii.B → X1X2 Xn, ∀Xi ∈ Nullable ⇒ B ∈ Nullable ➢ xây dựng tập luật sinh P' Với luật sinh A → X1X2 Xn P, ta xây dựng luật sinh A → α1α2 αn với điều kiện: đặt L=L(G) CFL khơng chứa ε ñược sinh văn phạm G(V, T, P, S) Theo định lý 3, ta loại bỏ tất luật sinh ε G r ☎ B Cho CFG G(V, T, P, S) L ngơn ngữ sinh G Khi L – {ε} ngôn ngữ sinh CFG G'(V, T, P', S) khơng có ký hiệu vơ ích khơng có luật sinh ε ➢ l ( o ) → ε A i h  t s n l u i b l o ✫ ( ✮ ✮ 13 h C • Áp d ng b ñ 2: V' = {S, A, B} S→A A → aBb | ε B → A | cB c : xác ñịnh tập biến rỗng Nullable ⇒ A ∈ Nullable i A → ε ⇒ B ∈ Nullable ii B → ε iii.S → AB ⇒ S ∈ Nullable ➢ ➢ • Áp d ng b ñ 1: V' = {S, A, B, D} S→A A → aBb | ε B → A | cB D → ab B S→A A → aBb | ε B → A | cB | cC C → AC | BCD D → ab B xét văn phạm ☎ loại bỏ luật sinh ε văn phạm sau: S → AB A → aA  ε B → bB  ε 16 ☎ B ☎ 2 ☎ c : thay luật sinh có ñộ dài vế phải > 2: → CaA  a  CbB  b  A A → CaA  a  CbB  b B → CbB  b Ca → a Cb → b → c ☎ ☎ c B B c B giả sử CFL L=L(G) với CFG G(V, T, P, S) : thay tất luật sinh có độ dài vế phải • Áp dụng định lý 4.4 ñể loại bỏ luật sinh ñơn vị ε ➢ : thay tất luật sinh có độ dài vế phải lớn có chứa ký hiệu kết thúc A → X1X2 Ca Xn A → X1X2 Xi Xn Ca → a a ➢ : thay luật sinh mà vế phải có nhiều ký hiệu chưa kết thúc A → B1 D1 D1 → B2 D2 A → B1B2 Bm (m>2) ➢ ngôn ngữ phi ngữ cảnh không chứa ε ñều ñược sinh văn phạm mà luật sinh có dạng A → BC A → a, với A, B, C biến a ký hiệu kết thúc B 17 ⇒ thêm vào P' : F → (E)  a ∆F = {F} ∆T = {T, F} ⇒ thêm vào P' : T → T * F  (E)  a ☎ B Tương tự: c E → E + T T * F  (E)  a c : ∆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 Ca b Cb 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 19 Cb → b Ta có: ∆E = {E, T, F} ⇒ thêm vào P' luật sinh 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 loại bỏ luật sinh ñơn vị văn phạm E→E+TT T→T*FF F → (E)  a Dm-2 → Bm-1 Bm Printed with FinePrint - purchase at www.fineprint.com 18 20 (7) (10) (11) ✑ i i ) j ì > t h A ☎ ☎  b A A A  a A A c ☎ c B c B t ) ☛ i t h ✍ ) ñ ✚ ) → u i ( ✂ g b g d ✠ n ✚ ñ ✍ ( p ( b 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 b c ☎ c ☎ c ☎ c c B 23 A1 → A2A1 A2A3 A2 → A3A1 a A3 → A2A2 b ☎ B B ư B ư B Thêm luật sinh Ak → βBk tìm văn phạm có dạng GNF cho văn phạm G sau: ðặt G CFG sinh CFL không chứa ε end; for Mỗi luật sinh Ak → β β khơng bắt ñầu Ak end; end; n c c ✟ i h Loại bỏ luật sinh Ak → Akα (9) CFL khơng chứa ε sinh CFG mà luật sinh có dạng A → aα với A biến, a ký hiệu kết (có thể rỗng) thúc α u begin Thêm luật sinh Bk → α Bk → αBk; (8) Thì ta có G1 tương ñương G, hay L(G) = L(G1) c Loại bỏ luật sinh Ak → Ajα end; for Mỗi luật sinh dạng Ak → Akα i ) r t y u ✾ ñ q m h ✫ p n ă ✮ b v i ✫ l o ù g ( d n Thêm luật sinh Ak → βα; (6) ðặt G(V, T, P, S) CFG; A → Aα1Aα2 Aα   r tập A – luật sinh có A ký hiệu trái vế phải (luật sinh ñệ quy trái) ðặt A → β1β2 βs A - luật sinh lại; G1(V ∪ {B}, T, P1, S) CFG ñược tạo thành cách thêm biến B vào V thay A - luật sinh luật sinh dạng: A → βi B → αi (1 ≤ i ≤ s) A → βi B B → αiB (1 ≤ i ≤ r) 21 Printed with FinePrint - purchase at www.fineprint.com γ begin for Tất luật sinh Aj → β (4) (5) : xây dựng G' có dạng CNF tương ñương G : ñổi tên biến G' thành A1, A2, , Am (m ≥1 ) với A1 ký hiệu bắt ñầu ðặt V = {A1, A2, , Am} : thay luật sinh cho Ai → Ajγ j > i • Nếu j i), Ai → aγ Bk → γ với γ ∈ (V ∪ {B1,B2, ,Bi-1})* : thay Ai – luật sinh ñúng dạng : thay Bk – luật sinh ñúng dạng 22 i A i c o h ✱ s o a h t y a t ( h ✱ ) i t p r c ✁ t h i s n l  t u ✱ c c t h y a t ( h Cho G(V, T, P, S) CFG, ñặt A → α1Bα2 luật sinh P B → β1β2 βr B - luật sinh; văn phạm G1(V, T, P1, S) thu ñược từ G cách loại bỏ luật sinh A → α1Bα2 thêm vào luật sinh A → α1β1α2α1β2α2 α   1βrα2 tương ñương G → Begin (1) for k := to m begin (2) for j := to k-1 (3) for Mỗi luật sinh dạng Ak → Ajα • Á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 ☎ c B Kleen CFL khơng đóng với phép giao CFL khơng ñóng với phép lấy phần bù ☎ c B   CFL đóng với phép hợp, phép kết nối phép bao đóng 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 ✁✁✁ ✁ : A3 ñã có dạng chuẩn Thay A3 vào A2 : : thay 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 cho L CFL bất kỳ, tồn số n phụ thuộc vào L cho z ∈ L |z| ≥ n ta viết z=uvwxy cho: |vx| ≥ 1, |vwx| ≤ n ∀i ≥ ta có uviwxiy ∈ L chứng minh ngôn ngữ không CFL chứng minh L = {aibici | i ≥ 1} khơng CFL • Giả sử L CFL, tồn số n theo bổ đề bơm • Xét chuỗi z = anbncn, |z| ≥ n, ta viết z=uvwxy thỏa bổ đề • Ta có: vx ∈ anbncn, |vx| ≤ |vwx| ≤ n nên vx chứa ký hiệu a c (vì a c có n ký hiệu b) • Do |vx| ≥ uvwxy chứa số ký hiệu a, b, c nhau:  Nếu vx có chứa ký hiệu a (và khơng chứa ký hiệu c) chuỗi uv0wx0y ∉ L có số ký hiệu c lớn số ký hiệu a  Nếu vx khơng chứa ký hiệu a chuỗi uv0wx0y ∉ L có số ký hiệu b (hoặc c) nhỏ số ký hiệu a 26 Printed with FinePrint - purchase at www.fineprint.com 27 ... B B → bB  b loại bỏ luật sinh ñơn vị văn phạm E→E+TT T→T*FF F → (E)  a Dm-2 → Bm-1 Bm Printed with FinePrint - purchase at www.fineprint.com 18 20 (7) (10) (11) ✑ i i ) j ì > t h A ☎ ☎ ... with FinePrint - purchase at www.fineprint.com 12 : c ☎ ư ý ú 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 ε văn phạm G 15 ðể G' tương... vế phải (luật sinh ñệ quy trái) ðặt A → β1β2 βs A - luật sinh lại; G1(V ∪ {B}, T, P1, S) CFG ñược tạo thành cách thêm biến B vào V thay A - luật sinh luật sinh dạng: A → βi B → αi (1 ≤ i ≤ s)

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

Từ khóa liên quan

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

Tài liệu liên quan