Czy istnieje związek między Maszyną Turinga a rachunkiem lambda - czy zdarzyło się, że powstały mniej więcej w tym samym czasie?
Czy istnieje związek między Maszyną Turinga a rachunkiem lambda - czy zdarzyło się, że powstały mniej więcej w tym samym czasie?
Odpowiedzi:
Rachunek lambda jest starszy niż model maszyny Turinga, najwyraźniej pochodzący z okresu 1928–1929 (Seldin 2006), i został wymyślony, aby zawrzeć pojęcie funkcji schematycznej, której Kościół potrzebował dla fundamentalnej logiki, którą opracował. Nie został wymyślony, aby uchwycić ogólne pojęcie funkcji obliczeniowej, a w rzeczywistości wersja o słabszym typie lepiej spełniłaby jego cele.
Wydaje się, że jest to cel uboczny w tym, że rachunek, który wynalazł Kościół, okazał się być kompletnym Turinga, chociaż później Kościół wykorzystał rachunek lambda jako podstawę do tego, co nazwał funkcjami obliczalnymi (1936), do których odwoływał się Turing w swoim artykule .
Prosta teoria typów Kościoła (1940) przedstawia bardziej umiarkowaną, typowaną teorię funkcji, która wystarcza do wyrażenia składni logiki wyższego rzędu, ale nie wyraża wszystkich funkcji rekurencyjnych. Teorię tę można postrzegać jako bardziej zgodną z pierwotną motywacją Kościoła.
Uwaga Ta odpowiedź została znacznie zmieniona z powodu zastrzeżeń Kaveha i Sasho. Polecam oś czasu Wikipedii, którą zasugerował Kaveh, Historię Kościoła - tezę Turinga , która zawiera niektóre cytaty z najważniejszych artykułów.
Chciałbym tylko zauważyć, że podczas gdy rachunek lambda i maszyny Turinga obliczają tę samą klasę funkcji liczbowych, nie są one dokładnie równoważne pod każdym względem, jaki można sobie wyobrazić. Na przykład w teorii wykonalności istnieją stwierdzenia, które można zrealizować za pomocą maszyny Turinga, ale nie za pomocą rachunku lambda. Jednym z takich stwierdzeń jest formalna teza Kościoła, która stwierdza:
Tutaj jest T orzecznik KLEENE użytkownika . Realizatorem tego oświadczenia byłby program który akceptuje (reprezentację) mapy i wyprowadza (reprezentację) z pożądaną właściwością. W modelu maszyny Turinga mapa jest reprezentowana przez kod maszyny Turinga obliczającej , więc program jest po prostu (kod maszyny Turinga) funkcją tożsamości. Jeśli jednak użyjemy rachunku lambda, to ma obliczyć liczbę reprezentującą maszynę Turinga na podstawie terminu lambda reprezentującego funkcję c f e f f c c f. Tego nie da się zrobić (wyjaśnię dlaczego, jeśli zadacie to jako osobne pytanie).
Są one powiązane zarówno matematycznie, jak i historycznie.
Rachunek lambda został opracowany w latach 1928–1929 przez Alonzo Church (opublikowany w 1932 r.).
Maszyna Turinga została opracowana w latach 1935–1937 przez Alana Turinga (opublikowana w 1937 r.).
Alan Turing był doktorem Alonzo Church. student w Princeton w latach 1936–1938.
Maszyny Turinga i rachunek lambda są równoważne pod względem mocy obliczeniowej: każda z nich może skutecznie symulować drugą.
Entscheidungsproblem jest jednym ze słynnych 23 problemów zaproponowanych przez matematyka Davida Hilberta.
Odpowiednio w 1936 i 1937 Alonzo Church i Alan Turing opublikowali niezależne artykuły pokazujące, że nie można algorytmicznie decydować, czy twierdzenia arytmetyczne są prawdziwe, czy fałszywe, a zatem niemożliwe jest ogólne rozwiązanie Entscheidungsproblem.
Dokonał tego Alonzo Church w 1936 r. Z koncepcją „efektywnej obliczalności” na podstawie rachunku λ oraz Alan Turing w tym samym roku ze swoją koncepcją maszyn Turinga. Później uznano, że są to równoważne modele obliczeń. - Wikipedia
Więc rachunek lambda i maszyny Turinga nie tylko ściśle związane, ale są one równoważne modele obliczeniowe .
Być może spodoba ci się również przeczytanie Annotowanego Turinga: Zwiedzanie z przewodnikiem przez historyczny artykuł Alana Turinga na temat obliczalności i maszyny Turinga autorstwa Charlesa Petzolda . Ta książka zawiera kilka interesujących informacji na ten temat.
Maszyny Turinga i rachunek Lambda to dwa modele, które wychwytują pojęcie algorytmu (obliczenia mechaniczne). Rachunek lambda został wymyślony przez Kościół do wykonywania obliczeń z funkcjami. Jest to podstawa funkcjonalnych języków programowania. Zasadniczo każdy problem, który można obliczać (rozstrzygać) przez maszyny Turinga, można również obliczać za pomocą rachunku Lambda. Są to dwa równoważne modele obliczeń (do czynników wielomianowych) i oba próbują uchwycić moc dowolnego obliczenia mechanicznego.