La respuesta a ambas preguntas es la misma: usando la cinta para almacenar los datos necesarios. Podemos suponer que el conjunto de estados y el alfabeto de la máquina a simular son subconjuntos de los números naturales ("Estado 1", "Estado 2", "Estado 3", etc.). Incluso con solo dos caracteres no en blanco, la máquina universal puede representar todos esos enteros como cadenas binarias.
Sin embargo, tenga en cuenta que la máquina universal tiene un número fijo de estados, lo que hace que calcular la función de transición sea un poco complicado. Lo que nos gustaría hacer es escribir algunas instrucciones que implementen una declaración de cambio grande de la forma: "Si el estado es el carácter debajo de la cabeza es x , entonces muévase al estado s ' , escriba el carácter x ' y mueva el cabeza en dirección d ". Entonces, y creo que esta puede ser la raíz de su pregunta, ¿cómo calculamos la función de transición si ni siquiera tenemos suficientes estados en la máquina universal para almacenar la entrada de la función de transición?sXs′X′re
Una forma es almacenar la función de transición como un árbol binario. Supongamos que toda la máquina simulada tiene estados q y 2 símbolos de cinta ℓ . Almacene la función de transición como un árbol binario de profundidad q + ℓ donde, en los primeros q niveles, vaya hacia la izquierda o hacia la derecha según si el siguiente bit del estado simulado es uno o cero y los siguientes ℓ niveles son los mismos pero para los bits sucesivos del carácter de cinta simulada. Ahora, su máquina universal puede caminar hacia adelante y hacia atrás en su cinta, verificando el siguiente bit del estado / carácter, recordando ese bit en sus propios estados, volviendo al árbol, colocando un marcador en el nodo correcto, y así sucesivamente.2q2ℓq+ℓqℓ
Esto se vuelve un poco más fácil si deja que su máquina universal tenga varias cintas, pero aún así tiene que demostrar que su máquina de cintas múltiples es equivalente a una sola máquina de cinta.