Computación:
Teorías:
La teoría
de la computación es una rama de la matemática y la computación que
centra su interés en las limitaciones y capacidades fundamentales de las
computadoras. Específicamente esta teoría busca modelos matemáticos que
formalizan el concepto de hacer un cómputo (cuenta o cálculo) y la
clasificación de problemas:
Teoría de autómatas:
Esta teoría
provee modelos matemáticos que formalizan el concepto de computadora o algoritmo de
manera suficientemente simplificada y general para que se puedan analizar sus
capacidades y limitaciones. Algunos de estos modelos juegan un papel central en
varias aplicaciones de las ciencias de la computación, incluyendo procesamiento
de texto, compiladores, diseño de hardware e inteligencia artificial.
Los tres
principales modelos son los autómatas finitos, autómatas con pila y máquinas
de Turing, cada uno con sus variantes deterministas y no deterministas.
Los autómatas finitos son buenos modelos de computadoras que tienen una
cantidad limitada de memoria, los autómatas con pila modelan los que tienen
gran cantidad de memoria pero que solo pueden manipularla a manera de pila (el
último dato almacenado es el siguiente leído), y las máquinas de Turing modelan
las computadoras que tienen una gran cantidad de memoria almacenada en una
cinta. Estos autómatas están estrechamente relacionados con la teoría de lenguajes
formales; cada autómata es equivalente a una gramática formal, lo que
permite reinterpretar la jerarquía de Chomsky en términos de
autómatas.
Existen
muchos otros tipos de autómatas como las máquinas de acceso aleatorio, autómatas
celulares, máquinas ábaco y las máquinas de estado abstracto;
sin embargo en todos los casos se ha mostrado que estos modelos no son más
generales que la máquina de Turing, pues la máquina de Turing tiene la
capacidad de simular cada uno de estos autómatas. Esto da lugar a que se piense
en la máquina de Turing como el modelo universal de computadora.
Teoría de la computabilidad
Esta teoría
explora los límites de la posibilidad de solucionar problemas mediante
algoritmos. Gran parte de las ciencias computacionales están dedicadas a
resolver problemas de forma algorítmica, de manera que el descubrimiento de
problemas imposibles es una gran sorpresa. La teoría de la
computabilidad es útil para no tratar de resolver algoritmicamente estos
problemas, ahorrando así tiempo y esfuerzo.
Los
problemas se clasifican en esta teoría de acuerdo a su grado de imposibilidad:
Los computables son
aquellos para los cuales sí existe un algoritmo que siempre los resuelve cuando
hay una solución y además es capaz de distinguir los casos que no la tienen.
También se les conoce como decidibles, resolubles o recursivos.
Los semicomputables son
aquellos para los cuales hay un algoritmo que es capaz encontrar una solución
si es que existe, pero ningún algoritmo que determine cuando la solución no
existe (en cuyo caso el algoritmo para encontrar la solución entraría a un bucle
infinito). El ejemplo clásico por excelencia es el problema de la parada.
A estos problemas también se les conoce como listables, recursivamente
enumerables o reconocibles, porque si se enlistan todos los casos
posibles del problema, es posible reconocer a aquellos que sí tienen
solución.
Los incomputables son
aquellos para los cuales no hay ningún algoritmo que los pueda resolver, no
importando que tengan o no solución. El ejemplo clásico por excelencia es el problema
de la implicación lógica, que consiste en determinar cuándo una proposición
lógica es un teorema; para este problema no hay ningún algoritmo que en
todos los casos pueda distinguir si una proposición o su negación es un
teorema.
Teoría de la complejidad
computacional:
Aun cuando
un problema sea computable, puede que no sea posible resolverlo en la práctica
si se requiere mucha memoria o tiempo de ejecución. La teoría de la
complejidad computacional estudia las necesidades de memoria, tiempo y otros
recursos computacionales para resolver problemas; de esta manera es posible
explicar por qué unos problemas son más difíciles de resolver que otros. Uno de
los mayores logros de esta rama es la clasificación de problemas, similar a la
tabla periódica, de acuerdo a su dificultad. En esta clasificación los
problemas se separan porclases de complejidad.
Esta teoría
tiene aplicación en casi todas las áreas de conocimiento donde se desee
resolver un problema computacionalmente, porque los investigadores no solo
desean utilizar un método para resolver un problema, sino utilizar el más
rápido. La teoría de la complejidad computacional también tiene aplicaciones en
áreas como la criptografía, donde se espera que descifrar un código
secreto sea un problema muy difícil a menos que se tenga la contraseña, en cuyo
caso el problema se vuelve fácil.
Otras subramas:
Modelos de
cómputo estudia abstracciones de hacer un cómputo. Aquí se incluyen
los clásicos modelos de la teoría de autómatas además de otros modelos como funciones
recursivas, cálculo lambda e inclusive lenguajes de programación.
Teoría algorítmica de la información: Centra su atención en la
complejidad para describir algoritmicamente una secuencia de datos (cadena);
aquí la complejidad está medida por la longitud de su descripción más pequeña.
Especificación
y verificación formal Busca metodologías para garantizar que un problema
esté correctamente modelado y sistemas formales para validar la corrección de
la solución algorítmica.
La Teoría del aprendizaje
computacional: busca
algoritmos que hagan que las computadoras modifiquen sus comportamientos de
manera autónoma con base en datos empíricos, y concretamente en ejemplos y
contraejemplos. A este tipo de aprendizaje se le llama aprendizaje
supervisado. De forma análoga a la teoría de la complejidad computacional, en
esta teoría las funciones se clasifican por su grado de dificultad de ser
aprendidas.
Teoría de tipos: Busca la clasificación de
enunciados de acuerdo a los tipos de valores que calculan utilizando
herramientas de teoría de lenguajes formales.
Historia:
La teoría
de la computación comienza propiamente a principios del siglo XX, poco antes
que las computadoras electrónicas fuesen inventadas. En esta época varios
matemáticos se preguntaban si existía un método universal para resolver todos
los problemas matemáticos. Para ello debían desarrollar la noción precisa de método
para resolver problemas, es decir, la definición formal de algoritmo.
Uno de los
primeros resultados de esta teoría fue la existencia de problemas imposibles de
resolver algoritmicamente, siendo el problema de la parada el más
famoso de ellos. Para estos problemas no existe ni existirá ningún algoritmo
que los pueda resolver, no importando la cantidad de tiempo o memoria se
disponga en una computadora. Asimismo, con la llegada de las computadoras
modernas se constató que algunos problemas resolubles en teoría eran imposibles
en la práctica, puesto que dichas soluciones necesitaban cantidades irrealistas
de tiempo o memoria para poderse encontrar.
No hay comentarios:
Publicar un comentario