Chương 9: ôtômat pushdown và văn phạm phi ngữ cảnh

4 709 9
Chương 9: ôtômat pushdown và văn phạm phi ngữ cảnh

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

Thông tin tài liệu

Chương 8. Ôtômat hữu hạn biểu thức chính quy Chương 9 ôtômat pushdown văn phạm phi ngữ cảnh I. văn phạm phi ngữ cảnh Như ta đã biết một ngôn ngữ có thể được sinh bởi nhiều văn phạm khác nhau, trong đó có những văn phạm chứa những kí hiệu thừa, hoặc các qui tắc không giúp gì cho việc sinh ngôn ngữ. Hiển nhiên các qui tắc như vậy sẽ làm mất thời gian cho quá trình sinh, do vậy ta cần loại các kí hiệu qui tắc thừa đó ra khỏi văn phạm. Tức cần giản lược văn phạm đến mức gọn nhất có thể. 1. Giản lược văn phạm phi ngữ cảnh Định nghĩa 1 : − Kí hiệu A ∈ ∆ được gọi là kí hiệu vô sinh nếu không tồn tại ω ∈ Σ* để A |- ω, ngược lại là kí hiệu hữu sinh. − Kí hiệu A ∈ ∆ được gọi là không đến được nếu từ I không dẫn được đến nó, tức không xảy ra I |- α, trong đó α chứa A, ngược lại ta gọi A là đến được. − Kí hiệu A ∈ ∆ được gọi là kí hiệu thừa nếu nó là kí hiệu vô sinh hoặc không đến được − Một qui tắc A → λ được gọi là λ-qui tắc. − Một qui tắc A → B được gọi là qui tắc đơn. VÝ dô 1 : Cho tập R = {I → aA | B, A → aAb | λ, B → cC, D → aB }, khi đó B, C là kí hiệu vô sinh, D là kí hiệu vô sinh không đến được còn A → λ là một λ-qui tắc. §Þnh lý 1 Đối với một ngôn ngữ phi ngữ cảnh L ≠ ∅ bất kỳ, ta luôn luôn xây dựng được một văn phạm phi ngữ cảnh G không chứa kí hiệu thừa sao cho L(G) = L. Chøng minh : Để chứng minh ta lần lượt trình bày cách thức loại kí hiệu vô sinh không đến được mà ngôn ngữ được sinh bởi văn phạm vẫn không thay đổi. Giả thiết ngôn ngữ L được sinh bởi văn phạm phi ngữ cảnh G = <Σ, ∆, I, R>, ta xây dựng G’ = <Σ’, ∆’, I’, R’> mà trong nó không chứa kí hiệu thừa. i. Loại kí hiệu vô sinh : Nhiệm vụ ở đây thay vì tìm kí hiệu vô sinh trong ∆ để loại, ta sẽ xây dựng lại từng bước tập ∆’ chỉ gồm toàn các kí hiệu hữu sinh, tức ∆’ ⊆ ∆, A ∈ ∆’ nếu ∃ω ∈ Σ* : A |- ω. Thuật toán được bắt đầu từ ∆’ = ∅, bổ sung dần từng bước các kí hiệu hữu sinh của ∆ vào ∆’ bằng cách khảo sát từng luật dẫn trong R. Thuật toán dừng khi tất cả các luật trong R đã được xét hết. 1 Chương 8. Ôtômat hữu hạn biểu thức chính quy Thuật toán tìm kí hiệu hữu sinh (xem thuật toán sau) : Proc. Tạo_∆’ { ∆’ = ∅; loop = true; while (R ≠ ∅ and loop) { loop = false; for (r = A → α ∈ R) // A ∈ ∆, α ∈ (Σ ∪ ∆)* if α ∈ (Σ ∪ ∆’)* { // α hoặc là λ hoặc mỗi kí hiệu của nó là ∆’ = ∆’ ∪ { A } ; // kí hiệu kết thúc hoặc kí hiệu thuộc ∆’ R = R \ { r } ; loop = true; break; } } } Sau đó trên tập ∆’ đã xây dựng ta xây dựng tiếp R’. ∆’ = ∅; Repeat lấy r ∈ R có dạng A → X 1 X 2 … Xm với Xi ∈ Σ ∪ ∆’, ∀i. nếu có : R = R \ {r}; ∆’ = ∆ ∪ {A} Until không có; VÝ dô 2 : R = I → IA | a A → bB B → aA ⇒ ∆’ = {I} R’ = {I → a} VÝ dô 3 : R = I → AB | CA B → BC | AB A → a C → aB | b ⇒ ∆’ = {I, A, C} R’ = {I → CA, A → a, C → b} ii. Loại kí hiệu không đến được : Tương tự trên ta sẽ xây dựng dần tập ∆’ Σ’ chứa các kí hiệu đến được như sau : ∆’ = {I}, Σ’ = ∅. Lặp : Xét tất cả các luật dạng A → α, với A ∈ ∆’ (ví dụ đầu tiên A là I). Bổ sung các kí hiệu phụ trong α vào ∆’ kí hiệu kết thúc vào Σ’. Dừng khi hết luật trong R. Tiếp theo xây dựng lại R’. 2 Chương 8. Ôtômat hữu hạn biểu thức chính quy ∆’ = {I}; Repeat lấy r ∈ R có dạng A → X 1 X 2 … Xm với A ∈ ∆’. nếu có : R = R \ {r}; ∆’ = ∆ ∪ {Xi | Xi ∈ ∆} ; Until không có; Xây dựng lại Σ’ R’ trên cơ sở ∆’. VÝ dô 4 : R = { I → AB | a, A → B, C → D} ∆’ = {I} I → AB ⇒ ∆’ = {I, A, B} R’ = {I → AB | a, A → B} §Þnh lý 2 Đối với một ngôn ngữ phi ngữ cảnh L ≠ ∅ bất kỳ, ta luôn luôn xây dựng được một văn phạm phi ngữ cảnh G không chứa λ-qui tắc sao cho : L(G) = L\ {λ}. Chøng minh : Để chứng minh ta trình bày cách thức loại λ-qui tắc mà ngôn ngữ được sinh bởi văn phạm vẫn không thay đổi. Giả thiết ngôn ngữ L được sinh bởi văn phạm phi ngữ cảnh G = <Σ, ∆, I, R>, ta xây dựng G’ = <Σ’, ∆’, I’, R’> mà trong nó không chứa kí hiệu thừa. Duyệt từng qui tắc dạng A → λ, loại qui tắc khỏi R thay bằng qui tắc mới bằng cách : thay A bởi λ (loại A) trong mọi qui tắc có chứa A ở vế phải. Mỗi vị trí của A sẽ sinh ra một qui tắc mới. Qui tắc gốc vẫn giữ lại. Repeat lấy r ∈ R có dạng A → λ ; nếu có : { R = R \ {r}; while (r’ ∈ R có dạng α → βAβ’) R = R ∪ { α → ββ’} ; Until không có; VÝ dô 5 : R = { I → AB, A → aA, B → bB, A → λ, B → λ} I → AB I → AB | I → A * I → AB | I → A | B | λ I → AB | I → A | B A → aA A → aA A → aA | a A → aA | a B → bB B → bB | B → b B → bB | B → b B → bB | B → b A → λ * A → λ * B → λ 3 Chương 8. Ôtômat hữu hạn biểu thức chính quy §Þnh lý 3 Đối với một ngôn ngữ phi ngữ cảnh L ≠ ∅ bất kỳ, ta luôn luôn xây dựng được một văn phạm phi ngữ cảnh G không chứa kí hiệu qui tắc đơn sao cho L(G) = L. Chøng minh : Không mất tính tổng quát ta giả thiết ngôn ngữ L được sinh bởi văn phạm phi ngữ cảnh G = <Σ, ∆, I, R> không có kí hiệu thừa, ta xây dựng G’ = <Σ’, ∆’, I’, R’> mà trong nó không chứa qui tắc đơn sao cho L(G’) = L. repeat lấy r ∈ R có dạng A → B ; nếu có : { R = R \ {r}; while (r’ ∈ R có dạng B → β 1 | β 2 | … | β k ) R = R ∪ { A → β 1 | β 2 | … | β k } ; Until không có; VÝ dô 6 : R = I → IA | AB I → IA | AB A → B A → a | AIB B → a | AIB B → a | AIB VÝ dô 7 : R = I → IA | A I → IA | A I → IA | AB | a A → AB | B A → AB | a A → AB | a B → a B → a B → a §Þnh lý 4 Đối với một ngôn ngữ phi ngữ cảnh L ≠ ∅ bất kỳ, ta luôn luôn xây dựng được một văn phạm phi ngữ cảnh G không chứa kí hiệu thừa, λ-qui tắc qui tắc đơn sao cho L(G) = L. I. văn phạm chuẩn chomsky 4

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

Từ khóa liên quan

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

Tài liệu liên quan