Una computadora con lápiz y papel
Presentación:
He aquí una interesante simulación con lápiz y papel de un algoritmo en programación. La idea y desarrollo corresponden a Tomás de Camino y lo publica en su web, con el título "La computadora de papel y lápiz"
Computar (del latín computus y computare) significa determinar por medios matemáticos. "Con" significa junto o calcular, y “putare” suponer.Con hacer cómputos nos referimos a tomar una entrada cualquiera, aplicar un procedimiento matemático o lógico, y generar un resultado.
Para poder hacerlo, necesitamos tener un programa, que describe de alguna manera reglas de operación, por lo general le llamamos el “código” porque de alguna manera codifica lo que queremos hacer realizando un procedimiento repetitivo.
También ocupamos memoria para almacenar la entrada y los resultados de las operaciones y una unidad de procesamiento que lo junta todo. Esa unidad tiene un reloj, que segundo a segundo, toma una porción de memoria, y le aplica la regla o procedimiento, y lo hace hasta que exista una regla que determine que no lo haga más.
Todo esto suena algo abstracto, y lo es. Para entenderlo mejor, hagamos cómputos con lápiz y una hoja de papel, nosotros mismos seremos la unidad de procesamiento, que lee el programa la memoria y hace los cálculos. Primero supongamos que la memoria es una lista de espacios vacíos como en la siguiente figura.
En este caso, tenemos 17 celdas, que pueden estar rellenas (negras) o vacías (blancas). Cada vez que hagamos un cálculo, vamos a leer celda por celda, y vamos a escribir nuestros cómputos en una línea nueva, para recordar lo que teníamos antes. Nuestro programa o código, se escribe como un conjunto de reglas de cambio, dado por el color de la celda, y sus dos celdas vecinas. Entonces, una regla se ve como algo así:
Así podemos construir varias reglas. Por ejemplo construyamos un conjunto de 8 reglas, que serán nuestro programa,
La regla 1 dice que si la celda es negra y la de la izquierda y derecha son negras, entonces el cómputo consiste en cambiarla a blanca.
La regla 2 dice que si la celda es negra pero a la izquierda la celda es negra y la de la derecha es blanca, entonces la celda se debe mantener negra.
La regla 3 dice que si la celda es blanca y las laterales negras, resultará blanca.
La regla 4 dice que si la celda es blanca, la de su izquierda es negra y la de su derecha blanca, resultará negra.
Y así sucesivamente. Este procedimiento se aplica a todas las celdas de la memoria, y una vez terminada, se vuelve a aplicar al resultado y así, de forma recursiva.
Apliquemos ahora este procedimiento a mano, comenzando con una entrada en memoria, que es una celda negra en el centro de la lista de celdas de la memoria. Tenemos que calcular una nueva fila, la fila 2, utilizando el conjunto de 8 reglas, que les propuse anteriormente. Empezamos por la derecha, y tenemos que calcular la fila 2, mirando grupos de tres celdas,
Revisamos las reglas, y según la regla 8, la celda se queda blanca, ahora nos movemos una celda a la derecha y revisamos,
Otra vez se aplica la regla 8. Así nos seguimos moviendo celda a celda. Al llegar cerca de la celda del centro,
Ahora aplica la regla 7, entonces pintamos la celda color negro. La siguiente,
La regla que aplica es la 6, por tanto no cambiamos la celda de color, un paso más,
Ahora aplica la regla 4, así que cambiamos la celda a negra. y así continuamos hasta el final de la fila, para obtener,
Así seguimos calculando más filas, agregando una fila por cada vez que aplicamos las reglas, como se ve en el siguiente video,
y si seguimos,
De hecho forma un fractal, una imagen auto-similar, por tanto si seguimos calculando filas, seguirá revelándose el mismo patrón a diferentes escalas. Lo que siempre me ha parecido impresionante es que, en esto tan sencillo, se esconde la esencia de las matemáticas, la física y las computadoras. También demuestra cómo patrones complejos, o casi que diseñados, emergen de reglas simples.
¿Que pasa si cambiamos la regla? Veamos los patrones que se generan con diferentes reglas, siempre iniciando con una celda negra al centro en la primera fila,
Lo que acabamos de hacer recibe el nombre de “rule 90” (regla 90). Tienes, en inglés, un interesante artículo en wikipedia.
Esta es la forma en que trabaja una computadora, ni más ni menos. Tanto así, que hay una regla en particular que puede hacer todos los mismos cómputos que cualquier computadora que conocemos hoy. La regla es esta,
Se le conoce como la regla 110. Es decir se puede construir lo que se llama una computadora universal, una computadora capaz de computar todas las cosas que sean computables.
No hay comentarios:
Publicar un comentario