Формальные определения алгоритма




Первый вид формальной модели алгоритма основан на представлении об алгоритме, как о программе для некоторого детерминированного устройства. Одним из таких устройств является одноленточная детерминированная машина Тьюринга (ДМТ), которая представляет собой логическое устройство, состоящее из:

1) неограниченной в обе стороны ленты, разделенной на одинаковые пронумерованные ячейки;

2) читающей/пишущей головки;

3) управляющего устройства с конечным числом состояний.

Программу для ДМТ определяют следующие компоненты:

1) G – конечное множество символов, записываемых на ленте, – множество входных символов, – выделенный пустой символ;

2) Q – конечное множество состояний, в котором выделено начальное состояние и два конечных – ;

3) функция переходов .

Т.е. .

Задание 1. Построить ДМТ-программу, которая копирует на ленте заданное натуральное число.

Решение. Как задача распознавания эта задача звучит следующим образом: существует ли копия заданного натурального числа.

Для представления натурального числа будем использовать символ 1, при такой схеме кодирования число n записывается в виде последовательности из n единиц. Для разделения исходного числа и копии используем символ *, в качестве вспомогательного символа выберем 0. Таким образом, , .

Отрицательный ответ в данной задаче при такой схеме кодирования будет только в случае, когда лента пуста или в записи исходного числа присутствуют символы, отличные от 1.

Копирование числа n будем выполнять за n проходов с возвратом. На каждом проходе заменим первую нескопированную единицу на вспомогательный символ 0, затем, двигаясь вправо, дойдём до конца записи, повторяя все символы, стоящие перед пустым, и запишем 1 в конец записи. Во время первого прохода перед записью 1 нужно вставить разделительный символ *. Затем будем двигаться влево, также повторяя символы, до тех пор, пока не достигнем 0, после чего действия повторяются. Когда все единицы будут скопированы (после символа 0 стоит *), нужно восстановить исходное число, заменив все 0 на 1, двигаясь влево.

Построим вначале ориентированный граф, соответствующий функции переходов, которая реализует последовательность действий, описанных выше. Затем выпишем множество состояний и табличное задание функции переходов. Вершинами графа будут являться состояния управляющего устройства, дуги графа означают переход из одного состояния в другое, причём, над каждой дугой будем писать символ(ы), по которому выполняется переход, а после знака ® – замещающий символ(ы) и на правление движения головки.

Следовательно, .

Функцию переходов представим в виде таблицы, содержащей значения .–

q s
    * b
q 0 (qN, b, 1) (q 1, 0, 1) (qN, b, 1) (qN, b, 1)
q 1 (qN, b, 1) (q 1, 1, 1) (qN, b, 1) (q2, *, 1)
q 2 (q3, 1, -1)
q 3 (q4, 0, 1) (q3, 1, -1) (q3, *, -1)
q 4 (q5, 0, 1) (q6, *, -1)
q 5 (q5, 1, 1) (q5, *, 1) (q3, 1, -1)
q 6 (q6, 1, -1) (qY, b, 1)

Второй подход основан на понятии вычисления и числовой функции, основная теоретическая модель этого вида – рекурсивные функции.

Работу ДМТ-программы можно рассматривать, как вычисление некоторой функции . Если слово и программа останавливается на любом входе из S*, то результатом вычисления будет слово, составленное из символов, записанных на ленте после остановки машины в ячейках с 1-ой по последнюю непустую ячейку.

Классом функций, для которых вычисляющий их алгоритм существует, являются частично-рекурсивные функции.

Функция называется частично рекурсивной, если она может быть построена из 0, функций и с помощью конечного числа применений операторов суперпозиции, примитивной рекурсии и m-оператора.

Задание 2. Доказать примитивную рекурсивность следующих функций:

1) ;

2) ;

3) ;

4) ;

5) .

Решение.

1)

2)



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: