¿Puede una expresión regular ser infinita?

10

Sé que los lenguajes que se pueden definir usando expresiones regulares y aquellos reconocibles por DFA / NFA (autómatas finitos) son equivalentes. Tampoco existe DFA para el idioma {0 0norte1norteEl |norte0 0} . Pero aún así puede escribirse usando expresiones regulares (para el caso, cualquier lenguaje no regular puede ser) como {ϵ}{01}{0011}....... Pero sabemos que cada lenguaje que tiene una expresión regular tiene un DFA que lo reconoce (contradicción con mi declaración anterior). Sé que esto es algo trivial, pero ¿la definición de expresión regular incluye la condición de que debería ser finita?

Sashas
fuente
3
Ya respondió su propia pregunta: si REG CFL, dichos términos no pueden ser expresiones regulares.
Raphael
1
Sólo una nota: si se nos cae el requisito de DFA / NFA siendo finito, que podemos construir un autómata para aceptar . {0 0norte1nortenorte0 0}
3
Como punto de terminología, la palabra 'autómata' es el plural de 'autómata'. No existe la palabra 'automatas': no ​​puede hacerlo más plural de lo que ya es. (autómatas de es correcto como posesivo, pero no como un plural)
chasly del Reino Unido

Respuestas:

23

Si se permitiera que las expresiones regulares fueran infinitas, cualquier lenguaje habría sido regular.

Teniendo en cuenta el lenguaje , siempre podemos definir la expresión regular R = w 1 + w 2 + , que define exactamente L . (Ejemplo: la expresión regular R 1 = ϵ + 0 + 1 + 00 + 01 + 10 + 11 + define L 1 = { 0 , 1L={w1,w2,...}R=w1+w2+L
R1=ϵ+0 0+1+00+01+10+11+ .)L1={0 0,1}

Sabemos que algunos idiomas no son regulares, por lo que esto muestra que las expresiones regulares infinitas describen una clase de idiomas más grande que las expresiones regulares finitas.

Sonó.
fuente
55
Me encanta esta respuesta, porque no solo dice que las expresiones regulares infinitas son diferentes, sino que el concepto en general no es significativo.
jmite
Una declaración más sucinta del punto que enterré en mi segundo párrafo y, por lo tanto, más claro.
Davislor
Pero concluye con una tautología pura. ¿Por qué no consideramos todos los idiomas regulares, entonces, si tienen este formulario? Las cosas que hacemos con expresiones regulares ya no funcionan. No podemos construir una máquina de estados mediante un algoritmo inductivo porque nunca termina y tiene estados infinitos. No podemos compararnos con todo en la lista y rechazar si nada coincide. Y no podemos representar físicamente la lista de todos modos. (Las listas que podemos generar por computadora son los idiomas decidibles). Podemos probar cosas usando el hecho de que cada idioma tiene esta forma, pero no el tipo de cosas que sabemos sobre expresiones regulares.
Davislor
@jmite "no tiene sentido" o un caso especial?
BAR
@BAR no tiene sentido, ya que en la clase de idiomas sobre descrito por infinitas expresiones regulares es solo 2 Σ, es decir, el conjunto de todos los idiomas. No obtenemos una clase de idiomas de la misma manera que lo hace con RE finitas, CFG o incluso con máquinas de Turing. Σ2Σ
jmite
5

Sí, debe ser finito. Imagine que tiene ese conjunto infinito de posibles coincidencias, y su entrada es 011. ¿Alguna vez podrás rechazarlo? ¿Alguna vez te quedarás sin partidos para comprobar?

¿Hay algún lenguaje que, según esa definición, no sea regular ? ¿Qué pasa con el conjunto de todos los pares de programas y entradas de modo que el programa dado se detenga en la entrada dada?

Ahora, si tuviera un programa que enumerara las cadenas en un idioma en orden lexicográfico:

Actualizar

Para aclarar un poco en función de los comentarios en los comentarios, la razón por la que no todos los idiomas de este formulario son regulares es por definición. Si, por ejemplo, busca la prueba del teorema de Kleene, depende del hecho de que una expresión regular debe ser finita para demostrar que genera una máquina de estados finitos.

¿Por qué definimos el lenguaje "regular" de esa manera? Debido a que cada idioma formal es un subconjunto de las cadenas en un alfabeto, y cada conjunto de cadenas se puede expresar como una unión de singletons, por lo que si llamamos a cualquier conjunto de cadenas un lenguaje "regular", el lenguaje regular sería simplemente un sinónimo de idioma . Esa no es una definición muy útil, especialmente porque en realidad no podemos implementarla en hardware o software. No podemos almacenar una lista infinita arbitraria en ningún lado ni construir una máquina de estado infinito.

Sin embargo, como insinué, si tiene una manera de enumerar todas las cadenas en un idioma en orden, puede construir un decisor a partir de eso (acepte cuando vea esa cadena exacta, rechace cuando encuentre una cadena que viene después de la que usted está buscando) y viceversa (para cada cadena en orden, ejecútela a través del decisor y envíela si y solo si es aceptada). Entonces, si consideramos que cada lenguaje enumerable es regular , cada lenguaje decidible sería "regular" y necesitaríamos un nuevo término para los idiomas reconocidos por las máquinas de estados finitos y sus codificaciones equivalentes como expresiones finitas.

Davislor
fuente
1
Esta respuesta es incorrecta. El solo hecho de que alguna representación de un lenguaje no se presta para construir un decisor algorítmico de una manera ingenua no implica que esta representación sea incorrecta; Podría haber otros enfoques. ¡De hecho, cada lenguaje decidible tiene una representación de la forma que propone Sasha! En resumen, está cometiendo la falacia "No puedo ver cómo, así que tiene que ser imposible".
Raphael
@Raphael: Tenga en cuenta las implicaciones de su declaración, "¡ cada lenguaje decidible tiene una representación de la forma que Sasha propone!" Ese es, de hecho, el punto que estaba haciendo en mi respuesta. La pregunta era: ¿todos los idiomas de esta forma se definen como regulares? Bueno, ¿cada lenguaje decidible es regular? (Y, como mostré, ¿algunos indecidibles también?) ¿Sería una definición útil de "regular"?
Davislor
Además, lejos de falacizar que no se puede hacer una decisión para una lista infinita de cadenas, mi última oración fue una pista de cómo podría hacerse: si la lista de cadenas está bien ordenada, puede rechazar una tan pronto a medida que te encuentras con una cuerda más allá en el pedido. Sin embargo, una máquina de estados finitos no puede hacer esto porque no puede representar todos los estados de haber comparado con cada cadena en la lista infinita, y tampoco las expresiones regulares. Si pudieran, serían lo suficientemente poderosos como para reconocer todos los idiomas decidibles.
Davislor
0

Supongamos que se permite que las expresiones regulares sean infinitas.

Por lo tanto, el lenguaje definido por {ϵ} ∪ {01} ∪ {0011} ... será regular. Para cada idioma regular existe un NFA. Una forma de obtener este NFA sería tener NFA individuales para cada uno de {ϵ}, {01}, {0011} ... y combinarlos usando transiciones ϵ. Como hay infinitas expresiones regulares distintas, necesitaremos infinitos sub-NFA para combinar. Sin embargo, la NFA solo puede tener un número finito de estados (definición de NFA).

Por lo tanto, no existe un NFA que pueda definir un lenguaje definido por la unión de infinitas expresiones regulares, lo que implica que el lenguaje no es regular.

Por lo tanto, no existe una expresión regular que pueda definir el mismo lenguaje que el lenguaje definido por la unión de infinitas expresiones regulares.

Por lo tanto, las expresiones regulares solo pueden tener expresiones finitas.

Anurag Peshne
fuente
Sus "expresiones regulares infinitas" luego definen otra clase de idiomas, no idiomas regulares. De hecho, son capaces de definir cualquier idioma, y ​​eso es completamente poco interesante (no son finitos, por lo tanto difíciles de trabajar; y pueden hacer cualquier cosa, por lo tanto, nada que estudiar en términos de limitaciones).
vonbrand