¿Qué algoritmos sí podemos programar?
- Árbol generador de peso mínimo
- Regresiones
- Cadena común más larga
- Page Rank
- Runge-Kutta
- Recorrido de un grafo por profundidad (DFS)
Y los algoritmos fueron...
Sabemos que los algoritmos existen y que la implementación de algunos es sencilla de encontrar en internet. Intuitivamente sabemos que podemos pensar en un algoritmo y con suficiente abstracción podemos implementarlo en algún lenguaje de programación.
Un día quizá después de programar suficiente (o no) nacen las preguntas ¿qué algoritmo no puedo programar? ¿existe siquiera alguno que no pueda programar? Tengo este algoritmo ¿es posible programarlo?
Máquina de Turing (MT)
Es una propuesta de Alan Turing hecha en 1936 en su artículo "On computable numbers, with an application to the Entscheidungsproblem", es un modelo teórico de computación en el cual están basadas todas las computadoras de forma directa o indirecta.
Decimos que todas las computadoras están basadas en este modelo ya que, todos los modelos "razonables" de cómputo que se han encontrado hasta ahora son equivalentes a estas máquinas.
Esto quiere decir que si el modelo A es equivalente al modelo B, cualquier algoritmo implementado en A puede ser implementado en B y viceversa, dicho de otra forma el modelo A y el modelo B tienen la misma capacidad de cómputo.En el diagrama anterior se muestran algunas equivalencias entre los modelos más conocidos, algunas implementaciones que se han hecho de los modelos y bajo qué modelo trabajan algunas aplicaciones conocidas.
Visto de otro modo, también ilustra que cada programa implementado en cada lenguaje de programación es equivalente a una máquina de Turing.
Computabilidad
Decimos que algo es computable si existe una máquina de Turing que pueda realizar esa tarea.
Por ejemplo, sabemos que el algoritmo DFS es computable ya que existe una MT que puede ejecutarlo.
No computable
El problema del paro
Supongamos que existe un algoritmo llamado "termina", tal que recibe el código fuente de otro programa, digamos p y una entrada particular para p, llamémosle "in". El objetivo de "termina" es indicar si el programa p termina con la entrada particular "in"
Afirmación:
Reducciones al problema del paro
Que sea imposible crear dicho programa nos habla sobre la existencia de problemas no computables, problemas que jamás podrán ser programados ni resueltos con lo que tenemos hasta ahora.
Una vez que conocemos un problema no computable, podemos hallar más problemas de este tipo demostrando que existen problemas que son equivalentes a él.
También podemos saber si un problema es computable o no a través de intentar reducirlo a un problema no computable.
Finalmente...
Toda vez que se dijo lo anterior, llegan a la luz las primeras limitaciones de las MT y las limitaciones con las que habremos de lidiar hasta que el conocimiento humano logre escalar un poco más.
Y no se trata de decir que las MT son insuficientes, se trata de decir que tal vez hay más, más que la humanidad todavía no conoce, no por nada el último premio nobel de Física, Roger Penrose, propone que la autoconsciencia, eso que nos permite entendernos como un ser y tener inteligencia, es un proceso no computable que se lleva acabo en el cerebro.
Entonces... Quizá sí, casi cualquier algoritmo en el que puedas pensar es programable en cualquier lenguaje de programación y en caso de que no, escribes un paper.
Instagram (alerta nuevo post): https://www.instagram.com/mathandcss/
**El post debe entenderse como una explicación informal, parcial y que omite muchos detalles con fines informativos.**
Bibliografía
- A. M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem, Proceedings of the London Mathematical Society, Volume s2-42, Issue 1, 1937, Pages 230–265, https://doi.org/10.1112/plms/s2-42.1.230
- Roger Penrose. (1989). La nueva mente del emperador. Oxford University Press.
- J. C. Martin (2011), Introduction to Languages and the Theory of Computation, McGrawHill.
- C. Moore, S. Mertens (2011), The Nature of Computation, Oxford University Press.
¡Felicidades por tu nuevo blog! Le deseo mucho éxito.
ResponderEliminarLa parte sobre la prueba de la existencia de problemas no computables me llamó mucho la atención por ser una reducción al absurdo. Existen algunos filósofos que rechazan este tipo de pruebas (pienso en los que se buscan una lógica intuicionista) y otros más raros que sostienen posturas como el dialeteismo, para ver hacia a dónde nos lleva.
//Supongo que somos gente menos civilizada 😂😂
¿Sabes si existen otras pruebas que apoyen a esta afirmación y no estén basadas en la sospechosísima ley del tercer excluso?
¡Hola, Dehilario!
EliminarRevisé otros libros además de los que vienen en la bibliografía y todas las demostraciones que encontré fueron de ese tipo :0 ¡no había notado que no hay otras! Entiendo que la demostración está inspirada en el argumento diagonal de Cantor, fue una idea que utilizó para demostrar que existen diferentes tipos de infinitos.
Ambas demostraciones ocupan la misma idea, se basan en una autorreferencia para llegar a una contradicción
Hasta ahora nada adentro de las mates se ha roto por creer en el principio jeje ¿por qué crees que es sospechoso?
Cabe aclarar que a mí en particular no me parece sospechoso. Estaba tratando de ser irónico, pero al releer me doy cuenta que fallé jajajaja
EliminarLas sospechas creo que vienen de algunos casos extremos: los futuros contingentes (que no aplicarían a los objetos matemáticos), las oraciones con sujetos vacíos (que no sé si apliquen a los objetos matemáticos....) y algunas paradojas. Sin embargo, creo que el principio del tercer excluso implica el de no contradicción y, aunque quizá las matemáticas se hayan salvado de contradicciones por lo bien construidas que están, no sé que pasaría con el resto de las teorías científicas. https://www.academia.edu/36924778/Contradiction_triviality_inconsistency_toleration_and_other_misunderstandings_in_the_empirical_sciences
[Espero que el hecho de que haya contestado un mes después pase desapercibido. ]
Hola Diana. Oye, ¿podrías hablar un poco más sobre los modelos equivalentes a las MT's? Saludos y mucho éxito con tu blog.
ResponderEliminar¡Hola! Claro, son post planeados :)
Eliminar