Una de las razones principales por las que la teoría de la computación ("mi" rama de la ciencia teórica de la computación) me parece fascinante y merece la pena estudiar es la siguiente: nos proporciona una forma de investigar algunas cuestiones filosóficas profundas (y a veces desconcertantes).
Uno de los fundadores de la teoría de la computación, Alan Turing, trató de precisar el significado de "calcular una función" para un ser humano equipado con una hoja de papel, dando una descripción matemática del proceso. No soy el único que piensa que tuvo mucho éxito, y las máquinas Turing demostraron ser un modelo preciso de muchos otros procesos informáticos.
Ahora que poseemos una clase de objetos matemáticos que describen cálculos, podemos probar teoremas sobre ellos, tratando de descubrir lo que se puede calcular y cómo se puede calcular; De inmediato resultó que muchas funciones perfectamente legítimas no se pueden calcular en absoluto, y que se pueden clasificar de acuerdo con un grado de indisputabilidad (algunas funciones son simplemente "más indiscutibles" que otras).
Algunos otros, los primeros generalmente identificados con Juris Hartmanis y Richard E. Stearns, intentaron describir matemáticamente lo que significa que una función (resp., Un problema) sea difícil o fácil de calcular (resp., Resolver). Existen varias medidas de complejidad según las cuales se puede describir la dureza de los problemas; el más común es cuánto tiempo necesitamos para resolverlos. Alan Cobham y Jack Edmonds tuvieron bastante éxito en identificar una noción razonable de "cálculo eficiente".
Dentro del marco de complejidad computacional, ahora podemos probar algunos resultados que son consistentes con nuestra noción intuitiva de cálculo. Mi ejemplo favorito es el teorema de la jerarquía de tiempo: si se nos da más tiempo para calcular, podemos resolver problemas más difíciles.
El problema central abierto de la teoría de la complejidad, P vs NP , es solo una formalización de otra pregunta filosóficamente significativa: ¿es realmente más difícil resolver un problema que verificar si una supuesta solución es realmente correcta? Creo que vale la pena formular y responder esta pregunta, independientemente de su importancia práctica.