Recibe una cadena de entrada de bloques de 0's separados por 1's, devuelve en la cinta 2 el número de 0's más alto, dejando la cadena original intacta.
Cadena de entrada: B00100010000B
Cadena de salida: B0000B (cinta 2)
Se ha elegido el diseño multicinta frente al multicabezal porque el segundo requeriría tantos cabezales como bloques de 0's hayan en la cadena para conseguir una buena eficiencia y como este dato no se conoce de antemano, se ha elegido multicinta.
Se han usado 2 cintas. En la primera se encontraría la cadena de entrada, mientras que la segunda se usará para guardar el número de 0's del ultimo bloque leído. Su funcionamiento es el siguiente:
- Recorre la cadena de entrada anotando los 0's encontrados en la segunda cinta hasta encontrar un 1 y rebobina la cinta 2.
- Si se encuentra en una posición 1,0 o B,0 la rechaza o bien borra la cinta 2 (dependiendo de la solucion escogida)
- Si se encuentra en la posicion B,B, acaba satisfactoriamente.
El alfabeto empleado ha sido {0,1,B}. Se asume que la posición inicial en la cinta 1 es el primer símbolo de la cadena de entrada. La posición de la segunda cinta es indiferente. Se han implementado 2 posibles soluciones, una que cuando encuentra una cadena no valida, simplemente acaba y otra que borra la cinta 2.
1 comentario:
Buenas, por que no habéis puesto la tabla como en el caso de la MT que reconoce bloques de 0's. Si la tenéis por ahí subirla que se me hace más sencillo ver el funcionamiento de la MT de esa forma.
Publicar un comentario