Stroj Post je abstraktní počítačový stroj navržený Emilem Postem v roce 1936 , vytvořený nezávisle na Turingově stroji , ale příspěvek o stroji Post byl publikován o několik měsíců později. Od Turingova stroje se liší větší jednoduchostí, navíc jsou oba stroje algoritmicky „ekvivalentní“ a oba jsou navrženy tak, aby formalizovaly koncept algoritmu a řešily problémy algoritmické řešitelnosti , tedy demonstrovaly algoritmické řešení problémů ve formě sekvence instrukcí pro stroj Post.
Postův stroj se skládá z vozíku (neboli čtecí a zapisovací hlavy) a pásky, rozdělené na buňky, nekonečné na obou stranách. Každá buňka na pásce může být ve 2 stavech – buď prázdná – 0nebo označená štítkem 1. Během cyklu stroje se vozík může posunout o jednu pozici doleva nebo doprava, počítat, měnit znak v aktuální pozici.
Činnost stroje Post je určena programem skládajícím se z konečného počtu řádků. Aby stroj fungoval, musíte nastavit program a jeho počáteční stav (tedy stav pásky a polohu vozíku). Vozík je řízen programem sestávajícím z očíslovaných, ne nutně uspořádaných řádků příkazů, pokud každý příkaz určuje řádek, na který se má přejít. Obvykle se akceptuje, že pokud není přechod v příkazu uveden, dojde k přechodu na další řádek. Každý příkaz má následující syntaxi:
i. K jkde i je číslo příkazu, K je akce vozíku, j je číslo dalšího příkazu (odeslat).
Celkem existuje šest typů příkazů pro stroj Post:
V příkazu "stop" není přechod na další řádek indikován.
Po spuštění programu jsou možnosti:
Pro sčítání a odčítání přirozených (nezáporných celých) čísel P a Q mohou být na pásce reprezentována sadou jednotek P a Q , vzájemně oddělených jednou nulou; nechť je počáteční pozice stříšky na levé straně "1" skupiny jednotek Q (označené symbolem " "): ⇓
⇓ …0010010010110… ╚═══╝ ╚═╝ P QSečtení dvou čísel je triviální - stačí vložit " 1" mezi čísla a vymazat jeden krajní pravý " 1" ze znázornění Q .
Program pro odečítání takových čísel sestává z postupné změny " " " 1" nejvíce vlevo v reprezentaci Q a " " zcela vpravo v zobrazení P . Na začátku programu je vozík nastaven na "1" zcela vlevo na Q : 1
1. ← - krok doleva 2. ? 1; 3 - pokud je buňka prázdná, přejděte na 1-krok, pokud ne - přejděte na3 3. X - odstranit štítek 4. → - krok doprava 5. ? 4; 6 - pokud je buňka prázdná, přejděte na 4-krok, pokud ne - přejděte na6 6. X - odstranit štítek 7. → - krok doprava 8. ? 9; 1 - pokud je buňka prázdná, přejděte ke 9kroku, pokud ne - přejděte na1 9. ! - konecV 5. řádku je smyčka možná, pokud .