Các biểu thức chính quy, ngữ pháp thông thường và automata hữu hạn chỉ đơn giản là ba hình thức khác nhau cho cùng một thứ. Có các thuật toán để chuyển đổi từ bất kỳ trong số chúng sang bất kỳ khác.
Lý do cơ bản mà chúng ta có cả ba là chúng được tạo ra một cách độc lập, với tập hợp tương đương đầu tiên (cũng có một số hình thức khác) được chứng minh bởi Kleene (kết quả này, hoặc một phần của nó được gọi là Định lý Kleene).
Vì vậy, trong bối cảnh đó, tùy thuộc vào việc bạn muốn chạy các mô hình theo cách nào, tất cả đều nhận ra hoặc tạo ra các chuỗi ngôn ngữ thông thường, và về mặt toán học, theo nghĩa đó, không có sự khác biệt.
Tất nhiên đôi khi một mô hình dễ sử dụng hơn mô hình khác cho một nhiệm vụ cụ thể, do các chi tiết của hình thức. Hơn nữa, cách chúng hoạt động trong đầu của con người thường hơi khác một chút, tự động hữu hạn "cảm giác" giống như máy tính, các biểu thức thông thường "cảm thấy" giống như bạn đang xây dựng một chuỗi từ các chuỗi nhỏ hơn và ngữ pháp thông thường "cảm thấy" giống như một ngữ pháp truyền thống hơn dẫn xuất hoặc phân loại một câu trong một ngôn ngữ (không ngạc nhiên khi bạn nhìn vào lịch sử).
Vì vậy, để so sánh hai, hãy xác định chúng:
Biểu thức chính quy
Vì vậy, các biểu thức chính quy được định nghĩa đệ quy như sau:
- là một biểu thức chính quy∅
- là một biểu thức chính quyε
- là một biểu hiện thường xuyên cho mỗi một ∈ Σaa∈Σ
- nếu và B là biểu thức chính quy thì
AB
- là một biểu thức chính quy (concatentation)A⋅B
- là một biểu thức chính quy (luân phiên)A∣B
- là một biểu thức chính quy (sao Kleene)A∗
Cùng với một số ngữ nghĩa (nghĩa là cách chúng tôi diễn giải các toán tử để có được một chuỗi), chúng tôi có được cách tạo các chuỗi từ một ngôn ngữ thông thường.
Ngữ pháp thông thường
Ngữ pháp thông thường bao gồm bốn tuple nơi N là tập hợp các phi cảng, Σ là tập hợp các thiết bị đầu cuối, S là sự khởi đầu không cuối và P là tập hợp các tác phẩm đó cho chúng tôi biết cách thay đổi biểu tượng bắt đầu, từng bước một, thành một chuỗi trong Σ ∗ . P có thể có các sản phẩm được rút ra từ một trong hai loại (không phải cả hai):(N,Σ,P,S∈N)NΣSPΣ∗P
Ngữ pháp tuyến tính bên phải
Đối với phi bến , C , thiết bị đầu cuối một và chuỗi rỗng ε , tất cả các quy tắc có dạng:BCaε
- B→a
- B→aC
- B→ε
Ngữ pháp tuyến tính bên trái
Các ngữ pháp tuyến tính bên trái là như nhau, nhưng quy tắc # 2 là .B→Ca
Những điều cần suy ngẫm
Vì vậy, nhìn vào các định nghĩa này và chơi với chúng, chúng ta có thể thấy rằng các biểu thức chính quy trông giống như các quy tắc khớp hoặc các cách xử lý chuỗi một chút tại một thời điểm.
Các ngữ pháp dường như "gắn nhãn" các phần của chuỗi và nhãn nhóm dưới nhãn mới để xác thực chuỗi (nghĩa là nếu chúng ta có thể chuyển từ sang chuỗi hoặc ngược lại, chúng tôi rất vui).S
Tuy nhiên những điều này thực sự đang làm điều cơ bản tương tự, và cách bạn xem ẩn dụ về chức năng của chúng thực sự tùy thuộc vào bạn.