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

ngôn ngữ hình thức

25 340 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 466 KB

Nội dung

NHÓM 8-K59A 1. Văn phạm Văn phạm là một bộ bốn G = ( ∑, ∆, P, S), trong đó: ∑: là tập các kí hiệu kết thúc( tức là các kí hiệu không thể bị thay thế, không thể viết lại). ∆: là tập các kí hiệu không kết thúc( tức là kí hiệu còn có thể thay thế, còn có thể viết lại). ( V= ∑ ∪ ∆). P: là tập các sản xuất ( tập các quy tắc) của văn phạm. S: S ∈ ∆ được gọi là kí hiệu bắt đầu của văn phạm. 1.1 Văn phạm tuyến tính phải( VPTTP) Văn phạm tuyến tính phải là văn phạm mà các sản xuất của nó có dạng: A → a 1 a 2 …a n B hoặc A → a 1 a 2 …a n với: A, B ∈ ∆ a i ∈ ∑, i= 1, 2,…, n 1.2 Văn phạm tuyến tính phải đơn( VPTTPD) Văn phạm tuyến tính phải đơn là văn phạm mà các sản xuất của nó có dạng: A → aB hoặc A → a với: A, B ∈ ∆. B. BÀI TẬP. I. BIẾT VPTT PHẢI, TÌM VPTT PHẢI ĐƠN. 1. Bài toán đặt ra Cho văn phạm tuyến tính phải có dạng G = (∑, ∆, P, S), trong đó: ∑ : là tập các kí hiệu kết thúc. ∆ : là tập các kí hiệu không kết thúc. P : là tập các sản xuất có dạng A → a 1 a 2 …a n B hoặc A → a 1 a 2 …a n Với: A,B ∆∈ a i ∈ ∑, i= 1,2,…,n. S : là các kí hiệu bắt đầu (S ∈ ∆). Từ văn phạm tuyến tính phải đã cho tìm văn phạm tuyến tính phải đơn? 2. Đường lối Để tìm văn phạm tuyến tính phải đơn ta làm các bước sau đây: Bước 1: Xác định các thành phần của văn phạm tuyến tính phải mà đề bài đã cho. KHOA CNTT-ĐHSPHN | NNHT 1 TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN   NGÔN NGỮ HÌNH THỨC Đề tài: Biết VPTTP đơn tìm OHT Biết OHT tìm VPTTP đơn TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN   NGÔN NGỮ HÌNH THỨC Đề tài: Biết VPTTP đơn tìm OHT Biết OHT tìm VPTTP đơn NHÓM 8-K59A Bước 2: Xác định văn phạm tuyến tính phải đơn cần tìm có dạng G’ = (∑’, ∆ ’, P’, S’), trong đó: A.LÍ THUYẾT 1.Văn phạm Văn phạm là một bộ bốn G = ( Σ, ∆, P, S), trong đó: Σ: là tập các kí hiệu kết thúc( tức là các kí hiệu không thể bị thay thế, không thể viết lại). ∆: là tập các kí hiệu không kết thúc( tức là kí hiệu còn có thể thay thế, còn có thể viết lại). ( V= Σ ∪ ∆). P: là tập các sản xuất ( tập các quy tắc) của văn phạm. S: S ∈ ∆ được gọi là kí hiệu bắt đầu của văn phạm. *)Văn phạm tuyến tính phải (VPTTP) Văn phạm tuyến tính phải là văn phạm mà các sản xuất của nó có dạng: A → a 1 a 2 …a n B hoặc A → a 1 a 2 …a n với: A, B ∈ ∆ a i ∈ Σ, i= 1, 2,…, n *)Văn phạm tuyến tính phải đơn( VPTTPĐ) Văn phạm tuyến tính phải đơn là văn phạm mà các sản xuất của nó có dạng: A → aB hoặc A → a với: A, B ∈ ∆. a i ∈ Σ, i= 1, 2,…, n. 2.Ôtômát hữu hạn (OH) − Là một máy đoán nhận ngôn ngữ. − ÔH có 2 loại:  Ôtômát hữu hạn tiền định (ÔHT) là bộ 5 : M = (Σ, Q, δ, q 0 , F). Trong đó: Σ: Bộ chữ vào. Q: Tập hữu hạn các trạng thái Σ ∩ Q = ∅. δ: Q × Σ  Q. δ (q,a) = p KHOA CNTT-ĐHSPHN | NNHT 2 NHÓM 8-K59A q 0 (q 0 ∈ Q) : trạng thái đầu. F: trạng thái thừa nhận. Từ trạng thái hiện tại gặp ký hiệu đọc vào có một khả năng chuyển sang trạng thái tiếp.  Ôtômát hữu hạn không tiền định (ÔHK): M = (Σ, Q, δ, q 0, F) Trong đó: Σ: Bộ chữ vào. Q: Tập hữu hạn các trạng thái Σ ∩ Q = ∅. q 0 (q 0 ∈ Q) : trạng thái đầu. F: trạng thái thừa nhận. δ: Q × (Σ ∪ { ε })  P(Q). • Từ một trạng thái gặp một ký hiệu được đọc vào có thể chuyển sang nhiều trạng thái tiếp theo (hàm chuyển là hàm đa trị) • Có thể từ một trạng thái không cần ký hiệu được đọc vào ÔHK cũng có thể chuyển trạng thái dịch chuyển ε (ký hiệu dc_ε). BÀI TẬP 1.1 BIẾT VPTT PHẢI, TÌM VPTT PHẢI ĐƠN. 1.1.1 Đường lối Để tìm văn phạm tuyến tính phải đơn ta làm các bước sau đây: Bước 1: Xác định các thành phần của văn phạm tuyến tính phải mà đề bài đã cho. Bước 2: Xác định văn phạm tuyến tính phải đơn cần tìm có dạng G’ = (∑’, ∆ ’, P’, S’), trong đó: KHOA CNTT-ĐHSPHN | NNHT 3 NHÓM 8-K59A Σ’: là tập các kí hiệu kết thúc của văn phạm tuyến tính phải đơn G’. ∆’: là tập các kí hiệu không kết thúc của văn phạm tuyến tính phải đơn G’. P’: là tập các sản xuất của văn phạm tuyến tính phải đơn có dạng A → aB hoặc A → a S’: là kí hiệu bắt đầu Bước 3: Lần lượt tìm các thành phần của văn phạm tuyến tính phải đơn G ’ . Cụ thể: Bước 3-1: xác định Σ’? Ta có: Σ’= Σ (vì văn phạm tuyến tính phải và văn phạm tuyến tính phải đơn là tương đương). Bước 3-2: xác định S’? Ta có: S’= S Bước 3-3: xác định P’? + Ta nhặt các sản xuất trong P đã thoả mãn định nghĩa đơn đưa vào P’ + Xử lí các sản xuất dạng A → a 1 a 2 …a n B Thay sản xuất này bằng các sản xuất A → a 1 B 1 ( với B 1 → a 2 a 3 …a n B) B 1 → a 2 B 2 ( với B 2 → a 3 …a n B) ………………. B n-1 → a n B n + Xử lý các sản xuất dạng : A → a 1 a 2 …a n Thay các sản xuất này bằng A → a 1 B 1 B 1 → a 2 B 2 ……… B n-1 → a n Vậy P là tập tất cả các sản xuất mà ta viết dưới dạng ở trên. Bước 3-4: xác định ∆’? Ta có: ∆’= ∆ ∪ B i (với i= 1, 2,…, n) Kết luận: Ta tìm được văn phạm tuyến tính phải đơn G’= ( Σ’, ∆’, P’, S’) với Σ’, ∆’, P’, S’ được xác định như trên. Nhận xét: Từ các bước làm trên, ta thấy văn phạm tuyến tính phải và văn phạm tuyến tính phải đơn là tương đương. KHOA CNTT-ĐHSPHN | NNHT 4 NHÓM 8-K59A 1.1.2 Một số ví dụ cụ thể. 1.1.2.1 Ví dụ 1: Cho văn phạm tuyến tính phải có các sản xuất sau: S → abA | aB|ab A → aaS | bA B → aab | b Từ văn phạm tuyến tính phải đã cho hãy tìm văn phạm tuyến tính phải đơn? GIẢI: Xác định các thành phần của văn phạm tuyến tính phải đã cho Σ= {a, b} ∆ = {A, B, S} P= {S → abA; S → aB;S → ab; A → aaS; A → bA; B → aab; B → b} S= S( trong ∆) Giả sử văn phạm tuyến tính phải đơn cần xác định là G’=( Σ’, ∆’, P’, S’). Ta có: Σ’= {a,b} S’= S Để xác định P’ ta nhặt các sản xuất trong P đã thoả mãn định nghĩa đơn đưa vào P’, đó là các sản xuất: S → aB (1) A → bA (2) B → b (3) Thay các sản xuất: S → abA bằng S → aA 1 (4) và A 1 → bA (5) S → ab bằng S → aB 1 (6) và B 1 → b (7) A → aaS bằng A → aB 2 (8) và B 2 → aS (9) B → aab bằng B → aS 1 (10) S 1 → aS 2 (11) S 2 → b (12) Suy ra: P’ là tập 10 sản xuất đã được đánh dấu từ (1) → (12). Và ∆’= ∆ ∪ {A 1 , B 1 ,B 2 , S 1 , S 2 } Kết luận: Văn phạm tuyến tính phải mà ta cần tìm là G’= (Σ’, ∆’, P’, S’) với Σ’, ∆’, P’, S’ được xác định như trên. 1.1.2.2 Ví dụ 2: Cho văn phạm tuyến tính phải có các sản xuất sau: C → ebc E → bbeC B → cB KHOA CNTT-ĐHSPHN | NNHT 5 NHÓM 8-K59A Tìm văn phạm tuyến tính phải đơn? GIẢI: Xác định thành phần của văn phạm tuyến tính phải đã cho ∑= { b, c, e} ∆= {B, E, C} P= { C → ebc; E → bbeC; B → cB} S= C Giả sử văn phạm tuyến tính phải đơn cần xác định là G’= (∑’, ∆’, P’, S’). Ta có: ∑’= {b, c, e} S’= C Để xác định P’ ta nhặt các sản xuất trong P đã thoả mãn định nghĩa đơn đưa vào P’, đó là các sản xuất: B → cB (1) Thay các sản xuất: C → ebc bằng C → eB 1 (2) B 1 → bB 2 (3) B 2 → c (4) E → bbeC bằng E → bC 1 (5) C 1 → bC 2 (6) C 2 → eC (7) Suy ra: P’ là tập 7 sản xuất được đánh số từ (1) → (7) Và ∆’= ∆ ∪ {B 1 , B 2 , C 1, C 2 } Kết luận: Văn phạm tuyến tính phải đơn ta cần tìm là G’= (∑’, ∆’, P’, S’) với ∑’, ∆’, P’, S’ được xác định như trên. 1.1.2.3 Ví dụ 3: Cho văn phạm tuyến tính phải có các sản xuất sau: D → aabbC B → ccD C → abcB Từ văn phạm tuyến tính phải đã cho, tìm văn phạm tuyến tính phải đơn? GIẢI: Xác định thành phần của văn phạm tuyến tính phải đã cho ∑= { a, b, c} ∆= {B, C, D} P= { D → aabbC; B → ccD; C → abcB} S= D Giả sử văn phạm tuyến tính phải đơn cần xác định là G’= (∑’, ∆’, P’, S’). Ta có: KHOA CNTT-ĐHSPHN | NNHT 6 NHÓM 8-K59A ∑’= {a,b,c} S’= D Ta thấy các sản xuất trong P không thoả mãn định nghĩa đơn . Thay các sản xuất: B → ccD bằng B → cB 1 (1) B 1 → cD (2) D → aabbC bằng D → aA 1 (3) A 1 → aA 2 (4) A 2 → bA 3 (5) A 3 → bC (6) C → abcB bằng C → aC 1 (7) C 1 → bC 2 (8) C 2 → cB (9) Suy ra P’ là tập 9 sản xuất được đánh số theo thứ tự từ (1) → (9) Và ∆’= ∆ ∪ { A 1 , A 2 , A 3 , B 1 , C 1 , C 2 } Kết luận: Văn phạm tuyến tính phải đơn ta cần tìm là G’= (∑’, ∆’, P’, S’) với ∑’, ∆’, P’, S’ được xác định như trên. 1.2 CHO VPTTP TÌM ÔH. 1.2.1 Bài toán Định lý: Mọi ngôn ngữ sinh từ văn phạm tuyến tính phải đều là ngôn ngữ chính qui. Mô hình bài toán: Giả thuyết: L là ngôn ngữ sinh bởi văn phạm tuyến tính phải. Kết luận: L cũng được đoán nhận bởi một ôtômát hữu hạn tiền định nào đó. KHOA CNTT-ĐHSPHN | NNHT 7 NHÓM 8-K59A 1.2.2 Đường lối Giả sử L được sinh bởi văn phạm tuyến tính phải sau: G’ = ( Σ ’, ∆ ’, P’, S’) Từ G’ ta xây dựng văn phạm tuyến tính phải đơn G = (Σ, ∆, P, S) tương đương như sau: • Σ = Σ’ • S = S’ • P: Thay mọi sản xuất của G’ có dạng:  A → a 1 a 2 a n B, n > 1 bởi các qui tắc: A → a 1 B 1 B 1 → a 2 B 2 B n-2 → a n-1 B n-1 B n-1 → a n B trong đó B 1 , B 2 , , B n là các ký hiệu không kết thúc mới (không ở đâu khác).  A → a 1 a 2 a n , n > 1 bởi các qui tắc giống như trên, trừ qui tắc cuối cùng thì lại là: B n-1 → a n Từ G ta dựng ôtômát hữu hạn không tiền định M như sau(OHK) • Σ = Σ của G • Q = ∆ ∪ {K} với K ∉ ∆ ∪ Σ • q 0 = S • F = {K} KHOA CNTT-ĐHSPHN | NNHT 8 NHÓM 8-K59A • δ: Ta dựng δ như sau: Duyệt các sản xuất trong P của G: ứng với:  A → aB ta dựng B ∈ δ(A, a)  A → a ta dựng H ∈ δ(A, a) với ∀a ∈ Σ ∪ {ε} và A, B ∈ Σ. (Chú ý: M là ôtômát hữu hạn không tiền định) Sau đó chuyển thành otomat tiền định(OHT) qua bước dịch chuyển e và loại bỏ đặc tính không tiền định 1.2.3 Một số ví dụ 1.2.3.1 Ví dụ 1: Cho VPTTP sau: G = (Σ, Δ, P, S) Trong đó: Σ= {0,1} Δ = {S,A,B} S: kí hiệu bắt đầu P là tập các sản xuất: S → 0A | 1S A → 0B | 0A B → 0S B → 1B S → ε Lập ÔH tương đương? Bài làm KHOA CNTT-ĐHSPHN | NNHT 9 NHÓM 8-K59A Ta gọi ÔH tương đương M: M = (Σ, Q, δ, q o, F) Trong đó: Σ= {0, 1} Q = {S, A, B}∪{K}={S,A,B,K} q o = S F = {K} δ: Dựa vào các sản xuất trong P của G: S → 0A ⇔ A∈ δ(S, 0) S →1S ⇔ S∈ δ(S, 1) A → 0B ⇔ B∈ δ(A, 0) A → 0A⇔ A∈ δ(A, 0) B → 0S⇔ S∈ δ(B, 0) B → 1B⇔ B∈ δ(B, 1) S → ε ⇔ K∈ δ(S, ε) Đồ thị dịch chuyển của ÔH: 1 0 1 0 0 0 ε Các trạng thái đến được trạng thái thừa nhận trong F = {H} nhờ dịch chuyển ε là S. Như vậy, khi loại bỏ dịch chuyển ε ta được: 1 0 1 0 0 KHOA CNTT-ĐHSPHN | NNHT 10 S B A K S B A S [...]... ⇒ q → 0r δ (q, 1) = p ⇒ q → 1p δ (r, 0) = r ⇒ r → 0r | ε δ (r, 1) = r ⇒ r → 1r | ε Ví dụ 2 Tìm văn phạm tuyến tính phải đơn được thừa nhận bởi ngôn ngữ ÔH sau đây Giải : Từ hình vẽ trên ta thấy OH ở đây là OH tiền định (OHT) do đó VPTTP G được sinh bởi ngôn ngữ L là G = (Σ, ∆, P, S) Trong đó : • Σ = {0, 1} • Q = {A, B, C} • S = {A} • P là sản xuất được lập như sau : δ (A, 0) = A ⇒ A → 0A | ε δ (A,... CNTT-ĐHSPHN | NNHT 19 NHÓM 8-K59A 1.3.3 Một số ví dụ 1.3.3.1 Ví dụ 1 Cho ÔH Hãy tìm văn phạm tuyến tính phải Giải: Từ hình vẽ trên ta thấy ÔH ở đây là ÔHT TRONG ĐÓ Σ= {0,1} Q={p,q,r} q0=p; F={r} б= { (p,1)=p; (p,0)=q; (q,1)=p; (q,0)= r; (r,0)=r; (r,1)=r;} do đó VPTTP G được sinh bởi ngôn ngữ L là G = (Σ, ∆, P, S) Trong đó : Σ = {0, 1} ∆ = {p, q, r} KHOA CNTT-ĐHSPHN | NNHT 20 NHÓM 8-K59A S = {p} P là sản...  Σ = {a, b}  ∆ = {S, A,B,C,D}  P = { S → aA, A → aB | aC, B → εD, C → bD D → bA | ε } KHOA CNTT-ĐHSPHN | NNHT 16 NHÓM 8-K59A  S ∈ ∆ là kí hiệu bắt đầu Xây dựng ôtômát hữu hạn tiền định đoán nhận ngôn ngữ sinh bởi văn phạm trên Giải: Ta xây dựng ôtômát hữu hạn không tiền định M = (Σ, Q, δ, q0, F) như sau:  Σ = {a, b}  Q = {S, A, B, C, D} ∪ {K} ={S, A, B, C, D,K}  q0 = S  F = {K}  δ: Dựa vào... ÔH: VD3.Cho văn phạm tuyến tính phải đơn G = (Σ, ∆, P, S) với:  Σ = {a, b}  ∆ = {S, A}  P = { S → ε | aS | bA, A → ε | bA }  S ∈ ∆ là kí hiệu bắt đầu Xây dựng ôtômát hữu hạn tiền định đoán nhận ngôn ngữ sinh bởi văn phạm trên Giải: Ta xây dựng ôtômát hữu hạn không tiền định M = (Σ, Q, δ, q0, F) KHOA CNTT-ĐHSPHN | NNHT 12 NHÓM 8-K59A như sau:  Σ = {a, b}  Q = {S, A} ∪ {K} = {S, A, K}  q0 = S... tuyến tính phải đơn G = (Σ, ∆, P, S) với:  Σ = {a, b, c}  ∆ = {S, A, B, C}  P = { S → aA, A → εC | cB, B → εC, C → ε | bC }  S ∈ ∆ là kí hiệu bắt đầu Xây dựng ôtômát hữu hạn tiền định đoán nhận ngôn ngữ sinh bởi văn phạm trên Giải: Ta xây dựng ôtômát hữu hạn không tiền định M = (Σ, Q, δ, q0, F) KHOA CNTT-ĐHSPHN | NNHT 14 NHÓM 8-K59A như sau:  Σ = {a, b, c}  Q = {S, A, B, C} ∪ {K} = {S, A, B,... r} {p, q} {r} {p, q, r} 1 ∅ {p} ∅ ∅ {p} {p} ∅ {p} F’ = { {r},{p,r},{q,r},{p,q,r}} Vậy ÔHT là : Đặt lại : KHOA CNTT-ĐHSPHN | NNHT 23 NHÓM 8-K59A {p} = A {p, q} = B {p, q, r} = C VPTTP G được sinh bởi ngôn ngữ L là G = (Σ, ∆, P, S) Trong đó : • Σ = {0, 1} • Q = {A, B, C} • S = {A} • P là sản xuất được lập như sau : δ (A, 0) = B ⇒ A → 0B δ (A, 1) = A ⇒ A → 1A δ (B, 0) = C ⇒ B → 0C δ (B, 1) = A ⇒ B → 1A... ÔHK vì thế phải chuyển về ÔHT Từ ÔHK M: M = (Σ, Q, δ, qo, F) Trong đó : • Σ = {0, 1} • Q = {p, q, r} KHOA CNTT-ĐHSPHN | NNHT 22 NHÓM 8-K59A • F = {r} • q0 = p • δ tương ứng với hàm dịch chuyển cho như hình vẽ: 0 δ P {p, q} Q {r} R ∅ Ta lập ÔHT M’: M’ = (Σ’, Q’, δ’, q’o, F’) : 1 {p} ∅ ∅ Trong đó : • ∑’ = ∑ = {0, 1} • q’0 = {p} • Q’ = P{Q}= {φ,{p},{q},{r}, {p, q},{p, r}, {q, r}, {p, q, r} } Q’ ∅ {p} {q} . THÔNG TIN   NGÔN NGỮ HÌNH THỨC Đề tài: Biết VPTTP đơn tìm OHT Biết OHT tìm VPTTP đơn TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN   NGÔN NGỮ HÌNH THỨC Đề tài: Biết. VPTTP TÌM ÔH. 1.2.1 Bài toán Định lý: Mọi ngôn ngữ sinh từ văn phạm tuyến tính phải đều là ngôn ngữ chính qui. Mô hình bài toán: Giả thuyết: L là ngôn ngữ sinh bởi văn phạm tuyến tính phải. Kết. phải. Giải: Từ hình vẽ trên ta thấy ÔH ở đây là ÔHT TRONG ĐÓ Σ= {0,1} Q={p,q,r} q 0 =p; F={r} б= { (p,1)=p; (p,0)=q; (q,1)=p; (q,0)= r; (r,0)=r; (r,1)=r;} do đó VPTTP G được sinh bởi ngôn ngữ L

Ngày đăng: 01/06/2015, 04:00

TỪ KHÓA LIÊN QUAN

w