Lenguaje habitual

Ajustar Compartir Imprimir Citar
Lenguaje formal que se puede expresar utilizando una expresión regular

En informática teórica y teoría del lenguaje formal, un lenguaje regular (también llamado lenguaje racional) es un lenguaje formal que se puede definir mediante una expresión regular, en el sentido estricto en informática teórica (a diferencia de muchos motores de expresiones regulares modernos, que se aumentan con características que permiten el reconocimiento de lenguajes no regulares).

Alternativamente, un lenguaje regular puede definirse como un lenguaje reconocido por un autómata finito. La equivalencia de expresiones regulares y autómatas finitos se conoce como teorema de Kleine (en honor al matemático estadounidense Stephen Cole Kleene). En la jerarquía de Chomsky, los lenguajes regulares son los lenguajes generados por las gramáticas Tipo-3.

Definición formal

La colección de lenguajes regulares sobre un alfabeto Σ se define recursivamente de la siguiente manera:

Consulte expresión regular para conocer la sintaxis y la semántica de las expresiones regulares.

Ejemplos

Todos los lenguajes finitos son regulares; en particular, el lenguaje de cadenas vacías {ε} = Ø* es regular. Otros ejemplos típicos incluyen el lenguaje que consta de todas las cadenas sobre el alfabeto {a, b} que contienen un número par de as, o el lenguaje que consta de todas las cadenas de la forma: varios as seguidos de varios bs.

Un ejemplo simple de un lenguaje que no es regular es el conjunto de cadenas { anb n | n ≥ 0 }. Intuitivamente no se puede reconocer con un autómata finito, ya que un autómata finito tiene memoria finita y no puede recordar el número exacto de a's. Las técnicas para probar este hecho rigurosamente se dan a continuación.

Formalismos equivalentes

Un lenguaje regular satisface las siguientes propiedades equivalentes:

  1. es el lenguaje de una expresión regular (por la definición anterior)
  2. es el idioma aceptado por un autómata finita no determinista (NFA)
  3. es el idioma aceptado por un autómata finita determinista (DFA)
  4. puede ser generado por una gramática regular
  5. es el idioma aceptado por un autómata finito alternante
  6. es el idioma aceptado por un autómata finito de dos vías
  7. puede ser generado por una gramática prefijo
  8. puede ser aceptado por una sola máquina de Turing
  9. puede definirse en la lógica monadic de segundo orden (Büchi-Elgot-Trakhtenbrot theorem)
  10. es reconocido por un monoide sintáctico finito M, significa que es el preimage { w zioDt* Silencio f()w) S } de un subconjunto S de un monoide finito M bajo un homomorfismo monoide f:*M del monoide libre en su alfabeto
  11. el número de clases de equivalencia de su congruencia sintáctica es finito. (Este número es igual al número de estados del mínimo automatismo finito determinista que acepta L.)

Las propiedades 10. y 11. son enfoques puramente algebraicos para definir lenguajes regulares; se puede formular un conjunto similar de declaraciones para un monoide M ⊆ Σ*. En este caso, la equivalencia sobre M conduce al concepto de una lengua reconocible.

Algunos autores usan una de las propiedades anteriores diferente de "1." como una definición alternativa de lenguajes regulares.

Algunas de las equivalencias anteriores, particularmente aquellas entre los primeros cuatro formalismos, se denominan teorema de Kleine en los libros de texto. Precisamente cuál (o qué subconjunto) se llama así varía entre los autores. Un libro de texto llama a la equivalencia de expresiones regulares y NFA ("1." y "2." arriba) "Teorema de Kleine". Otro libro de texto llama a la equivalencia de expresiones regulares y DFA ("1." y "3." arriba) "Teorema de Kleine". Otros dos libros de texto prueban primero la equivalencia expresiva de NFA y DFA ("2." y "3.") y luego establecen el "Teorema de Kleine" como la equivalencia entre expresiones regulares y autómatas finitos (se dice que este último describe "lenguajes reconocibles"). Un texto de orientación lingüística primero equipara las gramáticas regulares ("4." arriba) con DFA y NFA, llama a los lenguajes generados por (cualquiera de) estos "regulares", después de lo cual introduce regulares expresiones que utiliza para describir "lenguajes racionales", y finalmente establece el "teorema de Kleine" como la coincidencia de lenguajes regulares y racionales. Otros autores simplemente definen "expresión racional" y "expresiones regulares" como sinónimos y hacer lo mismo con "lenguajes racionales" y "idiomas regulares".

Aparentemente, el término "regular" se origina en un informe técnico de 1951 donde Kleene introdujo "eventos regulares" y dio la bienvenida explícitamente "cualquier sugerencia sobre un término más descriptivo". Noam Chomsky, en su artículo seminal de 1959, usó el término "regular" en un significado diferente al principio (refiriéndose a lo que se llama "forma normal de Chomsky&# 34; hoy), pero notó que sus "lenguajes de estado finitos" eran equivalentes a los "eventos regulares" .

Propiedades de cierre

Los lenguajes regulares se cierran bajo varias operaciones, es decir, si los lenguajes K y L son regulares, también lo es el resultado de las siguientes operaciones:

Propiedades de decidibilidad

Dados dos autómatas finitos deterministas A y B, es decidible si aceptan el mismo lenguaje. Como consecuencia, utilizando las propiedades de cierre anteriores, los siguientes problemas también son decidibles para autómatas finitos deterministas A y B dados arbitrariamente, con lenguajes aceptados LA y LB, respectivamente:

Para expresiones regulares, el problema de universalidad ya es NP-completo para un alfabeto singleton. Para alfabetos más grandes, ese problema es PSPACE-completo. Si las expresiones regulares se amplían para permitir también un operador cuadrado, con "A2" que denota lo mismo que "AA", todavía solo se pueden describir lenguajes regulares, pero el problema de la universalidad tiene un límite inferior del espacio exponencial y, de hecho, es completo para el espacio exponencial con respecto a la reducción de tiempo polinomial.

Para un alfabeto finito fijo, la teoría del conjunto de todos los idiomas, junto con las cadenas, la pertenencia a una cadena en un idioma y, para cada carácter, una función para agregar el carácter a una cadena (y ninguna otra operación) — es decidible, y su mínima subestructura elemental consiste precisamente en lenguajes regulares. Para un alfabeto binario, la teoría se llama S2S.

Resultados de complejidad

En la teoría de la complejidad computacional, la clase de complejidad de todos los idiomas regulares se denomina a veces como REGULAR o REG e iguala DSPACE(O(1)), los problemas de decisión que pueden resolverse en espacio constante (el espacio utilizado es independiente del tamaño de entrada). REGULAR √ AC0, ya que (trivialmente) contiene el problema de paridad de determinar si el número de 1 bits en la entrada es uniforme o extraño y este problema no está en AC0. Por otro lado, REGULAR no contiene AC0, porque el lenguaje no regular de palindromas, o el lenguaje no regular {}0n1n:n▪ ▪ N}{displaystyle {0^{n}1}{n}:nin mathbb {N}} ambos pueden ser reconocidos en AC0.

Si un idioma no es regular, requiere una máquina con al menos Ω(log log n) espacio para reconocer (donde n es el tamaño de entrada). En otras palabras, DSPACE(o(log log n)) es igual a la clase de lenguajes regulares. En la práctica, la mayoría de los problemas no regulares se resuelven con máquinas que ocupan al menos un espacio logarítmico.

Ubicación en la jerarquía de Chomsky

Lenguaje regular en clases de jerarquía Chomsky.

Para ubicar los lenguajes regulares en la jerarquía de Chomsky, uno nota que cada lenguaje regular es independiente del contexto. Lo contrario no es cierto: por ejemplo, el idioma que consta de todas las cadenas que tienen el mismo número de a's que b's es independiente del contexto pero no regulares. Para demostrar que una lengua no es regular, a menudo se utiliza el teorema de Myhill-Nerode y el lema de bombeo. Otros enfoques incluyen el uso de las propiedades de cierre de los lenguajes regulares o la cuantificación de la complejidad de Kolmogorov.

Subclases importantes de lenguajes regulares incluyen

El número de palabras en un idioma normal

Vamos sL()n){displaystyle s_{L}(n)} denota el número de palabras de longitud n{displaystyle n} dentro L{displaystyle L.. La función generadora ordinaria para L es la serie de poder formal

SL()z)=.. n≥ ≥ 0sL()n)zn.{displaystyle S_{L}(z)=sum _{ngeq No.

La función generadora de un lenguaje L es una función racional si L es normal. Por lo tanto, para cada idioma regular L{displaystyle L. la secuencia sL()n)n≥ ≥ 0{displaystyle s_{L}(n)_{ngeq # es constante-recursivo; es decir, existe una constante entero n0{displaystyle No., constantes complejas λ λ 1,...... ,λ λ k{displaystyle lambda _{1},ldots,lambda ¿Qué? y polinomios complejos p1()x),...... ,pk()x){displaystyle p_{1}(x),,ldots,p_{k}(x)}por cada uno n≥ ≥ n0{displaystyle ngeq n_{0} el número sL()n){displaystyle s_{L}(n)} de palabras de longitud n{displaystyle n} dentro L{displaystyle L. es sL()n)=p1()n)λ λ 1n+⋯ ⋯ +pk()n)λ λ kn{displaystyle s_{L}(n)=p_{1}(n)lambda ################################################################################################################################################################################################################################################################ ¿Qué?.

Así pues, la no regularidad de ciertos idiomas L.{displaystyle Yo... se puede probar contando las palabras de una longitud determinada L.{displaystyle Yo.... Considere, por ejemplo, el lenguaje Dyck de cadenas de paréntesis equilibradas. El número de palabras de longitud 2n{displaystyle 2n}en el idioma Dyck es igual al número catalán Cn♪ ♪ 4nn3/2π π {displaystyle C_{n}sim {frac {4}{n}{3/2}{sqrt ♪ }, que no es de la forma p()n)λ λ n{displaystyle p(n)lambda ↑}, presenciar la no regularidad del lenguaje Dyck. La atención debe tomarse desde algunos de los eigenvalues λ λ i{displaystyle lambda _{i} podría tener la misma magnitud. Por ejemplo, el número de palabras de longitud n{displaystyle n} en el lenguaje de todas las palabras binarias no es de la forma p()n)λ λ n{displaystyle p(n)lambda ↑}, pero el número de palabras de longitud incluso o extraña son de esta forma; los eigenvalues correspondientes son 2,− − 2{displaystyle 2,-2}. En general, para cada idioma regular existe una constante d{displaystyle d} tal que para todos a{displaystyle a}, el número de palabras de longitud dm+a{displaystyle dm+a} es asintotica Campaλ λ am{displaystyle ¿Qué?.

La función zeta de un lenguaje L es

Especificaciones Especificaciones L()z)=exp⁡ ⁡ ().. n≥ ≥ 0sL()n)znn).{displaystyle zeta _{L}(z)=exp left({sum _{ngeq ¿Qué?

La función zeta de un lenguaje regular no es en general racional, pero la de un lenguaje cíclico arbitrario sí lo es.

Generalizaciones

La noción de un lenguaje regular se ha generalizado a infinitas palabras (ver ω-autómatas) y árboles (ver árbol autómata).

El conjunto racional generaliza la noción (de lenguaje regular/racional) a monoides que no son necesariamente libres. Asimismo, la noción de un lenguaje reconocible (por un autómata finito) tiene homónimo como reconocible sobre un monoide que no es necesariamente libre. Howard Straubing señala en relación con estos hechos que “El término "lenguaje regular" es un poco desafortunado. Los artículos influenciados por la monografía de Eilenberg a menudo usan el término 'lenguaje reconocible', que se refiere al comportamiento de los autómatas, o 'lenguaje racional', que se refiere a analogías importantes entre Expresiones y series de potencias racionales. (De hecho, Eilenberg define subconjuntos racionales y reconocibles de monoides arbitrarios; las dos nociones, en general, no coinciden). se usa casi universalmente.”

La serie racional es otra generalización, esta vez en el contexto de una serie de potencia formal sobre un semianillo. Este enfoque da lugar a expresiones racionales ponderadas y autómatas ponderados. En este contexto algebraico, los lenguajes regulares (correspondientes a expresiones racionales con ponderación booleana) suelen denominarse lenguajes racionales. También en este contexto, el teorema de Kleene encuentra una generalización llamada teorema de Kleene-Schützenberger.

Aprender de los ejemplos