Chương 8 TÍNH CHẤT CỦA NGÔN NGỮ PHI NGỮ CẢNH Họ ngôn ngữ phi ngữ cảnh ở vị trí trung tâm trong ngôn ngữ hình thức.. 8.1 HAI BỔ ĐỀ BƠM Pumping Bổ đề bơm đã cho trong chương 4 là một côn
Trang 1Chương 8
TÍNH CHẤT CỦA NGÔN NGỮ PHI NGỮ CẢNH
Họ ngôn ngữ phi ngữ cảnh ở vị trí trung tâm trong ngôn ngữ hình thức Ngôn ngữ này bao gồm nhiều họ ngôn ngữ quan trọng Ta chỉ xét đến ngôn ngữ phi ngữ cảnh đơn định và ngôn ngữ phi ngữ cảnh chính qui
8.1 HAI BỔ ĐỀ BƠM (Pumping)
Bổ đề bơm đã cho trong chương 4 là một công cụ hữu hiệu để biết được ngôn ngữ nào đó có là ngôn ngữ chính qui hay không Tương tự bổ đề cũng được biết đến cho những họ ngôn ngữ khác Trong chương này ta bàn đến hai kết qủa Một, là cho ngôn ngữ phi ngữ cảnh trong tổng quát Hai, một loại ngôn ngữ phi ngữ cảnh đã được giới hạn
Bổ đề Bơm cho ngôn ngữ phi ngữ cảnh
Định lý 8.1
Cho L là một ngôn ngữ phi ngữ cảnh vô hạn, thì tồn tại một số nguyên dương m sao cho bất kỳ một chuỗi w L với |w| m có thể được
phân rã thành
w = uvxyz (8.1)
với |vxy| m (8.2)
và |vy| 1 (8.3)
sao cho
uv i xy i z L (8.4)
với mọi i = 0,1,2,3,
-Chứng minh
Xem xét ngôn ngữ L – {} và văn phạm G không có luật sinh và đơn vị chấp nhận nó Vì chiều dài vế phải của luật sinh bị giới hạn, gọi là k, chiều dài của dẫn xuất của chuỗi bất kỳ w L ít nhất là |w|/k Vì L vô hạn, nên có
những dẫn xuất dài tùy ý
Trang 2Hãy coi một dẫn xuất trái nhất, vì không có giới hạn số biến của G, nhưng chiều dài của dẫn xuất thì không, ít nhất có một biến, gọi là A, phải ở vị
trí trái nhất Do vậy, ta có một dẫn xuất
S uAy1 uvAy2y1 uvxy 2 y1 (8.5)
Với u, v, x trong T* và y1, y2 (V T)*
Vì G không có luật sinh hay đơn vị, mỗi bước trong dẫn xuất hoặc là tạo lập
một tận, hay tăng chiều dài của hình thức câu Điều này suy ra rằng
| vy2| 1
dạng (8.5) cho ta
A vAy2
và A x
là có thể Điều này chỉ ra những dẫn xuất
S uxy1
và S uvixyi
2 y1, i = 1,2 (8.6)
là có thể
Cuối cùng, dạng câu (8.5) phải giảm đến chuỗi tận w, vì vậy ta có
y2 y
y1 z
với y, z T* Do thế w = uvxyz và (8.6) suy ra rằng uvixyiz ở trong L
bởi vì |vy2| 1, thỏa (8.3) Để thỏa (8.2) Ta lấy A để mà A x không có biến lặp lại ở vị trí trái nhất Do vậy |x| bị giới hạn không phụ thuộc vào w,
thỏa (8.2)
Ví dụ 8.1
Chỉ ra rằng ngôn ngữ L = {a n b n c n : n 0} là không phi ngữ cảnh
Một khi đối phương đã chọn m, ta lấy một chuỗi a m b m c m trong L Bấy giờ đối phương có một số cách chọn Nếu họ chọn vxy chỉ chứa toàn kí hiệu a thì chuỗi được bơm hiển nhiên là không ở trong L Nên họ chọn một chuỗi có số
kí hiệu a và b bằng nhau thì chuỗi được bơm akbkcm với k = m có thể được sinh ra, và một lần nữa ta phải sinh ra một chuỗi không ở trong L Sự thực đối phương chỉ có một cách có thể chặn không cho ta thắng được là lấy chuỗi vxy sao cho vy có cùng số ký hiệu a,b và c Nhưng điều này không thể do giới hạn bởi (8.2) Vì vậy L là không phi ngữ cảnh.
Trang 3Ví dụ 8.2
Xem xét ngôn ngữ
L = {ww : w {a, b}*}
Ngôn ngữ này thì gần giống như ngôn ngữ phi ngữ cảnh trong ví dụ 5.1 Nhưng nó không phi ngữ cảnh
Xem xét chuỗi a m b m a m b m
Hình 8.1
Dễ thấy, đối phương không có thể chọn vxy, ta luôn có mâu thuẫn với bổ đề bơm Cách chọn như hình 8.1, ta chọn i = 0, được chuỗi có dạng.
a k b j a m b m , k m hay j m không thuộc L Cho đối phương cách chọn khác, lý luận tương tự, ta
kết luận L không phi ngữ cảnh.
Ví dụ 8.3
Chỉ ra ngôn ngữ
L = {an!: n 0) là không phi ngữ cảnh
Trong ví dụ 4.11 ta đã chỉ ra ngôn ngữ này không chính qui Tuy nhiên, một ngôn ngữ trên bộ chữ cái với ký tự đơn, có một chút khác giữa định lý 8.1 và bổ đề bơm cho ngôn ngữ chính qui Chuỗi được bơm gồm một ký tự đơn, chuỗi mới có thể được sinh ra do định lý 8.1 hay
định lý 4.8 Do vậy, ta có thể lý luận tương tự 4.11 để chỉ ra L là không
phi ngữ cảnh
Ví dụ 8.4
Chỉ ra ngôn ngữ
L = { a n b j : n = j 2 }
Không phi ngữ cảnh
Cho trước m trong định lý 8.1 ta chọn chuỗi am2 bm Đối phương có một
số cách chọn Xem hình 8.2 Bơm i lần, ta được một chuỗi mới có
a a b b a a b b
Trang 4m2 + (i – 1)k1 ký tự a và m + (i –1)k2 kí tự b
Nếu đối phương chọn k1 0, k2 0, ta chọn i = 0
Ta có
( m - k2)2 ( m – 1) 2
= m2 – 2m + 1
m2 – k1
Kết qủa là không ở trong L
Nếu đối phương chọn k1 = 0, k2 0 hay k1 0, k2 = 0, thì, một lần nữa với
i = 0, chuỗi được bơm không có trong L Ta kết luận L không phi ngữ cảnh.
Hình 8.2
Bổ đề pumping cho ngôn ngữ tuyến tính
Trước đây chúng ta đã phân biệt giữa văn phạm phi ngữ cảnh tuyến tính và không tuyến tính Bây giờ chúng ta thực hiện sự phân biệt tương tự giữa những ngôn ngữ
Định nghĩa 8.1
Ngôn ngữ phi ngữ cảnh L là tuyến tính nếu tồn tại một văn phạm phi cảnh tuyến tính G sao cho L = L(G).
Rõ ràng ngôn ngữ tuyến tính là phi ngữ cảnh nhưng ngược lại thì chưa chắc đúng
Ví dụ 8.5
Xem ngôn ngữ L = {w : n a (w) = n b (w)}
Văn phạm sau đây sinh ra nó, thuộc loại văn phạm không tuyến tính
S -> SS
S ->
S -> aSb
S -> bSa
Do vậy, ngôn ngữ này không nhất thiết phải tuyến tính
Trang 5Dĩ nhiên , một văn phạm không tuyến tính thì không suy ra được ngôn ngữ sinh ra bởi văn phạm ấy là không tuyến tính Nếu chúng ta muốn chứng minh một ngôn ngữ không tuyến tính, thì phải chỉ ra rằng không tồn tại một văn phạm tuyến tính tương đương cho nó Một cách thông thường, để chứng minh một ngôn ngữ không tuyến tính là thiết lập các tính chất cho ngôn ngữ đó, rồi chỉ ra một ngôn ngữ phi ngữ cảnh nào đó không có đòi hỏi tính chất này
Định lí 8.2
Coi L là ngôn ngữ tuyến tính vô hạn, tồn tại số nguyên dương m, sao cho bất kỳ chuỗi w L với {w{ m có thể được phân rã w = uvxyz với
{uvyz{ m (8.7)
{vy{ 1 (8.8)
sao cho
uv i xy i z L (8.9)
với mọi i = 0,1,2
Chú ý : Kết luận của định lí này khác định lí 8.1 chỉ ở (8.7) Chuỗi v và y được
bơm phải nằm bên trong m kí hiệu của bên trái và cuối bên phải của w tương ứng Chuỗi x ở giữa có chiều dài tùy ý.
Chứng minh
Bởi vì, ngôn ngữ là tuyến tính, thì tồn tại một văn phạm tuyến tính G sinh
ra nó Dùng lý luận như định lý 8.1 Ta cũng cần G không chứa luật sinh hay đơn vị G tuyến tính nên ta phải có u, v, y1, y 2 T* Coi A là một biến đầu tiên,
mà cuối cùng được lặp lại Trong dẫn xuất riêng phần
S uAz
Có thể có ít nhất | V| bước ( vì không có biến chưa được lặp lại), vì vậy u và z
có thể bị giới hạn
Tương tự trong
uAz uvAyz
Có thể có |V| bước, điều này dẫn đến kết luận chuỗi u, v, y bị giới hạn nghiêm
ngặt và thỏa (8.7) Phần lý luận còn lại, tương tự như định lí 8.1
Trang 6Ví dụ 8.6
Ngôn ngữ L = { w : n a (w) = n b (w) }
Là không tuyến tính
Giả sử , ngôn ngữ đó là tuyến tính, áp dụng định lý 8.2 cho chuỗi
w = a m b 2m a m
bất đẳng thức (8.7) chỉ ra trong trường hợp này chuỗi u, v, y, z toàn là kí tự a.
Nếu bơm chuỗi này, ta được
a m+k b 2m a m+2
Ví dụ này đưa ra câu trả lời tổng cho quát cho quan hệ giữa họ ngôn ngữ
phi ngữ cảnh và tuyến tính Họ ngôn ngữ tuyến tính là tập con đúng của họ ngôn ngữ phi ngữ cảnh
BÀI TẬP
1 Chứng tỏ ngôn ngữ L là phi ngữ cảnh
L = { a n : n là số nguyên tố }
2 Chỉ ra rằng ngôn ngữ trên = {a, b} là không phi ngữ cảnh
a) L = {a n b j : n j2 }
b) L = { a n b j : n (j - 1)3 }
c) L = {a n b j c k : k = jn }
3 Xác định ngôn ngữ L là phi ngữ cảnh hay không
a) L = {an wwRa n n 0, w {a, b}*}
b) L = {a n b j a n b j : n 0, j 0 }
c) L = {a n b j a j b n : n 0, j 0 }
Trang 7Tính đóng và giải thuật quyết định
cho ngôn ngữ phi ngữ cảnh
Trong chương 4 ta đã biết tính đóng dưới một số phép toán cho họ ngôn ngữ
chính qui Bây giờ ta đặt vấn đề này cho ngôn ngữ phi ngữ cảnh.Tính đóng cho ngôn ngữ chính qui thì không đúng cho ngôn ngữ phi ngữ cảnh Trong phần này, chúng ta chỉ trình bày một số kết qủa cơ bản
Tính đóng của ngôn ngữ phi ngữ cảnh
Định lý 8.3
Họ ngôn ngữ phi ngữ cảnh thì đóng dưới phép hội, kết nối và bao đóng –sao
-Chứng minh
Coi L1 và L2 là hai ngôn ngữ phi ngữ cảnh sinh bởi văn phạm
G1 = (V1, T1, S1, P1) và G 2 = ( V 2 , T 2 , S 2 , P 2 ) tương ứng, giả sử rằng V1 và V 2 rời
nhau
Coi ngôn ngữ L(G 3 ) sinh bởi văn phạm
G 3 = ( V1 V2 {S3}, T1 T2, S 3 , P 3 }
mà S3 V1 V 2 Luật sinh của G3 là tất cả các luật sinh của G1 và G2
P3 = P1 P 2 {S 3 -> S1 | S 2}
Hiển nhiên G3 là văn phạm phi ngữ cảnh, nên L(G3 ) phi ngữ cảnh,
dễ thấy
L(G 3 ) = L1 L 2
Giả sử w L1
thì S3 => S1 w
là một dẫn xuất có thể trong văn phạm G3 Một lý luận tương tự
Ta có, w thuộc L2, cũng vậy, nếu w thuộc L(G 3 ) thì
hoặc S3 => S1 hoặc S3 => S2 (8.10)
Vì dạng câu dược dẫn từ S1 , có biến trong V1, và V1 và V2 rời nhau nên dẫn xuất
S1 w
có thể gồm những luật sinh trong P1 Do vậy w phải thuộc L1
Trang 8Chọn theo (8.10) thì w phải thuộc L2 và L(G3) là L1 L2
tiếp theo, xem xét
G4 = ( V1 V2 {S4}, T1 T2, S4, P4)
Lần nữa S4 là biến mới và
P4 = P1 P2 { S4 -> S1S2 }
khi đó
L(G4 ) = L(G1)L(G 2 )
Cuối cùng, xem xét L(G5 ) với
G 5 = ( V1 {S5}, T1, S 5 , P 5)
mà S 5 là biến mới và
P5 = P1 {S5 -> S1S 5 | }
khi đó
L(G 5 ) = L(G1)*
Do đó, họ ngôn ngữ phi ngữ cảnh là đóng dưới phép hội, phép kết nối và
bao đóng_sao
Định lý 8.4
Họ ngôn ngữ phi ngữ cảnh thì không đóng dưới phép giao và phép lấy phần bù
-Chứng minh
Hãy coi hai ngôn ngữ
L1 = { a n b n c n : n 0, m 0 }
và
L 2 = {a n b m c m : n 0, m 0 }
có một số cách để chỉ ra L1 và L2 là phi ngữ cảnh.
Ví dụ chẳng hạn, một văn phạm cho L1 là
S -> S1S 2
S1 -> aS1b |
S 2 -> cS 2 |
Theo cách chọn, ta chú ý rằng L1 là kết nối của hai ngôn ngữ phi ngữ cảnh, vì thế nó là phi ngữ cảnh theo định lý 8.3 Nhưng
Trang 9
L1 L2 = { a n b n c n : n 0}
Là không phi ngữ cảnh Vì vậy họ ngôn ngữ phi ngữ cảnh không đóng dưới phép giao
Phần thứ hai của định lý, theo định lý 8.3 và xem biểu thức
Nếu họ ngôn ngữ phi ngữ cảnh là đóng dưới phép lấy phần bù, thì vế phải của
biểu thức trên phải là ngôn ngữ phi ngữ cảnh cho L1 và L 2 bất kỳ Nhưng ngược lại giao của hai ngôn ngữ phi ngữ cảnh không nhất thiết là phi ngữ cảnh Do vậy, họ ngôn ngữ phi ngữ cảnh không đóng dưới phép lấy phần bù
Trong khi phép giao của hai ngôn ngữ phi ngữ cảnh có thể sinh ra một ngôn ngữ không phi ngữ cảnh Tính đóng là đúng, khi một trong hai ngôn ngữ là chính qui
Định lý 8.5
Cho L1 là ngôn ngữ phi ngữ cảnh và L2 là ngôn ngữ chính qui
Thì L1 L2 là ngôn ngữ chính qui Ta nói rằng họ ngôn ngữ phi ngữ cảnh là
đóng dưới phép giao chính qui (regular intersection)
-
Chứng minh
Coi M1 = (Q, , , 1, q 0 , z, F1 ) là npda chấp nhận L1
và M2 = (Q, , , 2, p 0 , z, F2 ) là dfa chấp nhận L2
Ta xây dựng một automat đẩy xuống
mô phỏng hoạt động của M1 và M2
Mỗi khi một ký hiệu được đọc từ chuỗi nhập,
mô phỏng những dịch chuyển của M1 và M2
Ta có :
= Q x P
= (q0, p0)
= F1 x F2
và định nghĩa sao cho
(( qk, pl ), x) ((qi, pj), a, b)
nếu và chỉ nếu
(qk, x) 1(qi, a, b)
và 2 (p j , a) = pl
Ta cũng cần rằng, nếu a = thì pj = pl Phát biểu , trạng thái của được
Trang 10đánh nhãn là cặp ( qi, pj), biểu thị cho những trạng thái tương ứng của
M1 và M2 sau khi đọc một số ký hiệu nhập Dùng qui nạp ta được
((q0 , p 0 ), w, z) (qr, ps), x) Với qr F1 và Ps F2 nếu và chỉ nếu
(q0, w, s) M1(qs, x) và *(p0, w) = ps
Do đó, chuỗi chấp nhận bởi nếu và chỉ nếu nó được chấp nhận bởi M1
và M2 , đó là, nếu nó thuộc vào L(M1) L(M2) = L1 L2
Ví dụ 8.7
Chỉ ra rằng ngôn ngữ
L = { an bn : n 0, n 100 }
là phi ngữ cảnh
Ta có thể xây dựng một pda hay một văn phạm phi ngữ cảnh cho L Dùng
lý luận như định lý 8.5 Chú ý rằng
L = { an bn : n 0 } L1
Mà L1 là ngôn ngữ chính qui gồm những chuỗi trong L(a*b*) trừ chuỗi
a100 b100 Do vậy L là phi ngữ cảnh.
Ví dụ 8.8
Chỉ ra rằng ngôn ngữ
L = { w {a, b, c} : na(w) = nb(w) = nc(w) }
là không phi ngữ cảnh Bổ đề bơm có thể sử dụng cho ví dụ này, nhưng ta có thể lý luận ngắn
hơn, bằng cách dùng tính đóng dưới phép giao chính qui Giả sử rằng L là
phi ngữ cảnh, khi đó
L L( a* b* c*) = {a n b n c n : n 0}
cũng là phi ngữ cảnh, nhưng điều này không đúng Ta kết luận
L không phi ngữ cảnh.
Một số những tính chất có thể quyết định
Trang 11của ngôn ngữ phi ngữ cảnh
Kết hợp định lý 5.2 và 6.6 ta đã thiết lập sự tồn tại của giải thuật thành viên cho ngôn ngữ phi ngữ cảnh Dĩ nhiên, đây là một tính chất thiết thực cho bất kỳ họ ngôn ngữ nào hữu dụng trong thực tế Một số tính chất đơn giản khác cũng đưa ra ở đây Ta giả sử rằng ngôn ngữ được mô tả bằng văn phạm
Định lý 8.6
Cho một văn phạm phi ngữ cảnh G = ( V, T, S, P) , tồn tại một giải
thuật để quyết định L(G) có rỗng hay không.
Chứng minh
Giả sử rằng L(G) ta dùng giải thuật để khử những ký hiệu và luật sinh vô dụng Nếu S là vô dụng thì L(G) là rỗng Nếu không, thì L(G) chứa ít
nhất là một phần tử
Định lý 8.7
Cho một văn phạm phi ngữ cảnh G = (V, T, S, P), tồn tại một giải thuật
để xác định L(G) có vô hạn hay không.
-Chứng minh
Giả sử G không chứa luật sinh , đơn vị, không có kí hiệu vô dụng và văn phạm có một biến lặp lại, trong trường hợp này, tồn tại A V, để có dẫn
xuất
A xAy
Vì G không có luật sinh và đơn vị, và x,y không thể cùng rỗng một lúc Vì A
không rỗng và cũng không vô dụng, ta có
S uAv w
và
A z
nhưng, khi đó
S => uAv => ux n Ay n v => ux n zy n v
là có thể với mọi n, vì vậy L là vô hạn.
Trang 12BÀI TẬP
1 Cho L trong định lý 8.4 chứng tỏ L là tuyến tính
2 Chứng tỏ rằng L là phi ngữ cảnh
a) L = { a n b n : n 0 , n không chia hết cho 5}
b) L = { w {a, b}* : na(w) = nb(w), w không chứa chuỗi con aab }