¿Qué tipo de problemas se pueden resolver instantáneamente en las computadoras?

¿Qué tipo de problemas se pueden resolver instantáneamente en las computadoras? Creo que esta es otra forma de preguntar: “¿Qué tipo de problemas se pueden resolver? sin usar memoria?

“No cambies”. Eso es todo. Cuando ejecuta “No cambiar”, al instante, no hay cambio. Sin embargo, debe ejecutarlo sin hacer nada. Puede usar la poca o tanta memoria que desee.

Si puede diseñar su propia máquina, almacene las respuestas a sus preguntas en una ROM. Si su pregunta está codificada como la dirección base de la respuesta almacenada en la ROM, cuando haga la pregunta, la respuesta estará disponible al instante. Por supuesto, acceder a él en ROM lleva tiempo.

Entonces, si desea la respuesta en el mismo instante en que completa la pregunta, necesita una máquina del tiempo. El cálculo sin estado (no requiere memoria) requiere tiempo, llamado “retraso de propagación”, el tiempo que tardan los componentes en generar un resultado. La ROM puede verse como sin estado siempre que no la reprogrames.

Los procesos secuenciales requieren memoria para almacenar el estado. En realidad, puede pensar en la colección completa de memoria (registros, memoria principal, caché, etc.) en su computadora como un enorme registro de estado siempre que la máquina tenga un solo reloj. Cada tic del reloj, el estado en el registro de estado puede cambiar. La clave es mantener el cambio muy pequeño y localizado. Puede echar un vistazo a un curso de lógica digital y un curso básico de arquitectura de computadoras para tener una mejor idea del funcionamiento de las máquinas de estado.

Las computadoras modernas son mucho más complejas. Ya sea complejo o simple, lleva tiempo hacer cualquier cosa. Al menos, esa es nuestra comprensión actual del tiempo.

Tengo un colega que una vez le dijo a un estudiante que la única forma en que el estudiante podía hacer las tareas perdidas era inventar una máquina del tiempo, volver a cuando fueron asignadas y presentar las soluciones correctas a tiempo. Entonces, ganas la A.

A eso, otro colega declaró que era mucho más fácil. Cualquier estudiante que inventó una máquina del tiempo obtendría automáticamente una A en cualquiera de sus clases. 🙂

Este era un estudiante que esperó más allá del punto de poder completar las tareas sin copiar el trabajo de otros. El estudiante sabía esto pero persistió. Podría haber pensado esta réplica, pero me la habría guardado. 🙂

En pocas palabras: rápido es difícil. Instantáneo es más difícil. Y, comience temprano sus tareas. La naturaleza no es tan permisiva como la universidad.

Ninguna.

Cada programa de computadora requiere algo de memoria (y la memoria es parte de la computadora abstracta idealizada, ver, por ejemplo, la máquina de acceso aleatorio o la máquina de Turing que tiene una “cinta” que es una memoria). Por supuesto, las tecnologías actuales proporcionan muchas formas de construir dispositivos de memoria.

Cuando piensa en ellos, incluso los algoritmos muy simples (como el algoritmo euclidiano) requieren algo de memoria (por supuesto, en el código de máquina, en ese caso, podría caber en el registro del procesador, que también es algún tipo de memoria).

Por ejemplo, algunas partes del BIOS en una placa base de escritorio no usan RAM, porque en su lugar están usando la caché en chip. Por lo tanto, una placa base puede emitir un pitido cuando olvidó instalar los módulos de RAM.

Además, por razones físicas profundas, nada puede suceder instantáneamente (en particular, un cálculo no puede suceder instantáneamente), y la velocidad de la luz es una limitación profunda (incluso dentro de un chip de silicio). Sin embargo, las computadoras actuales son lo suficientemente rápidas (las operaciones elementales toman un nanosegundo) para poder realizar cálculos significativos en un milisegundo (lo que parece ser “instantáneo” para nosotros, pero no lo es). Los procesadores en nuestros teléfonos móviles o computadoras de escritorio pueden hacer más de mil millones de instrucciones de máquina elementales por segundo. Por ejemplo, ordenar una matriz de cien enteros de 32 bits tomaría unos pocos microsegundos (que es rápido, pero no instantáneo).

No veo por qué “sin memoria” significa “instantáneamente”: muchos cálculos puros con bucles o recursividad pueden ser muy largos.

Si está interesado en los cálculos limitados al procesador (registros + y caché local), en Computer Graphics tenemos la noción de procesalismo, por ejemplo, para producir patrones de textura (por ejemplo, ruido de Perlin). Con un conjunto ultra-limitado de parámetros (para ajuste) + parametrización de superficie o espacio, puede crear patrones complejos agradables sin usar imágenes o datos. Lo mismo para las formas que usan fractales (y también el procesualismo).

Como ejemplo, en Shadertoy BETA, la mayoría de los sombreadores solo usan las coordenadas de píxeles + tiempo. O posiblemente las coordenadas del mouse también. (ok, shadowrtoy también propone un conjunto de imágenes de textura, sonidos, y ahora puede almacenar buffers, pero muchos sombreadores no cuentan con esto. busque perlin, worley, voronoi, ruido, patrón, etc.). O echa un vistazo a mi propia lista de Shadertoys

En teoría, algunos problemas matemáticos simples. Como agregar números o convertir entre binario y BCD, etc.

SIN EMBARGO, eso requiere que use puertas lógicas (sin hacer celdas de memoria), también conocido como hacer máquinas específicamente para resolver un problema. Y también una vez que haces esa máquina, no se puede usar para nada más.

Sin embargo, no obtendrás respuestas instantáneamente ya que las puertas necesitan algo de tiempo para producir respuestas, también las señales eléctricas no son tan rápidas y estás limitado por la velocidad de la luz.