Bài giảng Lý thuyết tính toán: Bài 2 - Phạm Xuân Cường cung cấp cho học viên các kiến thức về ôtômat hữu hạn, biểu diễn hình học của Ôtômat hữu hạn; định nghĩa hình thức; thiết kế ôtômat hữu hạn; ngôn ngữ chính quy; toán tử chính quy; tính đóng của toán tử;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
LÝ THUYẾT TÍNH TỐN BÀI 2: ƠTƠMAT HỮU HẠN Phạm Xuân Cường Khoa Công nghệ thông tin cuongpx@tlu.edu.vn Nội dung giảng Ơtơmat hữu hạn Định nghĩa hình thức Thiết kế Ơtơmat hữu hạn Ngơn ngữ quy Tốn tử quy Ơtơmat hữu hạn Ơtơmat hữu hạn Ơtơmat hữu hạn (Finite State Machine - FSM hay Finite Automation) • Là mơ hình tính tốn đơn giản • Phù hợp với: - Các máy tính điều khiển nhỏ - Có số trạng thái hữu hạn nhỏ Ví dụ: Bộ điều khiển cửa trượt tự động Không Trước,Sau,Cả hai Trước,Sau Đóng Mở Khơng Biểu diễn hình học Ơtơmat hữu hạn 1 start q1 q2 q3 0,1 • Trạng thái bắt đầu: Biểu thị mũi tên vào • Trạng thái kết thúc: Biểu thị vịng trịn kép • Mũi tên từ trạng thái sang trạng thái khác gọi chuyển dịch • Thơng tin đầu chấp thuận bác bỏ Ứng dụng FSM • Tạo chuỗi tương ứng với mơ hình FSM • Nhận diện chuỗi có thỏa mãn mơ hình FSM hay khơng Ví dụ nhận diện chuỗi sau: - 11010101 → Chấp thuận/bác bỏ? - 100 → Chấp thuận/bác bỏ? - 110000 → Chấp thuận/bác bỏ? - 0100 → Chấp thuận/bác bỏ? - 101000 → Chấp thuận/bác bỏ? → Làm để biểu diễn chuỗi chấp thuận ngơn ngữ? Định nghĩa hình thức Định nghĩa hình thức • Ơtơmat hữu hạn ≡ (hay chiều) M = (Q, Σ, δ, q0 , F) Trong đó: - Q: Tập trạng thái (hữu hạn) - Σ: Bộ chữ, tập hữu hạn ký tự - δ: Hàm dịch chuyển δ: Q x Σ→ Q - q0 : Trạng thái bắt đầu (q0 ∈ Q) - F: Là tập trạng thái kết thúc (F ⊆ Q) Ví dụ Ơtơmat hữu hạn a start b 0 0 c d • δ: • Q: {a,b,c,d} Σ • q0 : a • F: {d} Trạng thái • Σ: {0,1} a b c d c d a b b a d c Ngôn ngữ máy M • Nếu A tập tất xâu mà máy M chấp nhận → A ngôn ngữ máy M L(M) = A • Máy M đốn nhận (recognizes) A • ///// Máy//// M////// chấp//////// thuận//////////// (accepts)/// A Do máy chấp thuận vài xâu ln đốn nhận ngơn ngữ • Nếu máy khơng chấp thuận xâu đốn nhận ngơn ngữ (Ngơn ngữ rỗng - Ø) Thiết kế Ơtơmat hữu hạn • Cho chữ Σ = {0,1} Làm để đoán nhận tất chuỗi khơng chứa chuỗi 0011? • Trước tiên, ta thử với toán đơn giản hơn: Làm để đốn nhận tất chuỗi có chứa chuỗi 0011? Thiết kế Ơtơmat hữu hạn M1 0,1 0 1 1 start M2 0,1 0 start Thiết kế Ơtơmat hữu hạn • Thuật ngữ: - Một máy trạng thái (FSM) chấp thuận chuỗi - Một máy trạng thái (FSM) đốn nhận ngơn ngữ • Ký hiệu: L(M1 ) = Ngơn ngữ mà máy M1 đốn nhận = Tập chuỗi xây dựng từ ký tự {0,1}* mà có chứa chuỗi 0011 chuỗi L(M2 ) = Tập chuỗi xây dựng từ ký tự {0,1}* mà khơng chứa chuỗi 0011 chuỗi • Bản chất ngơn ngữ: Tập → L(M1 ) = L(M2 ) 10 Ví dụ Ơtơmat hữu hạn b c start a d e • FSM đốn nhận chuỗi: 10, 01, 001, 0001, , 0+ • L = {w| w chuỗi 01,10 chuỗi có số liền sau số 0} • Các chuỗi sau điều xảy ra? - 111 - 101010 11 Điểm chết (Dead states) M = (Q, Σ, δ, q0 , F) b c 0,1 start a 0,1 dead 1 d 0,1 e • Để tránh điểm chết → δ cần phải định nghĩa hết trường hợp 12 Ngơn ngữ quy Ngơn ngữ quy • Cho Ơtơmat hữu hạn: M = (Q, Σ, δ, q0 , F) w = w1 w2 wn xâu wi ∈ Σ • M chấp thuận xâu w ⇔ ∃ dãy r0 , r2 , , rn−1 ∈ Q thỏa mãn điều kiện: - r0 = q0 - δ(ri ,wi+1 ) = ri+1 (0 ≤ i ≤ N) - rn ∈ F → Định nghĩa: Một ngôn ngữ gọi ngơn ngữ quy có Ơtơmat hữu hạn đốn nhận • Ngơn ngữ khơng coi ngơn ngữ quy? 13 Tốn tử quy Tốn tử quy Giả sử A, B ngơn ngữ Ta có tốn tử quy sau: • Hợp (Union): A ∪ B = { x | x ∈ A x ∈ B } • Ghép tiếp (Concatenate): A ◦ B = { xy | x ∈ A y ∈ B } • Sao (Closure): A* = {x1 x2 xk | k ≥ xi ∈ A } Ví dụ: Giả sử ta có chữ Σ = {a,b,c, ,z} A = {aa, b}, B = {x, yy} A ∪ B = {aa, b, x, yy} A ◦ B = { aax, aayy, bx, byy} A* = {ε, aa, b, aaaa, aab, baa, bb, aaaaaa, aaaab, aabaa, aabb, } 14 Tập đóng • Tập hợp A + Tốn tử ≡ Phần tử tập A → A tập đóng Định lý Lớp ngơn ngữ quy đóng toán tử hợp ⇔ Nếu A1 A2 ngơn ngữ quy A1 ∪ A2 ngơn ngữ quy Chứng minh Ý tưởng: - Giả sử M1 đoán nhận A1 , M2 đoán nhận A2 - Xây dựng M để đoán nhận A1 ∪ A2 → Chứng minh việc xây dựng 15 Tập đóng Chứng minh ĐL (chi tiết) • M1 = (Q1 ,Σ,δ1 ,q1 ,F1 ) đốn nhận A1 • M2 = (Q2 ,Σ,δ2 ,q2 ,F2 ) đốn nhận A2 • Xây dựng M = (Q,Σ,δ,q0 ,F) đoán nhận A1 ∪ A2 Trong đó: - Q = {(r1 ,r2 ) | r1 ∈ Q1 r2 ∈ Q2 } δ((r1 ,r2 ),a) = (δ1 (r1 ,a),δ2 (r2 ,a)) với (r1 ,r2 ) ∈ Q, a ∈ Σ q0 = (q1 ,q2 ) F = {(r1 ,r2 ) | r1 ∈ F1 r2 ∈ F2 } 16 Ví dụ tính đóng tốn tử start x 1 y start 0,1 M1 = ({x,y},{0,1},δ1 ,x,{y}) u 0 v M2 = ({u,v},{0,1},δ2 ,{u},{u}) M = M1 ∪ M2 ?? 17 Ví dụ tính đóng tốn tử 0 [x , u] start 1 [x , v ] [y , u] [y , v ] M = (Q,Σ,δ,q0 ,F) Q = ??? Σ= ??? δ= ??? q0 = ??? F = ??? 18 Tập đóng Định lý Lớp ngơn ngữ quy đóng tốn tử ghép tiếp ⇔ Nếu A1 A2 ngơn ngữ quy A1 ◦ A2 ngơn ngữ quy Chứng minh Ý tưởng: - Giả sử M1 đoán nhận A1 , M2 đoán nhận A2 - Xây dựng M để đoán nhận A1 ◦ A2 → Phần đầu đoán nhận A1 , phần sau đoán nhận A2 - Tuy nhiên, ta khơng biết xâu mà M đốn nhận bị cắt đâu → Làm để biết được? 19 Questions? 19 ... A1 • M2 = (Q2 ,Σ,? ?2 ,q2 ,F2 ) đốn nhận A2 • Xây dựng M = (Q,Σ,δ,q0 ,F) đốn nhận A1 ∪ A2 Trong đó: - Q = {(r1 ,r2 ) | r1 ∈ Q1 r2 ∈ Q2 } δ((r1 ,r2 ),a) = (δ1 (r1 ,a),? ?2 (r2 ,a)) với (r1 ,r2 ) ∈... = (q1 ,q2 ) F = {(r1 ,r2 ) | r1 ∈ F1 r2 ∈ F2 } 16 Ví dụ tính đóng tốn tử start x 1 y start 0,1 M1 = ({x,y},{0,1},δ1 ,x,{y}) u 0 v M2 = ({u,v},{0,1},? ?2 ,{u},{u}) M = M1 ∪ M2 ?? 17 Ví dụ tính đóng... đóng Định lý Lớp ngơn ngữ quy đóng tốn tử hợp ⇔ Nếu A1 A2 ngôn ngữ quy A1 ∪ A2 ngơn ngữ quy Chứng minh Ý tưởng: - Giả sử M1 đoán nhận A1 , M2 đoán nhận A2 - Xây dựng M để đoán nhận A1 ∪ A2 → Chứng