Relação entre Turing Machine e cálculo Lambda?
Existe uma relação entre a Máquina de Turing e o cálculo Lambda - ou eles surgiram na mesma época?
Você pode elaborar sua pergunta? Ambos os modelos têm o mesmo poder computacional (ambos são capazes de expressar a família de funções recursivas), ou seja, são Turing completos. Veja: en.wikipedia.org/wiki/Turing_completeness
— Joel Rybicki
relacionado: Teoria da realizabilidade: diferença de poder entre o cálculo Lambda e as máquinas de Turing
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.
Igreja (1936). Um problema insolúvel na teoria elementar dos números. American Journal of Mathematics 58: 345-363.
Igreja (1940). Uma formulação da teoria simples dos tipos . Journal of Symbolic Logic 5 (2): 56-68.
Seldin (2006). A lógica de Curry e Church . Em Handbook of the History of Logic, vol.5: Lógica de Russell para Church , p. 819-874. Holanda do Norte: Amsterdã.
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.
Church alegou que o cálculo lambda captura a notação intuitiva da função computável antes do trabalho de Turing, por isso é chamado de Tese da Igreja. A idéia de capturar a noção geral de funções computáveis ​​remonta ainda mais (por exemplo, as funções recursivas gerais de Godel), e Church estava tentando capturá-la.
Eu acho enganoso dizer que a equivalência dos modelos é um acidente completo. Parece-me que Church e Turing decidiram capturar noções relacionadas, mesmo que não fosse imediatamente óbvio que as noções estavam de fato relacionadas. Você diria que é "acidente completo" que a integração e a anti-diferenciação de Riemann estejam intimamente relacionadas?
@Kaveh: Segundo Seldin (2006) A lógica de Church e Curry , os objetivos e a sintaxe do cálculo lambda foram desenvolvidos no período de 1928 a 1929, muito antes de Church estar ciente da noção geral de função recursiva. Minha resposta se beneficiaria de uma linha do tempo, mas não tenho tempo para montar isso agora.
@ Charles: A igreja estava em Göttingen 1927-1928. Ele certamente estava ciente do que estava acontecendo sobre a teoria da função recursiva e o programa de Hilbert. O resultado de Ackermann sobre uma função recursiva não primitiva é do mesmo ano. Church estava tentando construir uma base para a matemática. Tudo isso aconteceu antes do jornal de Turing. Veja isso . Kleene provou a equivalência de funções recursivas gerais e função definível por antes do trabalho de Turing. Seu último parágrafo é enganosa, uma vez que dá a sensação de que eles estavamλλ
@ Charles, como escrevi, concordo que a motivação original de Church era construir uma base (algo como o sistema de Frege) (AFAIK), mas ele também a considerou um modelo de computação antes do trabalho de Turing. Não acho que a resposta precise ser excluída. A revisão do segundo parágrafo deve torná-la adequada. (a razão de eu comentou é que eu sinto que nos últimos tempos as pessoas subestimam computability wrt trabalho da Igreja.)
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:
∀f:nat→nat ∃e ∀n ∃k (T(e,n,k)∧U(k,f(n)))∀f:nat→nat ∃e ∀n ∃k (T(e,n,k)∧U(k,f(n)))
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 fTTccffeeffffccccff. Isso não pode ser feito (posso explicar por que, se você fizer isso como uma pergunta separada).
Agora temos a marcação . TEXTEX
Andrej, o artigo da Wikipedia usa ordem diferente de parâmetros que você está usando, o segundo argumento é a entrada e o terceiro é o código de interrupção da computação, o primeiro argumento é o código da máquina. Eu acho que você está dizendo CT, eu editei com base no vDT88.
Mais uma coisa, parece que, para realizabilidade, você fornece como um código de TM e espera um -term, mas não seria mais natural fornecer também como -term e a função de identidade funcionaria? ? (Eu posso pedir isso como uma questão separada, se você preferir.)λ f λffλλffλλ
@ Kaveh: Eu acho que foi o contrário, mas também me pergunto por que não é natural também ter uma saída do mesmo tipo que a entrada no caso do cálculo lambda.
Algo como um realizador da afirmação "todo é contínuo" faz? Ou que tal um realizador para "o espaço Cantor e o espaço Baire são homeomórficos"? 2 N N Nf:R→Rf:R→R2N2NNNNN
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.