Dlaczego model automatów skończonych nie wystarczy?
Podczas gdy inne odpowiedzi wspominały już o wielu istotnych aspektach, uważam, że główną zaletą maszyn Turinga nad automatami skończonymi jest separacja danych i programów . Pozwala to analizować dość skończony program i wypowiadać się na temat tego, jak program ten obsługiwałby różne dane wejściowe, bez ograniczania rozmiaru danych wejściowych.
Chociaż teoretycznie można opisać zarówno rzeczywisty komputer, jak i maszynę Turinga z taśmą skończoną jako maszynę stanu, nie jest to tak naprawdę wykonalne: liczba stanów jest wykładnicza w ilości pamięci, jaką ma maszyna, i ogólnie skończonej formalizm automatu państwowego wymaga wyraźnego wyszczególnienia przejść między tymi stanami. Tak więc w przypadku ogólnego automatu stanu skończonego o tej wielkości dokonywanie jakichkolwiek dedukcji na podstawie pełnego wyliczenia wszystkich przejść stanu jest całkiem niemożliwe.
Oczywiście na prawdziwym komputerze zmiany stanów nie mogą się zdarzyć arbitralnie. Nie ma polecenia zamiany jednej trzeciej bitów w pamięci w jednym kroku obliczeń. Możesz więc spróbować opracować bardziej zwartą specyfikację przejść stanu. Coś w rodzaju specyfikacji zestawu instrukcji dla twojej architektury. Oczywiście rzeczywiste architektury komputerów są skomplikowane ze względu na wydajność, więc można to jeszcze bardziej uprościć, tworząc bardzo prosty zestaw instrukcji, który wykonuje tylko bardzo małe kroki przy bardzo ograniczonym wejściu i wyjściu. W końcu może się okazać, że twoja architektura przypomina coś w rodzaju interpretera maszyny Turinga: używając kawałków kodu programu i jednego bitu danych wejściowych, wygeneruj trochę danych wyjściowych i poruszaj się w kodzie programu.
Alternatywą byłoby użycie stanów automatu stanu skończonego tylko do przedstawienia danych przetwarzanych przez program, przy jednoczesnym kodowaniu samego programu w stanach przejściowych. To pociągałoby za sobą ten sam problem, jak wyliczyć wszystkie stany, a zwarta reprezentacja może znów być zbliżona do tego, co robi maszyna Turinga.
Jaki jest sens studiowania tych znacznie silniejszych modeli w odniesieniu do prawdziwych komputerów?
Ogólnie rzecz biorąc, powiedziałbym, że maszyna Turinga ze skończoną taśmą byłaby prawdopodobnie lepszym modelem dla rzeczywistych komputerów. Jednak w przypadku wielu pytań naukowych rozróżnienie między skończoną, ale dużą i nieskończoną taśmą jest nieistotne, więc samo twierdzenie, że nieskończona taśma ułatwia. W przypadku innych pytań najważniejsza jest ilość zastosowanej taśmy, ale model z łatwością pozwala mówić o ilości zużytej taśmy bez konieczności określania, co się stanie, jeśli w obliczeniach zabraknie taśmy.