Опубликован: 26.09.2006 | Уровень: специалист | Доступ: платный
Лекция 11:

Машины Тьюринга

Алгебра тьюринговых программ

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

Элементарными вычисляющими программами будем называть программы вида


Обозначать их будем, соответственно, символами r, l, s, a где a \in A.

Программы, у которых множество выходов разбито на два непустых подмножества: подмножество да -выходов и подмножество нет -выходов, назовем бинарными распознающими программами.

Элементарными распознающими программами будем считать программы вида


Обозначать такую программу будем через \langle a\rangle.

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

  1. Если T_1, T_2\dts T_k — программы, то выражение [T_1, T_2\dts T_k] обозначает программу, которая получена следующим образом. Все выходы программы T_i соединены дугой с входом программы T_{i+1} (i = 1, 2\dts k -
1). Каждая такая дуга помечена буквами из A, которые не использованы на других дугах, выходящих из рассматриваемой выходной вершины (в дальнейшем при соединении выходов одной программы с входом другой будем пользоваться этим правилом). Входом в полученную программу является вход программы T_1, а выходами — выходы программы T_k. Таким образом, программа [T_1, T_2\dts T_k] предписывает последовательное выполнение программ T_1, T_2\dts T_k.
  2. Если P — бинарная распознающая программа, а T — произвольная, то выражение
    \eq*{
(\t{если}\ P)\ T
}
    означает программу, полученную следующим образом. Все да -выходы программы P соединяются с входом программы T. Входом в полученную программу является вход в программу P, а выходом — выходы программы T и нет -выходы программы P. Программы такого вида называются охраняемыми, и в таких случаях говорят, что программа T охраняется программой P.
  3. Если дан набор охраняемых программ вида (если P_i ) T_i (i = 1, 2\dts k), то выражение вида
    \eq*{
(\t{если}\ P_1)T_1 \vee (\t{если}\ P_2)T_2 \vee \ldots \vee (\t{если}\
P_k)T_k
}
    обозначает программу, полученную следующим образом. Да -выходы программы P_i соединяются с входом T_i (i =
1,2 \dts k) ; нет -выходы программы P_i соединяются с входом T_{i+1} (i = 1, 2\dts k - 1). Входом в полученную программу является вход в программу P_1, а выходом — выходы программ T_1, T_2\ldots T_k и нет -выходы программы P_k.
  4. Если P — бинарная распознающая программа, а T — любая, то выражение
    \eq*{
(\t{пока}\ P)T
}
    обозначает программу, полученную следующим образом. Да -выходы программы P соединяются с входом программы T. Все выходы программы T соединены с входом в P. Входом в полученную программу является вход в P, а выходом — нет -выходы программы P.
  5. Если P — бинарная распознающая программа, а T — любая, то выражение
    \eq*{
T (\t{до}\ P)
}
    обозначает программу, полученную соединением нет -выходов программы P с входом в T, а выходов T — с входом в P. Входом в полученную программу является вход в T, а выходами — да -выходы программы P.

Сокращения. Программы вида

\eq*{
T_1 \vee T_2 \vee \ldots \vee T_k
}

будем сокращенно записывать в виде

\eq*{
\bigcup_{i=1}^{k} T_{i},
}

а программы вида

\eq*{
[T_1, T_2\ldots T_k]
}

в случае, когда T_1 = T_2 = \ldots = T_k = T — в виде T^k.

В контексте со словами "если", "пока", "до" угловые скобки в записи элементарного распознающего оператора \langle a\rangle будем опускать.

Антон Сиротинкин
Антон Сиротинкин

на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно...
 

Дмитрий Степаненко
Дмитрий Степаненко
Россия
Эдуард Санин
Эдуард Санин
Украина, Харьков, ХАИ