lý thuyết tính toán - bkhn - 3

31
1 Automata hữu hạn & Biểu thức chính quy Nội dung : Khái niệm DFA & NFA Sự tương đương giữa DFA & NFA Biểu thức chính quy Các tính chất của tập chính quy Chương 3 :

Upload: minh-le

Post on 02-Jul-2015

838 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Lý thuyết tính toán - BKHN - 3

1

Automata hữu hạn & Biểu thức chính quy

Nội dung:

• Khái niệm DFA & NFA

• Sự tương đương giữa DFA & NFA

• Biểu thức chính quy

• Các tính chất của tập chính quy

Chương 3:

Page 2: Lý thuyết tính toán - BKHN - 3

2

Phân loại FA

FA

(Finite Automata)

DFADeterministic

Finite Automata

NFANondeterministic

Finite Automata

Biểu thức chính quy

Page 3: Lý thuyết tính toán - BKHN - 3

3

Start1

1

0

0

0

0 1

1

a b

c

d

q1q0

q3q2

Ví dụ:Input

Bộ điều khiển

10100110

Q : tập hữu hạn các trạng thái (p, q…)Σ : bộ chữ cái nhập (a, b … ; w, x, y …)δ : hàm chuyển, ánh xạ: Q x Σ → Qq0 ∈ Q : trạng thái bắt đầu.F ⊆ Q : tập các trạng thái kết thúc.

M=(Q, Σ, δ, q0, F)

Trạng thái bắt đầu

Trạng thái kết thúc

xPhép chuyển trên nhãn x

Automata hữu hạn đơn định (DFA)

Page 4: Lý thuyết tính toán - BKHN - 3

4

Mở rộng hàm chuyển trạng thái

• δ(q, ε) = q• δ(q, wa) = δ( δ(q,w), a) với ∀ w, a

Ngôn ngữ được chấp nhận:L(M) = { x | δ( q0, x ) ∈ F }

Ngôn ngữ chính quyVí dụ: chuỗi nhập w=110101

• δ(q0, 1) = q1

• δ(q0, 11) = δ(q1, 1) = q0

• δ(q0, 110) = δ(q1, 10) = δ(q0, 0) = q2

• δ(q0, 1101) = δ(q1, 101) = δ(q0, 01) = δ(q2, 1) = q3

• δ(q0, 11010) = … = δ(q3, 0) = q1

• δ(q0, 110101) = … = δ(q1, 1) = q0 ∈ F

Page 5: Lý thuyết tính toán - BKHN - 3

5

Giải thuật hình thức

• Mục đích: kiểm tra một chuỗi nhập x có thuộc ngôn ngữ L(M) được chấp nhận bởi automata M.

• Input: chuỗi nhập x$• Output: câu trả lời ‘YES’ hoặc ‘NO’• Giải thuật:

q := q0 ;c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}While c <> $ do

beginq := δ(q, c);c := nextchar ;

endIf (q in F) then write("YES") else write("NO");

Page 6: Lý thuyết tính toán - BKHN - 3

6

Automata hữu hạn không đơn định (NFA)

Nhận xét: • Ứng với một trạng thái và một ký tự nhập, có thể có

không, một hoặc nhiều phép chuyển trạng thái.• DFA là một trường hợp đặc biệt của NFA

Start 0

1

1

0

10

q0 q3 q4

10

q1

q2

01

• Ví dụ: cho automata M (hình vẽ) và xét chuỗi nhập 01001

0

0

10010

1 0 0 1

1

q0 q0 q0 q0 q0 q0

q3 q1 q3 q3 q1

q4 q4

Page 7: Lý thuyết tính toán - BKHN - 3

7

Định nghĩa NFA

Chú ý: khái niệm δ(q, a) là tập hợp tất cả các trạng thái p sao cho có phép chuyển từ trạng thái q trên nhãn a.

Hàm chuyển trạng thái mở rộng:• δ(q, ε) = {q}• δ(q, wa) = { p | có một trạng thái r trong δ(q, w) mà p∈δ(r, a) }

= δ( δ(q,w), a)• δ(P, w) = ∪q∈P δ(q, w) với ∀P ⊆ Q

Q : tập hữu hạn các trạng thái.Σ : bộ chữ cái nhập.δ : hàm chuyển ánh xạ Q x Σ → 2 Q

q0 ∈ Q : trạng thái bắt đầu.F ⊆ Q : tập các trạng thái kết thúc.

M=(Q, Σ, δ, q0, F)

Page 8: Lý thuyết tính toán - BKHN - 3

8

Ví dụ: xét chuỗi nhập w=01001 và NFA đã cho ở trên• M( {q0, q1, q2, q3, q4}, {0, 1}, δ, q0, {q2, q4} )

{q4}{q4}q4

Ø{q4}q3

{q2}{q2}q2

{q2}Øq1

{q0,q1} {q0,q3} q0

10Trạng thái

Inputδ • δ(q0, 0) = {q0,q3}

• δ(q0, 01) = δ( δ(q0, 0), 1)

= δ({q0, q3},1) = δ(q0, 1) ∪ δ(q3, 1) = {q0, q1}

• δ(q0, 010) = {q0, q3}

• δ(q0, 0100) = {q0, q3, q4}

• δ(q0, 01001) = {q0, q1, q4}Do q4 ∈ F nên w=01001 ∈ L(M)

Ví dụ về NFA

Page 9: Lý thuyết tính toán - BKHN - 3

9

Sự tương đương giữa DFA & NFA

Định lý 1: Nếu L là tập được chấp nhận bởi một NFA thì tồn tại một DFA chấp nhận L.

Giả sử NFA M={Q, Σ, δ, q0, F} chấp nhận LTa xây dựng DFA M’={Q’, Σ, δ’, q0’, F’} chấp nhận L

• Q’ = 2Q . Một phần tử trong Q’ được ký hiệu là [q0, q1, …, qi] với q0, q1, …, qi ∈ Q

• q0’ = [q0]• F’ là tập hợp các trạng thái của Q’ có chứa ít nhất một

trạng thái kết thúc trong tập F của M• Hàm chuyển δ’([q1, q2,..., qi], a) = [p1, p2,..., pj] nếu và

chỉ nếu δ({q1, q2,..., qi }, a) = {p1, p2,..., pj}

Page 10: Lý thuyết tính toán - BKHN - 3

10

Ví dụ về sự tương đương giữa DFA & NFA

Ví dụ: NFA M ({q0, q1}, {0, 1}, δ, q0, {q1}) với hàm chuyểnδ(q0,0) = {q0, q1}, δ(q0,1) = {q1}, δ(q1,0) = ∅ , δ(q1,1) = {q0, q1}

Ta sẽ xây dựng DFA tương đương M’ (Q’, {0, 1}, δ’, [q0], F’)• Q’ = {∅ , [q0], [q1], [q0, q1]} • F’ = {[q1], [q0, q1]}• Hàm chuyển δ’

δ’(∅ , 0) = δ’(∅ , 1) = ∅ δ’([q0], 0) = [q0, q1] δ’([q0], 1) = [q1] δ’([q1], 0) = ∅ δ’([q1], 1) = [q0, q1] δ’([q0, q1], 0) = [q0, q1] δ’([q0, q1], 1) = [q0, q1]

Page 11: Lý thuyết tính toán - BKHN - 3

11

NFA với ε- dịch chuyển (NFAε)

Định nghĩa: NFAε M(Q, Σ, δ, q0, F)• δ : hàm chuyển ánh xạ Q x (Σ ∪ {ε}) → 2Q

• Khái niệm δ(q, a) là tập hợp các trạng thái p sao cho có phép chuyển nhãn a từ q tới p, với a ∈ (Σ ∪ {ε})

q0 q1 q2

ε

0 1 2

Start ε

Ví dụ: xây dựng NFA chấp nhận chuỗi 0*1*2*

q0 q1 q2

0, 1

0 1 2

Start 1, 2

0, 1, 2

Page 12: Lý thuyết tính toán - BKHN - 3

12

Mở rộng hàm chuyển trạng thái cho NFAε

Định nghĩa ε-CLOSURE:● ε-CLOSURE(q) = { p | có đường đi từ q tới p theo nhãn ε }● ε-CLOSURE(P) = ∪q∈P ε-CLOSURE(q)

Hàm chuyển trạng thái mở rộng: mở rộng δ thành δ*• δ* : Q x Σ* → 2Q

• δ*(q, w) = { p | có đường đi từ q tới p theo nhãn w, trên đường đi có thể chứa cạnh nhãn ε }

Ta có:• δ*(q, ε) = ε-CLOSURE(q)• δ*(q,a) = ε-CLOSURE(δ(δ*(q, ε),a))• δ*(q, wa) = ε-CLOSURE( δ( δ*(q, w), a) )

Cách khác: δ*(q, wa) = ε-CLOSURE(P) với P = { p | r ∈ δ*(q, w) và p ∈ δ(r, a) }

• δ*(R, w) = ∪q∈R δ*(q, w)

Page 13: Lý thuyết tính toán - BKHN - 3

13

Mở rộng hàm chuyển trạng thái cho NFAε

Ví dụ: q0 q1 q2

ε

0 1 2

Start ε

Xét chuỗi nhập w = 012 • δ*(q0, ε) = ε-CLOSURE(q0) = {q0, q1, q2}• δ*(q0, 0) = ε-CLOSURE(δ(δ*(q0, ε), 0))

= ε-CLOSURE(δ({q0, q1, q2}, 0)) = ε-CLOSURE(δ(q0, 0) ∪ δ(q1, 0) ∪ δ(q2, 0) ) = ε-CLOSURE( {q0} ∪ ∅ ∪ ∅ ) = ε-CLOSURE({q0}) = {q0, q1, q2}

• δ*(q0, 01) = ε-CLOSURE(δ(δ*(q0, 0), 1)) = ε-CLOSURE(δ({q0, q1, q2}, 1)) = ε-CLOSURE({q1})= {q1,q2}

• δ*(q0, 012) = ε-CLOSURE(δ(δ*(q0, 01), 2))= ε-CLOSURE(δ({q1, q2}, 2)) = ε-CLOSURE({q2}) = {q2}

• Do q2 ∈ F nên w ∈ L(M)

Page 14: Lý thuyết tính toán - BKHN - 3

14

Giải thuật hình thức cho NFAε

Mục đích: mô phỏng hoạt động của NFAεInput: chuỗi nhập x$Output: câu trả lời ‘YES’ (x được chấp nhận) hoặc ‘NO’Giải thuật:

q := ε-CLOSURE (q0) ;c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}While c <> $ do

beginq := ε-CLOSURE (δ(q, c));c := nextchar ;

endIf (q in F) then write("YES") else write("NO");

Page 15: Lý thuyết tính toán - BKHN - 3

15

Sự tương đương giữa NFAε và NFA

Định lý 2: nếu L được chấp nhận bởi một NFA có ε-dịch chuyển thì L cũng được chấp nhận bởi một NFA không có ε-dịch chuyển.

Giả sử: NFAε M(Q, Σ, δ, q0, F) chấp nhận LTa xây dựng: NFA M’={Q, Σ, δ’, q0, F’}Với:

• F’ = F ∪ q0 nếu ε-CLOSURE(q0) chứa một trạng thái thuộc F. Ngược lại, F’ = F

• δ’(q, a) = δ*(q, a)

Page 16: Lý thuyết tính toán - BKHN - 3

16

Ví dụ:

Xây dựng NFA tương đương M’={Q, Σ, δ’, q0, F’}• Q = {q0, q1, q2}• Σ = {0, 1, 2}• Trạng thái bắt đầu: q0

• F’ = {q0, q2}• Hàm chuyển δ’

{q2}∅∅q2

{q2}{q1, q2}∅q1

{q2}{q1, q2}{q0, q1, q2}q0

210Trạng thái

Inputsδ’

q0 q1 q20, 1

0 1 2

Start 1, 2

0, 1, 2

q0 q1 q2ε

0 1 2

Start ε

Sự tương đương giữa NFAε và NFA

Page 17: Lý thuyết tính toán - BKHN - 3

17

Xây dựng DFA từ NFA(ε)

Ví dụ: xây dựng DFA tương đương với NFAε sau:M = (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10})

a

b

ε

ε

ε

ε

εε

ε

ε

2 3

6 7 8 9 100 1

4 5

a b bStart

Ta xây dựng DFA M’= (Q’, Σ, δ’, q0’, F’) tương đương M• Trạng thái bắt đầu: q0’ ↔ ε-CLOSURE(q0) • F’ = { p | trong ký hiệu của p có chứa ít nhất một trạng

thái của F }• Xây dựng hàm chuyển δ’

Page 18: Lý thuyết tính toán - BKHN - 3

18

Giải thuật xây dựng hàm chuyển δ’

Giải thuật:

T := ε-CLOSURE (q0) ; T chưa được đánh dấu ;Thêm T vào tập các trạng thái Q’ của DFA ;

While Có một trạng thái T của DFA chưa được đánh dấu do Begin Đánh dấu T; { xét trạng thái T} For Với mỗi ký hiệu nhập a do begin U:= ε-closure(δ(T, a)) If U không có trong tập trạng thái Q’ của DFA then begin Thêm U vào tập các trạng thái Q’ của DFA ; Trạng thái U chưa được đánh dấu; δ[T, a] := U;{δ[T, a] là phần tử của bảng chuyển DFA} end; end; End;

Page 19: Lý thuyết tính toán - BKHN - 3

19

Xây dựng DFA từ NFA(ε)

● ε-CLOSURE(q0) = {0, 1, 2, 4, 7} → q0’ = [0, 1, 2, 4, 7] = A● ε-CLOSURE(δ(A, a)) = ε-CLOSURE({3, 8}) = {1, 2, 3, 4, 6,

7, 8} → B● ε-CLOSURE(δ(A, b)) = ε-CLOSURE({5}) = {1, 2, 4, 5, 6, 7}

→ C ● ε-CLOSURE(δ(B, a)) = ε-CLOSURE({3, 8}) → B● ε-CLOSURE(δ(B, b)) = ε-CLOSURE({5, 9}) = {1, 2, 4, 5, 6,

7, 9} → D● ε-CLOSURE(δ(C, a)) = ε-CLOSURE({3, 8}) → B● ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C ● ε-CLOSURE(δ(D, a)) = ε-CLOSURE({3, 8}) → B● ε-CLOSURE(δ(D, b)) = ε-CLOSURE({5,10}) = {1, 2, 4, 5,

6, 7, 10} → E● ε-CLOSURE(δ(E, a)) = ε-CLOSURE({3, 8}) → B● ε-CLOSURE(δ(E, b)) = ε-CLOSURE({5}) = → C

Page 20: Lý thuyết tính toán - BKHN - 3

20

• Bảng hàm chuyển

EA

a

a

aa

a

b

b

b

bb

B D

C

Start

CBE

EBD

CBC

DBB

CBA

ba

Ký hiệu nhậpTrạng thái

• Ký hiệu bắt đầu: q0’ = A (↔ ε-CLOSURE(q0) )• Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng

thái 10 ∈ F)

Xây dựng DFA từ NFA(ε)

Page 21: Lý thuyết tính toán - BKHN - 3

21

Biểu thức chính quy (RE)

Vài ví dụ:• 00 : là biểu thức chính quy biểu diễn tập {00} • (0+1)* : tập hợp tất cả các chuỗi số 0 và số 1, kể cả

chuỗi rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010 ... }• (0+1)*011 : ký hiệu cho tất cả các chuỗi 0, 1 tận cùng

bởi 011 = {011, 0011, 1011, 00011, 11011, ... }• (0+1)*00(0+1)* : tập hợp tất cả các chuỗi 0,1 có ít nhất

hai số 0 liên tiếp = {00, 000, 100, 0000, 0001, 1000, 1001, 011001, ... }

• (0+ ε)(1+10)* : tất cả các chuỗi không có hai số 0 liên tiếp = {ε, 0, 01, 010, 1, 10, 01010, 0111, ... }

• 0*1*2* : {ε, 0, 1, 2, 01, 02, 12, 012, 0012, 0112, ... } • 00*11*22* : tất cả các chuỗi trong tập 0*1*2* với ít nhất

một ký hiệu 0, 1 và 2 ↔ viết gọn thành 0+1+2+

Page 22: Lý thuyết tính toán - BKHN - 3

22

Biểu thức chính quy (RE)

Định nghĩa: cho Σ là một bộ chữ cái. BTCQ trên Σ là các tập hợp mà chúng mô tả được định nghĩa đệ quy như sau:● ∅ là BTCQ ký hiệu cho tập rỗng● ε là BTCQ ký hiệu cho tập {ε}● ∀a ∈ Σ, a là BTCQ ký hiệu cho tập {a} ● Nếu r và s là các BTCQ ký hiệu cho các tập hợp R và

S thì (r + s), (rs) và ( r*) là các BTCQ ký hiệu cho các tập hợp R ∪ S, RS và R* tương ứng

Thứ tự ưu tiên:Phép bao đóng > Phép nối kết > Phép hợp

Ví dụ:• Biểu thức ((0(1*)) + 1) có thể viết là 01*+1

Page 23: Lý thuyết tính toán - BKHN - 3

23

Tính chất đại số của BTCQ

Phép hợp:• r + ∅ = ∅ + r = r• r + r = r• r + s = s + r• (r + s) + t = r + (s + t) = r + s + t

Phép nối kết:• rε = εr = r• r∅ = ∅r = ∅• (r + s) t = rt + st• r (s + t) = rs + rt

Phép bao đóng:• ε* = ε• ∅* = ∅• r*r* = r*• (r*)* = r*• r* = ε + r + r2 + … + rk + …• r* = ε + r+ • (ε + r)+ = (ε + r)* = r*• r*r = r r* = r+

Tổng hợp:• (r* + s*)* = (r*s*)* = (r + s)*• (rs)*r = r(sr)*• (r*s)* r* = (r + s)*

Page 24: Lý thuyết tính toán - BKHN - 3

24

Sự tương đương giữa NFAε và BTCQ

Định lý 3: nếu r là BTCQ thì tồn tại một NFA với ε-dịch chuyển chấp nhận L(r)

Chứng minh: quy nạp theo số phép toán• Xét r không có phép toán nào

Startq0 q0 q0 qfqf

Start Start

r = ε r = ∅ r = a

a

Các NFAε cho các kết hợp đơn

• Xét r có i phép toán: r = r1 + r2, r = r1r2 hoặc r = r1* Xây dựng NFAε M1 = (Q1, Σ1, δ1, q1, {f1}) và M2 = (Q2,

Σ2, δ2, q2, {f2}) sao cho L(M1) = L(r1) và L(M2) = L(r2) Xây dựng NFAε M như sau:

Page 25: Lý thuyết tính toán - BKHN - 3

25

Sự tương đương giữa NFAε và BTCQ

q1 f1

f0

M1

q2 f2M2

q0

Startε

ε

ε

ε

εq1 f1M1 f0q0

ε

ε

ε

Start

• r = r1 + r2

• r = r1r2

• r = r1*

q2 f2M2q1 f1

M1Start ε

Page 26: Lý thuyết tính toán - BKHN - 3

26

Sự tương đương giữa NFAε và BTCQ

Ví dụ: xây dựng NFAε chấp nhận BTCQ r = 01* + 1• r có dạng: r = r1 + r2 với r1 = 01* và r2 = 1• r1 có dạng r1 = r3r4 với r3 = 0 và r4 = 1*• r4 có dạng r4 = r5* với r5 = 1

q1 q2

1Start

r2

q3 q4

0Start

r3

ε

q5 q6

1Start q7 q8

ε ε

εr4 = r5* = 1*

ε

ε

εq7 q5

1Start q3 q8

ε εq4

0q6

r1 = r3r4 = 01*

ε

ε

εq4 q7

Start q9q10ε

ε

q30 q5

q1 q2

q6 q81ε

1

ε

ε ε

r = r1 + r2 = 01* + 1

q5 q6

1Start

r5

Page 27: Lý thuyết tính toán - BKHN - 3

27

Sự tương đương giữa DFA và BTCQ

Định lý 4: Nếu L được chấp nhận bởi một DFA, thì L được ký hiệu bởi một BTCQ

Chứng minh:• L được chấp nhận bởi DFA M({q1, q2,..., qn}, Σ, δ, q1, F)• Đặt Rk

ij = {x | δ(qi, x) = qj và nếu δ(qi, y) = ql (y ⊂ x) thì l ≤ k}(hay Rk

ij là tập hợp tất cả các chuỗi làm cho automata đi từ trạng thái i đến trạng thái j mà không đi ngang qua trạng thái nào lớn hơn k)

• Định nghĩa đệ quy của Rkij :

Rkij = Rk-1

ik(Rk-1kk)*Rk-1

kj ∪ Rk-1ij

R0ij =

{a | δ(qi, a) = qj}, nếu i ≠ j{a | δ(qi, a) = qj} ∪ {ε}, nếu i = j

Page 28: Lý thuyết tính toán - BKHN - 3

28

Sự tương đương giữa DFA và BTCQ

• Ta sẽ chứng minh (quy nạp theo k) bổ đề sau: với mọi Rk

ij đều tồn tại một biểu thức chính quy ký hiệu cho Rkij .

k = 0: R0ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc ε

Giả sử ta có bổ đề trên đúng với k-1, tức là tồn tại BTCQ rk-1

lm sao cho L(rk-1lm) = Rk-1

lm

Vậy đối với Rkij ta có thể chọn BTCQ

rkij = (rk-1

ik)(rk-1kk)*(rk-1

kj) + rk-1ij

→ bổ đề đã được chứng minh● Ta có nhận xét:

L(M) = ∪qj ∈F Rn1j

● Vậy L có thể được ký hiệu bằng BTCQr = rn

1j1 + rn1j2 + … + rn

1jp

với F = {qj1, qj2, …, qjp}

Page 29: Lý thuyết tính toán - BKHN - 3

29

Sự tương đương giữa DFA và BTCQ

Ví dụ: viết BTCQ cho DFA

Ta cần viết biểu thức:r = r3

12 + r313

Ta có:• r3

12 = r213(r2

33)*r232 + r2

12

• r313 = r2

13(r233)*r2

33 + r213

1

1q1 q2 q3

0

0 0, 1

Start

Page 30: Lý thuyết tính toán - BKHN - 3

30

Thay vào và rút gọn, ta có:r = 0*1((0 + 1)0*1)* (ε + (0 + 1)(00)*) + 0(00)*

ε + (0 + 1)0*1εεrk33

(0 + 1)(00)*0 + 10 + 1rk32

(0 + 1)(00)*0∅∅rk31

0*11 + 011rk23

(00)*ε + 00εrk22

0(00)*00rk21

0*111rk13

0(00)*00rk12

(00)*εεrk11

k = 2k = 1k = 0

Sự tương đương giữa DFA và BTCQ

Page 31: Lý thuyết tính toán - BKHN - 3

31

Mối liên hệ giữa FA và BTCQ

Sơ đồ liên hệ:

DFA

NFAε

NFA

RE

Định lý 4 Định lý 2

Định lý 1

Định lý 3