Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
182 KB
Nội dung
Chương 8. ÔtômathữuhạnvàngônngữchínhquyChương 8 ôtômathữuhạnvàngônngữchínhquy I. ôtômathữuhạn (finite Automata – Fa) 1. Khái niệm ôtômatÔtômathữuhạn có thể được xem như một hệ hữuhạ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ônngữ : cho một xâu ω, hỏi ω ∈ L ? • hoặc sinh ngônngữ : 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ômathữuhạn là bộ M = <Σ, Q, δ, q 0 , F>, trong đó : − Σ là một tập hữuhạn khác rỗng các kí hiệu vào − Q là tập hữuhạn khác rỗng các trạng thái − q 0 ∈ 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 Σ → 2 Q thì ôtômat được gọi là ôtômat không đơn định (NFA) Hoạt động đoán nhận từ ω = x 1 x 2 … 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 q 0 và đầu đọc nhìn vào ô kí tự đầu tiên của xâu là x 1 . Trạng thái q 0 dưới tác động của x 1 sẽ được chuyển thành trạng thái q 1 = δ(q 0 , x 1 ) 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ự x 2 ôtômat sẽ chuyển từ trạng thái q 1 sang trạng thái q 2 = δ(q 1 , x 2 ) 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, x 1 ), x 2 ), … xn). Khi đó ω đoán nhận xâu ω khi và chỉ khi δ(q 0 , ω) ∈ F. Tập L(M) = {ω ∈ Σ* | δ(q 0 , ω) ∈ F} được gọi là tập ngônngữ đ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 Chương 8. Ôtômathữuhạnvàngônngữchínhquy 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 = Sq ∈ δ(q, ω[i]); Accepted = S ∩ F ≠ ∅; } 2. Phương pháp biểu diễn ôtômathữuhạ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 = {q 0 } Q A b C q 0 Q 1 q 1 q 3 q 1 Q 0 q 3 q 2 q 2 Q 3 q 2 q 1 q 3 Q 0 q 1 q 3 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 = {q 0 } Q A b C q 0 Q 1 ∅ { q 2 , q 3 } q 1 { q 0 , q 1 } q 2 ∅ q 2 q 3 ∅ ∅ q 3 { q 0 , q 2 } q 1 q 3 Cách thức đoán nhận các xâu aabcacaa, bcbabbbcca ? 2 Chương 8. Ôtômathữuhạnvàngônngữchínhquy đố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ônngữ L = {0 n 1 | n ≥ 0 } Ta xây dựng M = <Σ, Q, δ, q 0 , F> trong đó : − Σ = {0, 1 } − Q = {q 0 , q 1 } − F = {q 0 } − δ được cho bởi: δ(q 0 , 0) = q 0 và δ(q 0 , 1) = q 1 . Khi đó dễ dàng chứng minh được L(M) = {0 n 1 | n ≥ 0 }. Chú ý rằng δ không xác định với q 1 . Để 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ả q 2 và xác định thêm δ như sau : δ(q 1 , 0) = q 2 , δ(q 1 , 1) = q 2 , δ(q 2 , 0) = q 2 , δ(q 2 , 1) = q 2 (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 q 0 đế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ừ q 0 đế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ó : q 1 đạt được từ q 0 , q 3 đạt được từ q 2 , q 4 đạt được từ q 3 với nhãn λ và q 2 đạt được từ q 1 với nhãn a. Tương tự, dễ thấy các trạng thái q 2 , q 3 , q 4 là đạt được từ q 1 và cũng vậy từ q 0 với nhãn a. 3 q 0 q 1 q 2 q 3 q 4 λ λλ a Chương 8. Ôtômathữuhạnvàngônngữchínhquy Từ đó ta có thể mở rộng định nghĩa hàm chuyển trạng thái δ thành hàm δ ˆ sao cho δ ˆ (q 0 , a) = δ ˆ (q 1 , a) = {q 2 , q 3 , q 4 }, 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) = Sq )x,q( ∈ δ Định nghĩa tương tự với hàm δ ˆ : δ ˆ (S, x) = Sq )x,q( ˆ ∈ δ Ví dụ : Ta xét ví dụ trên với S = {q 1 , q 2 }. Khi đó : δ(S, a) = δ(q 1 , a) ∪ δ(q 2 , a) = {q 2 } ∪ ∅ = {q 2 } và δ ˆ (S, a) = δ ˆ (q 1 , a) ∪ δ ˆ (q 2 , a) = {q 2 , q 3 , q 4 } ∪ ∅ = {q 2 , q 3 , q 4 }. b. Hàm chuyển trạng thái δ ˆ 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ó : λ(q 0 ) = {q 0 , q 1 }, λ(q 1 ) = {q 1 }, λ(q 2 ) = {q 2 , q 3 , q 4 }, λ(q 3 ) = {q 3 , q 4 }, λ(q 4 ) = {q 4 }. Đị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) = Sq )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); 4 Chương 8. Ôtômathữuhạnvàngônngữchínhquy λ(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, x 1 ), x 2 ) …, xn), với ω = x 1 x 2 … xn − δ ˆ (S, x) = Sq )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 q 0 đến q ∈ F với nhãn ω, khi và chỉ khi δ ˆ (q 0 , ω) ∈ 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 := Sq ∈ δ ˆ (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ônngữ do ôtômat không đơn định đoán nhận được là rộng hơn lớp ngônngữ đ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ônngữ của 2 loại ôtômat này là như nhau, thể hiện qua định lý sau. 5 Chương 8. Ôtômathữuhạnvàngônngữchínhquy §Þnh lý 2 : Lớp ngônngữ đoán nhận được bởi ôtômat đơn định trùng với lớp ngônngữ đoán nhận được bởi ôtômat không đơn định. Chøng minh : Gọi lớp ngônngữ đoán nhận được bởi ôtômat đơn định là L(M) và lớp ngônngữ đ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, δ, q 0 , F> đoán nhận ngônngữ L = L(N). Ta xây dựng ôtômat đơn định M = <Σ’, Q’, δ’, q 0 ’, F’> cũng đoán nhận L như sau : − Σ’ = Σ − Q’ = 2 Q − q 0 ’ = { q 0 } − F’ = { q’ ∈ Q’ | q’ ∩ F ≠ ∅ } − δ’: Q’ x Σ → Q’, với δ’(q’, x) = 'qq )x,q( ∈ δ (chú ý : Q’ = 2 Q 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 = {q 0 , q 1 }, F = {q 1 } và hàm chuyển được cho trong bảng sau : Q a b q 0 { q 0 , q 1 } q 1 q 1 ∅ { q 0 , q 1 } Khi đó ôtômat đơn định M ứng với N được xây dựng như sau : − Σ’ = {a, b } − Q’ = { u 1 , u 2 , u 3 , u 4 }, trong đó u 1 = ∅, u 2 = {q 0 }, u 3 = {q 1 }, u 4 = Q = {q 0 , q 1 } − q 0 ’ = u 2 − F’ = {u 3 , u 4 } Và hàm δ’ được cho bởi bảng chuyển Q’ a b u 1 ∅ ∅ u 2 u 4 u 3 u 3 ∅ u 4 u 4 u 4 u 4 Khi đó, ta sẽ có L = L(N) = L(M). 6 Chương 8. Ôtômathữuhạnvàngônngữchínhquy 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, δ, q 0 , F> có cung chuyển λ ta xây dựng ôtômat đơn định M = <Σ’, Q’, δ’, q 0 ’, F’> cũng đoán nhận L như sau : − Σ’ = Σ − Q’ ⊆ 2 Q − q 0 ’ = λ(q 0 ) − 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 = λ(q 0 ) ∈ 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 q 2 q 3 q 0 q 1 q 6 q 7 q 8 q 9 q 10 q 4 q 5 λ λ λ λ λ λ a b ba Chương 8. Ôtômathữuhạnvàngônngữchínhquy Tập Q’ được xây dựng qua các bước : − q’ 0 = λ(q 0 ) = {q 0 , q 1 , q 2 , q 4 , q 7 } − δ ˆ (q’ 0 , a) = {q 1 , q 2 , q 3 , q 4 , q 6 , q 7 , q 8 } = q’ 1 − δ ˆ (q’ 0 , b) = {q 1 , q 2 , q 4 , q 5 , q 6 , q 7 } = q’ 2 − δ ˆ (q’ 1 , a) = {q 1 , q 2 , q 3 , q 4 , q 6 , q 7 , q 8 } = q’ 1 (loại) − δ ˆ (q’ 1 , b) = {q 1 , q 2 , q 4 , q 5 , q 6 , q 7 , q 9 } = q’ 3 − δ ˆ (q’ 2 , a) = {q 1 , q 2 , q 3 , q 4 , q 6 , q 7 , q 8 } = q’ 1 (loại) − δ ˆ (q’ 2 , b) = {q 1 , q 2 , q 4 , q 5 , q 6 , q 7 } = q’ 2 (loại) − δ ˆ (q’ 3 , a) = {q 1 , q 2 , q 3 , q 4 , q 6 , q 7 , q 8 } = q’ 1 (loại) − δ ˆ (q’ 3 , b) = {q 1 , q 2 , q 4 , q 5 , q 6 , q 7 , q 10 } = q’ 4 − δ ˆ (q’ 4 , a) = {q 1 , q 2 , q 3 , q 4 , q 6 , q 7 , q 8 } = q’ 1 (loại) − δ ˆ (q’ 4 , b) = {q 1 , q 2 , q 4 , q 5 , q 6 , q 7 } = q’ 2 (loại) Từ đó, có thể thấy F’ = {q’ 4 } và bảng chuyển của δ’ như sau : Q’ a b q’ 0 q’ 1 q’ 2 q’ 1 q’ 1 q’ 3 q’ 2 q’ 1 q’ 2 q’ 3 q’ 1 q’ 4 q’ 4 q’ 1 q’ 2 Trên cơ sở bảng chuyển ta dễ dàng vẽ được đồ thị của ôtômat đơn định M. II. Ngônngữvà biểu thức chínhquy 1. Ngônngữchínhquy Trong phần này ta sẽ đưa ra định nghĩa đệ qui của một lớp ngônngữ mà ta gọi là ngônngữchínhquy (thực chất là lớp ngônngữ đ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ônngữchínhquy trên Σ được định nghĩa đệ qui như sau : i. {λ} là ngônngữchínhquy trên Σ, ii. Các ngônngữ sơ cấp trên bảng chữ Σ (tức các tập ∅, {a} (a ∈ Σ)) là ngônngữchính 8 λ λ b Chương 8. Ôtômathữuhạnvàngônngữchínhquyquy trên Σ. iii. Nếu R, S là 2 ngônngữchínhquy trên Σ thì R ∪ S, R.S và R* cũng là các ngônngữchínhquy trên Σ. iv. Các ngônngữchínhquy 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ônngữchính quy. áp dụng các qui tắc trên ta có : L 1 = {10, 11} và L 2 = {011, 11} cũng là các ngônngữchính quy. Khi đó L 1 L 2 = {10011, 1011, 11011, 1111} và L 1 * = {10, 11}* = {λ, 10, 11, 1010, 1011, 1110, 1111, …} cũng là các ngônngữchính quy. VÝ dô 4 : Từ {a} và {b} là 2 ngônngữchính quy, ta có {anbm | n, m ≥ 1} cũng là ngônngữchính quy. Nhận xét : − Mọi ngônngữchínhquy trên bảng chữ Σ đều nhận được từ các ngônngữhữuhạn bằng cách áp dụng hữuhạn lần các phép toán : hợp, nhân ghép và lặp. − Lớp các ngônngữchínhquy 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ínhquy Để biểu diễn hữuhạn các ngônngữchínhquy 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ônngữ {λ} ii. ∅ là ngônngữchính quy, nó biểu diễn ngônngữ ∅. iii. Nếu a ∈ Σ, thì a là biểu thức chính quy, nó biểu diễn ngônngữ {a} iv. Nếu r và s là 2 biểu thức chínhquy trên Σ biểu diễn các ngônngữ 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ônngữchínhquy R ∪ S, R.S và R * . v. Các biểu thức chínhquy 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ônngữ {00}, (0+1)* biểu diễn ngônngữ {0, 1}* • ngônngữ {anbm | n, m ≥ 1} được biểu diễn bởi biểu thức chínhquy a*b* • ngônngữ {11ω | ω ∈ {0, 1}*} được biểu diễn bởi 11(0+1)* Đối với ngônngữ đượ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ônngữ trên Σ là chínhquy 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 Chương 8. Ôtômathữuhạnvàngônngữchínhquy III. Quan hệ giữa ôtômathữuhạnvà biểu thức chínhquy 1. Tính tương đương giữa ôtômathữuhạnvà biểu thức chínhquy Phần này ta sẽ chứng minh lớp ngônngữ đoán nhận được bởi ôtômathữuhạnvà sinh bởi biểu thức chínhquy là như nhau. §Þnh lý 4 r là một biểu thức chínhquy khi và chỉ khi có tồn tại một DFA đoán nhận ngônngữ sinh bởi biểu thức chínhquy đó. Chøng minh : − Thuật toán Thompson : Ví dụ : vẽ đồ hình đoán nhận ngônngữ sinh bởi 01*+1 − Bỏ qua 2. Tính đóng của ngônngữchínhquy §Þnh lý 5 Lớp các ngônngữchínhquy 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 : 10