Bài giảng Lý thuyết tính toán: Bài 02 - Nguyễn Ngọc Tú

43 17 0
Bài giảng Lý thuyết tính toán: Bài 02 - Nguyễn Ngọc Tú

Đ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

Automat hữu hạn (p01) là nội dung bài 2 thuộc Bài giảng Lý thuyết tính toán. Bài giảng hướng đến trình bày các vấn đề cơ bản về Accepter hữu hạn đơn định; Accepter hữu hạn không đơn định; sự tương đương giữa Accepter hữu hạn đơn định và Accepter hữu hạn không đơn định;...

LÝ THUYẾT TÍNH TỐN INTRODUCTION TO COMPUTATION THEORY (FORMAL LANGUAGES & AUTOMATA) Bài 02 Automat hữu hạn (p01) Sử dụng slides tác giả: Hồ Văn Quân + Nick Hopper TIN331 GV: Nguyễn Ngọc Tú Tu.NguyenNgoc@hoasen.edu.vn Nội dung     Accepter hữu hạn đơn định Accepter hữu hạn không đơn định Sự tương đương Accepter hữu hạn đơn định Accepter hữu hạn không đơn định Rút gọn số trạng thái Accepter hữu hạn đơn định – DFA Định nghĩa 2.1  Một accepter hữu hạn đơn định (deterministic finite state accepter) hay dfa định nghĩa năm M = (Q, Σ, δ, q0, F), tập hữu hạn trạng thái nội (internal states),  Σ tập hữu hạn ký hiệu gọi bảng chữ ngõ nhập (input alphabet),  δ: Q × Σ → Q HÀM chuyển trạng thái (transition function) Q Accepter hữu hạn đơn định – DFA  Để chuyển trạng thái ôtômát dựa vào trạng thái hành q ∈ Q vào kí hiệu nhập a ∈ Σ đọc được, chuyển sang trạng thái kế định nghĩa sẵn δ  q0 ∈ Q trạng thái khởi đầu (initial state),  F ⊆ Q tập trạng thái kết thúc (final states) (hay gọi trạng thái chấp nhận) ý: Ơtơmát hữu hạn khơng có nhớ so với mơ hình tổng qt  Chú Ví dụ  có hàm chuyển ơtơmát sau: δ(1,a)=2, δ(2,b)=2, δ(2,c)=2 b a c Hoạt động DFA  Hoạt động dfa  Tại thời điểm khởi đầu, giả thiết trạng thái khởi đầu q0, với cấu nhập (đầu đọc) kí hiệu bên trái chuỗi nhập  Trong suốt lần di chuyển, cấu nhập tiến phía phải kí hiệu, lần di chuyển lấy kí hiệu ngõ nhập  Khi gặp kí hiệu kết thúc chuỗi, chuỗi chấp nhận (accept) ôtômát vào trạng thái kết thúc Ngược lại có nghĩa chuỗi bị từ chối Đồ thị chuyển trạng thái  Để biểu diễn cách trực quan cho dfa người ta sử dụng đồ thị chuyển trạng thái Cách biểu diễn sau: Đỉnh biểu diễn trạng thái  Cạnh biểu diễn chuyển trạng thái  Nhãn đỉnh tên trạng thái  Nhãn cạnh giá trị kí hiệu nhập  Trạng thái khởi đầu nhận biết mũi tên vào không mang nhãn mà không xuất phát từ đỉnh  Các trạng thái kết thúc vẽ vịng trịn đơi  Ví dụ 01  Cho dfa sau = (Q, Σ, δ, q0, F)  Q = {q0, q1, q2}, Σ = {0, 1}, F = {q1},  δ cho M δ(q0, 0) = q0, δ(q1, 0) = q0, δ(q2, 0) = q2, δ(q0, 1) = q1, δ(q1, 1) = q2, δ(q2, 1) = q1, 1 q1 q0 q2 Hàm chuyển trạng thái mở rộng  Hàm chuyển trạng thái mở rộng δ* định nghĩa cách đệ qui sau  δ*(q, λ) = q,  δ*(q, wa) = δ(δ*(q, w), a), ∀ q ∈ Q, w ∈ Σ*, a ∈ Σ  Ví dụ  Nếu δ(q0, a) = q1, δ(q1, b) = q2,  Thì δ*(q0, ab) = q2 δ khơng có định nghĩa cho chuyển trạng thái rỗng, tức không định nghĩa cho δ(q, λ) Ngôn ngữ DFA  Định nghĩa 2.2 ngữ chấp nhận dfa M = (Q, Σ, δ, q0, F) tập tất chuỗi Σ chấp nhận M  L(M) = {w ∈ Σ*: δ*(q0, w) ∈ F}  Ngôn  Nhận xét:  L’(M)= {w ∈ Σ* : δ*(q0, w) ∉ F} Ex ans  Xây dựng dfa cách mô lại trình chấp nhận chuỗi nfa  δ*(q0, λ) = {q0}  δ*({q0}, a) = {q1, q2}  δ*({q1, q2}, a) = {q1, q2}  δ*({q0}, b) = ∅  δ*({q1, q2}, b) = {q0} a a {q0} b b ∅ a, b {q1, q2} Định lý tương đương  Định lý 2.2 L ngôn ngữ chấp nhận accepter hữu hạn không đơn định MN = (QN, Σ, δN, q0, FN), tồn accepter hữu hạn đơn định MD = (QD, Σ, δD, {q0}, FD) cho L = L(MD)  Cho  Thủ tục: nfa_to_dfa nfa MN = (QN, Σ, δN, q0, FN)  Output: ĐTCTT GD dfa MD  Input: Thủ tục: nfa_to_dfa        B1 Tạo đồ thị GD với đỉnh khởi đầu tập δN*(q0, λ) B2 Lặp lại bước B3 đến B6 khơng cịn cạnh thiếu B3 Lấy đỉnh {qi, qj, … , qk} GD mà có cạnh cịn chưa định nghĩa a ∈ Σ B4 Tính δN*({qi, qj, … , qk}, a) = {ql, qm, … , qn} B5 Tạo đỉnh cho GD có nhãn {ql, qm, … , qn} chưa tồn B6 Thêm vào GD cạnh từ {qi, qj, … , qk} đến {ql, qm, … , qn} gán nhãn cho a B7 Mỗi trạng thái GD mà nhãn chứa qf ∈ FN coi đỉnh kết thúc Ex a λ a,b q1 a b q0 λ q2 a q4 b b λ q0 q1 q1 q3 q1 q0 q2 q2 q1,q2 a, λ q3 a q3 q4 q4 q3 q3 q4 Bài tập – NFA  DFA NfaM1 NfaM2 b λ q0 q1 q3 q1 q1 q2 q2,q0 a q2 q1 q3 q0,q4 q3 q4 a NfaM3 b λ a b λ q0 q1,q3 q3 q3 q0 q1 q2 q1 q1 q2 q2 q0 q1 q1,q2 q3 q3 q0,q2 q4 q2 q3 q2,q3 q2 q1 q3 q4 q4 q3,q4 q4 q4 q4 F={q2} F={q4} q3 F={q0} Rút gọn DFA Rút gọn DFA  Hai trạng thái giống trạng thái p q dfa gọi không phân biệt (indistinguishable) hay giống với w ∈ ∑*  Hai w) ∈ F  δ*(q, w) ∉ F  δ*(q,  NẾU   δ*(p, w) ∈ F, δ*(p, w) ∉ F, tồn chuỗi w ∈ ∑* cho w) ∈ F δ*(p, w) ∉ F,  hay ngược lại p q gọi phân biệt (distinguishable) hay khác chuỗi w  δ*(q, Rút gọn DFA – Thủ tục đánh dấu    Xác định cặp trạng thái không giống Input: Các cặp trạng thái, gồm (|Q| × (|Q| -1)/2) cặp, dfa đầy đủ Output: Các cặp trạng thái đánh dấu phân biệt     B1 Loại bỏ tất TTKĐTĐ B2 Xét tất cặp trạng thái (p, q) Nếu p ∈ F q ∉ F hay ngược lại, đánh dấu cặp (p, q) phân biệt Các cặp trạng thái đánh dấu bước ghi đánh dấu bước số (gọi bước bản) Lặp lại bước B3 khơng cịn cặp khơng đánh dấu trước đánh dấu bước B3 Đối với cặp (p, q) chưa đánh dấu a ∈ ∑, tính δ(p, a) = pa δ(q, a) = qa Nếu cặp (pa, qa) đánh dấu phân biệt lần lặp trước đó, đánh dấu (p, q) phân biệt Các cặp đánh dấu bước ghi đánh dấu bước thứ i lần thứ i băng qua vòng lặp Rút gọn DFA – Thủ tục đánh dấu  Định lý 2.3  Thủ tục mark, áp dụng cho DFA đầy đủ M = (Q, ∑, δ, q0, F), kết thúc xác định tất trạng thái phân biệt  Bổ đề  Cặp trạng thái qi qj phân biệt chuỗi có độ dài n, có chuyển trạng thái  δ(qi, a) = qk δ(qj, a) = ql  với a ∈ ∑, qk ql cặp trạng thái phân biệt chuỗi có độ dài n-1 Rút gọn DFA – Thủ tục đánh dấu  Bổ đề băng qua vòng lặp bước j lần thứ n, thủ tục đánh dấu thêm tất cặp trạng thái phân biệt chuỗi có độ dài n mà chưa đánh dấu  Khi  Bổ đề  Nếu thủ tục dừng lại sau n lần băng qua vòng lặp bước 3, khơng có cặp trạng thái DFA mà phân biệt chuỗi có chiều dài lớn n Ví dụ q0 0 q2 0,1 q1 q3 1 q4 mark: (q0, q1) 1 (q0, q3) 1 (q1, q2) (q1, q4) 0 (q2, q4) 0 (q0, q2) 1 (q0, q4) 0 (q1, q3) (q2, q3) (q3, q4) 0 Ví dụ  Dùng thủ tục reduce dẫn đến ba tập trạng thái không phân biệt {q0}, {q1, q2, q3} {q4} từ ba trạng thái 0, 123 0,1 0 0,1 123       Input DFA M = (Q, , , q0, F), output DFA tối giản Dùng thủ tục mark để tìm cặp trạng thái phân biệt Từ tìm tập tất trạng thái không phân biệt {qi, qj, , qk}, {ql, qm, , qn}, Đối với tập {qi, qj, , qk} trạng thái không phân biệt vậy, tạo trạng thái gắn nhãn ij k cho Đối với qui tắc chuyển trạng thái M có dạng (qr, a) = qp, tìm tập mà qr qp thuộc Nếu qr  {qi, qj, , qk} qp {ql, qm, , qn} thêm vào qui tắc (ij k, a) = lm n Trạng thái khởi đầu trạng thái mà nhãn có chứa tập trạng thái kết thúc mà nhãn chứa i cho qi  F ... move(T, a), λ-closure(q), λ-closure(T) (λclosure đọc bao đóng-λ)  δ*(q, a) = λ-closure(move(λ-closure(q), a))  δ*(T, a) = λ-closure(move(λ-closure(T)  move(q, a Ví dụ 06  Hãy tính δ*(q0, a)... Hãy tính δ*(q0, a) λ q0 δ*(q0, a) = λclosure(move(λ-closure(q0), a))  λ-closure(q0) = {q0, q1, q2}  move({q0, q1, q2}, a) = {q4, q0, q3}  λ-closure({q4, q0, q3}) = {q4, q0, q3, q5, q1, q2}... thúc không Định nghĩa mở rộng cho nhóm trạng thái bẫy kết thúc hay không kết thúc Định lý, bảng truyền  Định lý 2.1   Cho M = (Q, Σ, δ, q0, F) accepter hữu hạn đơn định, GM đồ thị chuyển trạng

Ngày đăng: 08/05/2021, 18:17

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan