Ngôn ngữ vô hạn so với ngôn ngữ hữu hạn


15

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ư 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={ab}

Điều đó cũng không giúp ích gì cho việc cuốn sách Sipser không thực sự tạo ra sự khác biệt này (ít nhất là theo như tôi có thể nói). Một câu hỏi về ngôn ngữ vô hạn / hữu hạn và mối quan hệ của chúng với các ngôn ngữ thông thường đã xuất hiện trong một bài kiểm tra mẫu.


1
Nó là vô hạn vì ab*(ngôi sao Kleene) có nghĩa là bạn có thể có 0 hoặc nhiều tổ hợp chuỗi ab, đ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.
Hunter McMillen

1
"Có thể mô tả chính xác" và "hữu hạn" không giống nhau. Ví dụ: biểu thức chính quy của bạn là một mô tả hữu hạn của một ngôn ngữ vô hạn; một máy tự động hữu hạn chỉ là một số khác (nhưng nó được gọi là máy tự động hữu hạn không phải vì nó là một mô tả hữu hạn, mà bởi vì nó chỉ có thể lưu trữ một lượng bit không đổi). {a,b}
Raphael

Tại sao số lượng trạng thái hữu hạn có ý nghĩa hơn so với mô tả hữu hạn của bất kỳ máy nào khác?
babou

Máy tự động có thể có các vòng lặp và bạn có thể sử dụng một số trạng thái vô hạn.
doganulus

Câu trả lời:


26

Ôi trời. Điều này có vẻ như là một sự nhầm lẫn gây ra bởi thuật ngữ (trường học cũ) của "ngôn ngữ trạng thái hữu hạn" như một từ đồng nghĩa với cái được gọi là "ngôn ngữ thông thường" ngày nay.

Dù sao, các định nghĩa tiêu chuẩn cho hữu hạn / vô hạn được chấp nhận ngày nay chỉ liên quan đến kích thước của ngôn ngữ:

  1. một ngôn ngữ hữu hạn là bất kỳ tập hợp của chuỗi, có số lượng hữu hạn, | L | < .L|L|<
  2. một ngôn ngữ vô hạn là bất kỳ tập hợp của chuỗi, của cardinality vô hạn ( 0 ) | L | = .L0|L|=

Một hữu hạn luôn luôn đều đặn.L

Một vô hạn có thể là thường xuyên (đôi khi được gọi là "trạng thái hữu hạn"), có thể quyết định (đôi khi được gọi là "đệ quy"), không thường xuyên (trạng thái không hữu hạn), không thể quyết định, v.v.L


1
Cảm ơn Ran! Vì vậy, chỉ để được rõ ràng, là một ngôn ngữ vô hạn? Vì vậy, tôi đoán, với một ngôn ngữ vô hạn, không có gì có thể được biết về loại ngôn ngữ đó. L={ab}
gỗ

1
đúng rồi. là vô hạn, ngôn ngữ thông thường. L={a,b}
Ran G.

1
@timberly Chắc chắn, chúng ta có thể biết và chứng minh đó là loại ngôn ngữ nào.
phant0m

4

Một ngôn ngữ là một tập hợp các chuỗi. Nó là hữu hạn nếu nó có một số chuỗi hữu hạn trong đó.


4

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= ={mộtb}*

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ộtb{ab}abab{ab}

{mộtb}**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ụ,{mộtb}* là ngôn ngữ {ε,mộtb,mộtbmộtb,mộtbmộtbmộtb,mộtbmộtbmộtbmộtb,Giáo dục}. 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 (ab)*. 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ư (mộtb)* 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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.