Prerrequisito – Máquina de Turing
Tarea:
Nuestra tarea es diseñar una máquina de Turing para un número igual de a y b.
Análisis:
aquí lo principal para analizar que la string consta de números iguales de a y b puede ser de 4 tipos:
Aquí ‘n’ es la cuenta de a o b.
a) a^n b^n like aabb b) b^n a^n like bbaa c) (ab)^n like abab d) (ba)^n like baba
Ejemplo :
Input-1 : aabb Output : Yes Input-2 : bababa Output : Yes Input-3 : aabbbb Output : No Input-4 : aaabbaa Output : No
Acercarse :
- Tenemos que escanear la entrada de izquierda a derecha.
- Convierta la primera ‘a’ y la primera ‘b’ en el escaneo a ‘X’, luego en el segundo turno convierta la segunda ‘a’ y la segunda ‘b’ a ‘X’ y así sucesivamente. Tenemos que repetir el proceso hasta convertir todos los a y b en ‘X’.
- El carácter escaneado entre ‘a’ y ‘b’ no se cambiará.
Entendamos este enfoque tomando una string «aabb» –
- Escanea la entrada desde la izquierda.
- Nuestra string se ve así:
- Ahora vemos que tenemos nuestra primera ‘a’ en la primera posición y la primera b en la tercera posición. Convertimos estos ‘a’ y ‘b’ en ‘X’.
Ahora el caracter ‘a’ lo ponemos entre ‘a’ y ‘b’. Así que seguirá siendo el mismo. Cuando leemos nuestra primera b movemos nuestro puntero a la izquierda. El puntero se moverá hacia la izquierda hasta que quede en blanco (B). Ahora nuestra string se ve así:
- Nuestro puntero está en Blank(B). Nuevamente escaneamos la entrada de izquierda a derecha y convertimos la segunda ‘a’ y la segunda ‘b’ en ‘X’. Cuando leemos nuestra segunda b movemos nuestro puntero a la izquierda. El puntero se moverá hacia la izquierda hasta que quede en blanco (B). Ahora nuestra string se ve así:
- Repetimos este proceso hasta que todos los a y b se conviertan en X.
- Como vemos, convertimos todos los a y b en ‘X’. Por lo tanto, nuestra máquina se detendrá.
- Cuando analizamos este proceso, vemos que convertimos a y b en X en pares, es decir, en el punto 3 convertimos la primera aparición de a y b en X y luego en el punto 4 convertimos la segunda aparición de a y b en X. Si hay un número desigual de y b, entonces, en este caso, algunos a o b quedarán en nuestra string, de lo contrario, todo el carácter se convertirá en X. Por lo tanto, nos dará un punto para probar nuestra condición de que nuestra string consiste de un número igual de a y b.