- •Лекции по курсу “дискретные структуры”
- •Интуитивное определение алгоритма
- •Основные свойства алгоритмов
- •Примеры алгоритмов
- •Рекурсивные алгоритмы
- •Примитивно-рекурсивные функции
- •Частично-рекурсивные функции
- •Символьные конструкции
- •Определение, функционирование и способы задания машины Тьюринга
- •Композиция машины Тьюринга
- •Эквивалентность машин Тьюринга и частично- рекурсивных функций
- •Определение и функционирование нормального алгоритма
- •Примеры нормальных алгоритмов
-
Символьные конструкции
Алфавитом будем называть любое конечное множество попарно различных знаков, называемых буквами ( символами ) этого алфавита. Алфавит будем обозначать заглавными буквами, например :
Символом будем обозначать пустой символ.
Словом в данном алфавите называется любая конечная ( в том числе и пустая ) последовательность букв этого алфавита. Слова будем обозначать малыми греческими буквами.
Например :
= алгоритм - слово в алфавите А;
= 1010100 - слово в алфавите В;
-
= +0 - слово в алфавите С.
Пустое слово будем обозначать .
Длина слова ( обозначается ) - это количество букв в слове.
Определим некоторые отношения и операции над словами.
Равенство слов в алфавите А определяется индуктивно :
а) пустые слова равны
б) если слово равно слову , то b =b , где b - буква в алфавите А.
Если слово является частью слова , то говорят, что имеет место вхождение слова в слово ( слово называется подсловом слова ). Это можно записать следующим образом :
, где - слова в алфавите А.
Например : в слове 1012011201 два вхождения слова 12, три вхождения слова 01, одиннадцать вхождений пустого слова - перед первой, после последней букв и между всеми буквами.
Слово называется началом слова , если ; концом слова , если .
Слово длины n , составленное из буквы а , повторенной n раз, будем обозначать , например xyxxxyyyy = .
Операция ( и результат ) приписывания слов и друг к другу называется конкатенацией (обозначается // ) . Например, если .
-
Определение, функционирование и способы задания машины Тьюринга
Под машиной Тьюринга понимается некоторая гипотетическая (абстрактная) машина, состоящая из следующих частей ( рис. 3.1.)
-
бесконечная в обе стороны лента, разбитая на ячейки, в каждой из которых может быть записан только один символ из алфавита , а также пустой символ ;
-
управляющее устройство ( рабочей головки ), которое в каждый момент времени может находится в одном из состояний из множества . В каждом из состояний головка размещается напротив ячейки и может считывать ( обозревать ) или записывать в нее букву из алфавита А.
...... ...... ...... ......
Рис. 3.1. Машина Тьюринга
Функционирование МТ состоит из последовательности элементарных шагов ( тактов ). В каждом шаге выполняются следующие действия :
-
рабочая головка считывает ( обозревает ) символ ;
-
в зависимости от своего состояния и обозреваемого символа головка вырабатывает символ и записывает его в обозреваемую ячейку (возможно =) ;
-
головка перемещается на одну ячейку вправо (R) , влево (L) или остается на месте (E);
-
головка переходит в другое внутреннее состояние . (возможно =).
Состояние называется начальным , - заключительным. При переходе в заключительное состояние машина останавливается.
Полное состояние МТ называется конфигурацией . Это распределение букв по ячейкам ленты, состояние рабочей головки и обозреваемая ячейка. Конфигурация в такте t записывается в виде : , где - подслово слева от обозреваемой ячейки, - буква в обозреваемой ячейке, - подслово справа.
Начальная конфигурация и конечная называются стандартными.
Для описания работы МТ существует 3 способа :
- система команд вида
- функциональная таблица ;
- граф ( диаграмма ) переходов.
Рассмотрим их на примерах.
Пример 1. Построить МТ, реализующую конкатенацию двух слов в алфавите . Слова на ленте разделены знаком * . Начальная конфигурация является стандартной.
Система команд МТ имеет вид :
В состоянии осуществляется движение головки вправо до пустого символа.
Самый правый символ стирается.
Звездочка стирается, если первое слово пустое.
Правое слово посимвольно сдвигается влево на одну позицию.
Переход в стандартную конечную конфигурацию.
Функциональная таблица
|
a
|
b |
* |
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
- |
|
|
|
|
- |
|
|
|
- |
|
Прочерки в таблице означают, что символ не может быть встречен в состояниях .
a/aL b/bL
a/aR b/bR */*R a/aL
*/aL
a/L
a/bL */bL
/L b/aL
/R
b/L
b/bL
*/R
стандартная заключительная конфигурация.
Вычисление на МТ словарной функции будем понимать следующим образом. Пусть в начальной конфигурации на ленте записано слово . Если значение определено, то конечного числа шагов ( тактов ) машина должна перейти в заключительную конфигурацию, в которой на ленте записано слово . В противном случае МТ должна работать бесконечно.
С помощью МТ можно описывать выполнение арифметических операций над числами. При этом числа представляются на ленте как слова в алфавите, состоящем из цифр какой-нибудь системы счисления, и разделяющихся специальным знаком, не входящем данный алфавит, например, * . Наиболее употребительной системой является унарная , состоящего из одного символа –1. Число Х на ленте записывается словом , ( или сокращенно ) в алфавите А={1}.
Числовая функция правильно вычислима ( или просто вычислима ) по Тьюрингу, если существует МТ, которая переводит конфигурацию в конфигурацию , когда =y , или работает бесконечно, когда не определена.
Пример 2. Операция сложения двух чисел в унарном коде.
Начальная конфигурация :
Конечная конфигурация : т.е. сложение фактически сводится к приписыванию числа b к числу a . Для этого первая 1 стирается, а * заменяется на 1.
Приведем описание МТ в виде функциональной таблицы :
|
|
|
|
|
1 |
* |
|
|
|
|
- |
|
|
|
- |
|
|
- |
|