Tải bản đầy đủ (.pdf) (28 trang)

Một số tính chất của ngôn ngữ chính quy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (539.31 KB, 28 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
KHOA TOÁN

---------------

BÙI THỊ MAI

MỘT SỐ TÍNH CHẤT CỦA
NGÔN NGỮ CHÍNH QUY

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Chuyên ngành: Toán ứng dụng

HÀ NỘI – 2017


TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
KHOA TOÁN

---------------

BÙI THỊ MAI

MỘT SỐ TÍNH CHẤT CỦA
NGÔN NGỮ CHÍNH QUY
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Chuyên ngành: Toán ứng dụng
Người hướng dẫn khoa học

TS. KIỀU VĂN HƯNG


HÀ NỘI – 2017


LỜI CẢM ƠN
Để hoàn thành khóa luận tốt nghiệp này, em xin bày tỏ lòng biết ơn chân
thành tới các thầy giáo và cô giáo trong Khoa Toán – Trường Đại học Sư phạm
Hà Nội 2, đã tận tình giúp đỡ chỉ bảo trong suốt thời gian em theo học tại khoa
và trong thời gian làm khóa luận.
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc tới TS. Kiều Văn Hưng –
người thầy đã trực tiếp hướng dẫn em, luôn tận tâm chỉ bảo và định hướng cho
em trong suốt quá trình làm khóa luận để em có được kết quả như ngày hôm
nay.
Mặc dù đã có rất nhiều cố gắng, song thời gian và kinh nghiệm bản thân
còn nhiều hạn chế nên khóa luận không thể tránh khỏi những thiếu sót rất mong
được sự đóng góp ý kiến của các thầy cô giáo, các bạn sinh viên và bạn đọc.
Em xin chân thành cảm ơn.
Hà Nội,ngày 24 tháng 04 năm 2017

Sinh viên

Bùi Thị Mai


LỜI CAM ĐOAN

Khóa luận này là kết quả nghiên cứu của bản thân em dưới sự hướng dẫn
tận tình của thầy giáo TS.Kiều Văn Hưng.
Trong khi nghiên cứu hoàn thành đề tài nghiên cứu này em đã tham khảo
một số tài liệu đã ghi trong phần tài liệu tham khảo.
Em xin khẳng định kết quả của đề tài “ Một số tính chất của ngôn ngữ

chính quy” là kết quả của việc nghiên cứu , học tập và nỗ lực của bản thân,
không có sự trùng lặp với các kết quả của đề tài khác. Nếu sai em xin chịu hoàn
toàn trách nhiệm.
Hà Nội,ngày 24 tháng 04 năm 2017
Sinh viên

Bùi Thị Mai


MỤC LỤC

LỜI MỞ ĐẦU .........................................................................................1
CHƯƠNG 1. NGÔN NGỮ CHÍNH QUY VÀ BIỂU THỨC CHÍNH
QUY .......................................................................................................3
1.1. Định nghĩa ngôn ngữ chính quy và biểu thức chính quy. .....................3
1.2. Sự liên hệ giữa otomat và ngôn ngữ chính quy ...................................6
1.3 Điều kiện cần của ngôn ngữ chính quy .............................................. 10
1.3.1 Otomat tối tiểu .............................................................................. 10
1.3.2. Điều kiện cần của ngôn ngữ chính quy .......................................... 12
CHƯƠNG 2. TÍNH CHẤT CỦA NGÔN NGỮ CHÍNH QUY ................. 17
2.1. Đóng đối với các phép toán tập hợp đơn giản ................................... 17
2.2. Đóng đối với các phép toán khác ..................................................... 19
KẾT LUẬN CHUNG ............................................................................ 22
TÀI LIỆU THAM KHẢO ...................................................................... 23


LỜI MỞ ĐẦU

Ngôn ngữ là một phương tiện để giao tiếp, sự giao tiếp có thể hiểu là giao
tiếp giữa con người với nhau, giao tiếp giữa người với máy hay giao tiếp giữa

máy với máy. Nếu như ngôn ngữ mà con người có thể giao tiếp được với nhau
được gọi là ngôn ngữ tự nhiên , thì ngôn ngữ mà chúng ta vẫn thường sử dụng
để giao tiếp với máy, hay giữa máy với máy được gọi là ngôn ngữ hình thức.
Con người muốn máy tính thực hiện công việc phải viết các yêu cầu đưa cho
máy bằng ngôn ngữ máy hiểu được. Việc viết các yêu cầu như thế gọi là lập
trình. Ngôn ngữ dùng để lập trình được gọi là ngôn ngữ lập trình. Các ngôn ngữ
lập trình đều là ngôn ngữ hình thức. Trong đó, ngôn ngữ chính quy là một nội
dung khá mới mẻ giúp chúng ta hiểu sâu hơn về cấu trúc ngôn ngữ lập trình, đặc
biệt nội dung Một số tính chất của ngôn ngữ chính quy là một nội dung khá hay
với em.
Xuất phát từ sự yêu thích đối với chuyên ngành Toán Ứng dụng và lòng
đam mê nghiên cứu khoa học, em đã chọn đề tài Một số tính chất của ngôn
ngữ chính quy để làm nội dung nghiên cứu khóa luận tốt nghiệp.
Khóa luận của em gồm 2 chương.
Chương 1 : “ Ngôn ngữ chính quy và biểu thức chính quy ” sẽ định nghĩa
các ngôn ngữ chính quy trực tiếp từ các khái niệm về ngôn ngữ. Đồng thời với
các ngôn ngữ chính quy, chúng ta đưa ra khái niệm về biểu thức chính quy , là
công cụ để biểu diễn các ngôn ngữ chính quy.
Chương 2 : “ Tính chất của ngôn ngữ chính quy” nêu ra các ngôn ngữ
chính quy và các ví dụ minh họa để chúng ta thấy rằng ngôn ngữ chính quy cũng
có các tính chất đặc trưng.
Tác giả luận văn chân thành cảm ơn TS.Kiều Văn Hưng đã tận tình hướng
dẫn tác giả đọc các tài liệu và tập dượt nghiên cứu.

1


Tác giả chân thành cảm ơn các thầy cô giáo Khoa Toán trường Đại học
Sư phạm Hà Nội 2 , đặc biệt là tổ Toán ứng dụng , đã tạo điều kiện thuận lợi cho
tác giải trong quá trình học Đại học và thực hiện bản khóa luận này.


2


CHƯƠNG 1
NGÔN NGỮ CHÍNH QUY VÀ BIỂU THỨC CHÍNH QUY
Trong chương này, chúng ta sẽ định nghĩa các ngôn ngữ chính quy trực
tiếp từ các khái niệm về ngôn ngữ, ta cũng sẽ chỉ ra rằng các định nghĩa này là
tương đương. Đồng thời với các ngôn ngữ chính quy, chúng ta đưa ra các khái
niệm về biểu thức chính quy, là công cụ để biểu diễn ngôn ngữ chính quy.
1.1. Định nghĩa ngôn ngữ chính quy và biểu thức chính quy.
Định nghĩa 1.1
Cho bảng chữ cái  = { a1 , a2 ,..., an }, khi đó ngôn ngữ chính quy (regular
languages) được định nghĩa quy đệ như sau:
+,

Các ngôn ngữ  và {ai } ( i = 1, 2, …,n) được gọi là các ngôn ngữ chính

quy trên bảng chữ cái .
+, Nếu R và S là hai ngôn ngữ chính quy trên bảng chữ cái  thì R  S;
R.S; R+(hay S+) là các ngôn ngữ chính quy trên bảng chữ cái .
+, Không có các ngôn ngữ chính quy nào khác trên bảng chữ cái  ngoài
các ngôn ngữ chính quy được định nghĩa như trên.
Định lý 1.1
Mọi ngôn ngữ chính quy trên bảng chữ cái  đều nhận được từ các ngôn ngữ
hữu hạn bằng cách áp dụng một số hữu hạn lần các phép toán hợp, nhân ghép và
phép lặp.
Để diễn đạt các ngôn ngữ chính quy ,ta đưa vào khái niệm biểu thức chính quy ,
được định nghĩa như sau:
Định nghĩa 1.2

Cho bảng chữ cái  = { a1 , a2 ,..., an }, khi đó biểu thức chính quy được định nghĩa
như sau:

3


1,  và a ( với a  ) là các biểu thức chính quy trên bảng chữ cái  biểu
diễn ngôn ngữ  và ngôn ngữ {a}.
2, Nếu r và s là hai biểu thức chính quy biểu diễn các ngôn ngữ chính quy
R và S trên bảng chữ cái  thì:
+, r + s là biểu thức chính quy trên bảng chữ cái  biểu diễn ngôn ngữ R
 S.
+, r.s là biểu thức chính quy trên bảng chữ cái  biểu diễn ngôn ngữ R.S.
+, r+ (hay s +) là biểu thức chính quy trên bảng chữ cái  biểu diễn ngôn
ngữ R+ (hay R+).
3, Không có các biểu thức chính quy nào khác trên bảng chữ cái  ngoài
các biểu thức chính quy được định nghĩa như trên.
Chú ý:
Trong biểu thức chính quy, ta có thể bỏ các dấu ngoặc và quy ước thứ tự thực
hiện các phép tính là phép lặp , phép ghép, phép hợp. Chẳng hạn biểu thức chính
quy ab *a + ba thay cho biểu thức (((a(b *))a)+(ba). Ngoài ra nếu không sợ nhầm
lẫn ta có thể sử dụng kí hiệu a thay cho biểu thức chính quy a với mỗi a  .
Định nghĩa 1.2
Hai biểu thức chính quy r và s gọi là tương đương, kí hiệu r = s, nếu chúng biểu
diễn cùng một ngôn ngữ.
Với r, s, t là các biểu thức chính quy trên bảng chữ cái  ta có các kết quả sau:
1, r + s = s + r
2, (r + s ) + t = r + (s + t )
3, r + r = r’
4, (rs)t = r(st)

5, r( s + t ) = rs + rt, (s + t)r = sr + tr
6, * = ε

4


7, (r*)* = r*
8, rr* + ε = r*
9, (r*s*)* = (r + s)*
Định lí 1.3
Cho L là một ngôn ngữ trên bảng chữ cái . Khi đó L là một ngôn ngữ
chính quy khi và chỉ khi tồn tại một biểu thức chính quy trên  biểu diễn L.
Chứng minh:
Giả sử tồn tại một biểu thức chính quy trên bảng chữ cái  = { a1 , a2 ,..., an
} biểu diễn L. Theo định nghĩa biểu thức chính quy thì L là tập hợp được tạo
thành từ các tập cơ sở {} , {ε} , { a1 } ,…, { an } bằng việc áp dụng một số hữu
hạn các phép hợp, lặp, ghép. Vì các tập cơ sở trên là ngôn ngữ chính quy và hợp,
ghép, lặp của một số hữu hạn của chúng cũng là ngôn ngữ chính quy . Do đó L
là một ngôn ngữ chính quy.
Giả sử L là một ngôn ngữ chính quy trên bảng chữ cái . Khi đó L = T(A), với
A =< Q, , δ, q0, F >, ω  * là một otomat hữu hạn đơn định .
Giả sử Q = { q1 , q2 ,..., qn } . Kí hiệu Ryk là tập hợp tất cả các từ mà dưới tác động
của chúng, otomat A chuyển từ trạng thái qi đến qj , thêm vào đó các trạng thái
mà A đi qua có chỉ số không vượt quá k. Trên đồ thị chuyển của A , Ryk là tập
hợp các từ ứng với các đường đi từ qi đến qj không đi qua .
Ví dụ 1.1
Xác định ngôn ngữ chính quy được biểu diễn bởi biểu thức r = ( 01* + 02)1.
Ta có
r = ( 01* + 02)1 = 01*1 + 021,
vậy ngôn ngữ chính quy biểu diễn bởi r là

L(r) = L(01*1 + 021) = L(01*1)  L(021) = { 01n , 021 | n  1 }

5


1.2. Sự liên hệ giữa otomat và ngôn ngữ chính quy
Định lý 1.4
Nếu L là một ngôn ngữ chính quy thì tồn tại một otomat hữu hạn không đơn
định A đoán nhận L, tức là L = T(A).
Chứng minh :
Giả sử L là ngôn ngữ sinh bởi văn phạm chính quy G = (, , S, P), tức là L =
L(G). Xét otomat hữu hạn không đơn định A = <Q, , δ, q0, F> trong đó:
+ Q =   {E}, với E là kí hiệu mới và E   
+ q0 = S
+ F = {E} nếu quy tắc S → ε P và F = {E, S} nếu S → ε  P
+ A,  a   ta đặt δ(A, a) = {B  | A → aB  P}  {E | A → a 
P} và δ(E, a) = .
Ta chứng minh L = T(A).
+, Lấy ω  L:
Nếu ω = ε : Trong văn phạm G có quy tắc S → ε  P, do đó S  F. Trong trường
hợp này δ(S, ε) = {S} nên ε  T(A).
Nếu ω = a1a2 ...an ≠ ε : Ta có suy dẫn S ├ a1 A1 ├ a1a2 A2 ├…├ a1a2 ...an1 An1 ├
a1...an1an

. Do đó tồn tại dãy quy tắc S → a1 A1 , A1 → a2 A2 ,…, An1 → an trong P.

từ định nghĩa của δ ta có A1   (S , a1 ) , A2   ( A1 , a2 ),…, An1   ( An2 , an1
), E   ( An1an ). Như vậy ,E   (S, a1a2 ...an ) hay ω  T(A). Vậy L  T(A).
+, Lấy ω  T(A):
Nếu ω = ε: δ(S, ε)  F ≠  hay S  F, vậy có qui tắc S → ε  P ,do đó ε  L(G)

Nếu ω = a1a2 ...an ≠ ε : δ(S, ε)  F ≠  với ω ≠ ε hay E  δ(S, ε), do đó tồn tại
các trạng thái A1 , A2 ,..., An1   sao cho A1   (S, a1 ), A2   ( A1 , a2 ),…, An1 
 ( An2 , an1 ),E   ( An1an )Từ đó ta có S → a1 A1 , A1 → a2 A2 ,…, An 1 → an  P

6


hay trong G có một suy dẫn là S ├ a1 A1 ├ a1a2 A2 ├…├ a1a2 ...an1 An1 ├ a1...an1an =
ω.Vì vậy ω  L. Hay T(A)  L.
Vậy ta đã chứng minh được L =T(A), tức là tồn tại một otomat hữu hạn không
đơn định đoán nhận L.
Ví dụ 1.2
Cho ngôn ngữ L = { ωa b n ab| n ≥ 0, ω  {a, b}*}. Ta có L = L(G) trong đó G =
<{a, b}, {S, A, B}, S, {S → aS, S → bS, S → aA, A → bA, A → aB, B → b}>
là văn phạm chính quy.
Xây dựng otomat hữu hạn không đơn định A = <{ S, A, B, E}, {a, b}, δ, S, {E}>,
trong đó δ(S,a) = {S, A}, δ(S,b) = {S}, δ(A,a) = {B}, δ(A,b) = {A}, δ(B,a) =,
δ(B,b) = {E}, δ(E,a) =  , δ(E,b) = . Đồ thị chuyển của A được cho trong hình
1.1.
a

b
a

b

a

S


B

A

E

b
Hình 1.1. Đồ thị chuyển của otomat A
Theo định lý trên, otomat A đoán nhận ngôn ngữ chính quy L, thật vậy ta có:
T(A) = { ωa b n ab| n ≥ 0, ω  {a, b}*} = L
Định lý 1.5
Nếu L là ngôn ngữ đoán nhận bởi một otomat hữu hạn đơn định thì L là
một ngôn ngữ chính quy.
Chứng minh :
Giả sử L = T(M), với M = < Q, , δ, qo, F > là một otomat hữu hạn đơn

7


định. Xét văn phạm G = ( , Q, qo, P), trong đó P = {q →ap| δ(q,a) = p}  {q
→a| δ(q,a) = p  F}. Khi đó G là một văn phạm chính quy.
Ta chứng minh L(G) = L, với giả thiết ε  L.
+, Lấy ω = a1a2 ...an  L(G), ω ≠ ε, trong G tồn tại suy dẫn q0 ╞ ω hay q 0 ├ a1q1 ├
a1a2 q2 ├ a1a2 ...an1qn1

Do đó q 0 → a1q1 ,
q0 , a1

├ a1...an1an = ω.


q1  a2 q2, q1  a2 q2,..., qn 1  an 1qn 1, qn 1  an

), p2 =  (q1 , a2 ) ,…, qn1 =  (qn2, an1 ),

qn  F

 P hay ta có p1 = δ(

tức là  (q0 , )  qn  F hay ω

T(A) = L.
+, Lấy ω = a1a2 ...an  L, ω ≠ ε, khi đó tồn tại dãy trạng thái q1 , q2 ,..., qn sao cho
 (q0 , a1 )  p1 , n (q1 , a2 )  q2 ,...,  (qn2 , an1 )  qn1,  (qn1, an )  qn  F. Do đó trong G

có các quy tắc q0 → a1q1 ,

q1  a2 q2, q1  a2 q2,..., qn 1  an 1qn 1, qn 1  an

 P, ta có

suy dẫn trong G: q 0 ├ a1q1 ├ a1a2 q2 ├ a1a2 ...an1qn1 ├ a1...an1an = ω hay ω L(G).
Trong trường hợp ε L, ta xây dựng G’ tương đương với G trong đó kí hiệu xuất
phát không xuất hiện trong bất kỳ vế phải của quy tắc nào, đồng thời thêm vào
G’ quy tắc q0   để nhận được văn phạm chính quy G’ sao cho L(G’) = L(G)
 { ε}. Vậy ta luôn có L(G) = L. Vậy định lý được chứng minh.
Ví dụ 1.3
Cho otomat hữu hạn đơn định A= <{ q0 , q1 , q2 }, {0,1},  , q0 ,{q2 } > trong đó
 (q0 , 0)  q1 ,  (q1 , 0)  q2 ,  (q1,1)  q0 ,  (q2 ,1)  q0 . Đồ thị chuyển của A là:

0

q0

q1

1

0

1

Hình 1.2 Đồ thị chuyển của otomat A

8

q


Dễ thấy rằng T(A) = { ω00  ω { 01, 001}*} là ngôn ngữ chính quy.
Kết luận Từ các định lý trên ta có kết luận về sự liên hệ giữa otomat hữu hạn và
ngôn ngữ chính quy như sau:
+, Gọi D là lớp các ngôn ngữ được đoán nhận bởi otomat hữu hạn đơn
định ,N là lớp các ngôn ngữ được đoán nhận bởi otomat hữu hạn không đơn định
và R là lớp các ngôn ngữ chính quy.
Định lý 1.4 cho biết R  N
Định lý 1.5 cho biết D  R
Vậy D = N = R
+, Ngôn ngữ L là chính quy khi và chỉ khi:
Tồn tại một biểu thức chính quy biểu diễn L
Tồn tại một văn phạm chính quy sinh ngôn ngữ L
Tồn tại một otomat hữu hạn đoán nhận L.

Ví dụ 1.4
Với ngôn ngữ chính quy L = {01n, 021 n ≥ 1} ta có:
Biểu thức chính quy biểu diễn L là
r = 01*1 + 021
Văn phạm chính quy sinh ngôn ngữ L
G = <{ 0,1,2}, {S, A, B, C}, S, {S→ 0A, A→ 1A, A→ 1, S→ 0B, B→ 2C, C→
1}>
Otomat hữu hạn A đoán nhận L có đồ thị chuyển là:
1

1

q1

q

0

q0

1

q4

q3

2

9


0


Hình 1.3 Đồ thị chuyển của otomat A
1.3 Điều kiện cần của ngôn ngữ chính quy
Khi một ngôn ngữ được đoán nhận bởi một otomat hữu hạn , hoặc được
sinh bởi một văn phạm chính quy, hoặc được xác định bởi một biểu thức chính
quy thì nó là ngôn ngữ chính quy. Như vậy việc chứng minh một ngôn ngữ chính
quy là khá dễ dàng bằng cách chỉ ra rằng nó được xác định bằng một trong những
cách trên. Tuy nhiên để khẳng định một ngôn ngữ L không phải là ngôn ngữ
chính quy thì lại không hề đơn giản. Dù ta không xây dựng được otomat hữu
hạn, văn phạm chính quy hay biểu thức chính quy để xác định L, nhưng ta vẫn
không thể kết luận ngôn ngữ này không phải là ngôn ngữ chính quy, bởi vì ta
không thể khẳng định được rằng không tồn tại những văn phạm chính quy hay
những otomat hữu hạn sinh ra L. Như vậy, cần có một tiêu chuẩn để căn cứ vào
đó có thể kết luận một ngôn ngữ không phải là ngôn ngữ chính quy , tiêu chuẩn
đó là điều kiện cần của ngôn ngữ chính quy.
1.3.1 Otomat tối tiểu
Cùng một ngôn ngữ chính quy L có thể có nhiều otomat hữu hạn đoán
nhận nó. Tuy nhiên, trong số đó, trước hết chúng ta quan tâm đến các otomat có
số trạng thái ít nhất cùng đoán nhận ngôn ngữ L.
Định nghĩa 1.3
Otomat có số trạng thái ít nhất trong các otomat hữu hạn cùng đoán nhận
ngôn ngữ L được gọi là otomat tối tiểu của ngôn ngữ L.
Nhận xét: Dễ thấy rằng với mỗi ngôn ngữ L, otomat tối tiểu của nó có thể không
duy nhất.
Ví dụ 1.5
Giả sử otomat M = <Q, {a, b}, δ, t0, F>, với
+ Q = { t0 , t1 , t2 , t3 } với t0  {q0}, t1 {q1}, t2 { q0, q1}, t3 


10


+  (t0 , a)  t0 ,  (t0 , b)  t2 ,  (t1 , a)  t2 ,  (t1, b)  t3 ,  (t2 , a)  t2 ,
 (t2 , b)  t2 ,  (t3 , a)  t3 ,  '(t3 , b)  t3

+ F  {t1 , t2 }
a

a
b

t0

t
b

a

b

t

T3

a

b

Hình 1.4 Đồ thị chuyển của M

Otomat M là đơn định có 4 trạng thái và có đồ thị chuyển ở hình bên.
Dễ thấy rằng otomat M đoán nhận ngôn ngữ :
L = T(M) = {anb ω n ≥ 0, ω  {a, b}*}
Nhìn vào đồ thị chuyển của M ta thấy ngay rằng không có đường đi nào từ t0
đến được đỉnh kết thúc t1 , vì vậy otomat M sẽ tương đương với otomat M’ có
đồ thị chuyển như sau:
a

a
b

t0

t
b

Hình 1.5 Đồ thị chuyển của otomat tối tiểu M’

11


Rõ ràng là otomat M’ cũng đoán nhận ngôn ngữ L = T(M’) = {anb ω n ≥ 0, ω
 {a, b}*}, M’ chỉ có hai trạng thái và là otomat tối tiểu của ngôn ngữ L= {anb
ω n ≥ 0, ω  {a, b}*}
1.3.2. Điều kiện cần của ngôn ngữ chính quy
Định lý 1.6
Nếu L là ngôn ngữ chính quy thì tồn tại số nguyên dương n sao cho với
mọi ω  L mà ω≥ n đều có thể phân tích được dưới dạng ω = uvw, ( với |v| ≥
1 hay v ≠  ) mà với mọi chỉ số i =0, 1, 2, … ta có uviw  L.
Chứng minh :

Vì L là một ngôn ngữ chính quy, khi đó tồn tại 1 otomat hữu hạn đoán
nhận nó. Giả sử L = T(A) , với A = <Q, , δ, q0, F> là một otomat tối tiểu có n
trạng thái, tức là |Q| = n. Ta chứng minh n là số tự nhiên cần tìm.
Giải sử ω =

a1a2 ...an

 L với m ≥ n. Khi đó ta có  (q0 ,  )  F tức là

q0 , q1 ,..., qm  Q sao cho  (qi 1 , ai )  qi , 1≤ i≤ m và q m  F. Do m ≥ n nên trong

dãy q0 , q1 ,...., qm có ít nhất hai trạng thái trùng nhau, giả sử đó là qi  qk , i < k ≤ n,
(với k là số nhỏ nhất mà ta có q i =qk)
Đặt u = a1...ai , v = ai 1...ak , w = ak 1...am . Ta có  = uvw, |v| = | ai 1...ak | ≥ 1 (do i
< k).
Ngoài ra ta có : (q0, u) = q i = qk = (q0, uv),
Nên

(q0, u) = (q0, uv) = ((q0, u), v) = ((q0, uv), v) = (q0, uv2)

Tương tự ta có (q0, u) = (q0, uv2) = ( (q0, u), v2) = ( (q0, uv), v2) = (q0,
uv3)
Tiếp tục ta được (q0, u) = (q0, uvi), i  N.
Cuối cùng ta có (q0, uviw) = ((q0, uvi), w) = ((q0, uv), w) = (q0, uvw)  F
Vậy uviw  L, i = 0, 1, 2…

12


Định lý được chứng minh.

Ví dụ 1.6 :
Chứng minh L = {an bn : n  0} là không chính quy.
+, Giả sử L là chính quy, dễ thấy L vô hạn. Theo định lý 1.6 tồn tại số
nguyên dương m.
+, Chọn ω = am bm  L , | ω | = 2m ≥m. Theo định lý 1.6 tồn tại một cách
phân tích ω thành bộ ba
ω = uvw, trong đó | uv| ≤ m(1), |v| = k ≥ 1(2).
Từ cách chọn ω có m kí hiệu a đi đầu, kết hợp với (1) suy ra uv chỉ chứa a, từ
đây suy ra v cũng chỉ chứa a. Vậy v = ak .
nk

Xét ω1 = uviw với i = 0, ta có 0  a bn  L theo định lý trên, nhưng điều này
mẫu thuẫn với định nghĩa của L. Vậy L là không chính quy.
Nhận xét:
+, Lý luận này có thể trực quan hóa như một trò chơi chúng ta đấu với một
đối thủ. Mục đích của chúng ta là thắng ván chơi bằng cách tạo ra sự mâu thuẫn
của định lý 1.6, trong khi đối thủ chặn đứng chúng ta. Có 4 bước đi trong trò
chơi này như sau:
+, Đối thủ lấy m.
+, Với m đã cho chúng ta lấy một chuỗi ω  L thỏa mãn | ω | = ≥ m.
+, Đối thủ chọn phân hoạch uvw thỏa mãn | uv| ≤ m, |v| = k ≥ 1. Chúng ta
phải giả thiết rằng đối thủ chọn lựa làm sao cho chúng ta khó thắng ván chơi
nhất.
+, Chúng ta chọn i sao cho chuỗi được đẩy lên không thuộc L.
+, Bước quyết định ở đây là bước 2. Trong khi chúng ta không thể ép buộc
đối thủ lấy một phân hoạch cụ thể của chuỗi ω , chúng ta có thể chọn chuỗi ω
sao cho đối thủ bị hạn chế nghiêm ngặt trong bước 3, ép buộc một sự lựa chọn

13



u, v, w sao cho cho phép chúng ta tạo ra một mâu thuẫn với định lý trên bước kế
tiếp của chúng ta.
Hệ quả 1.1
Cho A là otomat hữu hạn đơn định có n trạng thái và L là ngôn ngữ được
đoán nhận bởi A. Khi đó L ≠  khi và chỉ khi    L sao cho | | < n.
Chứng minh :
Điều kiện đủ là hiển nhiên. Bây giờ cho L ≠ . Giả sử mọi từ trong L đều
có độ dài ≥ n. Gọi  là từ có độ dài nhỏ nhất trong L, mà || ≥ n. Theo định lý
1.6 ta có  = uvw, trong đó |v| ≥ 1 và với mọi i = 0, 1, 2… ta có uviw  L. Với i
= 0, uw  L mà |uw| < ||. Điều này mâu thuẫn với tính nhỏ nhất của ||. Vậy
tồn tại   L sao cho | | < n.
Nguyên lý 2. 1 ( Nguyên lý chuồng chim bồ câu)
Nếu chúng ta đặt n vật thể vào trong m hộp và nếu n > m thì ít nhất có một
hộp chứa nhiều hơn một vật thể.
Ví dụ 1.7
Ngôn ngữ L = {an bn : n  0} có chính quy không ?
Câu trả lời là không, chúng ta sẽ chứng tỏ bằng phương pháp phản chứng sau :
Giả sử L là chính quy thì tồn tại dfa M = <Q, {a, b}, δ, q0, F> nào đó cho L.
Xét  *(q0,ai) với i = 0, 1,2,…Vì có một số không giới hạn các I, nhưng chỉ có một
số hữu hạn các trạng thái trong M, theo nguyên lý chuồng chim bồ câu thì phải
có một trạng thái nào đó, chẳng hạn q, sao cho
 *(q0, an) = q và  *(q0, am) = q, với n ≠ m.
Nhưng vì chấp nhận anbn nên ta có
 *(q, b n) = qj  F.
Kết hợp với ở trên ta suy ra
 *(q0, ambn) =  *(q, bn) = q j

14



Vì vậy M chấp nhận cả chuỗi ambn với n ≠ m. Điều này mâu thuẫn với định nghĩa
của L, suy ra L không chính quy.
Nhận xét
Trong lý luận này nguyên lý chuồng chim bồ câu đơn giản phát biểu rằng
một otomat hữu hạn có một bộ nhớ hữu hạn. Để chấp nhận tất cả các chuỗi anbn
một otomat phải phân biệt giữa mọi tiếp đầu ngữ an và am. Nhưng vì chỉ có một
số hữu hạn các trạng thái nội để thực hiện điều này nên phải có một n và một m
nào đó mà đối với chúng otomat không thể phân biệt được.
Hệ quả 1.2
Tồn tại một ngôn ngữ phi ngữ cảnh mà không được đoán nhận bởi bất kỳ
otomat hữu hạn đơn định nào.
Chứng minh
Xét ngôn ngữ L = {anbn | n ≥ 1} trên bảng chữ cái  = {a, b}. Ta có L =
L(G), trong đó G = < , {S}, S, S → ab}> là văn phạm phi ngữ cảnh. Giả sử L
= T(A) với A = <Q, , δ, q0, F> là một otomat hữu hạn đơn định. Với n đủ lớn,
α = anbn có |α| ≥ |Q|. Ta có thể biểu diễn anbn = uvw, trong đó |v| ≥ 1, uviw L,
i = 0,1,2…Ta hãy tập trung phân tích từ v và vi:
+, Nếu v chỉ chứa a (|v|a > 0 và (|v|b = 0) thì với i đủ lớn |uviw|a > |uviw|b.
+, Nếu v chỉ chứa b (|v|b > 0 và (|v|a = 0) thì với i đủ lớn |uviw|b > |uviw|a.
+, Nếu |v|a > 0, |v|b > 0 thì với i = 2 ta có v = (ab)2 = abab tức là a và b xen
kẽ nhau trong uviw, khi đó uviw không thể có dạng anbn.
Cả 3 trường hợp đều mâu thuẫn với uviw  L. Vậy không tồn tại một otomat
hữu hạn đơn định nào đoán nhận L, tức là L không phải là một ngôn ngữ chính
quy.
Hệ quả này là một ứng dụng điều kiện cần của ngôn ngữ chính quy, để
chứng minh một ngôn ngữ không phải là chính quy nếu nó không thỏa mãn điều
kiện này.

15



Hệ quả trên cho thấy rằng tồn tại một ngôn ngữ phi ngữ cảnh mà không
phải là ngôn ngữ chính quy, tức là lớp các ngôn ngữ chính quy là tập con thực
sự của lớp các ngôn ngữ phi ngữ cảnh.

16


CHƯƠNG 2
TÍNH CHẤT CỦA NGÔN NGỮ CHÍNH QUY
2.1. Đóng đối với các phép toán tập hợp đơn giản
Định lí 2.1
Nếu L1 và L2 là các ngôn ngữ chính quy thì L1  L2, L1  L2 , L1 L2, L
và L1* cũng vậy. Chúng ta nói rằng họ ngôn ngữ chính quy là đóng dưới các
phép hội, giao, kết nối, bù và bao đóng – sao.
Chứng minh
+, Nếu L1, L2 là chính quy thì  các biểu thức chính quy r1 , r2 sao cho L1
=

L( r1 ), L2 = L( r2 ). Theo định nghĩa r1 + r2 , r1 r2 và r1 * là các biểu thức chính

quy định nghĩa các ngôn ngữ L1  L2, L1 L2, L1*. Vì vậy họ ngôn ngữ chính quy
là đóng đối với các phép toán này.
+, Để chứng minh tính đóng đối với phép bù, cho M = ( Q, , δ, q0, F ) là
dfa chấp nhận L1, thì dfa M = ( Q, , δ, q0, Q - F ) chấp nhận L
+, Để chứng minh với phép giao,dựa vào qui tắc De Morgan ta có
L1  L2  L1  L2  L1  L2

Dựa vào tính đóng của phép bù và phép hội vừa được chứng minh ở trên ta suy

ra tính đóng đối với phép giao.
Định lí 2.2
Họ ngôn ngữ chính quy là đóng dưới phép hiệu và nghịch đảo.
Chứng minh
+, Để chứng minh tính đóng đối với phép hiệu dựa vào các qui tắc tập hợp ta có:
L1  L2  L1  L2

Dựa vào tính đóng của phép bù và phép giao đã được chứng minh suy ra tính
đóng cho phép hiệu.

17


Ví dụ 2.1:
Tìm dfa giao của L1  {a 2nbm : n, m  0} và L2  {a3nb2m : n, m  0}

q1

b
a

a
L1

b

qo

a


p2

a

L2

p0

q2

p1

a
b

b

p3

p4
b

q1p0

a

a

q0p1


q0p2

a

a

q1p2

q1p1

a

L1  L2

a

q0p0

b

b

q2p3

q2p4
b

18



2.2. Đóng đối với các phép toán khác
* Phép đồng hình
Định nghĩa 2.1:
+, Giả sử  và  là các bảng chữ cái thì một hàm
h:  → *
được gọi là một phép đồng hình. Bằng lời, một phép đồng hình là một sự thay
thế trong đó mỗi kí hiệu đơn được thay thế bằng một chuỗi.
+, Mở rộng nếu ω = a1a2 ...an thì
h(ω) = h(a1 )h(a2 )...h(an )
+, Nếu L là ngôn ngữ trên  thì ảnh đồng hình của nó được định nghĩa là
h(L) = {h(ω): ω L}
Ví dụ 2.2 :
+, Cho  = {a, b},  = {a, b, c} và h được định nghĩa như sau
h(a) = ab
h(b) = bbc
Thì h(aba) = abbbcab. Ảnh đồng hình của L = {aa, aba} là ngôn ngữ h(L) =
{abab, abbbcab}.
+, Cho  = {a, b},  = { b, c, d} và h được định nghĩa như sau
h(a) = dbcc
h(b) = bdc
Nếu L là ngôn ngữ được biểu thị bởi biểu thức chính quy
r = (a + b*)(aa)* thì r1 = (dbcc + (bdc)*)(dbccdbcc)* là biểu thức chính quy biểu
thị cho h(L). Từ đó dẫn tới định lý sau:
Định lý 2.3 .Cho h là một đồng hình. Nếu L là một ngôn ngữ chính quy , thì
ảnh đồng hình của nó h(L) cũng là ngôn ngữ chính quy. Họ các ngôn ngữ chính
quy vì vậy là đóng dưới phép đồng hình bất kỳ.

19



* Phép thương đúng
Định nghĩa 2.2:
+, Cho w,v  * thì thương đúng của w cho v được kí hiệu và định nghĩa
là w /v = u nếu w = uv, nghĩa là nếu v là tiếp vị ngữ của w thì w/v là tiếp đầu ngữ
tương ứng của w.
+, Cho L1 và L2 là các ngôn ngữ trên bảng chữ cái giống nhau , thì thương
đúng của L1 với L2 được định nghĩa là
L1/ L2 = {w/v: w L1, v  L2 }
= {x : xy  L1 vớ một y nào đó thuộc L2}
Ví dụ 2.3
Cho L1 = {an bm : n  1, m  0}  {ba} và L2 = {bm , m  1} , thì
L1 /L2 = {an bm : n  1, m  0} .
Vì L1, L2 và L1 /L2 là các ngôn ngữ chính quy, điều này gợi cho ta rằng thương
đúng của hai ngôn ngữ chính quy cũng là ngôn ngữ chính quy.
Bổ đề 2.1
Cho M1 = ( Q, , δ, q0, F ) là một dfa cho L1. Nếu một trạng thái q nào
đó  Q1 có tính chất tồn tại một chuỗi y nào đó  L2 sao cho  1*(q,y)  F1 thì
 x mà  1*(q0,y) = q,

x

 L1 /L2. Và vì vậy, nếu thay những trạng thái kết thức

của M bằng những trạng thái q có tính chất này thì ta sẽ có một dfa mà chấp
nhận L1 /L2.
Định lý 2.4
Nếu L1 và L2 là các ngôn ngữ chính quy thì L1/ L2 cũng chính quy. Chúng
ta nói rằng họ ngôn ngữ chính quy là đóng dưới phép thương đúng
Chứng minh
+, Cho L1 = L(M) trong đó M = ( Q, , δ, q0, F ) là một dfa. Ta xây dựng

một dfa khác

M

= ( Q, , δ, q0, F ) chấp nhận L1/L2 bằng cách chỉ thay đổi

20


×