Strona główna Algorytmy i Struktury Danych Maszyna Turinga

🖥️ Maszyna Turinga

Symulator maszyny Turinga krok po kroku z animowaną taśmą, podświetlaną tabelą przejść i pięcioma wbudowanymi programami: inkrementacja binarna, dodawanie unarne, sprawdzanie palindromu, kopiowanie napisu i 3-stanowy busy beaver.

Algorytmy i Struktury Danych2DŁatwy60 FPS
turing-machine ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O symulatorze maszyny Turinga

Alan Turing przedstawił swoją abstrakcyjną maszynę obliczeniową w przełomowej pracy z 1936 roku „On Computable Numbers”, jako narzędzie do udowodnienia, że pewne problemy — najsłynniej Problem Stopu — są nierozstrzygalne przez żaden algorytm. Maszyna Turinga składa się z nieskończonej taśmy podzielonej na komórki (każda przechowuje symbol ze skończonego alfabetu), głowicy odczytu/zapisu poruszającej się o jedną komórkę na raz oraz skończonego zbioru stanów rządzonych przez tabelę przejść: dla bieżącego stanu i symbolu pod głowicą tabela określa nowy symbol do zapisania, kierunek ruchu (w lewo lub w prawo) oraz kolejny stan. Mimo tego minimalnego opisu teza Churcha-Turinga głosi, że każda funkcja obliczalna przez dowolne fizycznie realizowalne urządzenie może być również obliczona przez maszynę Turinga.

Ten symulator oferuje animowany widok taśmy krok po kroku z podświetloną głowicą, pełny podgląd tabeli przejść stanów oraz pięć wbudowanych programów obejmujących inkrementację binarną, dodawanie unarne, sprawdzanie palindromu, kopiowanie napisu i Busy Beaver dla wybranych liczby stanów. Możesz zatrzymać się w dowolnym kroku, sprawdzić taśmę i edytować tabelę przejść, aby napisać własne programy — co czyni go idealnym narzędziem do eksplorowania teorii obliczalności i różnicy między „zatrzymuje się” a „działa w nieskończoność”.

Najczęściej zadawane pytania

Czym jest Problem Stopu i dlaczego żadna maszyna Turinga nie może go rozwiązać?

Problem Stopu pyta: mając opis maszyny Turinga M i dane wejściowe w, czy M ostatecznie zatrzyma się na w? Turing udowodnił w 1936 roku, że żaden ogólny algorytm nie może odpowiedzieć na to pytanie dla wszystkich par (M, w). Dowód wykorzystuje argument przekątniowy: załóżmy, że istnieje detektor zatrzymania H, a następnie skonstruujmy maszynę D, która używa H, by zrobić przeciwieństwo tego, co H przewiduje na temat samej D — co prowadzi do sprzeczności. Był to pierwszy rygorystyczny dowód, że pewne dobrze zdefiniowane problemy są obliczeniowo nierozwiązywalne.

Czym jest problem Busy Beaver?

Funkcja Busy Beaver BB(n) to maksymalna liczba symboli „1”, jaką n-stanowa, 2-symbolowa maszyna Turinga może zapisać na pustej taśmie przed zatrzymaniem się. Znane wartości: BB(1)=1, BB(2)=4, BB(3)=6, BB(4)=13, BB(5)≥4098 (udowodniona dolna granica), a BB(6)≥10^10^10^10^10^7 — astronomicznie duża. BB(n) rośnie szybciej niż jakakolwiek funkcja obliczalna, co dowodzi jej nieobliczalności. Znalezienie wartości BB wymaga wyczerpującego przeszukania wszystkich n-stanowych maszyn, z których większość nigdy się nie zatrzymuje.

Czy wszystkie współczesne komputery to naprawdę tylko maszyny Turinga?

Pod względem obliczalności — czyli tego, jakie problemy da się rozwiązać — tak, zgodnie z tezą Churcha-Turinga. Każdą funkcję, którą może obliczyć twój laptop czy telefon, może też obliczyć wystarczająco duża maszyna Turinga, i odwrotnie. Jednak prawdziwe komputery różnią się ogromnie pod względem wydajności: operacje, które na modelu RAM trwają czas wielomianowy, mogą wymagać wykładniczej liczby ruchów głowicy na jednotaśmowej maszynie Turinga. Wielotaśmowe i niedeterministyczne maszyny Turinga są używane w teorii złożoności do definiowania klas złożoności, takich jak P, NP, PSPACE i EXPTIME.

Jak wygląda tabela przejść maszyny Turinga?

Funkcja przejścia δ przekształca (bieżący_stan, odczytany_symbol) na (nowy_symbol, kierunek, następny_stan). Dla maszyny 3-stanowej, 2-symbolowej tabela ma 6 wpisów (3 stany × 2 symbole). Każdy wpis jest zwykle zapisywany jako piątka: (q, s) → (s', D, q'), gdzie q to bieżący stan, s to odczytany symbol, s' to symbol do zapisania, D ∈ {L, R} to kierunek ruchu, a q' to następny stan. Specjalne stany zatrzymania (akceptacji/odrzucenia) nie mają wychodzących przejść — maszyna zatrzymuje się, gdy do nich wejdzie.

Czym jest Uniwersalna Maszyna Turinga?

Uniwersalna Maszyna Turinga (UTM) przyjmuje jako dane wejściowe zakodowany opis dowolnej innej maszyny Turinga M wraz z jej danymi wejściowymi i symuluje obliczenia M krok po kroku. UTM stanowią teoretyczną podstawę komputerów ogólnego przeznaczenia: tak jak procesor uruchamia dowolne programy, dekodując bajty instrukcji, UTM uruchamia dowolne maszyny, dekodując ich tabele przejść z taśmy. Minsky (1962) pokazał, że UTM można skonstruować przy zaledwie 7 stanach i 4 symbolach; mniejsze warianty z 2 stanami i 18 symbolami również udowodniono jako uniwersalne.

Jak działa inkrementacja binarna na maszynie Turinga?

Program inkrementacji binarnej odczytuje taśmę od prawej (najmniej znaczący bit) do lewej, zamieniając każdą 1 na 0, aż znajdzie 0 (lub puste pole), zamienia je na 1, a następnie zatrzymuje się. Dla wejścia „1011” (dziesiętnie 11) maszyna zamienia skrajną prawą 1→0 (przeniesienie), propaguje przeniesienie przez kolejną 1→0, znajduje 0→1, zapisuje „1100” (dziesiętnie 12). Maksymalna liczba kroków wynosi O(n), gdzie n to liczba bitów. Jest to jeden z najprostszych nietrywialnych programów maszyny Turinga i klasyczny przykład dydaktyczny.

Jaka jest różnica między językami rozstrzygalnymi a rozpoznawalnymi?

Język (zbiór ciągów znaków) jest rozstrzygalny, jeśli maszyna Turinga zawsze się zatrzymuje i poprawnie akceptuje lub odrzuca każdy ciąg. Jest rozpoznawalny (rekurencyjnie przeliczalny), jeśli maszyna Turinga akceptuje każdy ciąg należący do języka, ale może działać w nieskończoność dla ciągów spoza języka. Problem Stopu jest rozpoznawalny, ale nierozstrzygalny: maszyna Turinga, która po prostu uruchamia M na w, akceptuje, jeśli M się zatrzyma, ale może działać w nieskończoność, jeśli M się nie zatrzyma. Dopełnienie Problemu Stopu nie jest nawet rozpoznawalne. Te rozróżnienia definiują podstawy hierarchii arytmetycznej w logice matematycznej.

Czy dwustanowa maszyna Turinga może być zupełna w sensie Turinga?

Dwustanowa, trzysymbolowa maszyna Turinga została udowodniona jako zupełna w sensie Turinga przez Alexa Smitha w 2007 roku, wygrywając nagrodę 25 000 dolarów ufundowaną przez Stephena Wolframa. Czy dwustanowa, dwusymbolowa maszyna jest zupełna w sensie Turinga, pozostaje otwartym pytaniem. Jednostanowe maszyny są trywialnie nieuniwersalne (nie mogą zmieniać stanu, by realizować rozgałęzienia). UTM Smitha o 2 stanach i 3 symbolach jest najmniejszą znaną uniwersalną maszyną pod względem iloczynu stanów i symboli.

Czym są wielotaśmowe maszyny Turinga i dlaczego są przydatne?

K-taśmowa maszyna Turinga ma k niezależnych taśm i głowic, które poruszają się jednocześnie w każdym kroku. Maszyny wielotaśmowe są obliczeniowo równoważne maszynom jednotaśmowym (każdą k-taśmową maszynę można zasymulować maszyną jednotaśmową), ale występuje kwadratowy narzut czasowy: obliczenie O(T(n)) na k taśmach można zasymulować w O(T(n)²) krokach na jednej taśmie. W teorii złożoności maszyny wielotaśmowe naturalniej modelują algorytmy z osobnymi przestrzeniami wejścia, roboczą i wyjścia i są standardowym modelem do definiowania klas złożoności ograniczonych czasowo.

Czym jest niedeterministyczna maszyna Turinga?

Niedeterministyczna maszyna Turinga (NTM) może mieć wiele ważnych przejść dla tej samej pary (stan, symbol) i uznaje się, że „akceptuje”, jeśli jakakolwiek gałąź jej drzewa obliczeń osiąga stan akceptujący. NTM nie odpowiadają żadnemu fizycznie realizowalnemu urządzeniu, ale są teoretycznie potężne: NP to dokładnie klasa problemów rozstrzyganych przez wielomianową NTM. Czy P = NP — czyli czy NTM dają wykładniczą przewagę — jest najsłynniejszym nierozwiązanym problemem matematyki i informatyki.

Co oznacza „kompresja taśmy” w teorii maszyn Turinga?

Kompresja taśmy to technika symulacji pokazująca, że każdą maszynę Turinga używającą alfabetu o rozmiarze k i jednej taśmy można zasymulować maszyną używającą wyłącznie alfabetu binarnego (k = 2) z co najwyżej stałym narzutem czasowym i logarytmicznym narzutem w użyciu taśmy. Ogólniej, każdą maszynę Turinga używającą przestrzeni S(n) można zasymulować, używając S(n)/c przestrzeni dla dowolnej stałej c, kosztem pewnego narzutu czasowego — to Twierdzenie o Kompresji Przestrzeni (Hennie, 1966). Takie wyniki pozwalają teoretykom pracować z prostymi alfabetami binarnymi bez utraty ogólności.

Podobne symulacje