
- •Лекции по курсу “дискретные структуры”
- •Интуитивное определение алгоритма
- •Основные свойства алгоритмов
- •Примеры алгоритмов
- •Рекурсивные алгоритмы
- •Примитивно-рекурсивные функции
- •Частично-рекурсивные функции
- •Символьные конструкции
- •Определение, функционирование и способы задания машины Тьюринга
- •Композиция машины Тьюринга
- •Эквивалентность машин Тьюринга и частично- рекурсивных функций
- •Определение и функционирование нормального алгоритма
- •Примеры нормальных алгоритмов
-
Символьные конструкции
Алфавитом будем называть любое конечное множество попарно различных знаков, называемых буквами ( символами ) этого алфавита. Алфавит будем обозначать заглавными буквами, например :
Символом будем обозначать пустой символ.
Словом в данном алфавите называется любая конечная ( в том числе и пустая ) последовательность букв этого алфавита. Слова будем обозначать малыми греческими буквами.
Например :
= алгоритм - слово в алфавите А;
= 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 |
* |
|
|
|
|
- |
|
|
|
- |
|
|
- |
|