No tengo claro el uso de las frases lenguaje "infinito" o lenguaje "finito" en la teoría de computadoras.
Creo que la raíz del problema es que un lenguaje como es infinito en el sentido de que puede generar un número infinito (pero contable) de cadenas. Sin embargo, todavía puede ser reconocido por un autómata de estado finito .
Tampoco ayuda que el libro Sipser realmente no haga esta distinción (al menos por lo que puedo decir). En un examen de muestra surgió una pregunta sobre los idiomas infinitos / finitos y su relación con los idiomas regulares.
ab*
(estrella de Kleene) significa que puede tener cero o más combinaciones de la cadenaab
, esto incluye un número infinito potencial de cadenas: {"", ab ^ 1, ab ^ 2, ab ^ 3, ... ., ab ^ n}. Sin embargo, aún puede construir un FSM que reconozca este lenguaje porque en realidad no hay forma de generar una cadena infinita, cuando es procesada por una máquina, todas las cadenas tienen que ser finitas, pero eso no hace que el lenguaje en sí sea finito. El lenguaje infinito es teórico.Respuestas:
Oh mi. Esto parece una confusión causada por la terminología (de la vieja escuela) del "lenguaje de estado finito" como sinónimo de lo que hoy se conoce como "lenguaje regular".
De todos modos, las definiciones estándar para finito / infinito aceptadas en estos días solo se refieren al tamaño del idioma:
Una finita siempre es regular.L
Un infinito puede ser regular (a veces llamado "estado finito"), decidible (a veces llamado "recursivo"), no regular (estado no finito), no decidible, etc.,L
fuente
Un lenguaje es un conjunto de cadenas. Es finito si tiene un número finito de cadenas.
fuente
Otro problema es que la teoría formal del lenguaje es bastante peculiar en la forma en que utiliza el término "lenguaje".
Para todos en este mundo, excepto las personas en la teoría del lenguaje formal, un lenguaje es un sistema de enunciados utilizados para comunicarse, por lo que cada enunciado tiene una forma (su sintaxis ) y algún tipo de significado (su semántica ). La teoría formal del lenguaje, al menos la parte que se usa en informática, está dedicada al problema de cómo definir mejor, formalmente, la sintaxis de los lenguajes. Se trata de la relación entre la sintaxis de los idiomas (cómo se ven las expresiones) y los formalismos (idiomas), como las expresiones regulares que se utilizan para definir la sintaxis de los idiomas.
Por lo tanto, en la teoría del lenguaje formal, "un lenguaje" se define simplemente como "un conjunto de cadenas". Por lo general, no asigna significados a las cadenas en el idioma.
Al mismo tiempo, los formalismos utilizados para describir idiomas, como las expresiones regulares, también forman idiomas en este sentido: por ejemplo, cada expresión regular es una cadena y, por lo tanto, el conjunto de expresiones regulares es un lenguaje. Sin embargo, para estos formalismos, las cadenas en el lenguaje sí tienen un significado: por ejemplo, el significado de cada expresión regular es el lenguaje que denota.
fuente