Existe uma relação entre a Máquina de Turing e o cálculo Lambda - ou eles surgiram na mesma época?
Existe uma relação entre a Máquina de Turing e o cálculo Lambda - ou eles surgiram na mesma época?
Respostas:
O cálculo lambda é mais antigo que o modelo de máquina de Turing, aparentemente datado do período de 1928-1929 (Seldin 2006), e foi inventado para encapsular a noção de uma função esquemática que Church precisava para uma lógica fundamental que ele inventou. Não foi inventado para capturar a noção geral de função computável e, de fato, uma versão mais fraca do tipo teria servido melhor a seus propósitos.
Parece ser acidental o objetivo de que o cálculo que a Igreja inventou se tornasse completo de Turing, embora mais tarde Church tenha usado o cálculo lambda como base para o que ele chamou de funções efetivamente computáveis (1936), às quais Turing apelou em seu artigo. .
A teoria simples dos tipos de Church (1940) fornece uma teoria das funções mais moderada e tipificada, suficiente para expressar a sintaxe da lógica de ordem superior, mas não expressa todas as funções recursivas. Essa teoria pode ser vista como mais sintonizada com a motivação original da Igreja.
Nota Esta resposta é substancialmente revisada devido a objeções de Kaveh e Sasho. Eu recomendo a linha do tempo da Wikipedia que Kaveh sugeriu, tese História da Igreja – Turing , que tem algumas citações de escolha de artigos seminais.
Gostaria apenas de salientar que, embora as máquinas de cálculo lambda e de Turing calculem a mesma classe de funções teóricas dos números, elas não são exatamente equivalentes em todos os aspectos imagináveis. Por exemplo, na teoria da realizabilidade, existem afirmações que podem ser realizadas por uma máquina de Turing, mas não pelo cálculo lambda. Uma dessas afirmações é a tese formal da Igreja, que afirma:
Aqui é o predicado T de Kleene . Um realizador para esta declaração seria um programa que aceita um (representação de) mapa e gera (uma representação de) com a propriedade desejada. No modelo de máquina de Turing, o mapa é representado pelo código de uma máquina de Turing que calcula , de modo que o programa é apenas (o código de uma máquina de Turing) a função de identidade. Entretanto, se usarmos o cálculo lambda, deve calcular um numeral que representa uma máquina de Turing a partir de um termo lambda que representa uma função c f e f f c c f. Isso não pode ser feito (posso explicar por que, se você fizer isso como uma pergunta separada).
Eles estão relacionados matematicamente e historicamente.
O cálculo lambda foi desenvolvido em 1928 - 1929 por Alonzo Church (publicado em 1932).
A máquina de Turing foi desenvolvida em 1935 - 1937 por Alan Turing (publicado em 1937).
Alan Turing foi Ph.D. em Alonzo Church estudante em Princeton de 1936 a 1938.
Máquinas de Turing e o cálculo lambda são equivalentes em potência computacional: cada um pode simular com eficiência o outro.
Entscheidungsproblem é um dos famosos 23 problemas propostos pelo matemático David Hilbert.
Em 1936 e 1937, Alonzo Church e Alan Turing, respectivamente, publicaram artigos independentes mostrando que é impossível decidir por algoritmos se as afirmações aritméticas são verdadeiras ou falsas e, portanto, é impossível uma solução geral para o problema de Entscheidung.
Isso foi feito por Alonzo Church em 1936 com o conceito de "calculabilidade efetiva" baseado em seu cálculo λ e por Alan Turing no mesmo ano com seu conceito de máquinas de Turing. Mais tarde foi reconhecido que estes são modelos equivalentes de computação. - Wikipedia
Portanto, o cálculo lambda e as máquinas de Turing não apenas estão intimamente relacionadas, mas são modelos equivalentes de computação .
Você também pode gostar de ler O Anotado Turing: Uma Visita Guiada pelo Artigo Histórico de Alan Turing sobre Computabilidade e a Máquina de Turing, de Charles Petzold . Este livro captura algumas informações interessantes sobre o tópico.
Máquinas de Turing e Lambda Calculus são dois modelos que capturam a noção de algoritmo (computação mecânica). O cálculo Lambda foi inventado por Church para realizar cálculos com funções. É a base das linguagens de programação funcionais. Basicamente, todo problema que é computável (decidível) pelas máquinas de Turing também é computável usando o cálculo Lambda. Portanto, eles são dois modelos equivalentes de computação (até fatores polinomiais) e ambos tentam capturar o poder de qualquer computação mecânica.