Probar que los idiomas regulares están cerrados bajo el operador de ciclo


8

Tengo en unos días un examen y tengo problemas para resolver esta tarea.

Dejar L ser un lenguaje regular sobre el alfabeto Σ. Tenemos la operacion cycle(L)={xyx,yΣ and yxL} Y ahora deberíamos demostrar que cycle(L) También es regular.

La referencia es que podríamos construir a partir de un DFA D=(Q,Σ,δ,q0,F) con L(D)=L una ϵ-NFA N con L(N)=cycle(L) y 2·|Q|2+1 estados.


Ejercicio 5.4 , con vencimiento el 24 de mayo.
Raphael

Respuestas:


15

La idea es decidir de manera no determinista al principio cuánto se cicla la palabra, y tener una copia del autómata para cada caso. En términos del autómata, eso significa que adivinamos en qué estadoD habría sido después de consumir el prefijo de una palabra (que es un sufijo de nuestra entrada), y comenzar en ese estado.

Ahora la construcción. Para cada estadoqQseparado D en dos partes A1 y A2. A1 contiene los estados desde los cuales q es accesible y A2 los estados a los que se puede llegar desde q:

ingrese la descripción de la imagen aquí
[ fuente ]

Tenga en cuenta que cualquier nodo dado puede estar contenido en ambos A1 y A2. Por lo tanto, el número de estados puede duplicarse si hacemos explícito este paso.

Ahora volvemos a cablear este autómata para que acepte todas las palabras para las cuales q marca el "punto de ciclo":

ingrese la descripción de la imagen aquí
[ fuente ]

Obtenemos |Q|autómatas de esta forma; crear un nuevo estado inicial que tieneε-transiciones a todos sus estados iniciales. El autómata resultante aceptacycle(L). En total, llegamos a lo más|Q|(2|Q|+1)+1 estados, solo |Q| más estados que las reclamaciones de referencia son posibles.

Puedes lograr 2|Q|2+1estados modificando un poco el autómata componente; eliminar todoq0 reemplazando el entrante ε-transiciones con copias de sus transiciones salientes. Es decir, para cada par de transiciones.(q1,ε,q0),(q0,a,q2), introduce una transición (q1,a,q2).

La construcción rigurosa y la prueba de corrección permanecen como ejercicio.


pero ¿cómo puedes probar esto que acabas de construir un nfa?
Sad Golduhren

3
@SadGolduhren Raphael construyó un NFA (es finito porque hay un límite finito en el número de estados). Para ver que este NFA reconoce el mismo idioma que el original, observe las rutas a través de los autómatas:q0q y qqF (dónde qF es cualquier estado final alcanzado desde q) volverse qqF y q0qy qFϵq0completa el camino
Gilles 'SO- deja de ser malvado'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.