jueves, 24 de abril de 2008

MT "multicabezal" COMO CONTADOR DE 0's SEPARADOS POR 1's

La MT que se muestra a continuación sólo acepta dos tipos de cadenas y solo pueden ser del tipo que se indica, es decir, no valen cadenas con varios 1`s seguidos:

TIPO1: ....B01001000001000101B......
SALIDA: ..B00000B...
TIPO2: ....B00101000B.......
SALIDA: ...B000B...

Es decir, que acabe la cadena en (1) o que no acabe en (1).

La situacion inicial de los cab
ezales para cualquiera de las cadenas que acepte es, el primer cabezal en el primer simbolo util de la cadena de entrada y el segundo cabezal una posicion mas a partir del ultimo blanco de la cadena de entrada. Tal que así:

B(q0)01001000001000101B(qz)

B(q0)00101000B(qz)

El primer cabezal es q0 y el segundo es qz.



Funcionamiento: mientras el primer cabezal lea 0's, sobreescribe con 0 y se mueve a la derecha y el segundo cabezal sobreescribe con blanco y no se mueve.

Cuando el primer cabezal encuentre un 1 sobreescribe con 1 y se mueve a la derecha y el segundo cabezal sobreescribe con 0 y se mueve a la derecha. Llegara un momento en que los dos cabezales lean blanco-blanco, en ese momento mueve el primer cabezal a la derecha y segun se encuentre con un 0 o un 1, hago escribir un 0 o un 1 en el segundo cabeza. ( Fila q1 de la tabla).

Este ultimo comportamiento lo hago para que en el caso de tener un cadena del tipo2 en la cinta me cuente el ultimo grupo de 0`s en el resultado final.

No hay comentarios: