Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG
ĐỀ TÀI TIỂU LUẬN
Đề tài: NGÔN NGỮ PHI NGỮ CẢNH
VÀ NGÔN NGỮ KHÔNG PHI NGỮ CẢNH, VIẾT CHƯƠNG
TRÌNH RAM CHUẨN VÀ RAM THÔ SƠ KIỂM TRA ĐIỀU
KIỆN CÁC SỐ a,b,c CHO TRƯỚC MỘT CÁCH NGẪU NHIÊN
LẦN LƯỢT LÀ CÁC CẠNH CỦA TAM GIÁC THƯỜNG
Giáo viên hướng dẫn: PGS. TS. Phan Huy Khánh
Học viên thực hiện: Lê Hà Thanh
Huỳnh Thiếu Duy
Doãn Thị Ngọc Thi
Đà Nẵng, 5-2010
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 1
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
PHẦN LÝ THUYẾT
NGÔN NGỮ PHI NGỮ CẢNH VÀ NGÔN NGỮ
KHÔNG PHI NGỮ CẢNH
I .BỔ ĐỀ PUMPING CHO NGÔN NGỮ PHI NGỮ CẢNH (THE PUMPING
LEMMA FOR CONTEXT-FREE LANGUAGES)
Ngôn ngữ phi ngữ cảnh (CFL) có hai tính chất, một tính chất dưới dạng
ngôn ngữ và dưới dạng automat đẩy xuống (PDA). Không có cách tiếp cận
làm cho ngôn ngữ phi ngữ cảnh trực tiếp, rõ ràng để có ngôn ngữ hình thức
mà không phải là phi ngữ cảnh. Tuy nhiên, với ngôn ngữ tự nhiên đưa ra giả
thuyết một vài giới hạn của ngữ pháp phi ngữ cảnh (CFG).
Bổ đề Puming đã được đưa ra trước đó từ thực tế một chuỗi nhập đủ dài
gây ra hiện tượng automat hữu hạn chuyển đổi qua một vài trạng thái. Từ sự
quan sát này cho phép kết luận một chuỗi bất ký x có thể được viết dưới
dạng x = uvw, trong đó tất cả các chuỗi ở dạng uv
i
w cũng chấp nhập bởi
automat hữu hạn. Trong trường hợp CFL, nó dễ dàng để đạt được một kết
quả có thể so sánh với việc sử dụng ngữ pháp thay vì sủ dụng PDA. Tuy
nhiên, cách này cũng nảy sinh những vấn đề tương tự. Giả sử một dẫn xuất
trong một CFG G liên quan đến một biến A nhiều hơn một lần được biểu
diễn như sau:
S ⇒
*
vAz ⇒
*
vwAyz ⇒
*
vwxyz
trong đó, v, w, x, y, z ∈ ∑
*
. Nói cách khác, A ⇒
*
x, nhưng A ⇒
*
wAy là tốt. Có thể viết:
S ⇒
*
vAz ⇒
*
vwAyz ⇒
*
vw
2
Ay
2
z ⇒
*
vw
3
Ay
3
z ⇒
*
…
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 2
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
và x có thể được dẫn xuất từ mỗi A, từ đó có thể kết luận rằng tất cả chuỗi vxz, vwxyz,
vw
2
xy
2
z, thuộc L(G).
Để có được bổ đề nhảy, bấy giờ cần phải chỉ ra rằng sự lắp lại của biến
trong dẫn xuất của mọi chuỗi đủ dài trong L(G). Vấn đề này cũng có lợi để
tăng vài giới hạn trên các chuỗi v, w, x, y, và z cũng giống như trên các
chuỗi v, u và w trong trường hợp đơn giản hơn.
Sự xem xét sẽ được dễ dàng dàng hơn nếu có thể giả sử một cây biểu
diễn dẫn xuất là cây nhị phân, với nghĩa đơn giản là không có nút nào có
nhiều hơn 2 nút con. Vấn đề này có thể được bảo đảm bằng cách trình bày
ngữ pháp dưới dạng chuẩn Chomsky. Kết quả là, có thể mất chuỗi rỗng từ
ngôn ngữ nhưng không phải là vấn đề vì kết quả mong muốn chỉ bao gồm
các chuỗn dài.
Một đường đi trong cây nhị phân hoặc là rỗng hoặc bao gồm một nút,
một trong những hậu duệ của nó, và tất cả các nút trung gian. Chiều dài của
đường đi là số nút của đường đi, và chiều cao của cây nhị phân là chiều dài
của đường đi dài nhất. Việc nhận được một biến để lặp lại trong một dẫn
xuất được thực hiện bằng cách cho biến đó xuất hiện 2 lần trên cùng đường
đi trong cây dẫn xuất, sao cho bảo đảm một đường đi đủ dài. Bổ đề sau (8.1)
chỉ ra rằng, một đường đi đủ dài là chắc chắn xảy ra nếu chiều dài của chuỗi
(nghĩa là số nút trong bất kỳ cây dẫn xuất) là đủ lớn.
Bổ đề 8.1
Cho h ≥ 1, một cây nhị phân có nhiều hơn 2
h -1
nút lá thì phải có độ cao
lớn hơn h.
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 3
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
Chứng minh: Để chứng minh bổ đề, sử dụng phương pháp quy nạp
dựa vào h để chứng minh mệnh đề phản chứng: Nếu chiều cao của cây nhị
phân không lớn hơn h thì số nút lá sẽ không lớn hơn 2
h -1
.
Thật vậy, với h = 1, dễ thấy bằng cây nhị phân có chiều cao là 1 sẽ có
nút không nhiều hơn 1 và do đó sẽ có không nghiều hơn 1 nút lá (2
1-1
= 1 nút
lá).
Giả sử với h = k ≥ 1, cây nhị phân có chiều cao nhỏ hơn hoặc bằng k sẽ
không nút lá không nhiều hơn 2k – 1. Phải chứng minh, mệnh đề đúng với
trường hợp h = k+1, nghĩa là cây T có chiều cao ≤ k+1 thì số nút lá sẽ ≤ 2
k
.
Cho cây T với chiều cao không lớn hơn k+1.
Nếu nút của cây T <=1, thì cây T sẽ có nut lá <=1 <=2
k
.
Ngược lại, cả hai cây bên trái và phải của T sẽ có có chiều cao <= k, do
đó theo giải thuyết quy nạp sẽ có nút lá của mỗi cây con sẽ <=2
k-1
Định lý 8.1
Cho ngữ pháp phi ngữ cảnh G = (V, ∑, S, P) thuộc dạng chuẩn
Chomsky, với tổng số biến p. Chuỗi u ∈ L(G) với |u| ≥ 2
p+1
có thể được biểu
diễn dưới dạng u = vwxyz, với các chuỗi u, w, x, y và z thoả mãn:
|wy| > 0
|wxy| ≤ 2
p+1
, với ∀m, m ≥ 0: vw
m
xy
m
z ∈ L(G)
Chứng minh: Theo bổ đề 8.1, cây dẫn xuất từ u có chiều cao nhỏ nhất
là p+2 (có nhiều hơn 2
p
nút lá, say ra có chiều cao lớn hơn p+1). Chúng ta
xem xét đường đi có chiều dài tốt đa và xem xét ở phần dưới cùng, bao gồm
một nút lá và p + 1 nút trên nó. Mỗi p + 1 nút tương ứng với một biến, và vì
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 4
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
vậy chỉ tồn tại p biến khác nhau, vài biến A phải xuất hiện 2 lần trong phần
này của đường đi. Cho x là một phần của u u xuất phát từ A đến gần nhất lá
và cho t = wxy là phần của u xuất phát khác A. Nếu v và z đại diện cho phần
mở đầu và kết của u, chúng ta có u = vwxyz. Minh họa trong hình 8.1.
Đường đi xuất phát từ gần nhất A đến gốc trong phần này có thể được
xem là gốc của cây dẫn xuất từ wxy. Ví chúng ta bắt đầu với một đường đi
có chiều dài lớn nhất, cây này sẽ có chiều cao ít hơn hoặc bằng p + 2; do đó,
theo bổ đề, |wxy| ≤ 2
p + 1
. Nút chứa A sẽ có hai con, tương ứng với 2 biến.
Nếu chúng ta cho B biểu thị nút không phải là tổ tiên của nút A, sau đó x
được bắt nguồn từ nút khác nút A đó, chuỗi cuối cùng dẫn xuất từ B không
cồng chéo với x. Nó sinh ra hoặc w hoặc w, và do đó |wy| > 0.
Cuối cùng,
S ⇒
*
vAz ⇒
*
vwAyz ⇒
*
vwxyz
Cũng như trong trường hợp của Bổ đề Puming trước đó, nó là hữu ích
để phát biểu kết quả để nhấn mạnh những tính năng cần thiết.
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 5
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
Hình 8.1
Định lý 8.1a (Bổ đề Puming cho ngôn ngữ phi ngữ cảnh)
Cho ngôn ngữ phi ngữ cảnh L, tồn tại số nguyên n sao cho với mọi u ∈
L thoả mãn |u| ≥ n thì tồn tại các chuỗi v, w, x, y và z thoả mãn:
u = vwxyz
|wy| > 0
|wxy| ≤ n
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 6
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
với ∀m, m ≥ 0: vw
m
xy
m
z ∈ L
Chứng minh
Có thể tìm CFG trong CNF sinh ra ngôn ngữ L – {Λ}. Gọi p là số biến
trong ngữ pháp này và n = 2
p+1
, thì theo định lý 8.1, kết quả là là một hệ quả
trực tiếp.
Cũng như trong chương 5, để sử dụng bổ đề Puming đúng yêu cầu một
vài chú ý. Nếu chúng ta cho L không là ngôn ngữ phi ngữ cảnh, chúng ta giả
sử rằng tồn tại một CFG tạo ra L và cố gắng để dẫn đến mâu thuẫn. Định lý
8.1a cho rằng tồn tại một số nguyên n; bởi vì chúng ta không biết nó là gì và
bởi vì chúng ta chỉ có thể áp dụng vào định lý một chuỗi u với chiều dài lớn
hơn hoặc bằng n, u chúng ta chọn sẽ là định nghĩa trong thuật ngữ của n.
Tiếp theo, một là chúng ta chọn u, định lý cho chúng ta biết chỉ ở đó tồn tại
một chuỗi v, w, x, y, và z; bởi vì chúng ta không biết nó là gì chỉ có cách
duy nhất đó là tiếp nhận mâu thuẫn từ bốn tính chất của chuỗi đó là chọn bất
kỳ của v, w, x, y, z thỏa mãn bốn tính chất dẫn đến mâu thuẫn.
Bây giờ chúng ta có một cách hiển thị một ngôn ngữ không phải là
ngôn ngữ phi ngữ cảnh, sắp xếp ngôn ngữ như thế nào để có triển vọng?
Theo chương 7, một máy hữu hạn trạng thái với bộ nhớ phụ trong ngăn xếp
là đủ cho việc tổ chức một CFL. Nếu chúng ta có thể tìm thấy ngôn ngữ cho
một ngăn xếp đơn dường như là không đủ, từ sự thay đổi đó chúng ta sẽ có
sự sắp xếp đúng. Một vài ví dụ cho sự sắp xếp đầy đủ là ngôn ngữ của chuỗi
ở công thức (
i
)
i
(xem ví dụ 7.4) mà dễ dàng được gọi là a
i
b
i
. a’s được lưu
trong ngăn xếp vì thế số của a’s có thể so sánh với số của b’s. Vào lúc tất cả
b’s trùng khớp với a’s, thì ngăn xếp trống, có nghĩa là máy đã quên là có bao
nhiêu. Do đó, phương pháp này là không đủ để cho việc tổ chức chuỗi của
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 7
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
công thức a
i
b
i
c
i
. Mặc dầu việc quan sát đó là hiển nhiên không có nghĩa là
chứng minh, nó đủ cho việc làm ứng cử viên hợp lý cho ví dụ đâu của chúng
ta.
Ví dụ 8.1
Cho
L = {a
i
b
i
c
i
| i ≥ 1}
Sử dụng bổ đề Puming (Định lý 8.1a), chúng ta thấy rằng L không là
CFL. Giải sử L là ngôn ngữ phi ngữ cảnh, và cho n là số nguyên trong định
lý 8.1a. Hiển nhiên chọn u với |u| ≥ n, u = a
n
b
n
c
n
. Giả sử v, w, x, y và z là các
chuỗi bất kỳ thỏa mãn điều khiện trong các biểu thức (8.1)-(8.4). Từ khi |
wxy| ≤ n, chuỗi wxy có thể chứa tối đa hai loại rõ rang của công thức (a’s,
b’s , và c’s), và từ khi |wy| >0, w và y cùng là chứa ít nhất một. Chuỗi
vw
2
xy
2
z chứa sự kiện xảy ra thêm trong w và y; Do đó nó không thể chứa
bằng số của cả 3 ký tự. Tuy nhiên, theo biểu thức (8.4), vw
2
xy
2
z ∈ L. Đây là
một mâu thuẫn, và giả định của chúng ta rằng L là một CFL không thể đúng.
Chú ý để có được mâu thuẫn, chúng ta bắt đầu với u ∈ L và cho thấy
vw
2
xy
2
z không chỉ là một thành phần, không chỉ của L mà còn của ngôn ngữ
lớn hơn
L
1
= {u ∈ {a,b,c}
*
| n
a
(u) = n
b
(u) = n
c
(u)}
Do đó, chứng minh của chúng ta cũng chỉ chứng minh L
1
không phải là
CFL.
Ví dụ 8.2
Cho
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 8
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
L = { ss | s ∈ {a, b}
*
}
Ngôn ngữ này cũng tương tự như ngôn ngữ hiển nhiên, một trong các
ngôn ngữ của palin-dromes, mà là một CFL: Trong cả hai trường hợp, để
nhận ra một chuỗi trong ngôn ngữ, máy cần nhớ nửa đầu để có thể so sánh
nó với nửa thứ hai. Đối với palin-dromes, nguyên tắc vào cuối, ra đầu
(LIFO) là một cách tiếp cận thích hợp. Đối với L, tuy nhiên, khi chúng ta
gặp phải những ký hiệu đầu tiên trong nửa thứ hai (ngay khi giả định rằng
khi chúng ta biết khi nào thì gặp phải nó), ký hiệu chúng ta cần phải so sánh
nó với là ký hiệu vào đầu tiên, không phải là cuối – nói cách khác, nó được
đặt ở dưới cùng của ngăn xếp. Ở đây một lần nữa, lập luận rằng cách tiếp
cận rõ ràng liên quan đến một PDA không làm việc không giống như chứng
minh rằng một PDA không thể được thực hiện để làm việc. Thay vào đó,
chúng ta áp dụng bổ đề Puming.
Giả sử L là một CFL, và cho n là số nguyên trong Định lý 8.la. Lần
này, sự lựa chọn của u là không rõ ràng, chúng ta thử cho u = a
n
b
n
a
n
b
n
. Giả
sử v, w, x, y, và z là các chuỗi đáp ứng biểu thức (8.l) – (8.4). Chúng ta phải
tìm ra được mâu thuẫn từ các sự kiện mà không thực hiện bất kỳ giả định
khác về năm chuỗi trên.
Như trong ví dụ 8.1, các điều kiện trong biểu thức (8,2) cho chúng ta
biết wxy có thể chồng lên nhau nhiều nhất là hai trong bốn nhóm tiếp giáp
của ký hiệu. Chúng ta hãy xem xét một vài trường hợp.
Trước tiên, giả sử w hay y có chứa ít nhất một a từ nhóm đầu tiên của
a’s. Vì |wxy| ≤ n, cả w và y cũng không thể chứa bất kỳ ký hiệu từ nửa sau
của u. Xét m = 0 trong điều kiện của biểu thức (8.4). Việc bỏ qua w và y là
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 9
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
nguyên nhân dẫn đến ít nhất một a ban đầu được bỏ qua và không ảnh
hưởng đến nửa thứ hai. Nói cách khác,
uw°xy°z = a
i
b
j
a
n
b
n
trong đó i < n và j ≤ n. Nếu chuỗi này là một dạng của ss (nghĩa là, nếu nó
thuộc L), thì trừ khi i = 0, s sẽ phải bắt đầu với a (từ s đầu tiên) và kết thúc
bằng b (từ thứ hai). Điều này rõ ràng là không thể. Nếu i = 0, tuy nhiên, thì
chuỗi là b
n
a
n
b
n
, và điều này không phải là dạng của ss cho bất kỳ s. Vì
uw°xy°z ∉ L, chúng ta có một mâu thuẫn trong trường hợp này.
Tiếp theo, giả sử wxy không chứa a's từ nhóm đầu tiên nhưng mà w
hoặc y có chứa ít nhất một b từ nhóm đầu tiên của b's. Một lần nữa, chúng ta
xem xét m = 0; thời gian này chúng ta có thể nói rằng:
uw ° xy ° z = a
n
b
i
a
j
b
n
với i < n và j ≤ n. Như trước, nếu chuỗi này là ss, s sẽ phải bắt đầu với a và
kết thúc với b, và điều này là không thể.
Chúng ta có thể chấp nhận hai trường hợp khác: một trong đó wxy
không chứa các ký tự từ nửa đầu tiên của u nhưng ít nhất một a, và một
trong đó w hoặc y có chứa ít nhất một từ b nhóm thứ hai của b's. Đối số đầu
tiên của các trường hợp này cũng tương tự như trong trường hợp thứ hai đã
thảo luận trước đây, và các trường hợp còn lại là giống như trường hợp đầu
tiên. Chúng ta sẽ không đi chi tiết.
Cũng như trong ví dụ 8.1, tồn tại các ngôn ngữ khác mà cơ bản giống
chứng minh trước. Hai ví dụ trong trường hợp này là {a
i
b
i
a
i
b
i
| i ≥ 0} và
{a
i
b
j
a
i
b
j
| i, j ≥ 0}. Một bằng chứng tương tự cho thấy rằng {scs | s ∈ {a, b}
*
}
cũng không là ngôn ngữ phi ngữ cảnh. Các đánh dấu ở giữa có thể xuất hiện
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 10
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
để loại bỏ sự cần thiết cho nondeterminism; tuy nhiên, những vấn đề cơ bản
là ngăn chặn một PDA từ việc công nhận ngôn ngữ này vẫn còn hiện nay.
Trong chứng minh kiểu này, tồn tại nhiều sai sót tiềm tàng. Nó không
được rõ ràng để lựa chọn chuỗi u. Trong ví dụ 8.2, a
n
b
n
a
n
b
n
chắc chắn không
phải là sự lựa chọn đúng, nhưng cũng có nhiều sự lựa chọn sẽ không làm
việc (bài tập 8.2).
Một khi u được chọn, việc quyết định những trường hợp để xem xét có
thể là một vấn đề. Một cách đơn giản trong ví dụ 8.2, có thể xem xét trong
bảy trường hợp:
1. wy chỉ chứa a’s từ nhóm đầu tiên.
2. wy chứa a’s từ nhóm đầu tiên và b’s từ nhóm đầu tiên.
3. wy chỉ chứa b's từ nhóm đầu tiên.
4-6 …
7. wy chỉ chứa b’s từ nhóm cuối.
Điều này không có gì là sai, ngoại trừ tất cả những thứ khác bằng nhau,
bốn trường hợp là tốt hơn so với bảy. Nếu bạn thấy mình nói “trường hợp 6,
8, và 10 được xử lý theo cùng một cách chính xác như trường hợp 1, 3, và
5”, có lẽ bạn nên tìm cách giảm số lượng các trường hợp. (Hãy thử đọc các
chứng minh tại ví dụ 8.2 để thấy chỉ có hai trường hợp). Quan trọng hơn, tất
nhiên, là để đảm bảo rằng các trường hợp nào thực sự bao gồm tất cả những
khả năng và là một mâu thuẫn là thu được trong mỗi trường hợp.
Cuối cùng, một khi bạn có một trường hợp cụ thể để xem xét, bạn vẫn
phải chọn những giá trị của m để sử dụng để có được một mâu thuẫn. Trong
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 11
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
trường hợp đầu tiên trong ví dụ 8.2, nó không cần thiết phải chọn m = 0; tuy
nhiên, chuỗi vw
0
xy
0
z có lẽ là dễ dàng hơn để mô tả chính xác hơn chuỗi
vw
2
xy
2
z. Trong một vài trường hợp, cách chọn m = 0 sẽ không làm việc
nhưng sẽ lựa chọn m> 1 thì được. Trong một số trường hợp khác, ngược lại
là đúng.
Ví dụ 8.3.
Cho
L = {x € {a, b, c}
*
| n
a
(x) < n
b
(x) and n
a
(x) < n
c
(x) }
Lý do trực giác mà không có PDA có thể nhận ra L là lý do tương tự
như trong ví dụ 8.1: Một ngăn xếp cho phép các máy so sánh số của a’s với
một trong hai con số b’s hoặc số c’s, nhưng không được cả hai. Giả sử L là
một CFL, và cho n là số nguyên trong Định lý 8.1a. Cho u= a
n
b
n+1
c
n+1
. Nếu
biểu thức (8.1) – (8,4) giữ cho chuỗi v, w, x, y, và z, chuỗi wxy có thể chứa
nhiều nhất là hai ký tự riêng biệt. Lần này, hai trường hợp là đủ.
Nếu w hoặc y có chứa ít nhất một a, sau đó wy không thể chứa bất kỳ
c's. Vì vậy, vw
2
xy
2
z chứa ít nhất là nhiều a và c, và kết quả là không thể có
trong L. Nếu không w nor y chứa một a, sau đó vw
0
xy
0
z vẫn còn chứa n a;
bởi vì wy chứa một trong hai biểu tượng khác, vw
0
xy
0
z chứa lần xuất hiện ít
hơn mà biểu tượng hơn so với u và do đó không phải là trong L. Chúng ta đã
có được một mâu thuẫn và có thể kết luận rằng L không là phi ngữ cảnh.
Lưu ý rằng {a
i
b
j
c
k
| i < j và i < k} có thể biểu thị không là phi ngữ cảnh do các
đối số chính xác như nhau.
Ví dụ 8.4
Các tính năng của ngôn ngữ lập trình C mà chúng ta xem xét trong
phần 5.5, đó là ngôn ngữ phổ biến, có thể được quan tâm bởi các CFG.
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 12
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
Trong chương 6, chúng ta đã thấy các ví dụ khác về cách thức mà các CFG
có thể mô tả nhiều cú pháp của ngôn ngữ cấp cao như vậy. Các CFG không
thể làm điều này hoàn toàn, tuy nhiên: Có một số quy định trong các ngôn
ngữ mà phụ thuộc vào ngữ cảnh, và định lý 8.1a cho chúng ta cho thấy rằng
L của tất cả các chương trình C không phải là CFL.
Một nguyên tắc cơ bản trong C là một biến phải được khai báo trước
khi nó được sử dụng. Kiểm tra quy tắc này được tuân theo quy tắc căn bản
giống như việc xác định liệu một chuỗi nhất định có dạng xcx, trong đó x là
nhận dạng và c là chuỗi xuất hiện giữa các mẫu của x và sử dụng nó. Như
chúng ta đã xem xét trong ví dụ 8.2, ngôn ngữ {xcx | x € {a,b}
*
} không phải
là CFL. Mặc dù chúng ta đang sử dụng một bảng chữ cái lớn hơn, và c
không còn là một ký hiệu duy nhất, vấn đề cơ bản là như nhau, định danh
cung cấp được phép tùy tiện lâu dài. Chúng ta hãy cố gắng sử dụng bổ đề
Puming để chứng minh rằng L không phải là CFL. (Đừng lo lắng nếu bạn
không quen với C, vì các chương trình chúng ta sẽ xem xét, bạn không cần
lo lắng).
Giả sử rằng L là một CFL, và cho n là số nguyên trong Định lý 8.1a.
Chúng ta cần chọn một chuỗi u trong L mà có độ dài ít nhất là n, bao gồm cả
khai báo một biến và một tham khảo riêng, kế tiếp tới biến. Sau đây là phát
biểu:
main () {int aa. . . a; aa. . . a;}
với cả hai định danh đều có n a. Tuy nhiên, cho một lý do kỹ thuật cái đó sẽ
không đề cập lâu nữa, chúng ta làm phức tạp chương trình bởi việc bao gồm
hai sự tham khảo kế tiếp tới biến thay vì một.
main () {int aa. . . a; aa. . . a; aa. . . a;}
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 13
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
ở đây nó được giả thiết rằng cả 3 cái đó định danh đều có là a
n
. Có một
khoảng trống trong chương trình, sau int, và nó là cần thiết để tách ra. Mọi
thứ có thể được nói trong chương trình này là nó sẽ làm cho chương trình
dịch nhanh hơn, có lẽ với một cảnh báo. Nó khai báo một biến số nguyên;
rồi, hai lần, nó ước lượng biểu thức có giá trị là duy nhất (giá trị có lẽ là bỏ
đi bởi vì chương trình có không khởi tạo biến), và không làm gì với giá trị.
Theo bổ đề Puming, u = vwxyz, với biểu thưc (8.2) – ( 8.4) được thỏa
mãn. Đặc biệt, vw
0
xy
0
z giả định để là một chương trình C hợp lệ. Tuy nhiên,
đây là không thể xảy ra. Nếu wy chứa rỗng hoặc bất kỳ ký hiệu trước nó, thì
vxz vẫn còn chứa đựng ở tối thiểu hầu hết biến đầu tiên giá trị duy nhất, và
không có main () {int và khoảng trống, nó không thể là đúng cú pháp.
Chúng ta đặt vế trái với trường hợp trong đó wxy là một chuỗi con của a
n
,
a
n
, a
n
. Nếu wy chứa dấu chấm phẩy hoặc trong ngoặc, thì chuỗi vxy cũng
không hợp pháp. Phải chăng nó chứa đựng một trong số hai dấu chấm phẩy
trung gian, và có lẽ vxy, rồi những phần của một hoặc cả hai người điều tra
lý lịch trên mọi cạnh có hai người điều tra lý lịch, mà bây giờ không phải là
cũng như thế. Cuối cùng, nếu wy chứa đựng duy nhất vxz, rồi một phần
trong những người điều tra lý lịch và không gì khác làm dịu có một khai bố
biến và những hai biểu thức kế tiếp gồm có một người điều tra lý lịch, thì
tuy nhiên, ba người điều tra lý lịch không tất cả là cũng như thế. Trong cả
hai trường hợp cuối cùng này, khai báo trước – mới sử dụng tài nguyên
được.
Chúng ta kết luận rằng vxz không phải là một chương trình C đúng
và bởi vậy L đó không phải là một CFL.
(Lý lẽ gần như làm việc với chương trình ngắn hơn chỉ có hai biến
người điều tra lý lịch, nhưng không khá. Trường hợp mà trong đó nó bỏ
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 14
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
quên là trường hợp trong đó wy chứa đựng dấu chấm phẩy đầu tiên và
không gì khác. Việc xóa nó vẫn còn để cho lập trình việc lập trình hợp lệ,
mấu chốt ở đơn giản một khai bố một biến với một tên dài hơn. Việc thêm
nhiều sự sao chép cũng hợp pháp bởi vì chúng làm được giải thích nhờ
những sự phát biểu “trống rỗng” vô hại).
Ở đó những ví dụ những quy tắc cú pháp mà có sự xâm phạm không
thể được phát hiện ra bởi một PDA. Chúng ta ghi chú trong ví dụ 8.2 rằng
{a
n
b
m
a
n
b
m
} không phải là một CFL và chúng ta có thể tưởng tượng một tình
huống mà có thể đoán nhận một chuỗi kiểu này là cần thiết khi được yêu
cầu. Giả thiết hai hàm đó f và g được định nghĩa, có n và m tham số hình
thức, tương ứng. Sau đó số tham số trong lời gọi phải thoả với những số
tham số trong định nghĩa tương ứng.
Trong phần tiếp theo của mục này, chúng ta bàn luận về một sự tổng
quát hoá bổ đề Puming, một dạng yếu của vấn đế này đuợc biết là bổ đề
Ogden. Mặc dù bổ đề Puming cung cấp thông tin về những chuỗi w và y
được Puming – trong biểu thức (8.2) và (8.3) – nói về vị trí những chuỗi con
này trong chuỗi u. Bổ đề Ogden làm cho nó là có thể để chỉ định những vị trí
nhất định của u như “riêng biệt” và để bảo đảm cho những phần cuối trong
thư viện ít nhất một vài vị trí đặc biệt này. Như một kết quả, nó đôi khi tiện
lợi hơn bổ đề Puming, và thỉnh thoảng nó có thể đơợc sử dụng khi bổ đề
Puming không dùng được.
Định lý 8.2 (Bổ đề Ogden)
Cho rằng L là một ngôn ngữ chính quy. Rồi có một số nguyên n để mà
nếu u là chuỗi bất kỳ trong L của chiều dài n hoặc lớn hơn, và bất kỳ n nào
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 15
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
hoặc nhiều vị trí hơn của u được chỉ định trong khi ở đó, rồi " phân biệt " là
những chuỗi mà v,w,x,y và z thỏa mãn:
u = vwxyz ( 8.5)
wy chứa đựng ít nhất một vị trí đặc biệt ( 8.6)
wxy chứa đựng không hơn n phân biệt những vị trí ( 8.7)
x chứa đựng ít nhất một vị trí đặc biệt ( 8.8)
cho mỗi m >= 0, vwmxymz thuộc L ( 8.9)
Chứng minh
Đúng như trong chứng minh của bổ đề Puming, Để cho n = 2
p +1
, nơi p
là số của những biến trong một ngữ pháp CNF phát sinh L - { A }. Nghĩ
rằng u là một chuỗi trong L trong đó n hoặc nhiều vị trí hơn rõ ràng như
được phân biệt. Để thu được chuỗi v, w, x, y, và z, Chúng ta bắt đầu như
việc trước, bởi việc lựa chọn đường đi cho cây u mà một vài biến xuất hiện
hai lần. Một lần chúng ta xác định hai nút tương ứng tới A, nếu chúng ta
mặc định năm chuỗi chính xác trước đó, nó đi theo Eqs đó. ( 8.5) và ( 8.9)
giữ. Chỉ ba thuộc tính khác phụ thuộc vào đường đi mà chúng ta đã chọn, và
bởi vậy chính điều này chúng ta cần phải mô tả.
Bắt đầu ở đỉnh, đường đi chứa đựng nút gốc, tương ứng với S. Cho
mỗi nút n phía trong trong đường đi, chúng ta mở rộng đường đi xuống dưới
một bước nữa bởi việc lựa chọn nút con của n có lớn hơn số điểm phân biệt
ở những vị trí giữa những con của nó. Bây giờ chúng ta nói rằng một nút
phía trong trên đường đi này là một điểm nhánh nếu cả hai nút con của nó có
ít nhất một đường phân biệt xuống. Nó đi theo mỗi nhánh mà điểm ở dưới
một đỉnh có một nửa ít nhất trong khi nhiều nút con đặc biệt như nhánh chỉ ở
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 16
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
trên nó trong đường đi. Sử dụng kết quả này, chúng ta thu được định lý sau
(tương ứng với Định lý 8.1 trong mẫu trái ngược của nó), sẽ chúng ta không
chứng minh được.
Bổ đề 8.2
Nếu cây nhị phân gồm có một nút trên đường đi và những nút con của
nó có h hoặc một vài nhánh, thì những nút lá của nó không bao gồm hơn 2
h
nút phân biệt.
Chứng minh
Sự chứng minh bởi sự cảm ứng và điều thực tế từ Định lý 8.1, chấp
nhận rằng số điểm nhánh được sử dụng theo chiều cao, và số nút lá đặc biệt
của cây được sử dụng thay vì toàn bộ số lá của cây. Lý do mà sự phát biểu
kéo theo 2
h
hơn là 2
h - 1
là số điểm nhánh nhiều nhất ở đáy cây có hai hơn là
một.
Kết luận sự chứng minh của Định lý 8.2. Bởi vì có n nút lá phân biệt
trong cây, và n > 2
p
, Định lý 8.2 ngầm hiểu rằng phải hơn những điểm nhánh
p trong đường đi. Cho rằng có p +1 điểm trên xuống dưới trong đường đi, và
cây con mà có gốc là nút cao nhất. Bởi vì ở đó chỉ có biến p là hợp lý, ít
nhất hai điểm nhánh này có cùng biến. Bây giờ chúng ta định nghĩa năm
chuỗi v, w, x, y, và z dưới dạng hai nút này chính xác như trong chứng minh
của bổ đề Puming. Tính chất (8.6) đi theo từ định nghĩa của điểm nhánh, và
biểu thức. (8.7) là một hệ quả của Định lý 8.2. Công thức (8.8) là thật rõ
ràng vì A là điểm đáy của nhánh. Như chúng ta quan sát trước đó, hai tính
chất trong chứng minh của bổ đề Puming.
Chú ý rằng bổ đề Puming thường thì đồng nhất tới trường hợp đặc biệt
của định lý 8.2 trong đó tất cả các vị trí của u được phân biệt.
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 17
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
Ví dụ 8.5.
Cho L = { a
i
b
i
c
j
| i, j ≥ 0 và j ≠ i }. Có L là một CFL và cho n là số nguyên
trong sự phát biểu của Định lý 8.2. Mặc dầu làm sao để chọn một chuỗi u
thích hợp, không phải tất cả là đúng, một lựa chọn cho việc này là
u = a
n
b
n
c
n
+ n!
Tại sao là giai thừa n? Bạn sẽ ngẫm nghĩ trong một phút. Chúng ta sẽ
xác định vị trí của n của u như là vị trí đặc biệt, và mục đích của chúng ta là
v, w, x, y, và z thỏa mãn biểu thức (8.5) – (8.9).
Trước hết, chúng ta có thể thấy rằng nếu w hoặc y chứa đựng hai ký tự
phân biệt, thì chúng ta có thể thu đơợc một sự mâu thuẫn bởi việc xem xét
chuỗi vw
2
xy
2
z mà không dài mẫu a*b*c*. Thứ hai, chúng ta biết rằng vì wy
chứa ít nhất một vị trí phân biệt, w hoặc y gồm có của a’s. Nó tiếp diễn từ
hai quan sát này nếu không w bao gồm của a’s và y bao gồm tương tự số của
b’s, thông qua vw
2
xy
2
z cho chúng ta thấy mâu thuẫn, bởi vỉ chuỗi này khác
với số của a’s và b’s. Tuy nhiên, bây giờ giả sử w = a
j
và y = b
j
. Để cho k =
n! / j, mà vẫn là một số nguyên, và cho m = k +1 thì số của a’s trong
vw
m
xy
m
z là
n + ( m - 1) * j = n + k * j = n + n!
mà cũng giống như số của c’s. Chúng ta có sự mâu thuẫn của chúng, và bởi
vậy L không thể là chính quy.
Chú ý rằng với bổ đề Puming ở đây, chúng ta có sự rắc rối: là không có
cách nào để quản lý khả năng mà w và y chỉ chứa c’s, và bởi vậy không có
cách nào bảo đảm một mâu thuẫn.
Ví dụ 8.6
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 18
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
Cho L = {a
p
b
q
c
r
d
s
| p = 0 hoặc q = r = s}. Nó có vẻ rõ ràng vì rằng L
không là một CFL Vì {b
q
c
q
d
q
} không phải là một CFL. Điều đầu tiên chúng
ta quan sát trong ví dụ này, tuy nhiên, là L thỏa mãn những tính chất của bổ
đề Puming. Bởi vậy, chúng ta không thể sử dụng phương pháp này để cho
thấy rằng L đó là không chính quy.
Giả sử n là số nguyên dương bất kỳ, và u là chuỗi bất kỳ trong L với |u|
≥ n, nói u = apbqcrds. Chúng ta phải cho thấy sự tồn tại của chuỗi v, w, x, y,
và z theo biểu thức (8.1) – (8.4). Chúng ta xem xét hai trường hợp. Nếu P =
0 thì không có sự hạn chế nào trên những số của b’s, c’s hoặc d’s và chọn w
= b, v = x = y = z = ^. Nếu P > 0 chúng ta biết rằng q = r = s, và chọn w=a, v
= x = y = z = ^.
Bây giờ chúng ta có thể sử dụng Định lý 8.2 cho thấy L đó là không
chính quy. Giả thiết L là một CFL, để cho n là số nguyên như trong định lý,
để cho u = abncndn, và chỉ định tất cả nhưng vị trí đầu tiên của u là phân
biệt. Giả thiết rằng v, w, x, y, và z thỏa mãn biểu thức (8.5) – (8.9). Chuỗi
wy phải chứa đựng một trong những ký hiệu b, c, hoặc d, và không thể chứa
đựng cả ba. Bởi vậy, vw2xy2z có ít nhất một a và không thể bằng số của b’s,
c’s và d’s, điều này có nghĩa rằng nó không thể có trong L.
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 19
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
II. PHÉP GIAO VÀ PHÉP BÙ CHO NGÔN NGỮ PHI NGỮ CẢNH
Tập hợp các CFL là đóng dưới của phép hợp, phép ghép, và Kleene(định lí
Kleene). Với ngôn ngữ chính qui, dễ dàng thêm vào danh sách nhiều phép toán:
giao và bù. Các CFL thì phức tạp hơn bởi vậy điều đó không khả thi. Bây giờ, ta
lấy ví dụ với các ngôn ngữ không phải là CFL, chúng ta có thể thấy điều này dễ
dàng.
Định lí 8.3:
Cho L
1
, L
2
là các ngôn ngữ phi ngữ cảnh, thì L1 ∩ L
2
không phải là ngôn
ngữ phi ngữ cảnh. Nếu L là ngôn ngữ phi ngữ cảnh thì L′ (bù của L) không phải là
ngôn ngữ phi ngữ cảnh.
Chứng minh:
Chúng ta có thể đạt được phát biểu đầu tiên bởi việc đưa ra sự giao nhau
của 2 CFL là một ngôn ngữ không phi ngữ cảnh.
Ta có:
L
1
={a
i
b
j
c
k
| i < j}
L
2
={ a
i
b
j
c
k
| i < k}
Khi đó: L
1
∩ L
2
={ a
i
b
j
c
k
| i < j and i < k}. Ví dụ 8.3 bao hàm 1
ngôn ngữ khác hẳn, nhưng chúng ta chú ý rằng cùng một chứng minh có thể áp
dụng cho điều này. Ngôn ngữ L
1
là phi ngữ cảnh vì nó có thể được mô tả bởi văn
phạm với các luật sinh sau:
S → ABC
A → aAb | Λ
B → bB | b
C → cC | Λ
Tương tự, L
2
được mô tả bởi văn phạm phi ngữ cảnh với các luật sinh sau:
S → AC
A → aAc | B
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 20
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
B → bB | Λ
C → cC | c
Chứng minh 2 văn phạm mô tả L
1
và L
2
này tách biệt nhau thì dễ làm và
chúng ta có thể bỏ qua nó.
Phát biểu thứ 2 trong định lí thì từ phát biểu 1, từ đó với mọi L
1
và
L
2
,
L
1
∩ L
2
=(L
1
′ ∪ L
2
′)′
Nếu bù của các CFL luôn luôn là các CFL thì với mọi CFL L
1
, L
2
thì các
ngôn ngữ L
1
′ (bù của L
2
), L
2
′ (bù của L
2
) có thể là CFL, bởi có thể hợp của chúng,
và cũng có thể là bù của mỗi cái. Bây giờ, chúng ta biết rằng điều này không phải
là một trường hợp.
Ví dụ 8.7:
Phần 2 của chứng minh định lí 8.3 là chứng minh phản chứng và có thể
xem như là chứng minh không suy diễn. Nếu chúng ta nhìn một cách tỉ mỉ hơn,
chúng ta có thể dùng nó để tìm ra một ví dụ. Nếu L
1
và L
2
là những ngôn ngữ đã
định nghĩa trong phần đầu của chứng minh, L
1
∩ L
2
= (L
1
′ ∪ L
2
′)′, và các ngôn
ngữ này không phải là phi ngữ cảnh. Do đó, vì hợp của các CFL là CFL, thì ít nhất
1 trong 3 ngôn ngữ: L
1
, L
2
, L
1
′ ∪ L
2
′ là CFL mà bù không phải là CFL. Chúng ta
cùng xác định điều này!
Có 2 cách mà một xâu có thể sai trong L
1
. Nó có thể không là một phần tử
của R, ngôn ngữ {a}*{b}*{c}*, hoặc nó có thể là một xâu ai bj ck (với i ≥ j).
Trong các viết khác,
L
1
′ = R′ ∪ { a
i
b
j
c
k
| i ≥ j}
Ngôn ngữ R′ là chính qui bởi vì R là chính qui vì thế R′ là phi ngữ cảnh.
Ngôn ngữ thứ 2 bao hàm trong phép giao có thể biểu diễn như phép ghép xâu.
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 21
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
{ a
i
b
j
c
k
| i ≥ j} = { a
m
| m ≥ 0} { a
i
b
j
| j ≥ 0} { c
k
| k ≥ 0}
Mỗi hệ số của nó là một CFL. Bởi vậy, L
1
′ là một CFL, Tương tự L
2
′ cũng
là một CFL. Chúng ta có thể kết luận rằng : L
1
′ ∪ L
2
′, hoặc
R′ ∪ { a
i
b
j
c
k
| i ≥ j or i ≥ k}
là một CFL, bù của chúng không là CFL. ( Tóm lại, một mình phần 2 cũng là một
ví dụ; xem bài tập 8.12)
Tại điểm này, nó đã thú vị để quay lại định lí 3.4, trong phép giao của 2
ngôn ngữ chính qui là một ngôn ngữ chính qui, xem thử có gì sẽ sai khi chúng ta
cố gắng sử dụng cùng sự xây dựng đó cho các CFL, chúng ta đã bắt đầu với FAs
M
1
và M
2
đoán nhận 2 ngôn ngữ, và đã xây dựng một máy hỗn hợp M mà các
trạng thái là các cặp (p,q) ứng với các trạng thái trong M
1
và M
2
tách biệt nhau.
Điều này cho phép M theo dõi cả 2 máy tại một thời điểm, hoặc giả lập đang chạy
2 máy song song. Một xâu A được thừa nhận bởi M nếu nó được thừa nhận cùng
lúc bởi M
1
và M
2
.
Tin rằng, chúng ta có các CFL : L
1
, L
2
và các PDA M
1
= (Q
1
, ∑, Г
1
, q
1
, Z
1
,
A
1
, δ
1
) và M
2
= (Q
2
, ∑, Г
2
, q
2
, Z
2
, A
2
, δ
2
) thừa nhận chúng. Chúng ta có thể định
nghĩa các trạng thái của máy M mới theo cùng một cách bởi cho Q = Q
1
x Q
2
.
Chúng ta cũng xây dựng được một ngăn xếp bảng chữ của M bởi cho Г = Г
1
x Г
2
điều này sẽ cho chúng ta sử dụng ký tự đầu ngăn xếp của M để xác định ký tự đầu
ngăn xếp của M
1
và M
2
. Tuy nhiên, khi chúng ta định nghĩa những dịch chuyển
của M, mọi thứ trở nên phức tạp, thậm chí cho phép một bên của câu hỏi không
xác định. Trong trường hợp đơn giản, với δ
1
(p, a, X) ={(p′, X′)} và δ
2
(q, a, Y)
={(q′, Y′)} có X, X′ ∈ Г
1
, và Y, Y′ ∈ Г
2
, Điều này là hiển nhiên:
δ((p, q), a, (X, Y)) = {((p′, q′), (X′, Y′)))}
Tuy nhiên, cái gì xảy ra nếu δ
1
(p, a, X) = {(p′, X′X)} và δ
2
(q, a, Y) = {(q′,
Λ)}? Hoặc cái gì nếu δ
1
(p, a, X) = {(p′, X)} và δ
2
(q, a, Y) = {(q′, YYY)}? Không
có cách rõ ràng để M theo dõi được cả trạng thái của M
1
và M
2
và các ngăn xếp
của M
1
và M
2
chỉ hoạt động như một PDA. Định lí 8.3 xác nhận rằng: Quả thực
như một cái máy thì không khả thi trong trường hợp chung.
Song, nếu chúng ta chú ý, chúng ta có thể tận dụng một vài điều từ những
thảo luận này. Nếu M
1
là một PDA và M
2
là một PDA mà không có ngăn xếp
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 22
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
(trường hợp riêng, một đơn định tức là FA - ô tô mát hữu hạn ), không có trở ngại
để mang ra ngoài sự giải thích này. Ngăn xếp trên máy mới của chúng ta thì đơn
giản, một sự kết hợp với M
1
. Kết quả thì theo định lí.
Định lí 8.4:
Nếu L
1
là ngôn ngữ phi ngữ cảnh và L
2
là ngôn ngữ chính qui, thì L
1
∩ L
2
là một ngôn ngữ phi ngữ cảnh.
Chứng minh:
Ta có M
1
= (Q
1
, ∑, Г, q
1
, Z0, A
1
, δ
1
) là một PDA ( ô tô mát đẩy
xuống ) thừa nhận ngôn ngữ 1, và có M
2
= (Q
2
, ∑, q
2
, A
2
, δ
2
) là một FA đoán nhận
L
2
. Chúng ta định nghĩa 1 PDA M = (Q, ∑, Г, q0, Z0, A, δ) bên dưới:
Q = Q
1
x Q
2
q
0
= (q
1
, q
2
) A = A
1
x A
2
Cho p ∈ Q
1
, q ∈ Q
2
, và Z ∈ Г,
(1) δ((p, q), a, Z) = {((p′, q′), α) | (p′, α) ∈ δ
1
(p, a, Z) và δ
2
(q, a) = q′}
Với mọi a ∈ ∑; và
(2) δ((p, q), Λ, Z) = {((p′, q), α) | (p′, α) ∈ δ
1
(p, Λ, Z)}
Ta có thể thấy rằng (1) và (2) cho phép M theo dõi các trạng thái của M
1
và
M
2
. Chú ý rằng trong trường hợp một chuyển tiếp-Λ của M
1
, thành phần thứ 2 của
trạng thái M′. một tương ứng đến M
2
thì không thay đổi. Các nội dung của ngăn
xếp tại bất kỳ thời điểm là cái gì trong máy M
1
.
Ta muốn chỉ ra rằng 2 phát biểu là tương đương: Trên một hướng, xâu vào
y cho phép M
1
nắm được trạng thái p với nội dung của ngăn xếp α và gây ra M
2
nắm được trạng thái q; trên hướng khác bởi xử lí y, M có thể nắm trạng thái (p,q)
với những nội dung của ngăn xếp là α. Đúng hơn, với bất kì n ≥ 0 và bất kì p ∈
Q
1
, q ∈ Q
2
, y, z ∈ ∑*, và α ∈ Г*,
(q
1
, yz, Z
1
) ├
n
M1
(p, z, α) và δ
2
*(q
2
, y) = q
Nếu và chỉ nếu:
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 23
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
((q
1
, q
2
) yz, Z
1
) ├
n
M ((p, q), z, α)
Ký hiệu ├n tham chiếu đến tuần tự của n dịch chuyển. Từ “chỉ nếu” chỉ
rằng L(M
1
) ∩ L(M
2
) ⊆ L(M), và đảo lại chỉ ra sự bao hàm của điều ngược lại
trong đó.
Cả hai phần của chứng minh đạt được bởi phương pháp qui nạp trên n và
rất giống nhau. Ta chỉ ra phần “chỉ nếu” và để những phần khác cho bạn. Với
bước cơ bản, giả định rằng
(q
1
, yz, Z
1
) ├
0
M
1
(p, z, α) và δ
2
*(q
2
, y) = q
Hiển nhiên rằng y = Λ, p = q
1
, α = Z
1
, và q = q
2
. Trong trường hợp này, rõ
ràng:
((q
1
, q
2
), yz, Z
1
) ├
0
M ((p, q), z, α) = ((q
1
, q
2
), yz, Z
1
)
Bây giờ, giả thuyết rằng k ≥ 0, và phát biểu đúng với n=k, và thừa nhận
rằng
(q
1
, yz, Z
1
) ├
k+1
M
1
(p, z, α) và δ
2
*(q
2
, y) = q
Chúng ta muốn chỉ ra rằng:
((q
1
, q
2
), yz, Z
1
) ├
k+1
M ((p, q), z, α)
Coi dịch chuyển cuối cùng trong chuỗi của k + 1 dịch chuyển của M
1
. Nếu
nó là một chuyển tiếp-Λ, sau đó:
(q
1
, yz, Z
1
) ├
k
M
1
(p′, z, β) ├M
1
(p, z, α)
Với một số p′ ∈ Q
1
và một số β ∈ Г*. Trong trường hợp này, giả thuyết qui
nạp hàm ý rằng:
((q
1
, q
2
), yz, Z
1
) ├
k
M
1
((p′, q), z, β)
Và từ (2) chúng ta có kết quả bên dưới:
((p′, q), z, β) ├M
1
((p, q), z, α)
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 24
Tiểu luận môn Lý Thuyết Tính Toán GVHD: PGS. TS. Phan Huy Khánh
Cách khác, y = y′a với một vài a ∈ ∑, và
((q
1
, q
2
), y′az, Z
1
) ├
k
M ((p′, q), az, β)
Có q′ = δ
2
*(q
2
, y′); sau đó giả thuyết qui nạp hàm ý rằng
((q
1
, q
2
), y′az, Z
1
) ├
k
M ((p′, q′), az, β)
Và từ (1) ta có:
((p′, q′), az, Z
1
) ├M ((p, q), z, α)
Lần nữa, kết quả cho bên dưới:
Nó cũng quan trọng trong bản chất của định lí 8.3 và 8.4, để kiểm tra lại
chứng minh rằng bù của ngôn ngữ chính qui là chính qui. Nếu FA M = (Q, ∑, q0,
A, δ) đoán nhận ngôn ngữ L, sau đó FA M′ = (Q, ∑, q0, Q - A, δ) đoán nhận ∑* -
L. Chúng ta thoải mái áp dụng cùng cách xây dựng đến PDA M = (Q, ∑, Г, q0,
Z0, A, δ) và coi PDA M′ = (Q, ∑, Г, q0, Z0, Q - A, δ) Định lí 8.3 nói rằng nếu M
đoán nhận CFL L thì M′ không cần thiết đoán nhận ∑* - L Tại sao không?
Vấn đề là không đơn định. Nó có thể xảy ra với mỗi x ∈ ∑*
(q0, x, Z0) ├
*
M (p, Λ, α)
Với mỗi trạng thái p ∈ A, và
(q0, x, Z0) ├
*
M (q, Λ, β)
với mỗi trạng thái khác nhau q ∉ A. Điều này có nghĩa rằng nếu chuỗi x
được thừa nhận bởi M cũng như M′, từ khi q là một trạng thái thừa nhận trong M′.
Trong trường hợp của các FA, không đơn định có thể được loại trừ: Mọi NFA-Λ
tương đương đến vài FA. Kết quả thu được về các PDA thì sai (xem định lí 7.1),
và một lớp của các CFL đóng dưới phép bù.
Chúng ta mong rằng nếu M là một PDA đơn định(DPDA) đoán nhận L, sau
đó máy M′ đã xây dựng từ trước có thể đoán nhận ∑* - L. Không may, điều này
không đúng nhiều lắm. Một nguyên nhân có thể là những chuỗi vào nào đó làm M
nhận một tuần tự vô hạn của dịch chuyển-Λ và bởi vậy các chuỗi vào này không
HVTH: Lê Hà Thanh – Huỳnh Thiếu Duy – Doãn Thị Ngọc Thi Trang 25