Abstrakti kone

Abstrakti kone, myös abstrakti tietokone, on teoreettinen malli tietokoneesta, sen laitteistosta tai ohjelmistosta, jota sovelletaan automaattien teoriassa. Laskentaprosessin abstrahointia käytetään sekä tietojenkäsittelytieteessä että tietokoneiden suunnitteluprosesseissa. Se edellyttää usein diskreettiä ajan käsittelyä eli simulointia.

Laskennan teoriassa abstrakteja koneita käytetään usein ajatuksellisina kokeina arvioimaan laskettavuutta tai analysoimaan algortimien kompleksisuutta (Kompleksisuusteoria).
Tyypillinen abstrakti kone sisältää määritelmän tulotiedoille ja lähtötiedoille sekä joukon sallittavia operaatioita, joita käyttäen tulotiedot muuttuvat lähtötiedoiksi. Tunnetuin esimerkki siitä on Turingin kone.

Monimutkaisemmista lähtökohdista käsin on mahdollista luoda abstrakteja koneita, joilla on täydellinen käskysarja, joukko rekistereitä sekä muisti. Eräs suosittu abstrakti kone, joka muistuttaa moderneja tietokoneita on abstrakti RAM kone, joka tarjoaa suoran pääsyn indeksoituihin muistipaikkoihin. Myös sellaisia abstrakteja koneita, joilla on valmiuksia käyttää välimuisteja (cache) sekä ulkoisia muisteja, käytetään enenevissä määrin.

Abstrakti kone voi myös viitata mikroprosessoriin, jota ollaan suunnittelemassa tai jota muuten ei vielä ole laitteistona tarjolla. Abstraktia konetta, joka toteutetaan ohjelmistosimulaationa, tai jossa käytetään tulkkia, kutsutaan myös virtuaalikoneeksi.

Abstraktin koneen käytön ansiosta on mahdollista laskea tarkkaan kunkin operaation vaatimat resurssit (aika, muisti jne) tarvitsematta konstruoida vastaavaa järjestelmää sitä tekemään.

Erilaisia sekventiaalisia abstrakteja koneita
Useat abstraktit koneet muistuttavat periaatteeltaan Turingin konetta, ja ovat sen erikoistapauksia tai muunnoksia. Ne voidaan luokitella käsiteltävän kielen ja Chomskyn hierarkian mukaan.

Katso myös
 Automaattiteoria
 Äärellinen automaatti

Kirjallisuutta 
 Brookshear, J. G. (1989). Theory of computation: formal languages, automata, and complexity. Addison-Wesley.
 Dams, D., and Namjoshi, K. S. (2005). Automata as Abstractions
 Hopcroft, J. E., and Ullman., J. D. (1979). Introduction to Automata Theory, Languages and Computation. Addison Wesley, Reading, Massachusetts.

Tietojenkäsittelyteoria