1 Chương 2 Ngôn ngữ, văn phạm và ôtômát 2 Nội dung Ba khái niệm cơ bản 1 Ngôn ngữ (languages) Khái niệm ngôn ngữ Biểu diễn ngôn ngữ Hệ viết lại và vấn đề biểu diễn ngôn ngữ 2 Văn phạm (grammar[.]
Nội dung Chương Ba khái niệm Ngôn ngữ, văn phạm ôtômát Ngôn ngữ (languages) Khái niệm ngôn ngữ Biểu diễn ngôn ngữ Hệ viết lại vấn đề biểu diễn ngôn ngữ Văn phạm (grammar) Định nghĩa văn phạm Sự phân cấp văn phạm Ơtơmat (automata) Tổng quan ngôn ngữ: Ngôn ngữ tự nhiên:tiếng Việt,tiếng Anh, … Ngơn ngữ lập trình: Pascal, C/C++, … Ký hiệu, chữ cái, chuỗi • Ký hiệu (symbol): • Bộ chữ (alphabet hay bảng chữ cái) Σ :là tập hợp không rỗng ký hiệu Ví dụ: chữ a,b,c,…; chữ số 1,2,3,… ĐN ngôn ngữ từ điển: Là tập hợp câu theo cấu trúc quy định Bảng chữ La Mã : {I, V, X, L, C, D, M} Biểu thị ý nghĩ, kiện hay khái niệm Bảng chữ số nhị phân: {0, 1} Bao gồm tập ký hiệu quy tắc để vận dụng chúng Bảng chữ số thập phân: {0,1,2,…,9} Định nghĩa chưa đủ xác để nghiên cứu ngơn ngữ hình thức (ngơn ngữ dùng chung cho ngôn ngữ tự nhiên lẫn ngôn ngữ lập trình) Chúng ta cần xây dựng định nghĩa tốn học cho khái niệm ngôn ngữ Bảng chữ Latinh :{A, B, C, , Z, a, b, c, , z} Bảng chữ Hi Lạp: {, β, γ, …,} Qui ước: Bộ chữ thường dùng Σ = {a,b,c} , Σ = {0,1} Các kí hiệu u,v,w,x,y,z,t dùng gọi cho tên chuỗi Ký hiệu, chữ cái, chuỗi Ký hiệu, chữ cái, chuỗi Chuỗi (Xâu, string) dãy hữu hạn ký hiệu xếp liên tục gồm: Các ký hiệu thuộc Σ Mỗi ký hiệu xuất nhiều lần Ví dụ: 010001 chuỗi chữ Σ = {0, 1} w = abbcab chuỗi chữ Σ = {a,b,c} Chuỗi tiền tố: chuỗi nằm đầu chuỗi Chuỗi hậu tố:là chuỗi nằm cuối chuỗi Ví dụ: ghép Long Int LongInt Nối kết với chuỗi rỗng: εw = wε = w (w) ε đơn vị phép nối kết Chuỗi con: Chuỗi v gọi chuỗi chuỗi w v tạo dãy ký hiệu kề w Đảo ngược chuỗi u, ký hiệu thứ tự ngược lại, nghĩa nếu: u = a1a2…an uR uR |uv| = |u| + |v| |εw| = |wε| = |w| Khái niệm bao đóng bao đóng dương : chuỗi u viết theo * +: (bao đóng bao đóng dương) = anan-1…a1 ● Đương nhiên R = Phép lũy thừa: Cho w chuỗi w0 Ký hiệu, chữ cái, chuỗi Chuỗi rỗng, ký hiệu (hay ), chuỗi có độ dài 0, tức chuỗi khơng có ký hiệu Chẳng hạn ab, abb, bc, cb chuỗi chuỗi abbcb Ví dụ: chuỗi abc có tiền tố , a, ab, abc có hậu tố , c, bc, abc Chuỗi nối kết (ghép): ký hiệu vw, chuỗi tạo cách viết v viết w sau, khơng có khoảng cách Độ dài chuỗi w, ký hiệu |w|, số ký hiệu hợp thành w Chẳng hạn |010001| = ● = * : tập hợp tất chuỗi sinh từ chữ , kể chuỗi rỗng ε + : tập hợp tất chuỗi con, sinh từ chữ , ngoại trừ chuỗi rỗng ε * = + + {ε} w1 = w w2 = ww ● w3 = ww2 wn = wwn-1 + = * - {ε} = {0,1} thì: * = {ε, 0, 1, 00, 01, 10, 11, 000, …} + = {0, 1, 00, 01, 10, 11, 000, …} Chuỗi 010210 * có số Rõ ràng Σ hữu hạn cịn Σ* Σ+ vơ hạn đếm Các phép tốn ngơn ngữ Ngơn ngữ (Languages) • Một ngơn ngữ (hình thức) L tập Σ* hay nói cách khác tập hợp chuỗi ký hiệu sinh từ chữ Σ • Ví dụ: Cho Σ = {a, b} Từ ngơn ngữ có trước, ta thu ngơn ngữ nhờ áp dụng phép tốn lên ngơn ngữ Các phép tốn tập hợp áp dụng lên ngôn ngữ Phép phần bù (complement): = * - L Σ* = {, a, b, aa, ab, ba, bb, aaa, aab, … } • Ta có: • L = ngôn ngữ chữ Σ tùy ý • L = {} ngơn ngữ chữ Σ tùy ý • L = {a, aa, aab} ngôn ngữ hữu hạn Σ = {a,b} • L = {(ab)n | n } ngơn ngữ vơ hạn Σ ={a,b} • L = {an bn | n ≥ } ngơn ngữ vơ hạn Σ = {a,b} • L = {0n 1n | n ≥ } ngôn ngữ vô hạn Σ = {0,1} Phép nối kết (concatenation): L L1L2 = {w1w2 | w1 L1 w2 L2} chữ Σ1 Σ2 L0 = {ε} L1 = L L2 = LL L3=LL2 Ln = L Ln-1 10 Các phép tốn ngơn ngữ Ví dụ: cho L = {a, ba} chữ = {a,ba} Phép bao đóng (closure): Thành lập ngơn ngữ cách kết nối chuỗi (với số lượng bất kỳ) chuỗi ngơn ngữ L cho trước: • L2 = {aa, aba, baa, baba} L* = L0 L1 L2 … • L3 = {aaa, aaba, abaa, ababa, baaa,baaba, babaa, bababa} Trong Li cho định nghĩa đệ quy sau: • L* = {ε, a, ba, aa, aba, baa, baba, aaa, aaba, …} L0 • L+ = { a, ba, aa, aba, baa, baba, aaa, aaba, …} Bao đóng ngơn ngữ L, ký hiệu L* = {} Li = LLi-1 với i Bao đóng Kleene: L* = Đợ ưu tiên của phép toán : (1)bao đóng, (2)ghép, (3)hợp ∞ 𝑖 𝑖=0 𝐿 Bao đóng dương (positive): L+ = ∞ 𝑖 𝑖=1 𝐿 = L1 L2 L3 … Ln Chú ý: L* = L0 + L+ 11 12 Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) Biểu diễn ngôn ngữ Cách 1: Liệt kê chuỗi: L = {aa, aba, baa, baba} Cách 2: Mô tả đặc điểm chủ yếu: L = {ai Ta thường biểu diễn ngôn ngữ văn phạm hay Ơtơmát Văn phạm hay Ơtơmát gọi hệ viết lại (written rule) Ví dụ 1: Cho L ngôn ngữ chữ ={a, b}, L định nghĩa sau: (1) L (2) Nếu X L, aXb L (3) Khơng cịn chuỗi khác thuộc L | i số nguyên tố} Cách 3: Biểu diễn thơng qua văn phạm automata: • Cho phép biểu diễn ngơn ngữ cách tổng qt • Văn phạm: chế sản sinh chuỗi ngôn ngữ Ban đầu, (1), ta có chuỗi L Xem X (2) ta có chuỗi ab L tức chuỗi ab L Bây xem ab X (2) ta có aabb L Tương tự ta có aaabbb L, …cứ tiếp tục ta có chuỗi aibi L (i≥0) Trên cho ta quy tắc viết lại chuỗi Dễ nhận thấy ngơn ngữ cần tìm L = {aibi| i = 0, 1, 2, …} VD văn phạm có tập qui tắc: P={Câu đơn Chủ ngữ Vị ngữ; ….} chế sản sinh câu đơn Tiếng Việt • Automata: chế cho phép đốn nhận chuỗi có thuộc ngơn ngữ L hay không? 13 Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) 14 Hệ viết lại vấn đề biểu diễn ngơn ngữ (tt) Ví dụ 2: Ngôn ngữ L định nghĩa tập tất chuỗi thu chuỗi rỗng dãy phép thay chuỗi ab Định nghĩa cho ta cách đốn Σ chữ P tập hợp hữu hạn cặp chuỗi nhận chuỗi có thuộc ngơn ngữ hay khơng Định nghĩa: Một hệ viết lại đôi W = (Σ, P) Σ Một phần tử (Σ, w) P gọi quy tắc Đoán nhận quy tắc viết lại chuỗi Chẳng hạn sau viết lại hay sản xuất thường viết Σ w q trình đốn nhận chuỗi ab thay gạch ĐN suy dẫn trực tiếp: Ta nói chuỗi x Σ suy dẫn trực tiếp chuỗi y, viết x aabbab Wy viết gọn x y hệ W rõ, tồn chuỗi x1, Σ, x2 w cho abab x = x1 Σ x2, y = x1wx2, Σ w sản xuất P ab Như chuỗi aabbab thuộc ngôn ngữ L 15 16 Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) ĐN suy dẫn gián tiếp: Ta nói chuỗi x suy dẫn chuỗi y, viết x * y, w Qui tắc viết gộp: Nếu P, ta có loạt sản xuất có vế trái dạng Σ w1 viết gọn x *y hệ W rõ, tồn dãy chuỗi Σ dạng x0, x1, …, xk với k cho x0 = x, xk = y, xi suy dẫn trực tiếp xi+1 i k-1 Σ w2 … Σ wn sản xuất thường viết gộp vế trái là: Σ w1| w2| …| wn 17 Văn phạm gì? Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) Các ngơn ngữ cho ví dụ ví dụ biểu diễn hệ viết lại sau: Ngôn ngữ Ls(W, {X}) {a, b}*, đó: L W = ({a, b, X}, {X , X aXb}) Nếu X L, aXb L Cho đoạn văn phạm tiếng Anh sau → , → , → , → a | the, đó: → boy | dog, W = ({a, b}, {ab }) → runs | walks, Vậy L = {ai bi | i ≥ 0} Ví dụ 2: Ngơn ngữ L định nghĩa tập tất chuỗi thu chuỗi rỗng dãy phép thay chuỗi ab Định nghĩa cho ta cách đốn nhận chuỗi có thuộc ngôn ngữ hay không? Các từ điển định nghĩa văn phạm cách khơng xác tập qui tắc cấu tạo từ qui tắc cách liên kết từ lại thành câu Ví dụ: Hệ viết lại Ví dụ 1: Cho L ngôn ngữ chữ {a, b}, định nghĩa sau: 18 Lđ = (W, {}), Trường hợp L biểu diễn! 19 20 Định nghĩa văn phạm Định nghĩa 1: văn phạm cấu trúc G hệ thống gồm thành phần G(V, T, P, S) Các luật sinh (production) gọi qui tắc (rule) hay luật viết lại (written rule) Ví dụ 3: Cho văn phạm sau G = (V={S, A, B}, T={a, b}, P,S), với P: • V (variables): tập biến (VD: A, B, C, …) • T (terminal): tập ký hiệu kết thúc (V T = Ø) (VD: a, b, c, …, w, x, y, ) S → aAS | bBS | λ, A → aaA | b, B → bbB | a, • P (production): tập luật sinh, dạng α→β với α, β (V T)* Văn phạm chế sinh chuỗi ngôn ngữ: • S (start): ký hiệu bắt đầu (S V) Thật vậy, dẫn xuất S có dạng: S →* ab S →* ba 21 22 … Một số qui ước Định nghĩa ngôn ngữ L sinh văn phạm G Các kí tự chữ hoa A, B, C, D, E S biểu thị biến; S kí hiệu khởi đầu trừ Khi phát biểu khác Các kí tự chữ thường a, b, c, d, e, kí số, chuỗi in đậm biểu thị kí hiệu kết thúc (terminal) Các kí tự chữ hoa X, Y, Z biểu thị kí hiệu hiểu kí hiệu kết thúc biến Các kí tự chữ thường u, v, w, x, y, z biểu thị chuỗi kí hiệu kết thúc Các kí tự chữ thường Hi Lạp ,β,γ biểu thị chuỗi biến kí hiệu kết thúc 23 Định nghĩa 2: Ngơn ngữ L sinh văn phạm G: L (G) = {w w T * S * w} Ví dụ:Tìm ngơn ngữ sinh văn phạm ví dụ Văn phạm tương đương: văn phạm sinh ngôn ngữ (G1 tương đương G2 L(G1)=L(G2) ) 24 Ví dụ: Hai văn phạm tương đương G1(V,T,P,S) G2(V,T,P,S) V = {A,B,C} T = {a,b} P = {A BC B aB | a C bC | b } S = A kí hiệu bắt đầu V = {S,A,B} T = {0,1} P = {S 0A A 0A | 1B |1 B 1B | } S kí hiệu bắt đầu Dẫn xuất câu (derivation) S w1 w2 w3 … wn w Hệ viết lại S * w Tìm ngơn ngữ sinh văn phạm? Có nhận xét G1 G2? Dãy gọi dẫn xuất câu w Hướng dẫn: L1= {anbm | n,m 1} ={a,b} Nếu w ∈ L(G) phải tồn dãy dẫn xuất (quá trình dẫn xuất): L2 = {0n1m | n,m > 0} ={0,1} Nhận xét : Rõ ràng L1= L2 nên G1 G2 Dạng câu (sentential forms) Dãy S,w1,w2,…wn gọi dạng câu dẫn xuất Câu w xem dạng câu đặc biệt SV tự chứng minh! Mở rộng: Cho G1 tìm G2 cho G2 G1 G2 tìm khơng thiết phải giống 25 Phân cấp văn phạm Ví dụ: cho văn phạm Bằng cách áp đặt số quy tắc hạn chế luật sinh, Noam Chomsky đề nghị hệ thống phân loại văn phạm dựa vào tính chất luật sinh G = ({S},{a,b},P,S} với dẫn xuất P sau: P = { S aSb | λ } 26 (tham khảo http://vi.wikipedia.org/wiki/Noam_Chomsky) Một dẫn xuất từ S có dạng: S aSb aaSbb aabb Gọi dãy dẫn xuất (quá trình dẫn xuất câu) Vì viết S * aabb Chuỗi aabb câu ngôn ngữ sinh G, aaSbb dạng câu Ngôn ngữ tương ứng với văn phạm là: L(G) = {anbn | n ≥ } 27 28 ... L1L2 = {w1w2 | w1 L1 w2 L2} chữ Σ1 ? ?2 L0 = {ε} L1 = L L2 = LL L3=LL2 Ln = L Ln-1 10 Các phép toán ngơn ngữ Ví dụ: cho L = {a, ba} chữ = {a,ba} Phép bao đóng (closure): Thành lập ngôn. .. x1, Σ, x2 w cho abab x = x1 Σ x2, y = x1wx2, Σ w sản xuất P ab Như chuỗi aabbab thuộc ngôn ngữ L 15 16 Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt)... L+ 11 12 Hệ viết lại vấn đề biểu diễn ngôn ngữ (tt) Biểu diễn ngôn ngữ Cách 1: Liệt kê chuỗi: L = {aa, aba, baa, baba} Cách 2: Mô tả đặc điểm chủ yếu: L = {ai Ta thường biểu diễn ngôn ngữ văn