Ce este o mașină abstractă?

Mașinile abstracte, numite și automate, sunt un element al informaticii teoretice. O mașină abstractă seamănă cu o funcție în matematică. Primește intrări și produce ieșiri conform regulilor specificate. Mașinile abstracte diferă de mașinile mai literale, deoarece se presupune că funcționează perfect și independent de hardware. Ele sunt subdivizate în tipuri pe baza caracteristicilor cum ar fi modul în care își desfășoară operațiunile și ce tipuri de intrări pot primi.

Când se clasifică mașinile abstracte, una dintre cele mai simple distincții se referă la numărul de operații pe care le este permis să le efectueze la un moment dat. O mașină abstractă se numește deterministă dacă există întotdeauna o singură modalitate de a proceda. Este nedeterminist dacă există mai multe posibilități pentru mașină în cel puțin una dintre stările sale posibile. Un automat „pushdown” este unul care are capacitatea de a-și manipula teancul de intrări, mai degrabă decât să răspundă pur și simplu la acestea unul câte unul, în ordinea în care apar.

Wolfram MathWorld oferă două exemple celebre de mașini abstracte. Unul dintre aceste exemple este jocul vieții al lui Conway, care este o mașină abstractă deterministă, deoarece doar o configurație poate apărea din oricare alta. Acest joc folosește o grilă în care fiecare cutie sau celulă poate avea fie starea „vii” fie „moartă”. Starea întregii grile este determinată pe baza stării anterioare. Dacă o celulă vie atinge exact două sau trei celule vii, ea continuă să trăiască. Dacă are unul, doi sau mai mult de trei vecini (până la opt posibil), moare. O celulă moartă cu exact trei vecini va prinde viață; altfel, va rămâne moartă.

Un alt exemplu, mașina Turing, este una dintre cele mai elementare și fundamentale mașini abstracte din informatică. O mașină Turing efectuează operații pe o bandă – un șir de simboluri – de dimensiuni nelimitate. Conține instrucțiuni atât pentru schimbarea simbolurilor, cât și pentru schimbarea simbolului pe care operează. O simplă mașină Turing ar putea avea doar instrucțiunea „transformați simbolul la 1, apoi mutați-vă la dreapta”. Această mașină nu va scoate decât un șir de 1. Această mașină Turing simplă este deterministă, dar este, de asemenea, posibil să se construiască mașini Turing nedeterministe care pot efectua mai multe operații diferite având aceeași intrare.

Aceste mașini abstracte pot servi mai multor scopuri. Pot fi jucării teoretice distractive, dar pot servi și ca modele pentru sisteme informatice reale. Mașina abstractă se află în centrul informaticii ca disciplină.