Định lý 2.1. Đối với văn phạm phi ngữ cảnh tùy ý G = <Σ, Δ, S, P>, luôn tồn tại
một văn phạm phi ngữ cảnh ở dạng chuẩn Chomsky G’ = <Σ, Δ’, S, P’> tương đương
với nó, tức là L(G) = L(G’).
Chứng minh:
Theo các định lý 1.2, 1.3 và 1.4 ở phần trên, ta có thể giả thiết văn phạm G là không chứa các ký hiệu thừa, không chứa các ε-qui tắc và không chứa các qui tắc đơn. Để xây dựng văn phạm mới G’ ở dạng chuẩn Chomsky, ta chỉ cần loại bỏ các quy tắc
mà vế phải có chứa cả ký hiệu chính và ký hiệu phụ hoặc các quy tắc mà vế phải nhiều
hơn hai ký hiệu. Việc loại bỏ các quy tắc không hợp lệ này tiến hành theo hai bước sau:
- Bước 1: Với các quy tắc vế phải có chứa cả ký hiệu chính và ký hiệu phụ, tức là các quy tắc có dạng: A→X1 X2…Xm , với Xi∈Σ∪Δ. (1)
Xét tất cả các Xi trong quy tắc (1), nếu Xi∈ Δ thì giữ nguyên Xi, nếu Xi = a ∈ Σ, ta thêm vào ký hiệu phụ Aa, thay Xi trong quy tắc (1) bởi Aa, và thêm vào quy tắc Aa→a.
Lặp lại quá trình trên với tất cả các Xi trong quy tắc (1), quy tắc (1) trở thành: A→Y1 Y2
…Y m, với Yi là các ký hiệu phụ (Yi = Xi nếu Xi∈, Yi = Ai nếu Xi = a ∈Σ).
Sau bước 1, ta nhận được vă n phạm G1 = <Σ, Δ 1 , S, P1> với Δ 1 và P1 nhận
được từ và P sau khi thêm vào các ký hiệ ơhụ mới và các quy tắc mới như trên. Rõ
ràng L(G1) = L(G) mà G1 không chứa các quy tắc mà vế phải có cả ký hiệu chính và ký hiệu phụ.
- Bước 2: Bây giờtrong G1cần loại bỏcác quy tắc mà vếphải cóđộdài lớn hơn 2,
gồm toàn ký hiệu phụ, là các quy tắc dạng: A→Y1Y2…Ym , với m > 2, Yi∈Δ 1 (2) Ta thêm m-2 ký hiệu phụ Z1, Z2, … Zm-2 vào tập Δ1, và thêm vào m-2 quy tắc sau
đây: A→Y1Z1; Z1→Y2Z2; Z2→Y3Z3; …; Zm-2→Ym-1Ym.
Ta nhận được văn phạm mới G2 < Σ, Δ 2, S, P2> không chứa các quy tắc có vế
phải nhiều hơn 2 ký hiệu, không chứa các quy tác vế phải gồm cà ký hiệu chính và ký hiệu phụ. Dễ dàng chỉ ra rằng L(G2) = L(G1) = L(G), vậy G2 chính là văn phạm G’ ở
dạng chuẩn Chomsky cần tìm.
Ví dụ 2.1. Cho văn phạm phi ngữcảnh G = <{a, b}, {S, A, B}, S, P>, với tập quy
tắc P = {S→A, S→ABA, A→aA, A→a, A→B, B→bB, B→b}. Hãy xây dựng văn
phạm ở dạng chuẩn Chomsky tương đương với G.
Áp dụng định lý 1.3, ta có thể loại hết các quy tắc đơn trong G, đểđược văn phạm
tương đương mà không chứa quy tắc đơn G1 = <{a, b}, {S, A, B}, S, P1>, với P1 =
{S→ABA, S→aA, S→a, S→bB, S→b, A→aA, A→a, A→bB, A→b, B→bB, B→b}.
Bây giờ áp dụng định lý 3.1 cho văn phạm G1, ta thay tất cả các quy tắc mà vế
phải có chứa cả ký hiệu chính và ký hiệu phụ:
+ Với các quy tắc S→aA, A→aA ta thay a bởi Aa, thêm Aa vào tập ký hiệu phụ
mới 2, thêm quy tắc Aa→a vào tập quy tắc mới P2;
+ Với các quy tắc S→bB, A→bB, B→bB ta thay b bởi Ab, thêm Ab vào tập ký hiệu phụ mới 2, thêm quy tắc Ab→b vào tập quy tắc mới P2.
Ta nhận được G2 = <{a, b}, {S, A, B, Aa, Ab}, S, P2>, với P2= {S→ABA, S→AaA,
S→a, S→AbB, S→b, A→AaA, A→a, A→AbB, A→ b, B→AbB, B→b} không có quy
+ Với G2, ta giảm độ dài vế phải các quy tác có hơn hai ký hiệu: Thay quy tắc
S→ABA bởi hai quy tắc S→AC, C→BA, và thêm C vào tập ký hiệu phụ. Cuối cùng, ta
được văn phạm G3 = <{a, b}, {S, A, B, Aa, Ab, C}, S, P3>, với P3 = {S→AC, C→BA,
S→AaA, S→a, S→AbB, S→b, A→AaA, A→a, A→AbB, A→b, B→AbB, B→b}.
Văn phạm G3 ~ G2 ~ G1 ~ G, mà G3 là ở dạng chuẩn Chomsky.