Ngữ pháp vốn là đối tượng đệ quy, vì vậy câu trả lời có vẻ hiển nhiên: bằng cảm ứng. Điều đó nói rằng, các chi tiết cụ thể thường là khó khăn để có được đúng. Trong phần tiếp theo tôi sẽ mô tả một kỹ thuật cho phép giảm nhiều bằng chứng chính xác về ngữ pháp đối với các bước cơ học, miễn là một số tiền xử lý sáng tạo được thực hiện.
Ý tưởng cơ bản là không giới hạn bản thân trong các từ ngữ pháp và ngôn ngữ; thật khó để nắm bắt cấu trúc của ngữ pháp theo cách này. Thay vào đó, chúng tôi sẽ tranh luận về tập hợp các câu mà ngữ pháp có thể tạo ra. Hơn nữa, chúng tôi sẽ chia một mục tiêu bằng chứng đáng ngại thành nhiều mục tiêu nhỏ dễ thực hiện hơn.
Hãy một ngữ pháp chính thức với không bến , nhà ga , quy tắc và bắt đầu biểu tượng . Chúng tôi biểu thị bằng tập hợp các câu có thể bắt nguồn từ được cho , đó là . Ngôn ngữ được tạo bởi là . Giả sử chúng tôi muốn chỉ ra rằng cho một số .G=(N,T,δ,S)NTδS∈Nϑ(G)Sδα∈ϑ(G)⟺S⇒∗αGL(G)=ϑ(G)∩T∗L=L(G)L⊆T∗
Ansatz
Đây là cách chúng tôi đi về điều đó. Chúng tôi xác định sao choM1,…,Mk⊆(N∪T)∗
- ϑ(G)=⋃i=1kMi và
- T∗∩⋃i=1kMi=L .
Trong khi 2. thường rõ ràng theo định nghĩa của , 1. yêu cầu một số công việc nghiêm túc. Hai mục cùng nhau ngụ ý rõ ràng như mong muốn.MiL(G)=L
Để dễ ghi chú, hãy biểu thị .M=⋃ki=1Mi
Con đường đá
Có hai bước chính để thực hiện một bằng chứng như vậy.
Làm thế nào để tìm (tốt) ? Mi
Một chiến lược là điều tra các giai đoạn mà ngữ pháp hoạt động thông qua. Không phải mọi ngữ pháp đều phù hợp với ý tưởng này; nói chung, đây là một bước sáng tạo. Nó giúp nếu chúng ta có thể tự xác định ngữ pháp; với một số kinh nghiệm, chúng tôi sẽ có thể định nghĩa ngữ pháp dễ hiểu hơn với phương pháp này.
Làm thế nào để chứng minh 1.?
Như với bất kỳ bình đẳng thiết lập, có hai hướng.
- ϑ(G)⊆M : (cấu trúc) cảm ứng trên các sản phẩm của .G
- M⊆ϑ(G) : Thông thường một cảm ứng bởi , bắt đầu từ một trong đó chứa .MiS
Điều này là cụ thể như nó được; các chi tiết phụ thuộc vào ngữ pháp và ngôn ngữ trong tay.
Thí dụ
Xem xét ngôn ngữ
L={anbncm∣n,m∈N}
và ngữ pháp với được cung cấp bởiG=({S,A},{a,b,c},δ,S)δ
SA→Sc∣A→aAb∣ε
mà chúng tôi muốn chỉ ra rằng . Các giai đoạn ngữ pháp này hoạt động thông qua là gì? Chà, đầu tiên nó tạo ra và sau đó . Điều này ngay lập tức thông báo sự lựa chọn của chúng tôi về , cụ thể làL=L(G)cmanbnMi
M0M1M2={Scm∣m∈N},={anAbncm∣m,n∈N},={anbncm∣m,n∈N}.
Vì và , mục 2. đã được xử lý. Hướng tới 1., chúng tôi chia bằng chứng thành hai phần như đã thông báo.M2=LM0∩T∗=M1∩T∗=∅
ϑ(G)⊆M
Chúng tôi thực hiện cảm ứng cấu trúc cùng các quy tắc của .G
IA: Vì chúng tôi neo thành công.S=Sc0∈M0
IH: Giả sử đối với một số bộ câu mà chúng ta cũng biết .X⊆ϑ(G)X⊆M
IS: Hãy để tùy ý. Chúng ta phải chứng minh rằng bất kỳ hình thức có bất cứ điều gì và nguyên tắc được áp dụng tiếp theo, chúng tôi không rời khỏi . Chúng tôi làm điều này bằng cách phân biệt trường hợp đầy đủ. Theo giả thuyết cảm ứng, chúng ta biết rằng (chính xác) một trong những trường hợp sau đây được áp dụng:α∈X⊆ϑ(G)∩MαM
- w∈M0 , đó là đối với một số .
Hai quy tắc có thể được áp dụng, cả hai đều rút ra một câu trong :
w=Scmm∈N
M
- Scm⇒Scm+1∈M0 và
- Scm⇒Acm=a0Ab0cm∈M1 .
- w∈M1 , tức là đối với một số :
w=anAbncmm,n∈N
- w⇒an+1Abn+1cm∈M1 và
- w⇒anbncm∈M2 .
- w∈M3 : vì , không có dẫn xuất nào nữa.w∈T∗
Vì chúng tôi đã bao gồm thành công tất cả các trường hợp, cảm ứng đã hoàn tất.
ϑ(G)⊇M
Chúng tôi thực hiện một bằng chứng (đơn giản) cho mỗi . Lưu ý cách chúng tôi xâu chuỗi các bằng chứng để "sau" có thể neo bằng cách sử dụng "trước đó" .MiMiMi
- M1 : Chúng tôi thực hiện một cảm ứng trên , thả neo trong và sử dụng trong bước.mSc0=SS→Sc
- M2 : Chúng tôi sửa thành một giá trị tùy ý và tạo ra . Chúng tôi neo trong , sử dụng bằng bằng chứng trước đây. Bước tiến triển thông qua .mnAcmS⇒∗Scm⇒AcmA→aAb
- M3 : Đối với tùy ý chúng tôi sử dụng bằng chứng trước đây cho .m,n∈NS⇒∗anAbncm⇒anbncm
Điều này kết luận hướng thứ hai của bằng chứng 1., và chúng ta đã hoàn thành.
Chúng ta có thể thấy rằng chúng ta khai thác rất nhiều rằng ngữ pháp là tuyến tính . Đối với các ngữ pháp phi tuyến tính, chúng ta cần với nhiều hơn một tham số biến (trong chứng minh), có thể trở nên xấu. Nếu chúng ta có quyền kiểm soát ngữ pháp, điều này dạy chúng ta giữ cho nó đơn giản. Xem xét như ví dụ răn đe ngữ pháp này tương đương với :MiG
SAC→aAbC∣ε→aAb∣ε→cC∣ε
Tập thể dục
Đưa ra một ngữ pháp cho
L={bkal(bc)manbo∣k,l,m,n,o∈N,k≠o,2l=n,m≥2}
và chứng minh tính đúng đắn của nó.
Nếu bạn gặp khó khăn, một ngữ pháp:
Hãy xem xét với các sản phẩmG=({S,Br,Bl,A,C},{a,b,c},δ,S)
SBlBrAC→bSb∣Bl∣Br→bBl∣bA→Brb∣Ab→aAaa∣C→bcC∣bcbc
và :Mi
M0M1M2M3M4M5={biSbi∣i∈N}={biBlbo∣o∈N,i≥o}={bkBrbi∣k∈N,i≥k}={bkaiAa2ibo∣k,o,i∈N,k≠o}={bkal(bc)iCa2lbo∣k,o,l,i∈N,k≠o}=L
Thế còn ngữ pháp phi tuyến tính?
Đặc điểm đặc trưng của lớp ngôn ngữ không ngữ cảnh là ngôn ngữ Dyck : về cơ bản, mọi ngôn ngữ không ngữ cảnh có thể được thể hiện dưới dạng giao điểm của ngôn ngữ Dyck và ngôn ngữ thông thường. Thật không may, ngôn ngữ Dyck không phải là tuyến tính, nghĩa là chúng ta không thể đưa ra ngữ pháp phù hợp với phương pháp này.
Tất nhiên chúng ta vẫn có thể định nghĩa và làm bằng chứng, nhưng chắc chắn sẽ khó khăn hơn với các cảm ứng lồng nhau và những gì không. Có một cách chung mà tôi biết có thể giúp ích ở một mức độ nào đó. Chúng tôi thay đổi ansatz để cho thấy rằng chúng tôi tạo ra ít nhất tất cả các từ bắt buộc và chúng tôi tạo ra số lượng từ đúng (trên mỗi độ dài). Chính thức, chúng tôi cho thấy rằngMi
- ϑ(G)⊇L và
- |L(G)∩Tn|=|L∩Tn|cho tất cả .n∈N
Bằng cách này, chúng ta có thể giới hạn bản thân theo hướng "dễ dàng" từ cấu trúc ansatz ban đầu và khai thác trong ngôn ngữ, bỏ qua các tính năng quá phức tạp mà ngữ pháp có thể có. Tất nhiên, không có bữa ăn trưa miễn phí: chúng tôi nhận toàn bộ nhiệm vụ mới là đếm các từ tạo ra cho mỗi . May mắn cho chúng tôi, điều này thường dễ kéo dài; xem ở đây và ở đây để biết chi tiết¹. Bạn có thể tìm thấy một số ví dụ trong luận án cử nhân của tôi .G n∈N
Đối với các ngữ pháp mơ hồ và không có ngữ cảnh, tôi e rằng chúng ta sẽ quay trở lại với ansatz và nghĩ về mũ.
- Khi sử dụng phương pháp cụ thể đó để đếm, chúng tôi nhận được một phần thưởng là ngữ pháp không rõ ràng. Đổi lại, điều này cũng có nghĩa là kỹ thuật này phải thất bại đối với các ngữ pháp mơ hồ vì chúng ta không bao giờ có thể chứng minh được 2.