2. Historia (I) En 1930´s, A. Turingdesarrolló una máquina abstracta denominada Máquina de Turingpara el estudio de la computabilidad. En 1940´s y 1950´s, se desarrollan unas máquinas simples, en cuanto su funcionamiento, que fueron conocidas como autómatas finitos, para modelar el funcionamiento del cerebro. También en los 1950´s, N. Chomsky comienza el estudio formal de las gramáticas (generadoras de lenguajes).
3. Historia (II) En 1969, S. Cook extiende el estudio de Turing. Cook separa aquellos problemas que pueden ser solucionados de aquellos que en principio pueden ser solucionados pero que en la práctica toman demasiados recursos. Autómatas finitos y ciertas clases de gramáticas formales son usadas en el diseño y construcción de software. La Máquina de Turing ayuda a comprender que es lo que podemos esperar de nuestro software.
4. Máquina de turing La máquina de Turing es un modelo computacional introducido por Alan Turing , publicado por la Sociedad Matemática de Londres en 1936, en el cual se estudiaba la cuestión planteada por David Hilbert sobre si las matemáticas son decidibles, es decir, si hay un método definido que pueda aplicarse a cualquier sentencia matemática y que nos diga si esa sentencia es cierta o no. Turing construyó un modelo formal de computador, la máquina de Turing, y demostró que existían problemas que una máquina no podía resolver. La máquina de Turing es un modelo matemático abstracto que formaliza el concepto de algoritmo.
5. Teoría de autómatas La teoría de autómatas es una rama de las ciencias de la computación que estudia matemáticamente máquinas abstractas y problemas que éstas son capaces de resolver. La teoría de autómatas está estrechamente relacionada con la teoría del lenguaje formal ya que los autómatas son clasificados a menudo por la clase de lenguajes formales que son capaces de reconocer.
6. Teoría de la computabilidad 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 unalgoritmo 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?
7. Teoría de la complejidad computacional La teoría de la complejidad computacional es la rama de la teoría de la computación que estudia, de manera teórica, los recursos requeridos durante el cómputo de un algoritmo para resolver un problema. Los recursos comúnmente estudiados son el tiempo (mediante una aproximación al número y tipo de pasos de ejecución de un algoritmo para resolver un problema) y el espacio (mediante una aproximación a la cantidad de memoria utilizada para resolver un problema). Se pueden estudiar igualmente otros parámetros, tales como el número de procesadores necesarios para resolver el problema en paralelo. La teoría de la complejidad difiere de la teoría de la computabilidad en que ésta se ocupa de la factibilidad de expresar problemas como algoritmos efectivos sin tomar en cuenta los recursos necesarios para ello.