Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algorytm.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
865.28 Кб
Скачать
    1. Вычислимость по Тьюрингу

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

Напомним, что числовая функция y=f(x1, x2, ... , xn) называется вычислимой, если существует алгоритм, с помощью которого можно вычислить значение функции для любого набора значений аргументов из области определения функции.

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

Возникает вопрос о функциях, для которых существует МТ, что их вычисляет. Аргумент появляется на ленте до начала вычисления, а значения функции для этого аргумента – те, которые остается на ленте, когда вычисление закончено. Воспользуемся специальным кодированием натуральных чисел в алфавите, который состоит из одного символа – 1: каждое натуральное число n подается (n+1) символом 1, т.е. числа 0,1,2,3,… кодируем словами 1, 11,111, и т.д. При построении машины Тьюринга для вычисления значений числовых функций будем произвольное число х N обозначать словом 1111..1=1х.

Для записи вектора (x1,x2,…,xn) будем использовать обозначение 1x11x2…1xn или 1x1+1#1x2+1…#1xn+1, или 1x1+1*1x2+1…*1xn+1.

Определение 7.2.1. Частичная числовая n-местная функция f(x1,…,xn ) называется вычислимой по Тьюрингу, если существует машина М, которая вычисляет ее таким образом:

1. Если набор значений аргументов (x1,…,xn ) принадлежит области определения функции f, то машина М, начинающая работу в конфигурации

q0(1x1+1 * 1x2+1…* 1xn+1) , (1)

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

qz(1y+1), где y = f(x1,…,xn ).

2. Если набор значений аргументов (x1,…,xn ) не принадлежит области определения функции f, или таких, что значения функции не принадлежат N, то машина М, начинающая работу в конфигурации (1), работает бесконечно долго, т.е. не переходит в заключительное положение.

Примеры 7.2.1.

  1. Рассмотрим базовую функцию следования (или добавления единицы S(x) = x+1). Для этого построим МТ с внешним алфавитом {#,1}, двумя внутренними состояниями {q0,qz} и программою:

q0 1 q0 1 R, q0 # qz 1 E (здесь Е вместо 0 или пусто).

  1. Вычисление базовой функции тождественности I(x) = x. МТ из внешним алфавитом {#,1} и внутренним {q0,qz} алфавитом вычисляет функцию I(x) = x с помощью программы:

q0 1 q0 1 R, q0 # qz # E

  1. МТ из внешним алфавитом {#,1} и внутренним {q0,qz} алфавитом вычисляет функцию O(x) = 0 с помощью программы:

q0 1 q0 # R, q0 # qz 1 E

  1. Для вычисления функции I nm (x1,x2,…,xn) = xm начальная конфигурация

11..11*11..11…*11..11…*11..11 (x1+1,x2+1,…,xm+1,…,xn+1 раз соответственно). Это может выполнить машина, которая стирает все знаки 1 и *, при этом “считает” до m и оставляет m-ю группу без изменения, и снова до конца стирает все знаки 1 и *. Ясно, что это может выполнить подходящая МТ.

  1. МТ из внешним алфавитом {#,1}, внутренним {q0,qz} алфавитом и системой команд: q0 1 q0 1 R, q0 # q0 1 R

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

6. Если машина М переводит конфигурацию α1q1α2 в конфигурацию β1q2β2, то обозначим это как М(α1α2) = β1β2. Запись М(α) будем употреблять также в другом значении: как обозначения машины М с начальным значением α .

Удвоение (перезапись) слова, то есть переработка слова α в алфавите {1}. Для чисел эту задачу решает машина М с системой команд в таб. 7.3.

Таб. 7.3.

X/Q

q0

q1

q2

q3

1

0 Rq1

1Rq1

1Rq2

1Lq3

#

# Rqz

* Rq2

1Lq3

*

* Lq0

* Rq2

* Lq3

0

1Lq0

0Rq0

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

7. Сконструируем МТ для определения суммы чисел, заданных не в унарном коде, а разных системах счисления. Например, найдем сумму числа, заданного в восьмеричной и троичной системах счисления, где X={0,1,2,3,4,5,6,7,+,#} внешний алфавит МТ, а Q={q1,q2,q3,q4,q5} – внутренний. Пусть слагаемые соединены знаком +, по левую сторону от знака + размещено слагаемое в восьмеричном коде, а по правую сторону - слагаемое в троичном коде. Идея решения задачи такая: от числа, расположенного по правую сторону, отнимаем единицу (действуя по правилам троичной арифметики), потом перемещаемся в левую сторону и к восьмеричному числу прибавляем единицу, действуя по правилам восьмеричной арифметики. После этого возвращаемся к правому числу и повторяем все операции до тех пор, пока правое слагаемое не будет исчерпано. Наконец, последний раз сдвигаемся в правую сторону, стираем знак + и останавливаемся.

Таб. 7.4.

X/Q

q1

q2

q3

q4

q5

0

2Lq1

L

1Rq4

R

1

0Lq2

L

2Rq4

R

2

1Lq2

L

3Rq4

R

#Rq5

3

4Rq4

R

4

5Rq4

R

5

6Rq4

R

6

7Rq4

R

7

0Lq3

R

+

#Rq5

Lq3

R

#

1Rq4

Lq1

qz

8. В таб. 7.5. приведена машина Тьюринга, подсчитывающая количество единиц, записанных в ячейках подряд без пропусков в алфавите Х = {1}, в десятичной системе счисления. Для решения задачи расширим алфавит Х' = {1,2,3,4,5,6,7,8,9,0,+}

Таб.7.5.

X/Q

q0

q1

q2

q3

q4

q5

q6

0

1Rq6

0Rq6

1

+Lq5

1Rq2

1Rq2

#Lq4

1Lq4

2Rq6

1Rq6

2

3Rq6

2Rq6

3

4Rq6

3Rq6

4

5Rq6

4Rq6

5

6Rq6

5Rq6

6

7Rq6

6Rq6

7

8Rq6

7Rq6

8

9Rq6

8Rq6

9

0Lq5

9Rq6

+

#qz

+Lq5

+Rq1

#

q1L

#q3L

1Rq6

0Rq6

Более оптимальный алгоритм приведен в таблице 7.6.

Таб.7.6.

X/Q

q0

q1

q2

q3

0

1q2

R

L

1

+Lq1

2q2

R

L

2

3q2

R

L

3

4q2

R

L

4

5q2

R

L

5

6q2

R

L

6

7q2

R

L

7

8q2

R

L

8

9q2

R

L

9

0q1L

R

L

+

+R

L

+q0

#L

#

#Lq3

1q2

qzR

9. В таб. 7.7. приведена машина Тьюринга, которая переводит число из десятичной системы счисления в двоичную систему счисления. Для решения задачи расширим алфавит Х' = {1,2,3,4,5,6,7,8,9,0,+}

Таб. 7.7.

X/Q

q0

q1

q2

q3

q4

q5

q6

0

+q1R

R

9q2L

L

1q1

L

+q1R

1

L

R

0q3

L

0L

L

q1

2

L

R

1q3

L

q1

3

L

R

2q3

L

q1

4

L

R

3q3

L

q1

5

L

R

4q3

L

q1

6

L

R

5q3

L

q1

7

L

R

6q3

L

q1

8

L

R

7q3

L

q1

9

L

R

8q3

L

q1

+

q6R

q5

q4L

L

#L

+R

#

+q1R

q2L

1q1

qZR

q5L

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