1. Trang chủ
  2. » Khoa Học Tự Nhiên

Chương 8: ôtômat hữu hạn và ngôn ngữ chính quy

14 4,8K 43
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Chương 8: Ôtômat hữu hạn và ngôn ngữ chính quy
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Khoa học Máy Tính
Thể loại Giáo trình
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 182 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khái niệm ôtômat Ôtômat hữu hạn có thể được xem như một hệ hữu hạn trạng thái hay một máy tự động bất kỳ hoạt động theo hướng : • hoặc đoán nhận ngôn ngữ : cho một xâu ω, hỏi ω ∈ L?. Ôt

Trang 1

Chương 8 ôtômat hữu hạn và ngôn ngữ chính quy

I ôtômat hữu hạn (finite Automata – Fa)

1 Khái niệm ôtômat

Ôtômat hữu hạn có thể được xem như một hệ hữu hạn trạng thái hay một máy tự động bất kỳ hoạt động theo hướng :

• hoặc đoán nhận ngôn ngữ : cho một xâu ω, hỏi ω ∈ L ?

• hoặc sinh ngôn ngữ : liệt kê mọi xâu ω của L

ở đây ta sẽ xét ôtômat theo hướng thứ nhất tức đoán nhận ngôn ngữ

1 Định nghĩa

Ôtômat hữu hạn là bộ M = <Σ, Q, δ, q0, F>, trong đó :

− Σ là một tập hữu hạn khác rỗng các kí hiệu vào

− Q là tập hữu hạn khác rỗng các trạng thái

− q0 ∈ Q được gọi là trạng thái ban đầu

− F ⊆ Q được gọi là tập trạng thái kết thúc

− δ được gọi là hàm chuyển có dạng :

1 Nếu δ : Q x Σ → Q thì ôtômat được gọi là ôtômat đơn định (DFA)

2 Nếu δ : Q x Σ → 2Q thì ôtômat được gọi là ôtômat không đơn định (NFA)

Hoạt động đoán nhận từ ω = x1x2 … xn của ôtômat có thể được mô tả như sau :

Khi bắt đầu làm việc máy ở trạng thái ban đầu q0 và đầu đọc nhìn vào ô kí tự đầu tiên của xâu là x1 Trạng thái q0 dưới tác động của x1 sẽ được chuyển thành trạng thái q1 = δ(q0, x1) và đầu đọc sẽ dịch chuyển sang ô kế tiếp Tiếp tục dưới tác động của kí tự x2 ôtômat sẽ chuyển từ trạng thái q1 sang trạng thái q2 = δ(q1, x2) và đầu đọc tiếp tục dịch chuyển Quá trình được lặp lại cho đến khi đầu đọc chuyển đến cuối xâu, khi đó dưới tác động của xn ôtômat sẽ chuyển từ trạng thái qn-1 sang trạng thái qn = δ(qn-1, xn) và ôtômat dừng Nếu qn ∈ F ta gọi ôtômat đoán nhận xâu ω và ngược lại

Một cách hình thức ta có thể mở rộng hàm δ trên xâu ω như :

δ(q, ω) = δ(… δ(δ(q, x1), x2), … xn) Khi đó ω đoán nhận xâu ω khi và chỉ khi δ(q0, ω) ∈ F

Tập L(M) = {ω ∈ Σ* | δ(q0, ω) ∈ F} được gọi là tập ngôn ngữ đoán nhận được bởi ôtômat M

2 Thuật toán đoán nhận

1 Với ôtômat đơn định

Boolean Accepted(M: DFA; ω : string) {

1

Trang 2

Var i : integer; q : Q;

q = q 0 ; For i =1 to length( ω ) do q = δ (q, ω [i]);

Accepted = q ∈ F;

}

2 Với ôtômat không đơn định

Boolean Accepted(M: NFA; ω : string) {

Var i: integer; q : Q;

S = {q 0 };

For i=1 to length( ω ) do S = 

S

q ∈ δ (q, ω [i]);

Accepted = S ∩ F ≠ ∅ ; }

2 Phương pháp biểu diễn ôtômat hữu hạn

Cho ôtômat thực chất là cho hàm chuyển của nó Hàm chuyển có thể được cho dưới dạng bảng chuyển hoặc dạng đồ thị

a Phương pháp dùng bảng chuyển

Là một bảng có các dòng là các trạng thái, cột là kí hiệu vào Mỗi ô giao nhau giữa dòng trạng thái qi và kí hiệu vào xj là trạng thái mới qij = δ(qi, xj) (qij có thể là tập trạng thái nếu ôtômat là không đơn định, tập này có thể rỗng)

VÝ dô 1 : Cho ôtômat đơn định M với F = {q0}

Cách thức đoán nhận các xâu aabcacaa, bcbabbbcca ?

VÝ dô 2 : Cho ôtômat không đơn định N với F = {q0}

Cách thức đoán nhận các xâu aabcacaa, bcbabbbcca ?

Trang 3

đối với ôtômat không đơn định để đoán nhận xâu ta phải vẽ cây đoán nhận.

VÝ dô 3 : Hãy xây dựng ôtômat không đơn định đoán nhận ngôn ngữ L = {0n1 | n ≥ 0 }

Ta xây dựng M = <Σ, Q, δ, q0, F> trong đó :

− Σ = {0, 1 }

− Q = {q0, q1 }

− F = {q0 }

− δ được cho bởi: δ(q0, 0) = q0 và δ(q0, 1) = q1

Khi đó dễ dàng chứng minh được L(M) = {0n1 | n ≥ 0 } Chú ý rằng δ không xác định với q1 Để hàm δ xác định hoàn toàn ta có thể đưa thêm vào Q một trạng thái giả q2 và xác định thêm δ như sau : δ(q1, 0) = q2 , δ(q1, 1) = q2 , δ(q2, 0) = q2 , δ(q2, 1) = q2 (hoặc bằng ∅) Như vậy, đối với ôtômat hàm δ có thể được xem là hàm xác định toàn phần

2 Phương pháp dùng đồ thị

Là một đa đồ thị định hướng có tập đỉnh là tập trạng thái, có mũi tên vào trạng thái ban đầu để kí hiệu điểm xuất phát, trạng thái kết thúc được đánh dấu đặc biệt, ví dụ khoanh bởi 2 vòng tròn Giữa 2 trạng thái bất kỳ qi và qj có một cung nối với nhãn x nếu δ(qi, x) = qj Ôtômat đoán nhận được xâu ω nếu có một đường đi với nhãn ω từ trạng thái ban đầu q0 đến một trong những trạng thái kết thúc của F

Ví dụ : về các ôtômat cho ở trên và cách đoán nhận các xâu aabcacaa, bcbabbbcca.

3 Ôtômat không đơn định với λ-cung (tham khảo thêm - viết lại)

Một ôtômat không đơn định có thể được mở rộng với các cung rỗng, tức các cung chuyển trạng thái với nhãn là kí tự rỗng λ Một phép chuyển δ(qi, λ) = qj, có nghĩa nếu ôtômat đang ở trạng thái

qi thì ngay lập tức nó có thể chuyển sang trạng thái qj mà không cần phải đọc kí hiệu vào

Tương tự, với ôtômat không đơn định đã được định nghĩa ở trên, ta nói ω là đoán nhận được bởi ôtômat M nếu trên đồ thị của M có tồn tại đường đi từ q0 đến q ∈ F với nhãn ω Hiển nhiên trong đường đi có thể có chứa các cung rỗng (tức nhãn λ)

a Tập trạng thái đạt được

Định nghĩa 1 : Cho q ∈ Q và x ∈ Σ, ta gọi q’ là trạng thái đạt được từ q với nhãn x nếu tồn tại dãy phép chuyển (tức đường đi) từ q đến q’ trong đó có duy nhất một phép chuyển với nhãn là x còn lại tất cả đều với nhãn λ

Ví dụ : Cho ôtômat với đồ thị chuyển như sau :

ta có :

q1 đạt được từ q0, q3 đạt được từ q2, q4 đạt được từ q3 với nhãn λ và q2 đạt được từ q1 với nhãn a Tương tự, dễ thấy các trạng thái q2, q3, q4 là đạt được từ q1 và cũng vậy từ q0 với nhãn a

3

q0 q1 q2 q3 q4λ a λ λ

Trang 4

Từ đó ta có thể mở rộng định nghĩa hàm chuyển trạng thái δ thành hàm δˆ sao cho δˆ(q0, a) = δˆ

(q1, a) = {q2, q3, q4}, có nghĩa q’ ∈ δˆ(q, a) nếu và chỉ nếu q’ ∈ δ(q, λaλ) với λ là xâu rỗng

Định nghĩa 2 : Cho S ⊆ Q và x ∈ Σ, ta gọi δ(S, x) là tập trạng thái đạt được từ tập trạng thái S với nhãn x và được định nghĩa :

δ(S, x) = q S

) x , q (

δ

Định nghĩa tương tự với hàm δˆ :

δˆ(S, x) = q S ˆ( q , x )

δ

Ví dụ : Ta xét ví dụ trên với S = {q1, q2} Khi đó :

δ(S, a) = δ(q1, a) ∪ δ(q2, a) = {q2} ∪ ∅ = {q2} và

δˆ(S, a) = δˆ(q1, a) ∪ δˆ(q2, a) = {q2, q3, q4} ∪ ∅ = {q2, q3, q4}

Phần trên ta đã đưa ra định nghĩa δˆ một cách trực quan Phần tiếp theo sau đây hàm chuyển trạng thái δ’ sẽ được định nghĩa một cách chặt chẽ hơn Trước hết ta xét khái niệm λ_bao đóng của một trạng thái q

Định nghĩa 1 : Một tập con trạng thái T được gọi là λ_bao đóng của q nếu mọi trạng thái của nó đều đạt được từ q qua dãy chuyển với nhãn λ, tức :

T = {q’ | q’ ∈ δ(q, λ) với λ ∈ Σ*}

(nên định nghĩa đệ quy ?)

Chú ý : hiển nhiên q cũng là trạng thái thuộc λ_bao đóng của nó, tức T chứa q Trường hợp ôtômat không chứa cung rỗng ta có λ_bao đóng của q chỉ chứa duy nhất trạng thái q, ∀q ∈ Q

Để đơn giản ta kí hiệu λ_bao đóng của q là λ(q)

Ví dụ : Với ví dụ ở mục a ta có :

λ(q0) = {q0, q1}, λ(q1) = {q1}, λ(q2) = {q2, q3, q4}, λ(q3) = {q3, q4}, λ(q4) = {q4}

Định nghĩa λ_bao đóng của tập trạng thái S cũng được mở rộng thành hợp của tất cả các λ_bao đóng của các trạng thái q trong S, tức :

λ(S) = q S

) q (

λ

Từ định nghĩa trên thuật toán tìm tập λ(S) với S ⊆ Q, có thể được xây dựng như sau :

Thuật toán tìm λ (S)

Procedure λ _closure(S)

{

Var stack : STACK;

push(S, stack);

Trang 5

λ (S) = S;

While !empty(stack) {

pop(stack, q);

For với mỗi q’ = δ (q, λ ) do

if q’ ∉ stack then {

push(q’, stack); // Bổ sung q’ vào stack

λ (S) = λ (S) ∪ {q’}; // Bổ sung q’ vào λ (S) }

} }

Định nghĩa 2 : Cho q ∈ Q, x ∈ Σ, hàm δˆ được định nghĩa như sau :

δ ˆ(q, x) = λ(δ(λ(q), x)) tức δˆ(q, x) là tập các trạng thái q’ sao cho có dãy phép chuyển (hay dãy các cung trên đồ thị của ôtômat) từ q đến q’, trong đó chỉ có duy nhất 1 cung với nhãn x, còn lại tất cả là các cung rỗng (có nhãn λ)

Tương tự, ta định nghĩa :

− δ ˆ(q, ω) = δ ˆ(… δ ˆ(δ ˆ (q, x1), x2) …, xn), với ω = x1x2 … xn

− δ ˆ (S, x) = q S

) x , q ( ˆ

δ , với S ⊆ Q

Từ định nghĩa trên ta dễ dàng chứng minh được định lý sau đây :

§Þnh lý 1 : ω ∈ Σ* là đoán nhận được bởi M, tức có đường đi từ trạng thái ban đầu q0 đến q

∈ F với nhãn ω, khi và chỉ khi δˆ (q0, ω) ∈ F

Trường hợp ôtômat không có cung rỗng, tức λ(q) = {q}, ∀q ∈ Q ta có hàm δˆ đồng nhất với δ Như vậy, về mặt tổng quát đối với ôtômat không đơn định (có hay không có cung rỗng), thuật toán đoán nhận có thể viết lại như sau :

Thuật toán đoán nhận với ôtômat không đơn định

Boolean Accepted(M: NFA; ω : string) {

Var i: integer; q : Q;

S := {q 0 };

For i:=1 to length( ω ) do S := 

S

q ∈ δˆ (q, ω [i]);

Accepted := S ∩ F ≠ ∅ ; }

4 Sự tương đương giữa ôtômat đơn định và không đơn định

Do định nghĩa ta có thể nghĩ rằng lớp các ngôn ngữ do ôtômat không đơn định đoán nhận được là rộng hơn lớp ngôn ngữ đoán nhận được bơỉ ôtômat đơn định Tuy nhiên, trên thực tế khả năng đoán nhận ngôn ngữ của 2 loại ôtômat này là như nhau, thể hiện qua định lý sau

5

Trang 6

§Þnh lý 2 : Lớp ngôn ngữ đoán nhận được bởi ôtômat đơn định trùng với lớp ngôn ngữ

đoán nhận được bởi ôtômat không đơn định

Chøng minh : Gọi lớp ngôn ngữ đoán nhận được bởi ôtômat đơn định là L(M) và lớp ngôn ngữ

đoán nhận được bởi ôtômat không đơn định là L(N) Việc chứng minh L(M) ⊆ L(N) là dễ dàng vì một ôtômat đơn định cũng có thể xem là ôtômat không đơn định Ta chứng minh vế ngược lại L(M) ⊆ L(N), bằng cách đưa ra các thuật toán xây dựng ôtômat đơn định cho từng trường hợp : ôtômat có và không có cung rỗng

a Ôtômat không có cung rỗng

Cho ôtômat không đơn định N = <Σ, Q, δ, q0, F> đoán nhận ngôn ngữ L = L(N) Ta xây dựng ôtômat đơn định M = <Σ’, Q’, δ’, q0’, F’> cũng đoán nhận L như sau :

− Σ’ = Σ

− Q’ = 2Q

− q0’ = { q0 }

− F’ = { q’ ∈ Q’ | q’ ∩ F ≠ ∅ }

− δ’: Q’ x Σ → Q’, với δ’(q’, x) = qq '

) x , q (

δ (chú ý : Q’ = 2Q và q’ ⊆ Q) Bằng xây dựng này ta thấy mọi xâu ω đoán nhận được bởi N cũng sẽ đoán nhận được bởi M, vì ta cũng có thể xây dựng đường đi tương tự trong ôtômat M mô phỏng bởi đường đi đoán nhận trong ôtômat N để đoán nhận xâu ω

VÝ dô 1 : Cho ôtômat không đơn định N với Σ = {a, b }, Q = {q0, q1 }, F = {q1} và hàm chuyển được cho trong bảng sau :

Khi đó ôtômat đơn định M ứng với N được xây dựng như sau :

− Σ’ = {a, b }

− Q’ = { u1, u2, u3, u4 }, trong đó u1 = ∅, u2 = {q0}, u3 = {q1}, u4 = Q = {q0, q1 }

− q0’ = u2

− F’ = {u3, u4 }

Và hàm δ’ được cho bởi bảng chuyển

Khi đó, ta sẽ có L = L(N) = L(M)

Trang 7

Trong thực hành ta sẽ chỉ xây dựng các cung đạt được như đối với ôtômat có cung rỗng.

b Ôtômat có cung rỗng

Đối với ôtômat N = <Σ, Q, δ, q0, F> có cung chuyển λ ta xây dựng ôtômat đơn định M = <Σ’, Q’, δ’, q0’, F’> cũng đoán nhận L như sau :

− Σ’ = Σ

− Q’ ⊆ 2Q

− q0’ = λ(q0)

− F’ = { q’ ∈ Q’ | q’ ∩ F ≠ ∅ }

− δ’ = δ ˆ

trong đó Q’ được xây dựng bởi thuật toán sau :

Procedure Build_DFA(N: NFA)

{

Var stack : STACK, q, q’ : 2 Q ; q’ = λ (q 0 ); push(q, stack); Q’ = {q’};

While !empty(stack) { pop(stack, q);

For với mỗi x ∈ Σ do { q’ = δ ˆ (q, x);

if q’ ∉ Q’ then {

push(q’, stack); // Bổ sung q’ vào stack Q’ = Q’ ∪ {q’}; // Bổ sung q’ vào Q’

} } } }

Về hoạt động của thuật toán có thể mô tả như sau :

− Trạng thái ban đầu q’0 = λ(q0) ∈ Q’

− Với mỗi x ∈ Σ, tính δˆ(q’0, x), và xem tập kết quả như một đỉnh mới nếu chưa thuộc Q’ thì bổ sung vào Q’ Lập lại quá trình cho các đỉnh vừa bổ sung Nếu không còn đỉnh mới

bổ sung thì dừng

Thuật toán sẽ dừng sau không quá 2|Q| bước

VÝ dô 2 : Cho ôtômat không đơn định với đồ thị chuyển như hình vẽ

7

q2 q3

q0 q1 q6 q7 q8 q9 q10

q4 q5 λ

λ

λ

λ

λ

λ a

a

Trang 8

Tập Q’ được xây dựng qua các bước :

− q’0 = λ(q0) = {q0, q1, q2, q4, q7}

− δˆ(q’0, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1

− δˆ(q’0, b) = {q1, q2, q4, q5, q6, q7} = q’2

− δ ˆ(q’1, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại)

− δˆ(q’1, b) = {q1, q2, q4, q5, q6, q7, q9} = q’3

− δ ˆ(q’2, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại)

− δˆ(q’2, b) = {q1, q2, q4, q5, q6, q7} = q’2 (loại)

− δ ˆ(q’3, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại)

− δˆ(q’3, b) = {q1, q2, q4, q5, q6, q7, q10} = q’4

− δ ˆ(q’4, a) = {q1, q2, q3, q4, q6, q7, q8} = q’1 (loại)

− δˆ(q’4, b) = {q1, q2, q4, q5, q6, q7} = q’2 (loại)

Từ đó, có thể thấy F’ = {q’4} và bảng chuyển của δ’ như sau :

Trên cơ sở bảng chuyển ta dễ dàng vẽ được đồ thị của ôtômat đơn định M

II Ngôn ngữ và biểu thức chính quy

1 Ngôn ngữ chính quy

Trong phần này ta sẽ đưa ra định nghĩa đệ qui của một lớp ngôn ngữ mà ta gọi là ngôn ngữ chính quy (thực chất là lớp ngôn ngữ đoán nhận được bởi văn phạm chính quy)

Định nghĩa 1 : Cho Σ là bảng chữ cái hữu hạn, khi đó ngôn ngữ chính quy trên Σ được định nghĩa

đệ qui như sau :

i {λ} là ngôn ngữ chính quy trên Σ,

ii Các ngôn ngữ sơ cấp trên bảng chữ Σ (tức các tập ∅, {a} (a ∈ Σ)) là ngôn ngữ chính

λ

λ b

Trang 9

quy trên Σ.

iii Nếu R, S là 2 ngôn ngữ chính quy trên Σ thì R ∪ S, R.S và R* cũng là các ngôn ngữ chính quy trên Σ

iv Các ngôn ngữ chính quy chỉ được tạo từ các qui tắc i., ii Và iii

VÝ dô 3 : Cho bảng chữ Σ = {0, 1} Khi đó {0}, {1} là các ngôn ngữ chính quy áp dụng các qui tắc trên ta có : L1 = {10, 11} và L2 = {011, 11} cũng là các ngôn ngữ chính quy Khi đó L1L2 = {10011,

1011, 11011, 1111} và L1* = {10, 11}* = {λ, 10, 11, 1010, 1011, 1110, 1111, …} cũng là các ngôn ngữ chính quy

VÝ dô 4 : Từ {a} và {b} là 2 ngôn ngữ chính quy, ta có {anbm | n, m ≥ 1} cũng là ngôn ngữ chính quy

Nhận xét :

− Mọi ngôn ngữ chính quy trên bảng chữ Σ đều nhận được từ các ngôn ngữ hữu hạn bằng cách áp dụng hữu hạn lần các phép toán : hợp, nhân ghép và lặp

− Lớp các ngôn ngữ chính quy là đóng đối với các phép toán hợp, nhân ghép và lặp

2 Biểu thức chính quy

Để biểu diễn hữu hạn các ngôn ngữ chính quy ta đưa ra biểu thức chính quy, được định nghĩa :

Định nghĩa 2 :

i λ là biểu thức chính quy, nó biểu diễn ngôn ngữ {λ}

ii ∅ là ngôn ngữ chính quy, nó biểu diễn ngôn ngữ ∅

iii Nếu a ∈ Σ, thì a là biểu thức chính quy, nó biểu diễn ngôn ngữ {a}

iv Nếu r và s là 2 biểu thức chính quy trên Σ biểu diễn các ngôn ngữ R, S tương ứng thì (r + s), (rs), (r*) cũng là các biểu thức chính quy, chúng biểu diễn lần lượt các ngôn ngữ chính quy R ∪ S, R.S và R*

v Các biểu thức chính quy chỉ được tạo từ các cách nêu trên

Thông thường, dựa vào mức độ ưu tiên (lặp, nhân ghép, cộng) của các phép toán, để gọn biểu thức

ta có thể bỏ bớt các dấu ngoặc

VÝ dô 5 :

• 00 biểu diễn ngôn ngữ {00}, (0+1)* biểu diễn ngôn ngữ {0, 1}*

• ngôn ngữ {anbm| n, m ≥ 1} được biểu diễn bởi biểu thức chính quy a*b*

• ngôn ngữ {11ω | ω ∈ {0, 1}*} được biểu diễn bởi 11(0+1)*

Đối với ngôn ngữ được biểu bởi r còn được kí hiệu L(r) Tuy nhiên trong trường hợp không gây nhầm lẫn, ta có thể dùng r để chỉ cả hai

§Þnh lý 3 : Một ngôn ngữ trên Σ là chính quy khi và chỉ khi nó được biểu diễn bởi một biểu thức chính quy

Chøng minh : Điều này là hiển nhiên suy từ định nghĩa

9

Trang 10

III Quan hệ giữa ôtômat hữu hạn và biểu thức chính quy

1 Tính tương đương giữa ôtômat hữu hạn và biểu thức chính quy

Phần này ta sẽ chứng minh lớp ngôn ngữ đoán nhận được bởi ôtômat hữu hạn và sinh bởi biểu thức chính quy là như nhau

§Þnh lý 4 r là một biểu thức chính quy khi và chỉ khi có tồn tại một DFA đoán nhận ngôn

ngữ sinh bởi biểu thức chính quy đó

Chøng minh :

− Thuật toán Thompson : Ví dụ : vẽ đồ hình đoán nhận ngôn ngữ sinh bởi 01*+1

2 Tính đóng của ngôn ngữ chính quy

§Þnh lý 5 Lớp các ngôn ngữ chính quy trên Σ là đóng đối với các phép toán : họp, giao, hiệu, nhân ghép, lấy phần bù, lặp và ảnh ngược

Chøng minh :

Trang 11

IV quan hệ giữa ôtômat hữu hạn và văn phạm chính quy

§Þnh lý 6 Tập ngôn ngữ đoán nhận được bởi ôtômat hữu hạn là trùng với tập ngôn ngữ

sinh bởi văn phạm chính quy

Chøng minh : Để chứng minh ta cho văn phạm G = <Σ, ∆, I, R> và xây dựng DFA M = <Σ, Q, δ, q0, F> đoán nhận L(G) và ngược lại cho DFA M, ta xây dựng văn phạm G sinh ra ngôn ngữ L(M)

i Cho ngôn ngữ G = <Σ, ∆, I, R>, đầu tiên ta xây dựng NFA M = <Σ, Q, δ, q0, F> như sau :

ΣM = ΣG

Q = ∆ ∪ F {giả thiết F ∉ ∆}

q0 = I

FM = {F}

Hàm chuyển δ được xác định (A  → a B kí hiệu cho cung từ A sang B với nhãn a)

− Tương ứng với luật A → aB ta xây dựng cung A  → a B

− Tương ứng với luật A → a ta xây dựng cung A  → a F với nhãn a (cả a = λ)

Có thể dễ dàng chứng minh được L(G) = L(M), và từ đó xây dựng lại M thành DFA

ii Cho M là DFA G được xây dựng như sau :

ΣG = ΣM

∆ = Q

I = q0

Tập qui tắc R được xác định :

− Tương ứng với cung A  → a B (B ≠ F) ta xây dựng luật A → aB

− Tương ứng với cung A  → a F ta xây dựng luật A → a nếu F không có cung

ra, nếu F có cung ra ta xây dựng luật A → aF và bổ sung thêm luật F → λ

VÝ dô 6 :

− Cho văn phạm G với R = {I → aI | aA, A → bA | b}, L(G) = {anbm | n, m ≥ 1}

NFA M có các cung : I  → a I, I  → a A, A   → b A và A   → b F Với đỉnh bắt đầu là I và tập đỉnh kết thúc là {F}

11

Ngày đăng: 06/09/2013, 10:50

HÌNH ẢNH LIÊN QUAN

Cho ôtômat thực chất là cho hàm chuyển của nó. Hàm chuyển có thể được cho dưới dạng bảng chuyển hoặc dạng đồ thị. - Chương 8: ôtômat hữu hạn và ngôn ngữ chính quy
ho ôtômat thực chất là cho hàm chuyển của nó. Hàm chuyển có thể được cho dưới dạng bảng chuyển hoặc dạng đồ thị (Trang 2)
a. Phương pháp dùng bảng chuyển - Chương 8: ôtômat hữu hạn và ngôn ngữ chính quy
a. Phương pháp dùng bảng chuyển (Trang 2)
VÝ dô 2: Cho ôtômat không đơn định với đồ thị chuyển như hình vẽ - Chương 8: ôtômat hữu hạn và ngôn ngữ chính quy
d ô 2: Cho ôtômat không đơn định với đồ thị chuyển như hình vẽ (Trang 7)
Từ đó, có thể thấy F’ = {q’4} và bảng chuyển của δ’ như sau : - Chương 8: ôtômat hữu hạn và ngôn ngữ chính quy
c ó thể thấy F’ = {q’4} và bảng chuyển của δ’ như sau : (Trang 8)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w