
- •Введение
- •1 Схема примитивной рекурсии функции
- •2 Разработка программы для машины поста
- •2.1 Идея решения
- •2.2 Составление схем
- •2.3 Написание программы на машине Поста
- •2.4 Анализ результата
- •3 Разработка программы для машины тьюринга
- •3.1 Идея решения
- •3.2 Составление гсп и тсп
- •3.3 Написание программы на машине Тьюринга
- •3.4 Анализ результата
- •Список литературы
2 Разработка программы для машины поста
2.1 Идея решения
Идея решения заключается в применении метода копирование группы единиц с помощью отметки из двух пробелов два раза. Копирование будет осуществляться влево, отметка о количестве копирования будет стоять справа от исходной группы единиц. (рис.2; рис.3)
Рисунок 2 – Исходное состояние машины Поста
Рисунок 3 – Конечное состояние машины Поста
2.2 Составление схем
Процесс проектирования заключается составлении алгоритмов, которые будут исполняться позже на машине Поста. Основными вспомогательными элементами являются крупная схема алгоритма (рис.4), позволяющая представить метод решения в целом; и детализированная схема алгоритма, отображающая будущий код в доступном восприятию человека схематическом виде (рис.5).
Рисунок 4 – Крупная схема алгоритма
Рисунок 5 – Детализированная схема алгоритма. Лист 1
Рис. 5 Лист 2
2.3 Написание программы на машине Поста
Результатом написания кода на машине поста является работающая программа, позволяющая умножить произвольное количество единиц на три, иначе говоря: скопировать её 2 раза и представить в виде трёх блоков единиц.
Скриншоты работающей программы представлены на рисунках 6-9.
Рисунок 6 – Работающая программа Поста (Снимок 1)
Рисунок 7 – Работающая программа Поста (Снимок 2)
Рисунок 8 – Работающая программа Поста (Снимок 3)
Рисунок 9 – Работающая программа Поста (Снимок 4)
2.4 Анализ результата
Полученная программа полностью выполняет
поставленные задачи. Программа была
написана для Постова слова порядка 0,
но согласна принципу Поста она может
быть доработана и использоваться для
слова порядка k. Задача
имеет
– вычислимость, также можно доработать
её для решения
.
Задача имеет 45 строк кода, это число может быть уменьшено до порядка 32-37 строк, за счёт уменьшения количества пробелов между группами, и отказом от выравнивания полученных групп единиц.
3 Разработка программы для машины тьюринга
3.1 Идея решения
Идея решения заключается в том, чтобы, сместив каретку к крайнему правому символу, сменить его на следующий по порядку, согласно пятеричной системе счисления, если же нам встретиться символ 4, то мы меняем его на 0, смещаемся влево и повторяем операцию, до тех пор, пока не встретим пробел, после смещаемся вправо и заканчиваем программу.
Внешний алфавит машины Тьюринга:
A={
,0,1,2,3,4}
Для определения внутреннего алфавита составим пошаговый алгоритм:
Двигаемся вправо до первого пробела.
Сдвигаемся влево и меняем число на следующее, повторяем, пока не встретим ( ,0,1,2 или 3).
Сдвигаемся вправо пока не встретим пробел, если уже встретили – заканчиваем работу.
Отсюда можно выделить 4 состояние автомата:
q1 – двигаемся вправо до пробела;
q2 – двигаемся влево меняя символы на следующие;
q3 – двигаемся влево до пробела;
qZ – выход.
3.2 Составление гсп и тсп
Рисунок 10 – ГСП программы
Таблица 2 – ТСП программы.
Q\A |
0 |
1 |
2 |
3 |
4 |
|
q1 |
q1 0 R |
q1 1 R |
q1 2 R |
q1 3 R |
q1 4 R |
q2 L |
q2 |
q3 1 L |
q3 2 L |
q3 3 L |
q3 4 L |
q2 0 L |
qZ 1 R |
q3 |
q3 0 L |
q3 1 L |
q3 2 L |
q3 3 L |
q3 4 L |
qZ R |