Hasta donde yo sé, los principales modelos de computabilidad son el cálculo λ, las máquinas de Turing y las funciones recursivas . No conozco la situación con respecto a la complejidad en las funciones recursivas, pueden o no ser inútiles para la complejidad.
Puede verse como una coincidencia afortunada que las máquinas de Turing, que no son tan indiscutiblemente máquinas muy ineficientes, también sean un muy buen modelo de complejidad. Lo que hizo que las cosas fueran naturales es que hay muchas transformaciones que involucran TM que son polinomiales. (Máquina universal, simulación de una máquina -grabada con una máquina 1-grabada, de un alfabeto arbitrario a uno binario, simulando una PRAM , ...) y que los polinomios son una clase de funciones estables por operaciones aritméticas y composición - lo que los convierte en un buen candidato para la teoría de la complejidad.norte
El cálculo λ puro era en sí mismo inútil para la complejidad. Sin embargo, un sistema de tipo simple entró en juego y permitió garantías de terminación para algunos términos λ de una manera muy fácil. Luego, algunos otros sistemas (sistemas T , F , ...) permitieron una gran expresividad manteniendo la terminación.
Al ser la eficiencia o la complejidad un refinamiento de la terminación y los tipos estrechamente relacionados con la lógica, más tarde surgieron lógicas lineales ligeras que caracterizan varias clases de complejidad. ( Elemental , P y algunas variaciones para PSPACE y otras). La investigación en este dominio es muy activa y no está restringida a estas clases de complejidad, y ni siquiera está restringida al cálculo λ.
tl; dr: λ-calculus fue útil para la computabilidad, la terminación y la teoría de la complejidad.
Sin embargo, para dar crédito donde se debe, las máquinas de Turing son una forma buena y unánime de definir qué es la complejidad, pero eso es cierto solo para los límites sueltos como "polinomio", no para los límites estrechos para los que los modelos tipo PRAM son más adecuados.
En términos de complejidad temporal, creo que esto es difícil con el cálculo lambda. La razón es que el paso computacional de la unidad en el cálculo lambda es -reduction ( entrada de wikipedia ): Todas las expresiones, independientemente de su longitud, tomaría paso de tiempo computacional bajo este modelo.( λ x . t e r m ) v → t e r m [ x : = v ] 1β
fuente
Acerca de incluir el cálculo λ en el modelo de complejidad estándar, aquí está el resumen de algunas (muy) recientes investigaciones sobre el tema. Da una respuesta a esta pregunta para alguna forma restringida de reducción β. Básicamente, la complejidad en el modelo de costo estándar es similar a contar los pasos de reducción β cuando se restringe a la reducción de carga (que incluye estrategias de llamada por nombre y llamada por valor).
Sobre la invarianza del modelo de costo unitario para la reducción de la cabeza por Beniamino Accattoli y Ugo Dal Lago. (WST2012, enlace al procedimiento )
fuente