Tôi không rõ về việc sử dụng các cụm từ ngôn ngữ "vô hạn" hoặc ngôn ngữ "hữu hạn" trong lý thuyết máy tính.
Tôi nghĩ rằng nguồn gốc của những rắc rối là một ngôn ngữ như là vô hạn theo nghĩa là nó có thể tạo vô hạn (nhưng đếm được) số chuỗi. Tuy nhiên, nó vẫn có thể được công nhận bởi một máy tự động trạng thái hữu hạn.L = { a b }*
Một vấn đề khác là lý thuyết ngôn ngữ chính thức khá đặc biệt trong cách sử dụng thuật ngữ "ngôn ngữ".
Đối với mọi người trên thế giới này ngoại trừ những người trong lý thuyết ngôn ngữ chính thức, ngôn ngữ là một hệ thống các cách nói được sử dụng để giao tiếp, vì vậy mỗi cách nói có một hình thức ( cú pháp của nó ) và một số loại ý nghĩa ( ngữ nghĩa của nó ). Lý thuyết ngôn ngữ chính thức, ít nhất là phần được sử dụng trong khoa học máy tính, được dành cho vấn đề làm thế nào tốt nhất để xác định, chính thức, cú pháp của ngôn ngữ. Đó là tất cả về mối quan hệ giữa cú pháp của ngôn ngữ (cách nói giống như thế nào) và hình thức (ngôn ngữ!) Như các biểu thức thông thường được sử dụng để xác định cú pháp của ngôn ngữ.
Do đó, trong lý thuyết ngôn ngữ chính thức, 'một ngôn ngữ' được định nghĩa đơn giản là 'một chuỗi các chuỗi'. Nó thường không gán nghĩa cho các chuỗi trong ngôn ngữ.
Đồng thời, các hình thức được sử dụng để mô tả các ngôn ngữ, chẳng hạn như biểu thức chính quy, cũng hình thành ngôn ngữ theo nghĩa này: ví dụ: mọi biểu thức chính quy là một chuỗi và do đó, tập hợp các biểu thức chính là một ngôn ngữ. Tuy nhiên, đối với những formalisms, các chuỗi trong ngôn ngữ làm có một ý nghĩa: ví dụ, ý nghĩa của mỗi biểu thức chính quy là ngôn ngữ nó biểu thị.
một b{ab}abab{ab}
{ a b }** LLkhông hoặc nhiều lần lặp đi lặp lại. NếuL là ngôn ngữ trống rỗng, kết quả là L; trong tất cả các trường hợp khác, kết quả là một ngôn ngữ vô hạn. Ví dụ,{ a b }* là ngôn ngữ { Ε , một b , một b một b , một b một b một b , một b một b một b một b , ... }. It is infinite, but using the operator ∗, we can describe it in a finite way, as {ab}∗.
Furthermore, we can use a regular expression to describe this language, namely ( một b)*. Giống như tất cả các biểu thức thông thường, đây là một chuỗi hữu hạn, nhưng giống như hầu hết các biểu thức thông thường có chứa* toán tử, nó mô tả một ngôn ngữ vô hạn.
Bất cứ khi nào một văn bản trên các ngôn ngữ chính thức sử dụng một biểu thức như ( a b )* that denotes a language, ask yourself whether it is discussing the regular expression itself (e.g. how it is constructed, which language it denotes, etc.) or whether it merely uses the regular expression to refer to the language being denoted.
ab*
(ngôi sao Kleene) có nghĩa là bạn có thể có 0 hoặc nhiều tổ hợp chuỗiab
, điều này bao gồm số chuỗi vô hạn tiềm năng: {"", ab ^ 1, ab ^ 2, ab ^ 3, ... ., ab ^ n}. Tuy nhiên, bạn vẫn có thể xây dựng một FSM nhận ra ngôn ngữ này vì thực tế không có cách nào để tạo ra một chuỗi vô hạn, khi được xử lý bởi một máy, tất cả các chuỗi phải hữu hạn, nhưng điều đó không làm cho ngôn ngữ trở nên hữu hạn. Các ngôn ngữ vô hạn là lý thuyết.