- •© Михеева е. А., 2016 © Ульяновский государственный университет, 2016 оглавление
- •Раздел 6. Элементы математической логики . . . . . . . . . . . . . . . . . . . . 9
- •Раздел 7. Ограниченно-детерминированные (автоматные) функции
- •Раздел 8. Вычислимые функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
- •Раздел 9. Теория кодирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
- •Раздел 6. Элементы математической логики Предисловие
- •Исчисление высказываний
- •Язык ив
- •Аксиомы ив
- •Формулы алгебры высказываний
- •Соответствие между формулами ав и ив
- •Непротиворечивость ив
- •Полнота ив
- •Логические операции над предикатами
- •Теорема о полноте системы одноместных предикатов, заданных на конечном множестве
- •Исчисление предикатов (ип)
- •Формулы исчисления предикатов
- •Определение формул
- •Замена переменных в формулах
- •Правила образования выводимых формул
- •Замена переменного предиката
- •Задания для самостоятельной работы
- •Раздел 7. Ограниченно-детерминированные (автоматные) функции
- •Детерминированные функции
- •Свойство детерминированной функции
- •Примеры детерминированных и недетерминированных функций
- •Способ задания д.Функций
- •Вес детерминированной функции
- •Ограниченно-детерминированные функции
- •Способы задания о.Д.Функций
- •Конечные автоматы
- •Задания для самостоятельной работы
- •Раздел 8. Вычислимые функции Машины Тьюринга
- •Пусть в некоторый момент головка машины обозревает символ , находясь в состоянии , тогда:
- •Методы построения машин Тьюринга
- •1. Принцип двойственности для программ (машин).
- •2. Последовательное подключение одной машины к другой.
- •3. Итерация машины.
- •4. Специальный операторный язык для записи алгоритмов.
- •Описание технологии программирования для машин Тьюринга
- •Вычислимые функции
- •Операции с, Пр и
- •Классы вычислимых и рекурсивных функций
- •Эквивалентность класса рекурсивных функций и функций, вычислимых на машинах Тьюринга
- •Задания для самостоятельной работы
- •Раздел 9. Теория кодирования Алфавитное кодирование
- •Критерий однозначности декодирования
- •Задания для самостоятельной работы
Описание технологии программирования для машин Тьюринга
Весь процесс программирования разбивается на четыре этапа.
I Этап. Пусть задано некоторое преобразование записи на ленте и положения головки. Допустим, существуетмашина Тьюринга, осуществляющая это преобразование. Вначале составляется план осуществления данного преобразования. При этом желательно данное преобразование расчленить на более простые преобразования, т.е. такие, для которых либо мы уже ранее построили машину Тьюринга, либо ее легко можно построить.
Пример. Пусть k=2. Требуется построить машину Тьюринга, которая осуществляет сдвиг массива из единиц (,1, …) влево на ячеек (=1,2,…) (вне массива лента пустая). Величину сдвига можно задать путем специальной установки головки в начальный момент, например:
1 1 начальный момент
1 1 заключительный момент
На рисунке изображены записи на ленте и положение головки в начальный и заключительный моменты. Требуемое преобразование можно осуществить так:
Отмечаем начальную ячейку путем замены в ней символа 0 на символ 1. Оператор для этого преобразования обозначим через Ф(
)
- символ 0 заменяется на символ 1 и
головка остается на ленте.Движемся вправо (оператор A1) до левой единицы массива.
Обозначим через a’ и a’’ соответственно символ, обозреваемый в данный момент, и символ, расположенный непосредственно справа от a’. Здесь a’=1. Выясняем, является ли a’ последней единицей в массиве. Для этого вычисляем предикат p(a’, a’’), где
.
В случае p=1:
Стираем a’ (оператор O(a’)).
Возвращаемся влево до ближайшей единицы (оператор A2).
Приписываем справа от этой единицы еще одну единицу. Обозначим через Ф(
)
соответствующее преобразование.Возвращаемся (оператор p0, p0 – предикат, p00) к A1.
В случае p=0:
Массив состоит из одной единицы. Производим O(a’) – стирание единицы.
Возвращаемся влево (оператор A2) до ближайшей единицы.
Движемся влево (оператор L) через массив из единиц и останавливаемся над левой единицей.
II Этап. Переход от составленного плана преобразования к операторной схеме.
Продолжение примера. В нашем примере операторная схема имеет вид:
.
III Этап. Переход от операторной схемы к программе машины (с использованием последовательного подключения и итерации программ, исходя из программ, соответствующих отдельным операторам данной операторной схемы (кроме * и )).
Продолжение примера.
|
Ф( )
|
A1
|
p(a’,a’’)
|
O(a’) |
A2
|
Ф( )
|
O(a’)
|
A2
|
L
|
|
|||||
|
q1 |
q2 |
q3 |
q4 |
q5 |
q6 |
q7 |
q8
|
q9
|
q10
|
q11
|
q12
|
q13
|
q14
|
q15 |
0 |
1S |
|
0R |
|
0L |
0S |
0S |
0S |
0L |
1S |
0S |
0S |
0L |
0R |
|
1 |
1S |
1R |
1S |
1R |
1L |
1S |
1S |
0S |
1S |
1R |
1S |
0S |
1S |
1L |
|
Программа 1 (П1).
IV Этап. Упрощение программы.
Продолжение примера.
|
q1 |
q3 |
q5 |
q8
|
q9
|
q10
|
q12
|
q13
|
q14
|
q15 |
0 |
1S |
0R |
0L |
0S |
0L |
1S |
0S |
0L |
0R |
|
1 |
1R |
1R |
1L |
0S |
1S |
1R |
0S |
1S |
1L |
|
Программа 2 (П2).
В П1 к команде 1S (1, q1) можно непосредственно попасть только из команды 1S (0, ) того же столбца. Поэтому первый столбец П1 может быть заменен на следующий:
-
0
1S
1
После этого можно отождествить состояния и , т.к. в ячейках (1, ) и (0, ) стоят пустые команды и в них машина никогда не попадает.
Аналогичные преобразования можно проделать со столбцами для q3 и q4.
В столбце q11 команда 0Sq2 никогда не работает, ее можно изъять, а 1Sq2 можно также изъять внеся необходимые изменения в столбец для q10.
В итоге мы приходим к программе 2 (П2), содержащей всего 10 состояний.
