W skrócie : Turing Machine może wykonywać (skończone) obliczenia nieskończone na (skończonych) nieskończonych danych i generować (skończone) nieskończone wyniki. Podstawową ideą jest to, że te nieskończoności mogą być zdefiniowane jako granica bytów skończonych, zdefiniowana w matematycznie odpowiedni sposób. Jest to podstawa matematycznej semantyki obliczeń. Jeśli weźmiesz pod uwagę programy, a nie Maszyny Turinga, programy te mogą również zawierać (dokładnie określone) nieskończone struktury danych. Przypadek funkcji tabelarycznejfact
jako możliwego algorytmu jest ostatecznie analizowany, jako program lub jako model TM, z podpowiedzią dotyczącą związku z leniwą oceną nieskończonych obiektów.
Z wieloma innymi szczegółami
Jeśli chodzi o twoje ostatnie pytanie, baza TM nie oblicza na liczbach dowolnych, ale na symbolicznej reprezentacji tych liczb jako arbitralnych (nieograniczonych) długich łańcuchów symboli je reprezentujących. Prawidłowe kodowanie modulo, prawdą jest, że mogą one porównywać lub wykonywać arytmetykę z takimi liczbami za pomocą tych reprezentacji.
Ale pierwotne pytanie dotyczy roli nieskończoności w maszynach Turinga w ogóle.
Częstą odpowiedzią na to pytanie jest to, że maszyny Turinga nigdy nie mają do czynienia z nieskończonością. Są one skończone i wszystko, co obliczają, jest obliczane w skończonym czasie na skończonej części taśmy (stąd wystarczy skończona taśma, która jest większa). Prawdą jest, że wymagania dotyczące czasu dla TM są nieograniczone, co nie jest tym samym co nieskończoność.
Stąd każda odpowiedź obliczona przez TM może być również obliczona przez automat skończony (FSA), który jest „do pewnego stopnia” jednym ze sposobów patrzenia na tabelę. Trudność polega na tym, że niektóre rozmiary wejściowe (prawie zawsze do tego dochodzi, jeśli tylko odczytać dane wejściowe), przekraczają rozmiar automatu. Ale wtedy możemy po prostu użyć większego. Więc jeśli chcemy rozważyć nieograniczony rozmiar danych wejściowych, potrzebujemy nieskończonej sekwencji FSA, która może wykonać obliczenia. W rzeczywistości możemy potrzebować maszyny o stanie skończonym, nieco bardziej złożonej niż tradycyjne FSA, ponieważ może istnieć wyjście do obliczenia (zamiast odpowiedzi typu „tak-nie”), ale prawdopodobnie powinien to zrobić przetwornik stanu skończonego.
Tak więc, jeśli patrzymy na problem, który ma nieskończony zestaw instancji, taki jak obliczanie GCD lub po prostu stosowanie arytmetyki na liczbach całkowitych o dowolnym rozmiarze, widzimy, że nieskończoność wraca do nas tylnymi drzwiami, ponieważ ta nieskończoność zestaw FSA.
Ale jest inny problem. Powyższa analiza działa tylko wtedy, gdy weźmiemy pod uwagę obliczenia, które kończą się wynikiem. Ale nie wszystkie TM to robią. Niektórzy mogą wymienić członków zbioru nieskończonego. Zazwyczaj ma to miejsce w przypadku TM, która oblicza ułamki dziesiętneπi dodawaj nowe w nieskończoność. Oczywiście oblicza tylko skończoną odpowiedź w skończonym czasie, ale interesuje nas tak naprawdę nieskończona sekwencja wytworzona przez nieskończone obliczenia. Zauważ, że mamy teraz dwa aspekty nieskończoności: nieskończoność obliczeń i nieskończoność wyniku (tj. Niektórych obliczonych danych). W rzeczywistości może to nawet doprowadzić do rozważenia nieskończonych danych wejściowych ... ale zignorujmy tę komplikację, która dotyczy nieograniczonych strumieni danych. Zauważ też, że takie obliczenia dają wyniki inne niż tak
Z drugiej strony możemy zastąpić to nieskończoną sekwencją skończonych obliczeń skończonymi maszynami. Ale my oszukujemy.
Z fizycznego punktu widzenia jest to najlepsze, co możemy zrobić. Wiemy tylko, jak budować maszyny skończone, przynajmniej zgodnie z obecnym stanem wiedzy w dziedzinie fizyki, który nie powinien zmienić się zbytnio w tej kwestii w najbliższej przyszłości.
Ale w jaki sposób możemy poradzić sobie z tymi nieskończonościami w sposób spójny i możliwy do zrozumienia z matematycznego punktu widzenia.
Jeśli weźmiesz pod uwagę nieskończony zestaw FSA, który może współpracować w celu obliczenia nieskończonego zestawu odpowiedzi, nie możesz tego zrobić arbitralnie. Potrzebujesz pewnych zabezpieczeń, aby upewnić się, że to, co robisz, ma sens. Powszechnie wiadomo, że można w prosty sposób budować dowolny zestaw z nieskończonym połączeniem regularnych zbiorów, w rzeczywistości z nieskończonym połączeniem zestawów singletonów. Zatem rozważenie dowolnych nieskończonych związków automatów bez żadnych ograniczeń nie doprowadzi cię do nikąd. Rozważasz nawet w tym samym zestawie automatów, które dają niespójne odpowiedzi.
To, czego naprawdę chcesz, to zdefiniowanie pojęcia spójności. Ale to wymaga pewnych środków ostrożności. Załóżmy, że używasz nieskończonej sekwencji automatów do symulacji bazy TM, która odpowiada tak lub nie lub nie zatrzymuje się. Problem polega na tym, że FSA zawsze zatrzyma się z odpowiedzią, na przykład tak lub nie. Ale jeśli użyjesz FSA, który w rzeczywistości nie jest wystarczająco duży dla wybranego wejścia, na co powinien odpowiedzieć. Zarówno tak, jak i nie są zarezerwowane dla przypadków, w których FSA faktycznie zakończyło obliczenia TM, a użycie jednej z tych odpowiedzi przy niedokończonym obliczeniu doprowadziłoby tylko do zamieszania. Potrzebujesz odpowiedzi, która brzmi: „ przepraszam, jestem za mała i nie mogę powiedzieć. Spróbuj z większym facetem w rodzinie ”. Innymi słowy, chcesz uzyskać odpowiedź, np.
Przepełnienie lub nie wiem. W rzeczywistości semantycy nazywają to „ niezdefiniowanym ” lub „ dolnym ” i często zapisywane „⊥„.
Potrzebujesz więc automatów, które mają 3 rodzaje stanów: akceptujący, nieakceptujący i niezdefiniowany. Nieokreślony stan może być postrzegany jako stan oznaczający brakującą część automatu, która wymusza zatrzymanie obliczeń. Tak więc, gdy obliczenia zostają zatrzymane, w zależności od stanu, w którym się zatrzymują, pojawia się odpowiedź tak , nie lub niezdefiniowana .
Teraz widzisz, że to, czego chcesz, to nieskończone sekwencje automatów, które są spójne . Zarówno tak, jak i nie są zgodne z
nieokreślonym , ale tak nie jest zgodne z nie . Wtedy dwa automaty są spójne, gdy udzielają spójnych odpowiedzi na tym samym wejściu.
Można to rozszerzyć na automaty obliczające inne rodzaje odpowiedzi. Na przykład, jeśli obliczają kolory, takie jak czerwony, niebieski, zielony ..., możesz dodać niezdefiniowany kolor, który jest zgodny ze wszystkimi innymi. Jeśli odpowiedź jest nieskończoną sekwencją cyfr takich jakπ, wówczas każdą cyfrę można konsekwentnie i niezależnie zastąpić niezdefiniowaną, aby 3,14 ⊥ ⊥ ⊥ ⊥ . . . jest zgodny z 3,1415 ⊥ ⊥ ⊥ ⊥ . . . i z
⊥ . ⊥ 5159 ⊥ ⊥ ⊥ ⊥ . . ., ale dwa ostatnie nie są zgodne z 3,1416 ⊥ ⊥ ⊥ ⊥ . . .. W tym sensie3,1416 ⊥ ⊥ ⊥ ⊥ . . . nie jest przybliżeniem π. Mówimy, że odpowiedź jest lepiej zdefiniowana niż inna, gdy zawiera wszystkie informacje, które można znaleźć w drugiej, i być może więcej. W rzeczywistości jest to częściowe zamówienie.
Nie będę dalej rozwijał tych teoretycznych aspektów, co jest nieco niewygodne w przypadku maszyn Turinga. Chodzi o to, że koncepcje te prowadzą do idei, że domeny obliczeniowe (dane lub maszyny) tworzą struktury matematyczne, takie jak sieci, w których obiekt nieskończony można odpowiednio zdefiniować jako granice nieskończenie rosnących (tj. Lepiej i lepiej zdefiniowanych) sekwencji obiekty skończone. Zdefiniowanie nieskończonych sekwencji wymaga nieco więcej aparatu i pojęcia ciągłości. Na tym właśnie polega teoria semantyki Dany Scott i daje ona nieco inny pogląd na pojęcia obliczalności.
Następnie maszyny Turinga lub inne urządzenia formalne, które mogą wykonywać „obliczenia nieskończone”, można zdefiniować jako granice sekwencji skończonych przybliżeń maszyn, które są coraz lepiej definiowane. To samo dotyczy dowolnych danych obliczanych przez maszyny, zarówno wejściowych, jak i wyjściowych.
Najprostszym dokumentem, jaki kiedykolwiek czytałem na ten temat, jest odręczny zestaw notatek z wykładów Dany Scott, często nazywany notatkami z wykładów z Amsterdamu. Ale nie mogłem go znaleźć w sieci. Każdy wskaźnik do kopii (nawet niekompletny, ponieważ mam jej część) byłby mile widziany. Ale możesz spojrzeć na inne wczesne publikacje Scotta, takie jak
Zarys matematycznej teorii obliczeń .
Powrót do początkowego przykładu pytania
Te koncepcje aproksymacji dotyczą zarówno danych, jak i programów. Funkcja fact
jest definiowana rekurencyjnie, co oznacza, że jest to najmniej ustalony punkt funkcji, którego można użyć do obliczenia sekwencji zbieżnej skończonej aproksymacji fact
. Ta sekwencja coraz bardziej zdefiniowanych funkcji skończonych zbiega się w nieskończoną całość, którą nazywamy funkcją fact
.
Ale jeśli używasz wyszukiwania tablicowego, możesz zrobić dokładnie to samo, z kodem zawierającym coraz większe tabele, które są skończonymi przybliżeniami nieskończonej tabeli wstępnie obliczonych wartości fact
. Każda z tych tablic może faktycznie dać odpowiedź na dowolną liczbę całkowitą, ale odpowiedź może być⊥( niezdefiniowany ), gdy tabela nie jest wystarczająco zdefiniowana (wystarczająco duża). Algorytm wyszukiwania tabeli również musi być zdefiniowany przez sekwencję aproksymacji, ponieważ oblicza się go z tabelą nieskończoną.
Prawdą jest, że jeśli weźmiemy pod uwagę elementarny model obliczeniowy TM, takiej nieskończonej tablicy nie można wyrazić w tym formalizmie. Nie oznacza to, że nie miałoby to sensu. Maszyna Turinga może mieć drugą taśmę, która ma zostać zainicjowana za pomocą wartości tabelarycznych niektórych funkcji, takich jak fact
. Nie zmienia to mocy obliczeniowej bazy TM, o ile funkcja ta jest funkcją obliczalną, o ile tabela może zostać zainicjalizowana nieskończonym obliczeniem innej bazy TM, która może obliczyć wszystkie pary argumentów i wartości dla odpowiedniej funkcji.
Ale w praktyce nie można wykonać nieskończonego obliczenia. Dlatego właściwym sposobem jest leniwe obliczenie tabeli, tj. Wypełnianie wpisów tylko wtedy, gdy jest to potrzebne. Dokładnie to samo dzieje się z zapamiętywaniem, czyli odpowiedzią, którą udzieliłem z różnymi uzasadnieniami na poprzednie pytanie.