Дискретная математика и теория алгоритмов. Учебное пособие
.pdf
§ 14. Формальные грамматики |
81 |
|
|
8.Назовём -н.к.а. A = , , , 0, регулярным, если он удовлетворяет следующим четырём условиям:
(а) автомат A содержит единственное выделенное состояние ′, причём ′ ̸= 0;
(б) в автомате A нет дуг, выходящих из состояния ′;
(в) в автомате A нет дуг, входящих в состояние ′ и помеченных непустым символом ;
(г) любой -переход в A имеет вид |
|
|
для некоторого |
|
, = ′. |
|
○−−−−→○ |
|
̸ |
||
|
|
′ |
|
|
|
Доказать, что произвольный язык порождается регулярной грамматикой тогда и только тогда, когда распознается некоторым регулярным -н.к.а. (Указание: см. доказательство теоремы 30.)
9.Используя метод доказательства теоремы 30, построить регулярную грамматику, порождающую язык, распознаваемый следующим детерминированным конечным автоматом:
(а) |
|
|
|
|
- |
id |
HH |
(б) |
|
|
i |
|
- |
di |
||
|
|
|
|
|
HH |
|
|
* |
6 |
|
|
, |
||||
|
9 |
|
|
|
|
Hj |
|
|
|
|
|
|
||||
|
H |
iHHH |
|
|
|
|
|
H |
|
|
|
|
|
|||
|
|
H |
|
|
|
i |
|
|
iHHH |
|
|
|
? |
|||
|
|
|
|
|
|
|
, |
|
|
|
H |
|
|
|
||
|
|
|
|
|
Hj |
|
|
|
Hj |
di |
|
- i6, |
||||
|
|
|
|
|
|
|
i6, |
|
|
|
|
, |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(в) |
H |
di@ |
|
s |
ik |
s |
(г) |
+ |
A |
|
s |
|
|
|||
|
|
|
|
|
i |
|
i@ |
id |
|
i |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
k |
|
|
|
|
|
|
|
|
|
3 k |
|
|
|
|
|
|
@ |
|
|
|
|
|
|
|
@ |
|
|
|
|
||
|
|
|
@ |
|
|
|
|
|
|
@ |
i6 |
|
|
|
|
|
|
|
|
|
|
|
i6 |
|
|
|
|
|
|
|
|
||
|
|
|
@ |
|
|
|
|
@ |
|
|
|
|||||
|
|
|
|
@R |
|
|
|
|
R@ |
|
|
|
|
|||
|
|
|
|
, |
|
|
|
|
, |
|
|
|
|
|||
Глава IV
Формализации понятия вычислимой функции
Основной целью данной главы является формализация понятия вычислимой частичной функции, действующей на натуральных числах. Напомним, что -местной
частичной функцией на мы называем любую функцию вида : → , где, . Существует несколько различных подходов, приводящих к тому или
иному определению частичной вычислимой функции. Мы рассмотрим два основных подхода и покажем, что они эквивалентны. Первая из формализаций, с которой мы познакомимся в следующем параграфе, связана с машинами Тьюринга [8,9,15].
§ 15. Определение машины Тьюринга
Машины Тьюринга — это один из подходов к формализации понятия вычислимой функции. Модель для машины Тьюринга имеет механическое описание, хотя окончательная их формализация является совершенно математической.
Перейдём к неформальному описанию машин Тьюринга.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Машина Тьюринга состоит из лен- |
|
|
|
|
|
Программа: |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
ты, разбитой на одинаковые ячейки. |
|||||||||||
|
|
|
|
|
|
Команда 1 |
|
|
|
|
|
||||||||||
|
|
|
|
|
. . . . . . |
|
|
|
|
|
|
|
В ячейках могут содержаться симво- |
||||||||
|
|
|
|
|
|
Команда |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
лы из внешнего алфавита . Содер- |
||||||||||
|
|
|
|
|
Состояние: |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
0 |
3 2 |
|
|
|
|
|
жимое ячеек может меняться. Лен- |
||||||
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
дов машины. Перед запуском маши- |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
та — это механизм входов и выхо- |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ны входные данные записываются в |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
|
конечном участке ленты, и в даль- |
|
|
|
|
|
|
A |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нейшем на каждом шаге вычислений |
||||
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|||
. . . |
2 |
0 |
0 |
|
1 |
|
3 |
1 |
|
7 |
5 |
0 |
. . . |
используется только конечное мно- |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
жество ячеек. Однако в процессе |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
работы лента может достраиваться |
новыми ячейками как слева, так и справа. Другими словами, лента является потенциально бесконечной в обе стороны.
Также машина Тьюринга обладает считывающей головкой, которая в процессе работы машины может обозревать только одну ячейку и распознавать её содержимое. В зависимости от исполняемой команды головка способна изменять содержимое обозреваемой ячейки и сдвигаться за один шаг на одну ячейку влево или вправо. Таким образом, машина Тьюринга — это устройство с последовательным доступом к памяти: чтобы получить доступ к содержащейся в некоторой ячейке информации,
§ 15. Определение машины Тьюринга |
83 |
|
|
машине приходится перебирать одну за другой все ячейки между текущей и требуемой.
Каждая машина Тьюринга имеет конечное число состояний 0, 1, . . . , , в кото-
рых она может находиться. В процессе работы машина может несколько раз возвращаться в одно и то же состояние. Работа всегда начинается с выделенного начального состояния. Кроме этого, есть выделенное конечное состояние. Если когда-нибудь машина попадает в конечное состояние, то она останавливается, иначе работает бесконечно.
Любая машина Тьюринга имеет свою уникальную программу. Программа — это конечный список команд, каждая из которых есть директива вида → , где, — состояния, , — символы внешнего алфавита, { , , }, причём для каждого неконечного состояния и любого символа в программе имеется ровно одна команда, начинающаяся с символов → . . . Если же — конечное состояние,
то команда вида → . . . отсутствует в программе.
Опишем один шаг работы машины Тьюринга. Пусть машина находится в некотором состоянии , а головка в текущий момент обозревает ячейку с символом . Если — конечное состояние, то машина останавливается. В противном случае в программе находится единственная команда вида → , которая затем исполняется следующим образом: в обозреваемую ячейку записывается символ , затем головка сдвигается по ленте на одну ячейку вправо (если = ) или влево (если
= ) или вообще не двигается (если — пустое слово), и затем машина переходит
в состояние .
Если при исполнении некоторой команды головке необходимо сдвинуться за левый край ленты, то в этот момент происходит автоматическое достраивание новой
ячейки слева, в неё записывается выделенный символ (как правило, это символ 0)
и головка передвигается на достроенную ячейку. Аналогичным образом происходит достраивание ячеек справа.
Теперь мы введём строгие, формальные определения.
Определение. Машиной Тьюринга над алфавитом называется упорядоченная пятёрка = , , , 1, 0 , состоящая из следующих объектов:
(а)= { 0, 1, . . . , } — конечный внешний алфавит (мы будем всегда предполагать, что > 1 и 0 = 0, 1 = 1);
(б) = { 0, 1, . . . , } — |
конечный алфавит внутренних состояний, > 1; |
|||
(в) |
= { ( , ) | 1 6 |
6 , 0 6 6 |
} — программа, состоящая из команд |
|
|
( , ), каждая из которых есть слово вида: → , или → , или |
|||
|
→ , где 0 6 6 , 0 6 6 ; |
|
||
(г) |
1 |
— начальное состояние ; |
|
|
(д) |
0 |
— конечное состояние. |
|
|
Определение. Машинным словом (конфигурацией) называется любое слово вида
, где , , и — слова в алфавите (возможно, пустые).
Машинное слово — это формальное представление текущего положения всех деталей машины: — текущее состояние, — содержимое ячейки, обозревае- мой головкой в данный момент, слово состоит из всех символов, содержащихся в
84 |
Глава IV. Формализации понятия вычислимой функции |
|
|
ячейках слева от обозреваемой, а слово — из всех символов, записанных в ячейках
справа от обозреваемой. Исходя из такого интуитивного смысла, несложно определить формально, как преобразуются машинные слова за один шаг работы машины.
A
A
|
3 |
2 |
0 |
0 |
1 |
|
|
4 |
0 |
|
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Определение. Пусть = — машинное слово. Говорят, что машинное слово
′ получается из за один шаг работы машины Тьюринга , если выполняется одно из условий:
(1)= 0, ′ = .
(2)> 0 и выполняется один из случаев:
(а) |
( , ) имеет вид |
|
|
|
→ |
|
|
, и ′ |
= |
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
(б) |
( , ) имеет вид |
|
|
|
→ |
|
|
, = |
′, |
и ′ |
= |
|
|
|
′; |
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
(в) ( , ) имеет вид |
|
|
→ |
|
|
, |
= , |
и ′ |
= |
|
|
0 |
(достраивается |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
новая ячейка справа); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
(г) |
( , ) имеет вид |
|
|
|
→ |
|
|
, = ′ |
, и ′ |
= ′ |
|
|
|
|
|
; |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
(д) |
( , ) имеет вид |
|
|
→ |
|
|
, = , |
и ′ |
= |
|
|
|
(достраивается |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
новая ячейка слева). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( |
) |
|||||
для всех . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= , |
|
= |
||||||||||||||
Определение. Пусть |
|
— машинное слово. Положим |
|
(0) |
|
|
|
|
|
|
|
|
|
( +1) |
|
( ) |
′ |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
Говорят, что машина перерабатывает слово в слово 1 без достраивания
ячеек слева, и пишут = 1, если существует такое, что ( ) = 1 и при
этом не используется пункт (д).
Говорят, что машина перерабатывает слово в слово 1 без достраивания
ячеек слева и справа, и пишут |= 1, если существует такое, что ( ) = 1
и при этом не используются пункты (в) и (д).
Определение. Частичная функция : dom( ) −→ называется вычислимой по Тьюрингу, если существует машина Тьюринга над алфавитом {0, 1} такая, что для любых 1, . . . , выполняются условия:
(а) если 1, . . . , dom( ), то 101 1 0 . . . 01 0 = 001 ( 1,..., )00 для некото-
рого > 0;
(б)если 1, . . . , / dom( ), то машина , начав свою работу с машинного слова
= 101 1 0 . . . 01 0, работает бесконечно, т.е. 0 не входит в ( )
ни для какого
.
При этом говорят, что машина вычисляет частичную функцию .
§ 16. Базовые машины Тьюринга |
85 |
|
|
Определение. Если — программа, то через ( ) будем обозначать множество команд, полученных из заменой всех вхождений на .
Определение. Пусть 1 = , 1, 1, 1, 0 , 2 = , 2, 2, 1, 0 — машины Тьюринга над алфавитом с множествами внутренних состояний
1 = { 0, 1, . . . , }, 2 = { 0, 1, . . . , }.
Композицией машин 1 и 2 называется машина 1 |
|
2 |
= |
, , , |
, 0 с мно- |
|
|
|
|
0 |
1 |
1,..., |
|
жеством состояний = { 0, 1, . . . , + } и программой = |
( 1) +1 |
( 2) +1,..., + . |
||||
Композиция 1 2 работает следующим образом. На входных данных сначала запускается машина 1, а затем на выходных данных 1 — машина 2. Выходные данные 2 считаются выходом для композиции 1 2. Конечное состояние машины1 отождествляется с начальным состоянием машины 2.
Определение. Пусть 1= , 1, 1, 1, 0 , 2= , 2, 2, 1, 0 , 3= , 3, 3, 1, 0
— машины Тьюринга над алфавитом с множествами внутренних состояний
1 = { 0, 1, . . . , }, 2 = { 0, 1, . . . , }, 3 = { 0, 1, . . . , }.
Разветвлением машины 1 на ( 2, 3) по ( , ), где , 1, называется машина
1[ → 2| → 3] = , , , 1, 0 , где = { 0, 1, . . . , + + −2}, а программа
получается следующим образом: из 1 |
исключаются все команды вида → . . . и |
|||
вида |
|
→ |
. . .; полученное множество |
обозначим через ′. Тогда |
|
|
|
1 |
|
|
|
|
1, 2,..., |
1, 2,..., |
|
|
|
= 1′ ( 2) , +1,..., + −1 ( 3) , + ,..., + + −2 . |
|
Разветвление работает следующим образом. На входных данных запускается машина 1. Если 1 попадает в состояние 0, то происходит остановка. Если 1 попадает в состояние , то на текущих данных запускается машина 2, при этом начальное состояние машины 2 заменяется на . Если 1 попадает в состояние , то на те- кущих данных запускается машина 3, при этом начальное состояние машины 3 заменяется на . Конечные состояния машин 1, 2 и 3 отождествляются.
Замечание. Существует несколько модернизаций и обобщений машин Тьюринга. Наиболее известной и естественной модернизацией является многоленточная маши-
на Тьюринга, т.е. машина, которая имеет ( > 1) лент и такое же число считываю-
щих головок. Однако вычислительные возможности таких машин не отличаются от возможностей обычных машин Тьюринга.
Другое обобщение — недетерминированные машины Тьюринга, т. е. машины, в программе которых для некоторых состояний и некоторых внешних символовмогут присутствовать несколько различных команд, начинающихся с символов
→ . . . Машины такого типа используюся в качестве традиционной модели вычислений в теории сложности алгоритмов [5,6,15].
§ 16. Базовые машины Тьюринга
Для доказательства основных результатов данной главы нам потребуются следующий набор так называемых базовых машин Тьюринга. Внешний алфавит всех машин
в данном параграфе состоит из двух символов: 0 и 1.
86 |
Глава IV. Формализации понятия вычислимой функции |
|
|
никогда не обоз-
ревает символ , то команду вида → . . . можно не писать в программе. Ниже мы будем использовать данное соглашение для упрощения записи программ.
Перенос нуля А: 1001 0|= 001 00, где > 0.
А
Машина А имеет следующую программу:
10 → 20 |
41 → 50 |
20 → 31 |
51 → 51 |
31 → 31 |
50 → 00 |
30 → 40 |
|
Машина А работает следующим образом. Сначала второй 0 заменяется на 1 (ко-
манды 10 → 20 и 20 → 31 ), затем машина сдвигается на 0, стоящий после массива 1 (команда 31 → 31 ), и заменяет последний символ 1 из этого массива на 0 (команды 30 → 40 и 41 → 50 ), после чего машина возвращается влево на
самое начало (команды 51 → 51 и 50 → 00). Заметим, что новые ячейки справа и слева не достраиваются.
Обнуление О: 101 0|= 000 0, где > 0.
О
Машина О имеет следующую программу:
10 → 20 |
31 → 30 |
21 → 21 |
30 → 00 |
20 → 30 |
|
Правый сдвиг Б+: 101 0|= 01 00, где > 0.
Б+
Программа для машины Б+ состоит из трёх команд:
10 → 2021 → 2120 → 00
Левый сдвиг Б−: 01 10|= 001 0, где > 0.
Б−
Программа для машины Б− состоит из трёх команд:
10 → 2021 → 2120 → 00
Транспозиция В: 01 101 0|= 01 001 0, где , > 0.
В
Машина В работает следующим образом. Сначала преобразуем слово 01 101 0 в слово 01 51 00, равное слову 01 − 51 01 0 при = 0. Затем для произвольного слово 01 − 51 01 0 преобразуем в слово 01 −( +1) 51 01 +10, если − > 0, и в слово
01 001 0, если − = 0.
Программа для В имеет следующий вид:
§ 16. Базовые машины Тьюринга |
87 |
|
|
10 → 2021 → 21
20 → 30 Преобразуем входное машинное31 → 40 слово следующим образом:
30 → 50 01 101 0|= 01 51 00.
41 → 4140 → 51
|
|
|
|
|
|
В состоянии 5, в котором начинается цикл, |
|||||||
|
51 → 61 |
сдвигаемся на одну ячейку влево и проверяем,, |
|||||||||||
|
50 → 60 |
есть ли ещё единицы в массиве 1 − |
|||||||||||
|
|
|
|
|
|
т.е. верно ли, что − = 0. |
|
|
|||||
|
60 → 70 |
Если |
|
|
, то выходим из цикла: |
||||||||
|
71 → 71 |
− |
= 0 |
|
|
|
|
||||||
|
70 → 00 |
601 01 0|= 01 001 0. |
|
|
|||||||||
|
61 → 80 |
Если − > 1 и > 1, то преобразуем |
|||||||||||
|
81 → 81 |
||||||||||||
|
|
0 |
→ |
|
1 |
01 −( +1) |
|
11 01 0= |
|
01 −( +1) |
1 01 +10. |
||
8 |
|
9 |
|
6 |
|
| |
|
5 |
|
||||
|
91 → 100 |
Если − > 1 и = 0, то преобразуем |
|||||||||||
|
|
0 |
→ |
|
0 |
01 −( +1) |
|
101 0= |
01 −( +1) |
01 +10. |
|||
9 |
|
5 |
|
6 |
|
| |
|
5 |
|
|
|||
|
101 → 101 |
После этого переходим к следующей |
|||||||||||
|
100 → 51 |
итерации в цикле. |
|
|
|
|
|||||||
Удвоение Г: 101 0 = |
001 01 0, |
где > 0. |
|
|
|
|
|||||||
|
|
|
|
|
Г |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Машина Г работает следующим образом. Сначала преобразуем слово 101 0 в
слово 0 21 0, которое совпадает со словом |
01 21 − 01 |
при = 0. Затем для произ- |
||||||||||||||||||||||
вольного преобразуем слово |
01 |
1 − 01 в слово |
01 +1 |
1 −( +1) |
01 +1, если |
− |
> 0, |
|||||||||||||||||
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
||
и в слово 001 |
|
01 0, если − = 0. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Программа для Г имеет следующий вид: |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
1 |
0 |
→ 2 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
2 |
1 |
→ 3 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
3 |
1 |
→ 3 |
1 |
|
|
|
|
> 0, то 01 |
1 − 01 = |
|
|
|
|
|
|
||||||||
|
|
0 |
→ |
|
0 |
Если |
− |
|
|
|
|
|
|
|||||||||||
3 |
|
|
4 |
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
1 |
→ |
|
1 |
= |
01 0 |
|
1 −( +1) |
01 = |
|
01 01 −( +1)01 |
0 = |
|
|
|
||||||||
4 |
|
|
4 |
|
|
01 |
3 |
|
|
|
01 +1 |
|
4 |
, |
|
|
||||||||
|
|
0 |
→ |
|
1 |
= |
01 −( +1) |
01 +1 = |
|
1 −( +1)01 +1 |
|
|
||||||||||||
4 |
|
|
5 |
|
|
|
6 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|||
|
5 |
1 |
→ 5 |
1 и переходим к следующей итерации. |
|
|
|
|
|
|||||||||||||||
|
5 |
0 |
→ 6 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
6 |
1 |
→ 6 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
6 |
0 |
→ 2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
20 → 70
71 → 71
70 → 80 Если − = 0, то 01 201 =81 → 81 = 01 01 70 = 001 01 0.
80 → 9091 → 9190 → 00
Циклический сдвиг Цn: 101 1 01 2 0 . . . 01 0|= 001 2 0 . . . 01 01 1 0, где > 1 —
Ц
фиксированное натуральное число.
88 |
Глава IV. Формализации понятия вычислимой функции |
|
|
+,
Машина Ц работает по следующей схеме с использованием базовых машин Б Б− и В:
101 1 01 2 0 . . . 01 0|= 01 2 1 01 1 01 3 0 . . . 01 0|= |= 01 2 01 3 2 01 1 01 4 0 . . . 01 0|= . . . |= 01 2 . . . 01 −1 01 1 0|=
|= 001 2 0 . . . 01 01 1 0.
Таким образом, Ц = (Б+ В) . . . (Б+ В) Б− . . . Б− = (Б+ В) −1 (Б−) −1.
−1 −1
Копирование Кn: 101 1 0 . . . 01 0 = 001 1 0 . . . 01 01 1 0 . . . 01 0, где > 1 —
К
фиксированное натуральное число. Построим машину К индукцией по > 1.
10. При = 1 машина К1 совпадает с машиной Г.
20. Пусть > 1 и машина К −1 уже определена. Тогда машина К работает по следующей схеме:
101 1 0 . . . 01 0 = 01 1 0 . . . 01 −1 1 01 0 = 01 1 0 . . . 01 −1 2 01 01 0 = = 3 01 1 0 . . . 01 −1 01 01 0 = 4 01 01 01 1 0 . . . 01 −1 0 =
= 01 01 5 01 1 0 . . . 01 −1 0 = 01 01 6 01 1 0 . . . 01 −1 01 1 0 . . . 01 −1 0 =
К −1
= 7 01 01 01 1 0 . . . 01 −1 01 1 0 . . . 01 −1 0 = = 8 01 01 1 0 . . . 01 −1 01 1 0 . . . 01 −1 01 0 = 001 1 0 . . . 01 01 1 0 . . . 01 0.
Таким образом, К = (Б+) −1 Г (Б−) −1 (Ц +1) −1 (Б+)2 К −1 (Б−)2 Ц2 Ц .
Упражнения
1. |
Построить машину Тьюринга такую, что 1 |
012 0= |
00(10) 0, где > 0. |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
01 012 0, где > 0. |
2. |
Построить машину Тьюринга такую, что 1 |
013 0= |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
001 0 1 0, где > 0. |
3. |
Построить машину Тьюринга такую, что 1 |
013 0= |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. |
Построить машину Тьюринга 1 |
такую, что для справедливо |
|||||||||||
|
|
|
|
01 |
10 | |
1 |
{01 4 |
0, |
если = 0. |
|
|||
|
|
|
|
|
= |
01 3 |
0, |
если > 0, |
|
||||
|
Используя машину 1, базовые машины, а также композицию и разветвление |
||||||||||||
|
машин, определить машину Тьюринга 2 такую, что для , , справедливо |
||||||||||||
|
|
1 |
01 01 01 0 | 2 { 0 |
01 0 . . . 0, |
если = 0. |
||||||||
|
|
|
|
|
|
= |
0 |
01 0 . . . 0, |
если > 0, |
||||
5.Построить машину Тьюринга, вычисляющую следующую частичную функцию:
(а)( , ) = + ;
(б) ( , ) = − (при < значение функции не определено);
(в) ( ) = /2 (при нечётном значение функции не определено);
(г) ( ) = [ /2]; |
иначе. |
|
|
{не определено, |
|
(д) ( , ) = |
+ − 2, |
если > 1 и > 1, |
§ 17. Частично рекурсивные функции |
89 |
|
|
§ 17. Частично рекурсивные функции
В этом параграфе мы рассмотрим другой подход к формализации понятия вычислимой функции. Его можно назвать алгебраическим, поскольку определяемый здесь класс функций будет порождаться из некоторых простейших функций с помощью определённых операций. Совокупность функций, возникающих в результате подобного алгебраического порождения, называется классом частично рекурсивных функций.
Врамках данного параграфа рассматриваются только частичные функции на, т. е. всевозможные функции вида : → , где множество является
областью определения функции, а число — её местностью. Любую 0-местную всюду определённую функцию = мы отождествляем с константой . Нигде не определённая функция единственна и имеет вид = ?, причем любое натуральное число является местностью нигде не определённой функции.
Если — -местная, а — -местная частичная функция, то для любых значений
1, . . . , , 1, . . . , мы пишем ( 1, . . . , ) = ( 1, . . . , ) тогда и только тогда,
когда либо эти значения одновременно не определены, либо они оба определены и совпадают.
Определение. Простейшими функциями называются нульместная функция 0, всюду определённая одноместная функция ( ) = + 1 и всюду определённые - местные функции ( 1, . . . , ) = для всех , таких, что 1 6 6 .
Определение. Говорят, что функция ( 1, . . . , ) получается с помощью оператора суперпозиции из функций ( 1, . . . , ), 1( 1, . . . , ), . . . , ( 1, . . . , ), если для любых 1, . . . , выполняется
( 1, . . . , ) = ( 1( 1, . . . , ), . . . , ( 1, . . . , )).
Замечание. С неформальной точки зрения оператор суперпозиции соответствует принципу последовательного запуска вычислительных устройств, когда результаты
вычислений одних устройств служат входными данными для других. Если полу-
чена с помощью суперпозиции из , 1, . . . , , то вычисление значения ( 1, . . . , ) происходит следующим образом. Сначала на входных данных = 1, . . . , вычисляются значения 1 = 1( ), . . . , = ( ). Если хотя бы одно из этих значений не определено, то значение ( ) тоже не определено. Если же все 1, . . . , определены, то затем они подаются на вход функции . Если выходное значение ( 1, . . . , ) не
определено, то ( ) считается неопределённым, иначе ( ) = ( 1, . . . , ) определено и является окончательным выходным значением.
Пример. Функция ( , , ) = + 1 получается с помощью оператора суперпозиции из простейших функций ( ) и 33( , , ), поскольку + 1 = ( 33( , , )).
Определение. Говорят, что функция ( 1, . . . , , ) получается с помощью оператора примитивной рекурсии из функций ( 1, . . . , ) и ( 1, . . . , , , ), если для любых 1, . . . , , выполняется схема примитивной рекурсии:
{
( 1, . . . , , 0) = ( 1, . . . , )
( 1, . . . , , + 1) = ( 1, . . . , , , ( 1, . . . , , )).
90 |
Глава IV. Формализации понятия вычислимой функции |
|
|
Замечание. Оператор примитивной рекурсии формализует циклическую структуру, вычисляющую функции, заданные рекуррентными соотношениями (или по ин-
дукции). Если получена с помощью примитивной рекурсии из и , то вычисление значения ( , ) происходит следующим образом. Сначала на входных данных вычисляется значение ( ), которое совпадает с ( , 0). Если это значение не определено, то ( , ) тоже не определено, иначе, подав , 0 и ( , 0) на вход функции , мы вычисляем ( , 0, ( , 0)), которое совпадает с ( , 1). Если последнее значение не определено, то ( , ) не определено, иначе мы подаем , 1 и ( , 1) на вход функции и т.д. Данные вычисления продолжаются до тех пор, пока мы не достигнем значения ( , ). Если при этом на промежуточных шагах хотя бы одно вычисляемое значение функции не определено, то ( , ) считается неопределённым.
Пример. Запишем схему примитивной рекурсии для функции ( , ) = + :
{
( , 0) = ,
( , + 1) = ( + ) + 1 = ( ( , )) = ( 33( , , ( , ))).
Таким образом, функция ( , ) = + получается с помощью оператора примитивной рекурсии из функций ( ) = и ( , , ) = ( 33( , , )).
Пример. Определим одноместную функцию усечённой разности :
{
−1 = 0, если = 0;
− 1, если > 0.
Запишем для функции ( ) = −1 схему примитивной рекурсии:
{
(0) = 0,
( + 1) = ( + 1) − 1 = = 12( , ( )).
Таким образом, функция ( ) = −1 получается с помощью оператора примитивной рекурсии из константы 0 и функции ( , ) = 12( , ).
Определение. Говорят, что функция ( 1, . . . , ) получается с помощью опера-
тора минимизации |
из функции ( 1, . . . , , ) и обозначается |
( 1, . . . , ) = |
||||||
= [ ( 1, . . . , , ) = 0], если для любых 1, . . . , выполняется |
|
|
|
|
||||
|
|
|
определены и не равны 0, а значение |
− |
|
|||
|
, |
|
если ( 1, . . . , , 0), . . . , ( 1, . . . , , |
|
1) |
|||
( 1, . . . , ) = |
|
|
( 1, . . . , , ) |
определено и равно |
0, |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
не определено |
в противном случае. |
|
|
|
|
||
Замечание. Оператор минимизации последовательно перебирает числа из натурального ряда и проверяет, удовлетворяет ли текущее число фиксированному эффек-
тивному условию. Эффективное условие записывается в виде уравнения ( , ) = 0. Вычисление значения ( ) происходит следующим образом. Сначала на входных данных , 0 вычисляется значение ( , 0). Если это значение не определено, то ( ) тоже не определено. Иначе если ( , 0) = 0, то вычисления заканчиваются — число 0 будет подано на выход. Если же ( , 0) ̸= 0, то на входных данных , 1 вычисляется
