Skip to content

atanasivanovv/Turing-Machine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Turing Machine

By Atanas Ivanov

Да се реализира библиотека за ефективна работа с машини на Тюринг. Машините на Тюринг имат потенциално безкрайна двупосочна лента, в която могат да бъдат записвани произволни символи.

Преход в Машината на Тюринг се задава със следния синтаксис:

<състояние> ::= { <низ> }
<команда> ::= L | R | S
<преход> ::= <символ><състояние> -> <символ><състояние><команда>

Командите управляват движението на главата, съответно наляво (L), надясно (R), или без промяна (S). Специалното състояние {halt} спира изпълнението на машината.

Пример: 6{increment} -> 7{decrement}L.

Машината на Тюринг да може да се конструира от множество преходи, подадени като вход на програмата, като автоматично се извлекат състоянията на машината, командите и преходите. Да се поддържа възможност да се извърши изпълнение на машината над някаква лента, получена като вход. Като резултат да се изведе състоянието на лентата и позицията на главата при достигане до състояние {halt}. Внимание: тъй като лентата е безкрайна, да се изведе само тази част от нея, която е претърпяла промени по време на изпълнението на машината.

Да се поддържат следните операции над машини на Тюринг:

  • Композиция на две машини на Тюринг ✔️
  • Разклонение на две машини на Тюринг относно трета ✔️
  • Mашина на Тюринг, реализираща while-цикъл над дадена машина на Тюринг, където условието се задава с друга машина на Тюринг. ✔️

Бонуси:

  • преобразуването на няколко машини до еднолентова машина ✔️
  • реализирани тестове използвайки doctest ✔️
  • да се реализира недетерминирана машина на Тюринг и преобразуването ѝ до детерминирана ❌

Copyright

All rights reserved for Atanas Ivanov. The project is strictly licensed and no files or assets are allowed for use in any other projects outside Turing-Machine.

About

Turing Machine Project - FMI, Data Structures

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages