Tengo el siguiente problema algorítmico:
Determine el espacio Turing complejidad de reconocer cadenas de ADN que son palíndromos de Watson-Crick.
Los palíndromos de Watson-Crick son cuerdas cuyo complemento invertido es la cuerda original. El complemento se define en forma de letra, inspirado en el ADN: A es el complemento de T y C es el complemento de G. Un ejemplo simple para un palíndromo WC es ACGT.
Se me ocurrieron dos formas de resolver esto.
Uno requiere espacio.
- Una vez que la máquina haya terminado de leer la entrada. La cinta de entrada debe copiarse a la cinta de trabajo en orden inverso.
- Luego, la máquina leerá la entrada y las cintas de trabajo desde la izquierda y comparará cada entrada para verificar que la celda en la cinta de trabajo sea el complemento de la celda en la entrada. Esto requiere espacio.
El otro requiere espacio .
- Mientras lee la entrada. Cuente el número de entradas en la cinta de entrada.
- Cuando la cinta de entrada termina de leer
- copie el complemento de la carta en la cinta de trabajo
- copie la letra L al final de la cinta de trabajo
- (Punto de bucle) Si el contador = 0, borra la cinta de trabajo y escribe sí, luego detente
- Si la cinta de entrada lee L
- Mueva el cabezal de entrada hacia la izquierda el número de veces indicado por el contador (requiere un segundo contador)
- Si la cinta de entrada lee R
- Mueva el cabezal de entrada hacia la derecha por el número de veces indicado por el contador (requiere un segundo contador)
- Si la celda que contiene el valor en la cinta de trabajo coincide con la celda actual en la cinta de entrada
- disminuir el contador por dos
- Mueva uno hacia la izquierda o hacia la derecha dependiendo de si R o L están en la cinta de trabajo respectivamente
- copie el Complemento de L o R en la cinta de trabajo en lugar de la L o R actual
- continuar el ciclo
- Si los valores no coinciden, borre la cinta de trabajo y escriba no, luego detenga
Esto resulta en aproximadamente espacio para almacenar ambos contadores, el complemento actual y el valor L o R.
Mi problema
El primero requiere tanto tiempo lineal como espacio. El segundo requiere tiempo ylognespacio. La cita me dio el problema y se me ocurrieron estos dos enfoques, pero no sé cuál elegir. Solo necesito darle al espacio la complejidad del problema.
La razón por la que estoy confundido
Tendería a decir que la segunda es la mejor opción, ya que es mejor en términos de tiempo, pero esa respuesta solo viene de que tengo suerte y se me ocurre un algoritmo. Parece que si quiero darle al espacio la complejidad de algo, no requeriría suerte para encontrar el algoritmo correcto. ¿Me estoy perdiendo de algo? ¿Debería incluso encontrar una solución al problema para responder a la complejidad del espacio?