Diferencia entre revisiones de «Teoría de la computabilidad»
Sin resumen de edición |
|||
Línea 18: | Línea 18: | ||
Pero fueron otros los que mediante una serie de investigaciones mostraron que esto no era posible. En contra de esta idea K. Gödel sacó a la luz su conocido [[Teoremas de la incompletitud de Gödel|Primer Teorema de Incompletitud]]. Este viene a expresar que todo sistema de primer orden consistente que contenga los [[Teorema|teoremas]] de la [[aritmética]] y cuyo conjunto de [[axioma]]s sea [[Recursión|recursivo]] no es completo. Gödel construyó una fórmula que es satisfactoria pero que no puede ser probada en el sistema. Como consecuencia, no es posible encontrar el sistema formal deseado por Hilbert en el marco de la [[lógica de primer orden]], a no ser que se tome un conjunto no recursivo de axiomas. |
Pero fueron otros los que mediante una serie de investigaciones mostraron que esto no era posible. En contra de esta idea K. Gödel sacó a la luz su conocido [[Teoremas de la incompletitud de Gödel|Primer Teorema de Incompletitud]]. Este viene a expresar que todo sistema de primer orden consistente que contenga los [[Teorema|teoremas]] de la [[aritmética]] y cuyo conjunto de [[axioma]]s sea [[Recursión|recursivo]] no es completo. Gödel construyó una fórmula que es satisfactoria pero que no puede ser probada en el sistema. Como consecuencia, no es posible encontrar el sistema formal deseado por Hilbert en el marco de la [[lógica de primer orden]], a no ser que se tome un conjunto no recursivo de axiomas. |
||
Una posterior versión, que resulta más general, del teorema de incompletitud de Gödel, indica que ningún sistema deductivo que contenga los teoremas de la aritmética, y con los axiomas recursivamente enumerables puede ser [[Consistencia lógica|consistente]] y [[completud|completo]] a la vez. Esto hace pensar, a nivel intuitivo, que no va a ser posible definir un sistema formal. |
Una posterior versión, que resulta más general, del teorema de incompletitud de Gödel, indica que ningún sistema deductivo que contenga los teoremas de la aritmética, y con los axiomas recursivamente enumerables puede ser [[Consistencia lógica|consistente]] y [[completud|completo]] a la vez. Esto hace pensar, a nivel intuitivo, que no va a ser posible definir un sistema formal. el que lo lea es niña |
||
==¿Qué problemas puede resolver una máquina de Turing? == |
==¿Qué problemas puede resolver una máquina de Turing? == |
Revisión del 22:04 1 dic 2009
La Teoría de la computabilidad es la parte de la computación que estudia los problemas de decisión que pueden ser resueltos con un algoritmo o equivalentemente con una máquina de Turing. La teoría de la computabilidad se interesa a cuatro preguntas:
- ¿Qué problemas puede resolver una máquina de Turing?
- ¿Qué otros formalismos equivalen a las máquinas de Turing?
- ¿Qué problemas requieren máquinas más poderosas?
- ¿Qué problemas requieren máquinas menos poderosas?
La teoría de la complejidad computacional clasifica las funciones computables según el uso que hacen de diversos recursos en diversos tipos de máquina.
Antecedentes
El origen de los modelos abstractos de computación se encuadra en los años '30 (antes de que existieran los ordenadores modernos), para el trabajo de los lógicos Alonzo Church, Kurt Gödel, Stephen Kleene, Emil Leon Post, y Alan Turing. Estos trabajos iniciales han tenido una profunda influencia, tanto en el desarrollo teórico como en abundantes aspectos de la práctica de la computación; previendo incluso la existencia de ordenadores de propósito general, la posibilidad de interpretar programas, la dualidad entre software y hardware, y la representación de lenguajes por estructuras formales basados en reglas de producción.
El punto inicial de estos primeros trabajos fueron las cuestiones fundamentales que David Hilbert formuló en 1900, durante el transcurso de un congreso internacional.
Lo que Hilbert pretendía era crear un sistema matemático formal completo y consistente en el cual, todas las aseveraciones fueran planteadas con precisión. Su intención era encontrar un algoritmo que determinara la verdad o falsedad de cualquier proposición en el sistema formal. Al problema en cuestión se le denominó Entscheidungsproblem. En caso de que Hilbert hubiese cumplido su objetivo, cualquier problema bien definido se resolvería simplemente al ejecutar dicho algoritmo.
Pero fueron otros los que mediante una serie de investigaciones mostraron que esto no era posible. En contra de esta idea K. Gödel sacó a la luz su conocido Primer Teorema de Incompletitud. Este viene a expresar que todo sistema de primer orden consistente que contenga los teoremas de la aritmética y cuyo conjunto de axiomas sea recursivo no es completo. Gödel construyó una fórmula que es satisfactoria pero que no puede ser probada en el sistema. Como consecuencia, no es posible encontrar el sistema formal deseado por Hilbert en el marco de la lógica de primer orden, a no ser que se tome un conjunto no recursivo de axiomas.
Una posterior versión, que resulta más general, del teorema de incompletitud de Gödel, indica que ningún sistema deductivo que contenga los teoremas de la aritmética, y con los axiomas recursivamente enumerables puede ser consistente y completo a la vez. Esto hace pensar, a nivel intuitivo, que no va a ser posible definir un sistema formal. el que lo lea es niña
¿Qué problemas puede resolver una máquina de Turing?
No todos los problemas pueden ser resueltos. Un problema indecidible es uno que no puede ser resuelto con un algoritmo aún si se dispone de espacio y tiempo ilimitado. Actualmente se conocen muchos problemas indecidibles, como por ejemplo:
- El Entscheidungsproblem (problema de decisión en alemán) que se define como: Dada una frase del cálculo de predicados de primer orden, decidir si ella es un teorema. Church y Turing demostraron independientemente que este problema es indecidible.
- El Problema de la parada, que se define así: Dado un programa y su entrada, decidir si ese programa terminará para esa entrada o si correrá indefinidamente. Turing demostró que se trata de un problema indecidible.
- Un número computable es un número real que puede ser aproximado por un algoritmo con un nivel de exactitud arbitrario. Turing demostró que casi todos los números no son computables. Por ejemplo, la Constante de Chaitin no es computable aunque sí que está bien definido.
¿Qué otros formalismos equivalen a las máquinas de Turing?
Los lenguajes formales que son aceptados por una máquina de Turing son exactamente aquellos que pueden ser generados por una gramática formal. El cálculo Lambda es una forma de definir funciones. Las funciones que pueden ser computadas con el cálculo Lambda son exactamente aquellas que pueden ser computadas con una máquina de Turing. Estos tres formalismos, las máquinas de Turing, los lenguajes formales y el cálculo Lambda son formalismos muy disímiles y fueron desarrollados por diferentes personas. Sin embargo, ellos son todos equivalentes y tienen el mismo poder de expresión. Generalmente se toma esta notable coincidencia como evidencia de que la tesis de Church-Turing es cierta, que la afirmación de que la noción intuitiva de algoritmo o procedimiento efectivo de cómputo corresponde a la noción de cómputo en una máquina de Turing.
Los computadores electrónicos, basados en la arquitectura de von Neumann así como las máquinas cuánticas tendrían exactamente el mismo poder de expresión que el de una máquina de Turing si dispusieran de recursos ilimitados de tiempo y espacio. Como consecuencia, los lenguajes de programación tienen a lo sumo el mismo poder de expresión que el de los programas para una máquina de Turing y en la práctica no todos lo alcanzan. Los lenguajes con poder de expresión equivalente al de una máquina de Turing se denominan Turing completos.
Entre los formalismos equivalentes a una máquina de Turing están:
- Máquinas de Turing con varias cintas
- Máquinas de Turing con cintas bidimensionales, Turmite (o una infinidad de cintas lineales)
- Máquinas de Turing con número limitado de estados y símbolos para la cinta
- Máquinas de Turing con solo dos estados
- Autómatas finitos con dos pilas
- Autómatas finitos con dos contadores
- Gramáticas formales
- Máquina de Post
- Cálculo Lambda
- Funciones recursivas parciales
- Casi todos los lenguajes de programación modernos si dispusieran de memoria ilimitada
- Autómatas celulares
- El Juego de la vida de John Conway
- Máquinas de Turing no determinísticas
- Máquinas de Turing probabilísticas
- Computador cuántico
Los últimos tres ejemplos utilizan una definición ligeramente diferente de aceptación de un lenguaje. Ellas aceptan una palabra si cualquiera, cómputo acepta (en el caso de no determinismo), o la mayoría de los cómputos aceptan (para las versiones probabilística y cuántica). Con estas definiciones, estas máquinas tienen el mismo poder de expresión que una máquina de Turing.
¿Qué problemas requieren máquinas más poderosas?
Se considera que algunas máquinas tienen mayor poder que las máquinas de Turing. Por ejemplo, una máquina oráculo que utiliza una caja negra que puede calcular una función particular que no es calculable con una máquina de Turing. La fuerza de cómputo de una máquina oráculo viene descrita por su grado de Turing. La teoría de cómputos reales estudia máquinas con precisión absoluta en los números reales. Dentro de esta teoría, es posible demostrar afirmaciones interesantes, tales como «el complemento de un conjunto de Mandelbrot es solo parcialmente decidible».