Bài giảng Ôtômát và ngôn ngữ hình thức: Chương 2 Ngôn ngữ, văn phạm và ôtômát cung cấp cho người học những kiến thức như: Ngôn ngữ (languages); Văn phạm (grammar); Ôtômat (automata). Mời các bạn cùng tham khảo!
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 Phân cấp văn phạm Phân cấp văn phạm Loại – Văn phạm không hạn chế (Unrestricted Grammar): không cần thỏa điều kiện ràng buộc tập luật sinh Loại – Văn phạm cảm ngữ cảnh (CSG – Context Sensitive Grammar): văn phạm G có luật sinh dạng →β |β| ≥ || Loại – Văn phạm quy (RG – Regular Grammar): có luật sinh dạng tuyến tính phải tuyến tính trái • VPCQ Tuyến tính phải (gọi tắt VPCQ phải): A → wB | w • VPCQ Tuyến tính trái (gọi tắt VPCQ trái): A → Bw | w Loại – Văn phạm phi ngữ cảnh (CFG – Context-Free Grammar): có luật sinh dạng A→ với A biến đơn chuỗi ký hiệu thuộc (V T)* Với A, B biến đơn, w chuỗi ký hiệu kết thúc (có thể rỗng) Nếu ký hiệu L0, L1, L2, L3 ngôn ngữ sinh văn phạm loại 0, 1, 2, 3, ta có: L3 L2 L1 L0 29 Các ví dụ văn phạm 30 Các ví dụ văn phạm Ví dụ 2: văn phạm G( {S}, {a, b}, P, S ) Ví dụ 1: văn phạm G( {S, A}, {a, b}, P, S ) P = S aS S aA A bA A b P = S aSb S ab G văn phạm gì? G văn phạm gì? Tìm ngơn ngữ L(G) sinh văn phạm Ngơn ngữ tìm ngơn ngữ gì? Tìm ngơn ngữ L(G) sinh văn phạm Ngơn ngữ tìm ngơn ngữ gì? 31 32 Gợi ý đáp án Các ví dụ văn phạm Ví dụ 3: văn phạm G( {S, B, C}, {a, b, c}, P, S ) Ví dụ 1: văn phạm G( {S, A}, {a, b}, P, S ) P = S → aSBC S → aBC CB → BC aB → ab bB → bb bC → bc cC → cc P= S aS S aA A bA Ab Đây văn phạm qui (dạng tuyến tính phải) Một dẫn xuất từ S có dạng: G văn phạm gì? S aS aaS aaaA aaabA aaabbA aaabbbA aaabbbb = a3 b4 Tìm ngơn ngữ L(G) sinh văn phạm Ngơn ngữ tìm ngơn ngữ gì? L(G) = {anbm | n,m ≥ 1} 33 Gợi ý đáp án Gợi ý đáp án Ví dụ 3: văn phạm G( {S, B, C}, {a, b, c}, P, S ) Ví dụ 2: văn phạm G( {S}, {a, b}, P, S ) P= 34 S aSb S ab P= Đây văn phạm phi ngữ cảnh Một dẫn xuất từ S có dạng: S → aSBC S → aBC CB → BC aB → ab bB → bb bC → bc cC → cc Đây văn phạm cảm ngữ cảnh S aSb aaSbb aaaSbbb aaaabbbb = a4b4 Một dẫn xuất từ S: S aSBC aaBCBC aabCBC aabBCC aabbCC aabbcC aabbcc=a2b2c2 L(G) = {anbn | n ≥ 1} L(G) = {anbncn | n ≥ 1} 35 36 Ơtơmát (Automata) Định nghĩa Ơtơmát (Automata) Nội dung: Định nghĩa: máy trừu tượng, thiết bị tự động thực công việc mà không cần can thiệp người Định nghĩa Ơtơmát Cấu tạo Hoạt động Phân loại • Con người dựa tập quy tắc lập trình sẵn cho máy ‘lộ trình’ để thực Ứng dụng • Máy trừu tượng mơ hình điển hình máy tính số ngày • Cơ cấu hoạt động đơn giản có khả đốn nhận ngơn ngữ 37 Cấu tạo Ơtơmát 38 Chức các phận Thiết bị đầu vào (input file): nơi mà chuỗi nhập (input string) ghi lên, ôtômát đọc không thay đổi nội dung Nó chia thành (cells, squares), ô giữ kí hiệu Cơ cấu nhập (input mechanism): phận đọc input file từ trái sang phải, kí tự thời điểm Nó dị tìm điểm kết thúc chuỗi nhập (eof, #) Bộ nhớ tạm (temporary storage): thiết bị bao gồm số không giới hạn nhớ (cell), giữ kí hiệu từ bảng chữ (khơng thiết giống với bảng chữ ngõ nhập) Ơtơmát đọc thay đổi nội dung ô nhớ lưu trữ (storage cell) Đơn vị điều khiển (control unit): ơtơmát có đơn vị điều khiển, mà trạng thái số hữu hạn trạng thái nội, chuyển đổi trạng thái kiểu định nghĩa sẵn Máy gồm thành phần chủ yếu sau: INPUT Bộ điều khiển OUTPUT BỘ NHỚ 39 40 10 Hoạt động Ôtômát Các khái niệm Một Ôtômát giả thiết hoạt động khung thời gian rời rạc (discrete time frame) Trạng thái nội (internal state): trạng thái đơn vị điều khiển mà vào Tại thời điểm cho, đơn vị điều khiển trạng thái nội (internal state) đó, cấu nhập quét (scanning) kí hiệu cụ thể input file Trạng thái kế (next state): trạng thái nội đơn vị điểu khiển mà vào thời điểm Hàm chuyển trạng thái (transition function): hàm gởi trạng thái kế ôtômát dựa trạng thái hành, kí hiệu nhập hành quét, thông tin hành nhớ tạm Trạng thái nội đơn vị điều khiển thời điểm xác định trạng thái kế (next state) hay hàm chuyển trạng thái (transition function) Cấu hình (configuration): sử dụng để tham khảo đến ba thông tin: trạng thái cụ thể mà đơn vị điều khiển vào, vị trí cấu nhập thiết bị nhập (hay nói cách khác ơtơmát đọc đến kí hiệu thiết bị nhập), nội dung hành nhớ tạm Trong suốt trình chuyển trạng thái từ khoảng thời gian đến khoảng thời gian kế, kết (output) sinh thơng tin nhớ lưu trữ thay đổi Di chuyển (move): chuyển trạng thái ơtơmát từ cấu hình sang cấu hình 41 42 Phân loại dựa vào kết xuất Ơtơmát Phân loại dựa vào hoạt động Ôtômát Ôtômát đơn định (Deterministic Automata): Accepter: Ôtômát mà đáp ứng ngõ giới hạn hai trạng thái đơn giản “yes” hay “no” “yes" tương ứng với việc chấp nhận chuỗi nhập, "no" tương ứng với việc từ chối, không chấp nhận, chuỗi nhập Transducer: Ơtơmát tổng qt hơn, có khả sinh chuỗi kí tự ngõ xuất Máy tính số Transducer điển hình • Mỗi bước di chuyển xác định cấu hình (hàm chuyển Ơtơmát đơn trị) Ơtơmát khơng đơn định (Non-deterministic Automata): • Tại bước di chuyển, có vài khả lựa chọn để di chuyển (hàm chuyển Ơtơmát đa trị) Việc có vài khả lựa chọ thể tính không đơn định 43 44 11 Bài tập Một vài ứng dụng Cung cấp kiến thức tảng cho việc xây dựng ngơn ngữ lập trình (NNLT), trình dịch Dùng văn phạm để định nghĩa NNLT Dùng Accepter để định nghĩa vài thành phần NNLT Tìm Ngôn ngữ L1 bao gồm chuỗi từ khóa begin, end ngơn ngữ Pascal Các chuỗi biểu diễn cấu trúc lồng cặp từ khóa chương trình ngôn ngữ Pascal Tìm Ngôn ngữ L2 bao gồm tập danh hiệu Pascal Xây dựng phân tích từ vựng, phân tích cú pháp cho NNLT 45 46 Xây dựng văn phạm cho ngôn ngữ Xác định ngôn ngữ văn phạm Ngôn ngữ L1, L2 G1 có tập luật sinh S → aSbS | bSaS | λ L3 = {wwR | w ∈ {a,b}*} G2 có tập luật sinh: L4 = {anbmc E→E+T|T L5 = {anbn+mcm | n,m ≥ 0} n+m | n,m ≥ 0} T→T*F|F F → (E) | a | b 47 48 12 ... 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)... đổi Di chuyển (move): chuyển trạng thái ôtômát từ cấu hình sang cấu hình 41 42 Phân loại dựa vào kết xuất Ôtômát Phân loại dựa vào hoạt động Ôtômát Ôtômát đơn định (Deterministic Automata):