câu trả lời khác: Ngữ pháp chỉ có thể sản xuất một số hữu hạn các chuỗi, cụ thể là 6.
S -> aabbbaab | aabbb | bbaab | bb | abbaab | abb.
Bạn bây giờ có thể ngưng tụ lại này để Chomsky Normal Form bằng tay.
Bằng cách thay thế, chúng tôi có thể tìm thấy tập hợp tất cả các chuỗi được tạo. quy tắc ban đầu của bạn:
S -> AB | aB.
A -> aab | lambda.
B -> bbA.
Đầu tiên chia ra các S
quy tắc:
S -> AB.
S -> aB.
Bây giờ thay thế những gì A và B mở rộng sang:
S -> AB
-> (aab | lambda) bbA
-> (aab | lambda) bb (aab | lambda).
S -> aB
-> abbA
-> abb (aab | lambda).
Mở rộng những một lần nữa để có được:
S -> aabbbaab.
S -> aabbb.
S -> bbaab.
S -> bb.
S -> abbaab.
S -> abb.
Để thay đổi tập hợp hữu hạn này thành Biểu mẫu thông thường Chomsky, nó đủ để làm điều đó bằng vũ lực mà không có bất kỳ sự bao thanh thông minh nào. Đầu tiên chúng tôi giới thiệu hai quy tắc thiết bị đầu cuối:
X -> a.
Y -> b.
Bây giờ cho mỗi chuỗi, chúng ta tiêu thụ chữ cái đầu tiên với một biến thiết bị đầu cuối và các chữ cái còn lại với một biến mới. Ví dụ: như thế này:
S -> aabbb. (initial rule, not in Chomsky Normal Form)
S -> XC, where X->a and C->abbb.
C -> XD, where X->a and D->bbb.
D -> YE, where Y->b and E->bb.
E -> YY, where Y->b and Y->b.
Chúng tôi chỉ thực hiện quy trình này cho tất cả 6 chuỗi, tạo ra nhiều biến trung gian mới.
Điều đầu tiên để kiểm tra được, bạn đã đọc [Wikipedia] (http://en.wikipedia.org/wi ki/Chomsky_normal_form)? – Nayuki
Yêu cầu làm rõ: lambda là gì? Nó có phải là biểu tượng đầu cuối không? – Nayuki
vâng, tại sao? Tôi không biết quy tắc cuối cùng là gì. Lambda là Epsilon trong wikipedia, nó đi đến null – tehman