¿Cómo demostró Alan Turing que solo seis operaciones primitivas se pueden usar para realizar cualquier operación matemática?

Realmente no hizo eso. Creo que la premisa de esta pregunta es un poco defectuosa. Permítanme intentar responder esto en “términos simples” ya que la pregunta está etiquetada como tal 🙂

El documento de Turing (Página en virginia.edu) se basó en abordar la indecidibilidad del problema Entscheidungs ​​(es decir, el problema de decisión).

Creó su máquina matemática “primitiva” para capturar una noción formal y rigurosamente definible de lo que significa llevar a cabo cualquier “cálculo”. En ese momento hubo una gran lucha para definir lo que significaba “calcular”. Piensa en ello un segundo. Si alguien le preguntara la definición de “computación”, su mente inmediatamente arrojaría “cálculo” como definición. Eso es incorrecto.

Cálculo de subsumes computacionales. Por ejemplo, encontrar la forma más rápida de ir del punto A al punto B, mientras eres A, es una forma de cálculo. ¿Decidir cómo organizar tu ropa en el armario? Cálculo. ¿Lavar la ropa? Cálculo.

¿Confuso? Piense en cualquier cosa que implique una serie de pasos para pasar de la entrada (opcional) a alguna forma de salida. La serie de pasos forma un cálculo. El cálculo es solo un aspecto de la computación.

Ahora, ¿qué hizo exactamente Turing? Trató de modelar el proceso humano de este término difuso llamado “calcular” y creó una máquina teórica con operaciones primitivas que podían simular el funcionamiento de la mente humana cuando “eso” (la mente) estaba computando algo.

Turing desglosó el proceso de pensamiento en una cinta infinitamente larga (fácil de visualizar que un modelo RAM en ese momento) que podría moverse en ambas direcciones, que podría pasar por ‘n’ pasos a la vez (n = 1) y hacer algo en cada paso Algo podría ser actualizar el estado de lo que sea que esté haciendo, sobrescribirlo o borrarlo y continuar y seguir haciendo esto periódicamente según las instrucciones dadas.

Si lees su artículo (vinculado anteriormente) y trazas paralelos con el funcionamiento de la mente humana, verás por qué su abstracción fue innovadora. ¡Destiló el proceso de pensamiento que involucra “computación” en un conjunto de operaciones en una cinta (es decir, su memoria)!

También puede hacer cálculos primitivos usando números unarios (por ejemplo, 111 para 3 y 11111 para 5). La suma / división / multiplicación / resta simple es trivial aquí. ¿Pero piensa en hacer integración / derivados como este? Complicado y muy lento. ¡Pero aún es factible!

Básicamente, Turing tomó esta noción de cómo nosotros, como humanos, “calculamos” cualquier cosa y le dimos a ese concepto abstracto una definición formal y creamos la capacidad de responder: ¿qué significa la computación y qué se puede computar todo? Él aplicó su “modelo de computación” para resolver el problema de Entscheidungs , es decir, diciendo que era insoluble según “su” definición de computabilidad.

Otras investigaciones analizaron esta idea y la encontraron fascinante, y todo el campo de la “teoría de la computación” nació donde las personas observaron lo que puede y no puede calcularse, qué tan bien podría ser en absoluto y luego clasificaron varios problemas en consecuencia (P, NP, co-NP, etc.,) Su trabajo fue la piedra angular del campo.

Lo que Turing planteó fue una abstracción para razonar sobre la informática en general. No se trata de hacer ninguna operación matemática per se. Podría usarlo para modelar cualquier forma de cálculo. Palabra clave “modelo” y realmente no hacer la operación matemática. Usó la TM para razonar sobre la computabilidad de las funciones, que pueden o no incluir operaciones matemáticas.

Si piensa que una operación matemática es una forma de “cálculo”, puede codificarla a través de una TM y ver si puede o no “resolverse” y razonar sobre la computabilidad. Esa es la razón de la TM. De ahí mi referencia inicial a la premisa de que la pregunta es errónea.

¡Espero que esto ayude!

La máquina original de Turing como la imaginó Turing puede:

  1. leer
  2. escribir
  3. borrar
  4. mover hacia la izquierda
  5. moverse a la derecha
  6. detener

Además, la máquina está equipada con una cinta de papel, en la que se realizan estas operaciones, y una tabla de referencia, que le indica a la máquina qué estado debe cambiar a la siguiente y qué operación debe realizar, según el estado actual y el símbolo Leer de la cinta.
El concepto de esta máquina de Turing original no especifica cómo se implementa la tabla de referencia. Creo que Turing consideró la tabla y su implementación como una representación de la función computable que la máquina debía realizar. Por lo tanto, Turing consideró que las seis operaciones primitivas anteriores podrían usarse para realizar cualquier función computable.
Dudo en afirmar que “cualquier operación matemática” es computable, y es interesante notar que Turing concibió la Máquina de Turing para demostrar que existen funciones no computables. Entonces, en cierto sentido, el objetivo de la Máquina de Turing era demostrar lo que seis operaciones primitivas, o cualquier número finito de operaciones primitivas, no pueden hacer.

More Interesting

¿Estoy perdiendo el tiempo implementando la estructura de datos elementales (Stacks, Queues y LinkedLists) como parte de la preparación para una entrevista de prácticas en Google?

¿Cuáles son algunos ejemplos de software del mundo real de pilas, colas y deques?

¿Cuáles son las estructuras de datos utilizadas en el almacén de datos? ¿De qué manera difieren de las estructuras de datos utilizadas en la base de datos relacional?

¿Qué significa el algoritmo en informática?

¿El algoritmo de Kruskal resuelve siempre el problema del vendedor ambulante?

¿Qué es la estructura de datos inmutable?

¿Qué libro (s) y otros recursos recomendaría para que un principiante entienda las estructuras de datos y los algoritmos en C ++?

¿Cuál es el algoritmo de programación del juego para una temporada regular de la NBA?

¿Qué técnica general siguen los autores al escribir libros técnicos en LaTeX?

Cómo comprender la recursividad en backtracking de campo profundo y todo relacionado, programación dinámica, etc.

Dado que muchos algoritmos de aprendizaje automático se ejecutan en GPU, ¿Julia sigue siendo una buena opción para eso?

¿Dónde puedo encontrar preguntas sobre estructuras de datos sabias para las ubicaciones?

¿Son los algoritmos de big data de caja negra una instancia de historia que se repite? ¿Qué está haciendo la comunidad de código abierto para crear algoritmos de big data transparentes y precisos?

¿Qué estructuras de datos C ++ simples debería aprender para la programación competitiva además de un mapa?

¿Cómo mantiene Google en secreto su algoritmo de sus empleados cuando son sus empleados quienes lo prueban?