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:... Đườ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:
Trang 1Nhóm 2 – Lớp K57B
Bài Tập Lớn
Lý Thuyết Ngôn Ngữ Và Tính Toán
Hà Nội 2009
Trang 2Mục Lục
A Lý Thuyết 3
1 Văn phạm tuyến tính phải (VPTTP) 3
2 Văn phạm tuyến tính phải đơn (VPTTPĐ) 3
B BÀI TẬP 3
Biết VPTT phải tìm VPTT phải đơn 3
1 Bài toán đặt ra 3
2 Đường lối 4
3 Kết luận: 5
4 Một số ví dụ cụ thể 5
A Các khái niệm, định nghĩa 10
1 Định nghĩa về ngôn ngữ 10
1.2 Định nghĩa về văn phạm 10
1.3 Khái niệm ngôn ngữ sản sinh từ văn phạm 10
1.4 Đường lối để làm bài toán cho văn phạm tìm ngôn ngữ 10
2.1 Bài toán tổng quát 11
2.2 Chứng minh 11
2.3 Ví dụ minh hoạ 13
A.Lý thuyết: 17
1 Ngôn ngữ: 17
2 Các hệ viết lại: 17
3 Các văn phạm : 18
B: Bài toán tổng quát : 21
Trang 3
Bài toán cho VPTTP tìm VPTTP đ n
A Lý Thuyết
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 1a2…anB hoặc A→ a 1a2…an với: A, B∈∆
ai∈∑, i= 1, 2,…, n
2 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:
Trang 4Từ 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
Bước 2: Xác định văn phạm tuyến tính phải đơn cần tìm có
P’: là tập các sản xuất của văn phạm tuyến tính phải đơn có
+ 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→ a1a2…anB
Thay sản xuất này bằng các sản xuất
Trang 5Ta 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
Trang 6Từ 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?
Trang 7Và ∆’= ∆∪{A1, B1, S1, S2}
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
C→ ebc bằng C → eB1 (2)
Trang 8Kế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
Trang 9Kế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
Trang 10Bài toán cho văn phạm tìm ngôn ngữ
A Các khái niệm, định nghĩa
1 Định nghĩa về ngôn ngữ
Mỗi tập con của ∑* được gọi là ngôn ngữ hình thức hay còn gọi là ngôn ngữ trên
∑.Đặc biệt tập Φ là ngôn ngữ trên ∑ gọi là ngôn ngữ rỗng;tập {ε} cũng là một ngôn ngữ trên ∑ đây là ngôn ngữ chứa từ rỗng và∑* là ngôn ngữ gồm tất cả các từ trên ∑
1.2 Định nghĩa về văn phạm
Văn phạm G là một bộ sắp thứ tự gồm 4 thành phần:G = < Σ, Δ, S, P >,
trong đó:
a) Σ là một bảng chữ, gọi là bảng chữ kết thúc hay từ điển cơ bản, mỗi phần tử của
nó được gọi là một ký hiệu kết thúc hay ký hiệu cơ bản;
b) Δ là một bảng chữ, Δ ∩ Σ=Φ, gọi là bảng chữ không kết thúc hay từ điển hỗ trợ, mỗi phần tử của nó được gọi là một ký hiệu không kết thúc hay ký hiệu hỗ trợ c) S U Δ được gọi là ký hiệu đầu;
d) P là tập hợp các cặp thứ tự <α, β>, trong đó α, β Є (Σ U Δ)* và trong α chứa ít
nhất một ký hiệu không kết thúc; P được gọi là tập các quy tắc thay thế, <α, β> được gọi là một quy tắc hay sản suất và thường được viết cho thuận tiện là α→β,α được gọi là vế trái và β được gọi là vế phải của quy tắc này
1.3 Khái niệm ngôn ngữ sản sinh từ văn phạm
Ngôn ngữ sản sinh bởi 1 văn phạm G= < ∑,Δ,Ρ,S > là tập các xâu trên bộ chữ kết thúc ∑ mà ta có thể suy dẫn từ tiên đề S.Ngôn ngữ sản sinh bởi văn phạm G là L(G)
L(G)= { x Є∑*/S→*x}
1.4 Đường lối để làm bài toán cho văn phạm tìm ngôn ngữ
Đầu tiên L được sinh bởi VPTTP G ,ta phải dựng OH M mà L được đoán nhận bởi
OH đó Thông qua OH vừa dựng được ta tìm được L,nó được biểu diễn bởi biểu thức chình quy,từ btcq ta sẽ chỉ định được ngôn ngữ của nó
Trang 11Vậy để giải được bài toán trên ta phải qua một bước trung gian đó là đi dựng L được đoán nhận bởi OH
2.1 Bài toán tổng quát
Giả sử L được sinh bởi G=(∑,Δ,P,S) là VPTTP
δ : duyệt các sản xuất trong P ứng với sản xuất A→aB ta có B Єδ(A,a)
A→a ta có f Є δ(A,a) // B=f với mọi A,B ЄΔ ,
Sauk hi dựng đựoc OH M ta đi phân tích các ngôn ngữ thành phần Khi kết hợp các ngôn ngữ thành phần đó lại bằng phép toán hợp ,ghép tiếp,*, ta lại được L.Cứ phân tích như vậy cho đến khi ngôn ngữ thành phần đó có thể nhìn thấy nó dễ dàng biểu diễn bởi btcq.Ta kết hợp các biểu thức chính quy đó lại nhờ phép +, ,* cuối cùng ta tìm đươc ngôn ngữ được chỉ định bởi btcq đó
Trang 12A aB <=> Aa B (1)
Với mọi A,B ЄΔ, a Є ∑ U {ε}
Є∑*
Quy nạp theo chiều dài xâu x:
Cơ sở quy nạp :Xét x= ε
* M
Trang 15Biểu thức chính quy :a*b
Đây là tập các xâu gồm một dãy các con a ghép tiếp một dãy các con b
Vídụ2:Cho văn phạm hãy tìm ngôn ngữ
a.G=({a,b,c},{ S,A,B,C,D},S, {S→aB│aC,B→aA,A→cA│c,C→bD})
Trang 16Biểu thức chính quy :ab+ aa*
Đây là tập các xâu các con a ghép tiếp các con b và hợp với dãy các con a
Trang 17Bài toán cho ngôn ngữ tìm văn phạm
Trang 18Mỗi phần tử (α , β ) là một quy tắc viết lại (hay một sản xuất )và thường được
viết (một cách gợi ý) là: α ⇒ β ,α là vế trái của sản xuất,β là vế phải của sản xuất
(quy tắc):α ⇒ β
b.Ví dụ
Ví dụ 1:
V1={0,1,+}, P1={0+0 =>0, 0+1 => 1, `1+0 =>1 , 1+1 =>0}
Ví dụ 2:
đầu bởi a hoặc b
bộ chữ của hệ thống: V={a,b,0,1,S,T}
Các quy tắc:
P={S =>aT|bT ; T => aT|bT|1T|0T|ε} Tiên đề: {S};
Ngôn ngữ được sản sinh :L={x∈A* | S => *x}
3 Các văn phạm :
Trang 19Ta gọi ngôn ngữ sản sinh bởi một văn phạm G là tập các xâu trên bộ chữ kết
bởi văn phạm G là L(G) vậy thì:
Trang 21
Tiên đề: S Các quy tắc :
Cách bước giải bài toán trên :
Bước 1: dự đoán văn phạm sinh ra ngôn ngữ trên
Bước 2: chứng minh văn phạm đã dự đoán trên sinh và chỉ sinh ra từ ngôn ngữ
đã cho
( Chiều thuận) Văn phạm đã cho sinh ra ngôn ngữ trên đi theo mọi hướng bắt đầu
từ S đi theo mọi ngả đều suy ra các xâu có dạng như ngôn ngữ đã cho
(Chiều nghịch) Mọi xâu có dạng như ngôn ngữ đã cho được suy ra từ S bởi các sản xuất của văn phạm G
Ví dụ :
Ví dụ 1: Cho ngôn ngữ : L={ an bn cn │ n ≥1}
Trang 22Tìm văn phạm sinh ra ngôn ngữ ấy
Trang 23Chứng minh văn phạm G sinh ra và chỉ sinh ra L
(Î) G sinh ra L: Ta thấy đi theo mọi ngả bắt đầu từ S ta đều có kết quả là xâu dạng: an bn cn {với n ≥1}
1 2 3 4 7 8
2 4 7
S Æ aBC ÆabCÆ abc
Vậy suy dẫn theo mọi ngả ta đều được xâu có dạng : an bn cn {với n ≥1}
Theo phần chứng minh (_Î) ta có các xâu dạng an bn cn {với n ≥1}
đều được suy dẫn ra từ G
Trang 26Vậy ngôn ngữ L được đoán nhận bởi văn phạm G