
- •Министерство образования и науки Украины
- •О.Н. Паулин
- •Приложение г Сравнение методов сортировки массивов
- •1. Содержание и порядок выполнения курсовой работы
- •1.1. Общие положения
- •Разработка эффективных алгоритмов.
- •1.2. Задания на разработку
- •Образец заполнения
- •Образец титульного листа
- •1.3. Рекомендации к выполнению курсовой работы
- •2. Примеры выполнения курсовой работы
- •2.I. Разработка эффективных алгоритмов
- •2.2. Построение машины Тьюринга
- •2.2.1. Вычисления на машине Тьюринга
- •Словесное описание алгоритма
- •Пример 2.3.
- •2.2.2. Примеры построения машин Тьюринга
- •В алгоритме имеются две операции выбора:
Пример 2.3.
Постановка задачи. Синтезировать МТ, выполняющую копирование числа уисх=а (крайнее правое в последовательности чисел). Результатом работы МТ должна быть конкатенация вида yрез=a.0.a. Сохранить исходное число. После завершения работы МТ головка должна быть установлена в начале исходного числа.
Идея решения. Поочередно копировать каждую “1” из исходного числа на ленту после числа а, последовательно формируя результирующую последовательность ”1”. Копируемую ”1” отмечать, инвертируя её значение. Промежуточные результаты удобно представить конкатенацией вида yпром=a´.0.a´´.0.a´´´, где a´.0.a´´ - ”расщеплённое” меткой ”0” число a; a´´´ - часть копии числа a. При переходе к обработке следующей “1” из исходного числа а пометку снимать, выполняя обратное инвертирование.
20
По окончании работы МТ лента может выглядеть так:
! ... 0111011110110111111100 ... , или так: ! ... 0111111100 ... ,
В первом случае сохранены исходные данные.
Пустые ячейки ленты правее исходной последовательности чисел (n1, n2, ... , nm) могут быть использованы для размещения промежуточных результатов вычисления заданной функции у. Однако нужно помнить, что лента слева ограничена, поэтому возможно достижение левого конца ленты при записи информации на ленту. Программно такая ситуация не определяется, происходит аварийный останов МТ. Поэтому для записи промежуточных вычислений предпочтительнее использовать ячейки, расположенные правее заданной последовательности чисел.
2.2.2. Примеры построения машин Тьюринга
Рассмотрим примеры синтеза МТ для различных числовых функций.
Решение поставленной задачи должно быть описано в соответствии с рекомендациями по данному разделу.
Пример 2.2. Постановка задачи: синтезировать МТ, вычисляющую функцию y=n+1 (операция инкремента). Сохранение исходного числа n не требуется.
Идея решения в данном случае проста: необходимо переместить головку к концу заданного числа и следующий за ним символ (а это - 0, открывающий потенциально бесконечный ряд пустых ячеек) заменить на единицу.
Словесное описание алгоритма: головка автомата движется вправо вдоль последовательности единиц, пока не встретит пустую ячейку. В эту ячейку записывается “1”, и головка движется влево вдоль единиц результата (числа у), пока не встретит пустую ячейку. Обнаружив её, головка сдвигается вправо на одну ячейку, и МТ останавливается (головка обозревает крайнюю слева единицу результата у).
17
З
десь
же проводится анализ словесного описания
алгоритма с целью
определения
выполняемых операций и их последовательности,
а также требуемых символов на ленте.
В данном примере МТ выполняет две макрооперации - прохождение группы единиц вправо и затем прохождение группы единиц влево. Множество используемых символов: Х={0,1}; дополнительные символы не требуются.
Схема алгоритма. Введем следующие обозначения.
Для команд перемещения головки:
-
R(L) - сдвинуть вправо (влево) на одну ячейку;
-
GRxi(xj) (GLxi(xj)) - двигаться вправо (влево), пропуская группу символов xi Х, пока не встретится ячейка с символом xî Х (после выполнения команды головка находится напротив ячейки, содержащей символ xî); например, GR1(0) - двигаться вправо до пустой ячейки, пропуская группу единиц.
Для команд, оперирующих с содержимым текущей ячейки:
-
z=xi - проверка наличия символа xî Х в текущей ячейке;
-
z xi - записать в текущую ячейку символ xî Х;
-
INV - замена “1”(“0”) на “0”(“1”).
Схема алгоритма операции инкремента представлена на рис 2.3.
Анализ схемы алгоритма