Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория алгоритмов в задачах информационной безопасности конспект лекций. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
736 Кб
Скачать

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

2.Понятие алгоритма связывается с процедурами вычисления значений числовых функций. Основной теоретической моделью этого типа являются рекурсивные функции – исторически первая формализация понятия алгоритма.

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

Теория алгоритмов оказала существенное влияние на развитие электронно-вычислительных машин и практику программирования. В теории алгоритмов были предугаданы основные концепции, заложенные в аппаратуру и языки программирования. Упоминаемые выше главные алгоритмические модели математически эквивалентны, но на практике они существенно различаются сложностными эффектами, возникающими при реализации алгоритмов, и породили разные направления в программировании. Так, микропрограммирование строится на идеях машин Тьюринга; структурное программирование заимствовало свои конструкции из теории рекурсивных функций; языки символьной обработки информации, например, ПРОЛОГ, берут начало от нормальных алгоритмов Маркова и систем Поста.

11

Лекция 2. Машина Тьюринга

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

Ключевые слова: машина Тьюринга; детерминированное устройство; лента; считывающая/пишущая головка; состояние; конфигурация; команда; программа; суперпозиция; соединение; ветвление; цикл; тезис Тьюринга.

Введение. В данной лекции рассмотрена машина Тьюринга – теоретическая алгоритмическая модель вычислителя, который понимает алгоритм как некоторое детерминированное устройство, способное выполнять в каждый момент лишь строго фиксированное множество операций. Описываются свойства машины Тьюринга, показывается процесс функционирования машины, определяются функции, вычислимые по Тьюрингу.

2.1. Машина Тьюринга и функции, вычислимые по Тьюрингу

Опишем алгоритмическую модель, предложенную Аланом Тьюрингом в 30-х гг. XX в. и оказавшую огромное влияние на разработку ЭВМ.

Элементы машины Тьюринга:

1. Лента. Разбита на ячейки, причем она бесконечна в обе стороны. В каждой ячейке может быть записан один из символов конечного алфавита A = {a0, a1,…, am}, называемого внешним алфавитом. Условимся считать, что символ a0 является пустым символом, обозначим его ^.

12

2.Управляющее устройство. Может находиться в одном из

внутренних состояний Q = {q0, q1,…, qn}, которых конечное число. Число элементов в Q характеризует объем внутренней памяти ма-

шины. В множестве Q выделены два специальных состояния: q0 и q1, называемые заключительным и начальным состояниями соответственно. Машина начинает работу в состоянии q1; попав в состояние q0, машина всегда останавливается.

3.Считывающая/пишущая головка. Может перемещаться вдоль ленты и в каждый момент времени обозревает (считывает) одну из ячеек ленты.

Функционирование машины Тьюринга осуществляется в дискретные моменты времени t = 0,1, 2,... и заключается в следую-

щем. В зависимости от внутреннего состояния машины и считываемого символа на ленте машина Тьюринга:

а) записывает в эту ячейку символ внешнего алфавита; б) сдвигает считывающую головку на один шаг влево или один

шаг вправо или оставляет ее на месте; в) переходит в новое внутреннее состояние.

Система команд. Работа машины определяется следующей си-

стемой команд:

qi a j qk al d,

(2.1)

где qi – внутреннее состояние машины; a j

– считываемый символ

(головка обозревает ячейку, в которой находится символ a j ); qk

новое внутреннее состояние; al – новый записываемый символ; d

направление движения головки, d = L – влево, d = R – вправо, d = Е – головка машины остается на месте.

Предполагается, что для каждой пары qi a j , где i =1,n, j = 0,m,

имеется ровно одна команда вида (2.1).

Определение. Множество этих команд называется программой машины.

Таким образом, в программе имеется n (m + 1) команд, так как q0 не может стоять в левой части команды.

Часто программу машины Тьюринга записывают табличным способом (табл. 2.1).

13

 

Табличное задание машины Тьюринга

Таблица 2.1

 

 

 

 

 

 

 

 

Команда

 

 

 

Символ

 

a0

am

 

 

 

 

внешнего алфавита

 

 

 

 

q1

 

 

 

 

qk al d

 

 

qn

 

 

Работа машины заключается в изменении конфигураций.

Определение. Конфигурация машины Тьюринга – совокупность внутреннего состояния, состояния ленты (т.е. размещения букв внешнего алфавита по ячейкам или слова, записанного на ленте), положения головки на ленте.

Предположим, что в начальный момент времени на ленте все ячейки, кроме конечного их числа, содержат пустой символ. Следовательно, и в любой другой момент времени лента будет иметь лишь конечное число ячеек, содержащих непустые символы.

Определение. Активная зона конфигурации – минимальная связная часть ленты, содержащая обозреваемую ячейку, а также все ячейки, в которых записаны непустые символы (рис. 2.1).

Непустые символы

Лента

Обозреваемая ячейка

Активная зона конфигурации Рис. 2.1. Активная зона конфигурации машины Тьюринга

Определение. Конфигурацию можно представить в виде машинного слова в алфавите A Q вида α1qiα 2 , где qi – внутреннее

состояние; α1 – слово из символов алфавита А, находящееся в левой части активной зоны от считывающей головки; α2 – слово, ко-

14

торое состоит из считываемого символа и символов алфавита А, находящихся в правой от считывающей головки части активной зоны.

Определение. Конфигурация называется заключительной, если qi = q0 .

Определение. Конфигурация называется начальной, если qi = q1.

Будем считать, что стандартная начальная конфигурация имеет вид q1α, а стандартная заключительная конфигурация имеет вид

q0α. Конфигурацию в момент времени t обозначим Kt .

Машина реализует процесс изменения конфигураций в следующем смысле. Если K0 = q1α и α = aiα′, ai A (головка обозревает

ai), то в программе машины имеется точно одна команда вида q1ai qk al d. Тогда следующая конфигурация K1 определяется так:

K1 = qk al α′, если d = E;

K1 = al qk α′, если

d = R;

K1 = qk a0 al α′ = qk^al α′,

если d = L.

Смену конфигураций будем записывать в виде K0 K1 . Если конфигурация K1 не является заключительной, то в соответствии с системой команд, аналогично предыдущему, однозначно можно определить следующую конфигурацию K2 , т.е. K1 K2 . Таким образом, начальная конфигурация K0 порождает последователь-

ность конфигураций K0 K1 Kt

Определение. Если эта последовательность конечна, т.е. обрывается в заключительной конфигурации, то говорят, что машина применима к конфигурации K 0 , в противном случае говорят, что

машина неприменима к конфигурации K 0 .

Определение. Если машина применима к конфигурации K 0 = q1α и Kt = α′q0α′′ – заключительная конфигурация, то слово

β = α′α′′ называется результатом работы машины на слове α.

Таким образом, машине Тьюринга соответствует частичная словарная функция (применима не ко всякому слову) с областью определения и областью значений, которые совпадают с множеством

15

конечных слов над алфавитом А, т.е. эта функция каждому такому слову ставит в соответствие результат применения машины к данному слову.

Потребуем, чтобы заключительные конфигурации машины находились в стандартной форме. Этого всегда можно добиться, добавляя к машине Тьюринга Т два новых состояния qи q′′ и следующие команды:

q0 ai qai L, i = 0,m ;

qai qai L, i =1,m ; qa0 q′′a0 R.

При этом будем считать, что q′′ – заключительное состояние. Таким образом, получаем новую машину T .

Определение. Машина Tэквивалентна машине Т в следующем смысле:

1)обе машины применимы к одним и тем же начальным конфигурациям;

2)результаты применения обеих машин совпадают;

3)заключительные конфигурации у машины T находятся в стандартной форме.

Определим теперь вычисление словарных функций на машине Тьюринга. Будем рассматривать словарные частичные функции f

типа f : A* A*, где A* – множество всех слов конечной длины в алфавите А.

Частичная функция определена, вообще говоря, не для всех значений аргумента.

Определение. Частичное отображение f : A B – произволь-

ное подмножество декартова произведения множеств A × B. Определение. Частичная функция – однозначное частичное

отображение.

Определение. Говорят, что машина Тьюринга Т правильно вычисляет частичную функцию f, если для любого ρ A* выполнено следующее:

1) если f (ρ) определено и f (ρ)= ω , где ω – слово, то машина Т применима к начальной конфигурации K0 = q1ρ , и заключительной конфигурацией является Kt = q0ω ;

16

2) если f (ρ) не определено, то машина Т неприменима к начальной конфигурации K0 = q1ρ .

Определение. Функция f называется правильно вычислимой по Тьюрингу, если существует машина Тьюринга Т, которая ее правильно вычисляет.

Аналогичные определения могут быть сделаны и для функций нескольких переменных. Для этого достаточно множество слов, являющихся аргументами, записать в виде одного слова, введя знак-разделитель « ». Ограничимся соответствующим определени-

ем для числовых функций.

 

 

 

 

 

 

 

Рассмотрим частичную функцию f (x , , x

n

)

:

n

0

от n

1

 

 

0

 

 

переменных. Будем считать, что алфавит А машины Т содержит элемент 1, не считая пустого символа, т.е. A = {1, ^}. Произвольное

число x

0

будем записывать в виде слова из единиц 1x+1 =11...1

 

 

 

 

x+1

длины x+1, чтобы запись нуля была непустой.

Определение. Говорят, что машина Тьюринга Т правильно вы-

числяет функцию f (x1, , xn ),

если

начальную конфигурацию

q 1...1*1...1*...*1...1 =

q 1x1+1 1x2 +1 ... 1xn +1

она переводит в

1

 

1

 

 

 

 

x1+1 x2 +1

xn +1

 

 

 

 

 

заключительную

конфигурацию

q

0

1...1 ,

если значение

 

 

 

 

 

 

f (x1,...,xn )+1

f (x1, xn ) определено; и машина Т неприменима, если значение f (x1, xn ) не определено. Здесь «*» – символ-разделитель из мно-

жества А.

Класс функций, вычислимых по Тьюрингу, обозначим через Т.

Примеры построения машин Тьюринга

Пример 1. f (x) = x + 1, x 0 . Пусть машина T1 вычисляет

функцию f (x). Введем внешний алфавит A = {a0 = ^, a1 = 1} и внутренние состояния Q = {q0, q1, q2}.

Программа машины T1 состоит из четырех команд:

 

q1^ → q21E;

(1)

q11 → q11R;

(2)

17

 

q21 q21L;

(3)

 

q2^ q0^R.

(4)

Рассмотрим последовательность конфигураций (табл. 2.2).

 

 

 

Таблица 2.2

Изменение конфигураций машины Тьюринга

 

при вычислении функции f (x) = x + 1

 

 

 

 

Конфигурация

 

Команда

K0 = q11x+1

 

q11 q11R

 

(2)

K1 = 1q11x

 

q11 q11R

 

(2)

K2 = 12q11x–1

 

q11 q11R

 

(2)

K3 = 13q11x–2

 

q11 q11R

 

(2)

 

 

...

 

 

 

 

 

Kx = 1xq11

 

q11 q11R

 

(2)

Kx+1 = 1x+1q1^

 

q1^ q21E

 

(1)

Kx+2 = 1x+1q21

 

q21 q21L

 

(3)

Kx+3 = 1xq212

 

q21 q21L

 

(3)

Kx+4 = 1x–1q213

 

q21 q21L

 

(3)

 

 

...

 

 

 

 

 

K2x+3 = q21x+2

 

q21 q21L

 

(3)

K2x+4 = q2^1x+2

 

q2^ q0^R

 

(4)

K2x+5 = q01x+2

 

 

Пример 2. f (x) = 0, x 0 . Пусть машина T2 вычисляет функ-

цию f (x). Введем внешний алфавит A = {a0 = ^, a1 = 1} и внутренние состояния Q = {q0, q1, q2}.

Программа машины T1 состоит из четырех команд:

q1^ q1^R;

(1)

q11 q21R;

(2)

18

q21 q2^R;

(3)

q2^ q01E.

(4)

Рассмотрим процесс смены конфигураций (табл. 2.3).

Таблица 2.3

Изменение конфигураций машины Тьюринга при вычислении функции f (x) = 0

 

Конфигурация

 

Команда

 

 

 

 

K0 = q11x+1

q11 q2^R

 

(2)

K1

= q21x

q21 q2^R

 

(3)

K2

= q21x–1

q21 q2^R

 

(3)

K3

= q21x–2

q21 q2^R

 

(3)

 

...

 

 

 

 

Kx = q21

q21 q2^R

 

(3)

 

 

 

 

Kx+1 = q2^

q2^ q01E

 

(4)

Kx+2 = q01

 

 

 

 

 

 

Пример 3. f (x) = x + y, x, y 0 . Пусть машина T3 вычисляет

функцию f (x). Введем внешний алфавит A = {a0 = ^, a1 = 1, a3 = } и внутренние состояния Q = {q0, q1, q2, q3, q4}.

Программа машины T1 состоит из семи команд:

q11 q2^R;

(1)

q21 q21R;

(2)

q2 q21R;

(3)

q2^ q3^L;

(4)

q31 q4^L;

(5)

q4^ q0^R;

(6)

q41 q41L.

(7)

Рассмотрим процесс смены конфигураций (табл. 2.4).

19

Изменение конфигураций машины Тьюринга

Таблица 2.4

 

 

при вычислении функции f (x) = x + y

 

 

 

 

 

 

Конфигурация

Команда

 

 

K0 = q11x+1 1y+1

q11 q2^R

 

(1)

K1 = q21x 1y+1

q21 q21R

 

(2)

K2 = 1q21x-1 1y+1

q21 q21R

 

(2)

K3 = 12q21x-2 1y+1

q21 q21R

 

(2)

 

Kx+1 = 1xq2 1y+1

q2 q21R

 

(3)

Kx+2 = 1x+1q21y+1

q21 q21R

 

(2)

Kx+3 = 1x+2q21y

q21 q21R

 

(2)

 

Kx+y+2 = 1x+y+1q21

q21 q21R

 

(2)

Kx+y+3 = 1x+y+2q2^

q2^ q3^L

 

(4)

Kx+y+4 = 1x+y+1q31

q31 q4^L

 

(5)

Kx+y+5 = 1x+yq41

q41 q41L

 

(7)

Kx+y+6 = 1x+y–1q412

q41 q41L

 

(7)

Kx+y+7 = 1x+y–2q413

q41 q41L

 

(7)

 

K2x+2y+4 = 1q41x+y

q41 q41L

 

(7)

K2x+2y+5 = q41x+y+1

q41 q41L

 

(7)

K2x+2y+6 = q4^1x+y+1

q4^ q0^R

 

(6)

K2x+2y+7 = q01x+y+1

 

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

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]