close

Вход

Забыли?

вход по аккаунту

?

1144.Автоматные счетчиковые машины Кузьмин Е В

код для вставкиСкачать
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Министерство образования и науки Российской Федерации
Ярославский государственный университет
им. П. Г. Демидова
Е. В. Кузьмин, В. А. Соколов
Автоматные счетчиковые
машины
Монография
Ярославль 2 0 1 2
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
УДК 519.7
ББК З97+В1
К89
Рецензенты:
доктор технических наук, профессор Д. О. Бытев;
кафедра теории и методики обучения информатике ЯГПУ им. К. Д. Ушинского
К89
Кузьмин, Е. В. Автоматные счетчиковые машины: монография /
Е. В. Кузьмин, В. А. Соколов; Яросл. гос. ун-т. им. П. Г. Демидова. —
Ярославль: ЯрГУ, 2012. — 160 с.
ISBN 978-5-8397-0893-8
Монография посвящена автоматным счетчиковым машинам и тем формальным
языкам, которые способны распознавать/задавать эти абстрактные математические машины. Приведенные здесь результаты представляют интерес как для
теории формальных моделей вычислений, так и для теории формальных языков, поскольку автоматные счетчиковые машины (и соответственно их языки)
занимают особое положение в иерархии формализмов в границах от конечных
автоматов до машин Тьюринга (счетчиковых машин Минского). Свойства автоматных счетчиковых машин изучаются с привлечением теории правильных
квазипорядков и теории вполне структурированных систем переходов, которые
оказываются полезными для решения задач анализа семантических свойств различных формальных моделей, являющихся более слабыми по вычислительной
мощности (выразительной способности), чем машины Тьюринга.
Предназначена для специалистов в области формальных языков и моделей
вычислений. Может быть использована студентами старших курсов, магистрантами и аспирантами, специализирующимися в области теоретической информатики
и прикладной математики.
Рис. 50. Библиогр.: 40 назв.
УДК 519.7
ББК З97+В1
ISBN 978-5-8397-0893-8
c Ярославский государственный университет им. П. Г. Демидова, 2012
c Е. В. Кузьмин, В. А. Соколов, 2012
ОГЛАВЛЕНИЕ
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Г л а в а 1. Счетчиковые машины . .
1.1. Машины Тьюринга . . . . . . . . . .
1.2. Алгоритмические проблемы . . . .
1.3. Счетчиковые машины Минского
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
7
13
19
Г л а в а 2. Двухсчетчиковые машины . . . . . . . . . . . . . . . . . . .
2.1. Неразрешимые проблемы и метод сведения . . . . . . . . . . . . .
2.2. Двухголовочные автоматы . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
52
Г л а в а 3. Однорегистровые машины
3.1. Однорегистровые машины . . . . . . .
3.2. Теоремы по проблеме «входа» . . . .
3.3. Теоремы по проблеме «выхода» . . .
3.4. О вычислимых функциях . . . . . . .
59
59
71
78
83
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Г л а в а 4. Структурированные системы переходов.
4.1. Квазипорядок . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Структурированные системы переходов . . . . . . . .
4.3. Автоматные системы переходов . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 89
. 89
. 93
. 103
Г л а в а 5. Автоматные счетчиковые машины .
5.1. Слабые счетчиковые машины . . . . . . . . . . .
5.2. Автоматные счетчиковые машины . . . . . . . .
5.3. Автоматные трехсчетчиковые машины . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
109
119
128
Г л а в а 6. Языки автоматных счетчиковых машин
6.1. Автоматная счетчиковая машина-распознаватель .
6.2. Проблемы пустоты и распознавания слов . . . . . . .
6.3. Свойства замкнутости . . . . . . . . . . . . . . . . . . . . .
6.4. Проблемы включения и равенства языков . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
135
135
137
141
149
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
.
.
.
.
Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Предисловие
Предисловие
Монография посвящена автоматным счетчиковым машинам и тем
формальным языкам, которые способны распознавать/задавать эти абстрактные математические машины. Приведенные здесь результаты
представляют интерес как для теории формальных моделей вычислений, так и для теории формальных языков, поскольку автоматные
счетчиковые машины (и соответственно их языки) занимают особое
положение в иерархии формализмов в границах от конечных автоматов
до машин Тьюринга (счетчиковых машин Минского).
Свойства автоматных счетчиковых машин изучаются с привлечением теории правильных квазипорядков и теории вполне структурированных систем переходов, которые оказываются полезными для
решения задач анализа семантических свойств различных формальных
моделей, являющихся более слабыми по вычислительной мощности
(выразительной способности), чем машины Тьюринга.
Основные новые результаты, приведенные в этой монографии, касаются главным образом языков автоматных счетчиковых машин и представляют собой следующее.
В монографии определен и исследован класс языков, допускаемых
автоматными счетчиковыми машинами. Доказано, что этот класс замкнут относительно операций объединения, пересечения, конкатенации, бесконечной итерации, гомоморфизма и обратного гомоморфизма,
т. е. является полным абстрактным семейством языков. Также установлено, что класс языков автоматных счетчиковых машин (ЯАСМ)
замкнут относительно полной подстановки, но незамкнут относительно
дополнения и операции обращения. Доказано, что для класса ЯАСМ
разрешимы проблемы пустоты и распознавания слова языка, заданного
автоматной счетчиковой машиной, но неразрешимы проблемы включения и равенства языков. Проведено сравнение с другими классами языков — регулярными, контекстно-свободными, контекстно-зависимыми
языками и языками сетей Петри. Установлено, что класс АСМ-языков
включает в себя регулярные языки, несравним по включению с классом
контекстно-свободных языков и классом языков сетей Петри, но полностью входит в класс контекстно-зависимых языков.
Кроме результатов, связанных с автоматными счетчиковыми машинами, в монографии приводятся предварительные сведения по теории
5
счетчиковых машин — абстрактных математических моделей вычислений. Затрагиваются интересные факты из теории вычислимости. Например, в первой главе дается определение машины Тьюринга как формализации интуитивного понятия алгоритма и приводится ее пример.
С точки зрения понятия «массовых алгоритмических проблем» обсуждаются разрешимые и неразрешимые проблемы для машин Тьюринга.
Приводятся доказательства теорем о неразрешимости проблем «остановки» и «зацикливания». Далее описывается другой вид абстрактных
математических машин — счетчиковые машины Минского. Показывается, что любую машину Тьюринга можно смоделировать машиной
Минского всего лишь с тремя счетчиками. Более того, любая трехсчетчиковая машина Минского моделируется машиной Минского с двумя
счетчиками при условии специальной кодировки входа и выхода, что
позволяет сделать вывод о равномощности двухсчетчиковых машин
Минского и машин Тьюринга. Однако возникает вопрос о возможности реализации входных и выходных кодировок также с помощью
двухсчетчиковой машины. Эти задачи известны как проблема «входа»
и проблема «выхода». Во второй главе на основе «базовых» неразрешимых проблем остановки и зацикливания, которые двухсчетчиковые
машины наследуют от машин Тьюринга, с помощью метода сведения
доказывается неразрешимость ряда классических проблем для двухсчетчиковых машин Минского. На примере класса двухголовочных
автоматов демонстрируется, каким образом счетчиковые машины могут
использоваться для доказательства алгоритмической неразрешимости
свойств различных формализмов и абстрактных математических машин. Третья глава посвящена (описанным ранее) проблемам «входа»
и «выхода» для двухсчетчиковых машин Минского, которые для удобства исследования этих проблем приводятся к виду однорегистровых
машин. Показывается, что решения проблемы «входа» не существует,
а проблема «выхода» затрагивает некоторые сложные вопросы теории
чисел.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
1.1. Машины Тьюринга
Глава 1
СЧЕТЧИКОВЫЕ МАШИНЫ
В середине 1930-х годов А. Тьюринг, A. Чёрч, С. Клини и Э. Пост
различным образом формализовали способы получения значений вычислимых функций, т. е. функций, для которых существует конструктивная процедура, или алгоритм, нахождения их значений. Позднее
было установлено, что все эти независимо введенные определения
вычислимости эквивалентны, т. е. задают один и тот же класс функций.
Идея Тьюринга состояла в том, чтобы определять функцию с помощью
абстрактной «математической машины», вычисляющей значения функции по значениям ее аргументов. Таким образом, конкретная машина
Тьюринга задает конкретную вычислимую функцию, и его гипотеза
(тезис) состояла в том, что каждая функция, для которой существует
алгоритм нахождения ее значений, представима некоторой машиной
Тьюринга, т. е. является вычислимой. Тезис Тьюринга не может быть
доказан, так как наряду с формальным понятием вычислимой функции он содержит эмпирическое понятие алгоритма. Однако интуиция,
отсутствие опровергающих примеров и равносильность разных формализаций вычислимости убеждают в справедливости этого тезиса.
Формализация интуитивного понятия алгоритма с помощью машин
Тьюринга позволяет математически строго доказывать алгоритмическую неразрешимость различных проблем, т. е. доказывать принципиальное отсутствие алгоритма их решения. Сам факт наличия алгоритма
решения некоторой задачи строго связывается с существованием машины Тьюринга, реализующей этот алгоритм. В определенном смысле понятия «алгоритм» и «машина Тьюринга» можно использовать
как эквивалентные. Если будет доказано, что не существует машины
Тьюринга, решающей некоторую заданную проблему, то это будет
означать (исходя из тезиса) неразрешимость этой проблемы. Невозможность построения машины Тьюринга доказывается либо методом
«от противного», что приводит к появлению «базовой» неразрешимой
проблемы, либо методом сведения (обычно «базовой») неразрешимой
проблемы к исследуемой. При исследовании свойств машин Тьюринга
и счетчиковых машин Минского нами будут применяться оба подхода.
7
В главе дается определение машины Тьюринга и приводится ее
пример. Разрешимые и неразрешимые проблемы обсуждаются с точки
зрения понятия «массовых алгоритмических проблем». Доказываются
теоремы о неразрешимости проблем «остановки» и «зацикливания»
для машин Тьюринга. Обсуждается конструктивная «минимальность»
(в выразительных средствах) машин Тьюринга. Затем описывается еще
один способ формализации алгоритма — счетчиковая машина Минского. Счетчиковые машины Минского имеют более «привычный вид»
и походят на компьютерную программу, написанную на языке высокого уровня, поскольку содержат переменные, называемые счетчиками,
и операторы условного и безусловного перехода, позволяющие строить
конструкции циклов. Машины Минского имеют такую же мощность,
что и машины Тьюринга. Более того, любую машину Тьюринга можно
смоделировать машиной Минского всего лишь с тремя счетчиками.
1.1. Машины Тьюринга
О п р е д е л е н и е. Машина Тьюринга T задает словарную функцию
над некоторым алфавитом V и представляет собой описание машины —
набор (V , Q, q0 , #, I) — и правило функционирования, общее для всех
машин, где
• V — конечный алфавит машины;
• Q — конечное непустое множество символов, называемых состояниями машины (Q ∩ V = ∅);
• q0 — выделенный элемент множества Q, называемый начальным
состоянием;
• # — специальный «пустой» символ, который не принадлежит
ни V , ни Q;
• I — программа машины.
Программа машины — это конечное множество слов вида
qa → q ′ a′ d,
называемых командами, где q, q ′ ∈ Q, a, a′ ∈ V ∪ {#}; → — вспомогательный символ-разделитель; d — элемент множества {l, r, p},
содержащего три специальных символа, которых нет ни в V , ни в Q.
Предполагается также, что в программе I никакие две команды не
могут иметь одинаковую пару первых двух символов.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8
Гл. 1. Счетчиковые машины
1.1. Машины Тьюринга
9
2) поиск применимой команды, а именно той машинной команды
#
a
qa → q ′ a′ d,
Головка
Лента
b
c
d
e
f
g
h
#
3) выполнение найденной команды, состоящее в переводе управления в новое состояние q ′ , записи в обозреваемую головкой
клетку символа a′ (вместо стираемого символа a) и последующем
перемещении головки вправо, если d = r, влево, если d = l, или
сохранении её в том же положении, если d = p.
Управление
Программа
в которой q — текущее состояние управления, a — считанный
символ;
Состояние
Рис. 1.1. Машина Тьюринга
Правило функционирования поясним неформально на распространенной «физической» модели машины Тьюринга. Машина состоит
из потенциально бесконечной (в обе стороны) ленты, управления
и считывающей–записывающей головки, перемещаемой вдоль ленты
(см. рис. 1.1). Лента разбита на клетки, которые могут содержать
символы из алфавита V или быть пустыми, т. е. содержать символ #.
Управление на каждом шаге работы машины находится в одном из состояний, расшифровывает программу, которая однозначно определяет
поведение машины и управляет головкой. Головка в каждый момент
расположена против некоторой клетки ленты и может считывать символы с ленты, записывать их на ленту и перемещаться в обе стороны
вдоль ленты. Машина функционирует следующим образом. В начальный момент на ленте записано некоторое слово из символов алфавита V , а управление находится в начальном состоянии q0 . Начальное
слово (равно как и слова, появляющиеся в процессе работы машины)
ограничено с двух сторон пустыми символами #. Головка обозревает
крайний слева символ заданного слова.
Работа машины состоит в повторении следующего цикла элементарных действий:
1) считывание символа, находящегося против головки;
Машина останавливается в том и только том случае, если на очередном шаге ни одна из команд не применима. Результат работы
остановившейся машины — заключительное слово на ленте. Машина
Тьюринга, перерабатывая начальные слова на ленте в заключительные,
задает словарную функцию, для которой начальные слова — значения
аргумента, заключительные — значения функции. (Для представления
n-местной функции начальное слово на ленте имеет вид
#α1 #α2 # . . . #αn #,
где подслова α1 , α2 , . . . , αn не содержат символа #. При интерпретации заключительного слова на ленте как значения функции символ #
игнорируется.) Если машина не останавливается, начав работу с некоторым словом на ленте, то функция, задаваемая машиной, считается
неопределенной для этого слова. Таким образом, машина Тьюринга T
задает частичную функцию FT и способ вычисления ее значений.
Напомним, что если областью определения некоторой функции
F : X → Y служит всё множество X, то F — всюду определенная
функция, в противном случае — частичная.
Хотя машины Тьюринга оперируют со словами, они могут задавать
и числовые функции, поскольку каждое слово может быть взаимно однозначно закодировано целым неотрицательным числом (причем
многими способами).
Например, аналитический вид функции K : V ∗ → N, кодирующей
слова в произвольном конечном алфавите V = {a1 , a2 , . . . , an } целыми
неотрицательными числами, может иметь следующий вид:
K(ε) = 0, где ε — пустая строка,
∀ai ∈ V , ∀α ∈ V ∗ : K(αai ) = K(α) ∗ n + i.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
10
Гл. 1. Счетчиковые машины
По определению, функция F является (частично) вычислимой, если существует машина Тьюринга T такая, что FT = F . Говорят также,
что для функции F существует (частичный) алгоритм вычисления
ее значений, задаваемый машиной T . Существуют функции, которые
не являются вычислимыми.
Для машины Тьюринга, как и для всех других формальных способов задания алгоритмов, характерны следующие свойства:
1) конструктивность — машина Тьюринга представляет собой конечный объект, построенный по определенным правилам из базовых
объектов;
2) конечность — процесс нахождения функций для тех значений
аргументов, для которых она определена, состоит из конечного
числа шагов;
3) однозначность — результат работы машины единственным образом определяется начальным словом;
4) массовость — машина работает с любым начальным словом
на ленте, составленным из символов ее алфавита.
Следующее преобразование с помощью кодирования символов и
слов из V ∗ словами в алфавите {0, 1} позволит нам в дальнейшем
работать лишь с двоичными машинами Тьюринга, т. е. машинами,
которые не имеют специальных служебных символов, а их алфавит
состоит только из 0 и 1:
код(#) = 0;
код(ai ) = 11
. . . 1} 0 (i = 1, . . . , n);
| {z
i
код(αai ) = код(α)код(ai ).
Так как символ # кодируется нулем, то после преобразования
любому непустому слову на ленте исходной машины Тьюринга T будет
соответствовать двоичное слово на ленте новой машины Тьюринга Tb ,
начинающееся нулем и оканчивающееся двумя нулями.
В качестве примера рассмотрим следующую машину Тьюринга.
Пусть алфавит V машины Тьюринга T состоит из двух символов —
открывающей и закрывающей скобок: V = { (, ) }. Выделим во множестве V ∗ подмножество M «правильных» слов, которые определим
следующим образом:
1.1. Машины Тьюринга
11
1) пустое слово ε ∈ M ;
2) если слово α принадлежит множеству M , то слова ( )α, α( ) и (α)
также принадлежат M .
Построим машину Тьюринга T , на ленту которой подаются слова
из V ∗ , и машина узнает, принадлежит данное слово множеству M
или нет. Для этого машина должна остановиться с односимвольным словом «1» на ленте, если начальное слово принадлежит M , и
с результатом «0» — в противном случае. Другими словами, машина
Тьюринга T должна задавать такой предикат P : V ∗ → {0, 1}, что
1, если α ∈ M ,
P (α) =
0, если α ∈
/ M.
Добавим в алфавит машины T символы «0», «1» и «∗». Искомая
машина Тьюринга T имеет следующий вид (для простоты отождествим
машину T с ее описанием):
T = ({ (, ), 0, 1, ∗}, {q0 , q1 , q2 , q3 , q4 }, q0 , #, I),
где программа I содержит следующие команды (перенумерованные для
последующих ссылок):
1.
3.
5.
7.
9.
11.
13.
15.
q0 ( → q0 ( r.
q0 ∗ → q0 ∗ r.
q1 ( → q0 ∗ r.
q1 # → q4 0 r.
q2 ∗ → q2 # l.
q3 ( → q3 # l.
q3 # → q3 0 p.
q4 ) → q4 # r.
2.
4.
6.
8.
10.
12.
14.
16.
q0 ) → q1 ∗ l.
q0 # → q2 # l.
q1 ∗ → q1 ∗ l.
q2 ( → q3 # l.
q2 # → q2 1 p.
q3 ∗ → q3 # l.
q4 ( → q4 # r.
q4 ∗ → q4 # r.
Когда машина находится в состоянии q0 , головка движется направо
в поиске первой слева закрывающей скобки. Найдя эту скобку, она
замещает ее звездочкой и возвращается назад в новом состоянии q1 ,
в котором ищет парную открывающую скобку. Встретив ее, вновь
возвращается назад в состояние q0 и движется направо и т. д. Если
головка достигнет левого символа #, она записывает символ «0»
(не нашлось парной открывающей скобки) и переходит в состояние q4 ,
находясь в котором движется направо, стирая все символы. Если же
головка достигнет правого символа #, она переходит в состояние q2
и возвращается к началу слова, стирая по пути символы. Если она
вернется к началу слова, не встретив по пути открывающей скобки
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
12
Гл. 1. Счетчиковые машины
(заданное слово правильное), она запишет «1», и машина остановится.
Если же встретится хотя бы одна открывающая скобка (слово неправильное), машина перейдет в состояние q3 , которое заставит головку
записать «0» в начале слова и остановиться.
Функционирование машины Тьюринга можно описать с помощью
протокола работы над заданным начальным словом. Пусть
#α1 α2 . . . αk−1 αk . . . αn #
— слово, возникшее на ленте в процессе работы машины после некоторого шага, в результате которого машина находится в состоянии q
(αi ∈ V ), а головка обозревает клетку, содержащую k-й слева символ
слова. Тогда слово
#α1 α2 . . . αk−1 q αk . . . αn #
называется конфигурацией машины Тьюринга. Последовательность
конфигураций, выписанных в том порядке, в котором они следуют
в процессе работы машины, и называется протоколом.
Так, протокол работы рассматриваемой машины Тьюринга над словом «(( )( )» имеет следующий вид (между конфигурациями выписаны
номера выполняемых команд):
#q0 (( )( )# — применима команда 1, головка перемещается направо,
игнорируя открывающие скобки;
#(q0 ( )( )# — применима команда 1;
#((q0 )( )# — применима команда 2, обнаружена закрывающая скобка, которая «зачеркивается» символом «*»;
#(q1 (∗( )# — применима команда 5, головка возвращается обратно
и находит парную открывающую скобку, которую зачеркивает;
#(∗q0 ∗( )# — применима команда 3, головка вновь движется вправо
в поиске закрывающей скобки;
#(∗∗q0 ( )# — применима команда 1;
#(∗∗(q0 )# — применима команда 2, поскольку закрывающая скобка
обнаружена;
#(∗∗q1 (∗# — применима команда 5, обнаружена парная открывающая скобка;
#(∗∗∗q0 ∗# — применима команда 3, снова движение направо;
#(∗∗∗∗q0 # — применима команда 4, головка дошла до конца слова;
#(∗∗∗q2 ∗# — применима команда 9;
1.2. Алгоритмические проблемы
13
#(∗∗q2 ∗## — применима команда 9, головка движется влево в поиске лишней открывающей скобки или начала слова, стирая на пути
звёздочки;
#(∗q2 ∗### — применима команда 9;
#(q2 ∗#### — применима команда 9;
#q2 (##### — применима команда 8, обнаружена лишняя открывающая скобка, которая стирается;
#q3 ###### — применима команда 13, обнаружено начало слова,
и записывается «0»;
#q3 0##### — машина останавливается, так как ни одна из команд ее программы не применима.
Результат работы построенной машины Тьюринга показывает, что
слово «(( )( )» не является правильным.
1.2. Алгоритмические проблемы
Изучая свойства алгоритмов, точнее, их формализаций — абстрактных математических машин, обычно имеют дело с так называемыми
массовыми алгоритмическими проблемами. Интерес представляют алгоритмы, которые могли бы по любой предъявленной машине Тьюринга
установить, завершит ли она работу или же зациклится на заданном входном слове, будет ли она всегда останавливаться (независимо
от входного слова), дают ли две машины Тьюринга, исходная и оптимизированная, один и тот же результат и т. д. Иными словами, нас
интересуют алгоритмы, позволяющие анализировать другие алгоритмы, представленные в некотором формальном виде, например в виде
машины Тьюринга, счетчиковой машины или программы, написанной
на языке высокого уровня.
Массовые алгоритмические проблемы формулируются следующим
образом. Необходимо указать алгоритм, который бы определял, обладает ли предъявленный объект из некоторого класса объектов интересующим нас свойством; другими словами, принадлежит ли он множеству M всех объектов, обладающих этим свойством. Если существует
такой частичный алгоритм, то говорят, что множество перечислимо,
а поставленная массовая алгоритмическая проблема частично разрешима. Если этот алгоритм к тому же всюду определен, то множество M
разрешимо и поставленная проблема также разрешима. В этой главе
мы убедимся в существовании неразрешимых проблем и даже проблем,
которые не являются частично разрешимыми, что свидетельствует
о существовании невычислимых функций. Теоремы этой главы будут
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
14
Гл. 1. Счетчиковые машины
использованы в последующих главах для доказательства неразрешимости ряда проблем счетчиковых машин. Обсуждаемые понятия введем
формально для множеств слов.
О п р е д е л е н и е. Пусть V — алфавит, M ⊆ V ∗ — некоторое множество
слов в этом алфавите. Характеристической функцией множества M
называется предикат FM : V ∗ → {0, 1}, всюду определенный на V ∗ :
1, если α ∈ M ,
FM (α) =
0, если α ∈
/ M.
Частичная характеристическая функция множества M — функция
HM : V ∗ → {1}, определенная только для слов из M и имеющая вид
HM (α) = 1 для всех α ∈ M.
Множество M называется разрешимым, если его характеристическая
функция вычислима. Множество M перечислимо, если его частичная
характеристическая функция вычислима. Разрешимость множества M
означает существование всегда останавливающейся машины Тьюринга TFM , которая позволяет для любого слова в алфавите V через конечное число шагов установить принадлежность (или непринадлежность)
этого слова множеству M . Перечислимость множества M означает,
что существует машина Тьюринга THM , которая останавливается в том
и только том случае, если предъявленное слово принадлежит множеству M . Машина THM не позволяет точно установить, принадлежит
ли заданное слово множеству M или нет, так как отсутствие ответа
к некоторому времени не несет никакой информации о том, появится он
позже или нет. Однако если машина THM остановилась, то мы знаем,
что предъявленное слово принадлежит M .
Связь между разрешимыми и перечислимыми множествами и, как
следствие, между разрешимыми и частично разрешимыми проблемами
устанавливает теорема Э. Поста [22].
∗
Т е о р е м а 1.1 (Пост). Множество M ⊆ V является разрешимым
тогда и только тогда, когда M и его дополнение M = V ∗ \ M
перечислимы.
Д о к а з а т е л ь с т в о. Из разрешимости M следует его перечислимость.
Действительно, машину Тьюринга TFM , вычисляющую характеристическую функцию множества M , легко преобразовать в машину THM ,
1.2. Алгоритмические проблемы
15
добавив к программе машины TFM команды, зацикливающие ее в том
случае, когда она останавливается с результатом «0». Новая машина
задает частичную характеристическую функцию множества M .
Пусть THM и THM — это машины Тьюринга, задающие частичные
характеристические функции множеств M и M соответственно. Тогда
алгоритм распознавания, устанавливающий, принадлежит ли слово α
множеству M , сводится к следующей процедуре. Выполняется по одной
команде каждой машины Тьюринга (с одним и тем же начальным
словом α на лентах). Если после выполнения команды машина THM
остановится, то результат работы алгоритма — символ «1». Если остановится THM , то результат — символ «0». Если ни одна из машин
не остановится, тогда выполняется следующая пара команд, и т. д.
Так как α — элемент или из M , или из M , то через конечное число
шагов либо THM , либо THM завершит работу. Таким образом, алгоритм
вычисляет значения характеристической функции множества M , т. е.
можно построить машину Тьюринга TFM , реализующую этот алгоритм,
а это означает, что множество M разрешимо.
Машина Тьюринга, начав работу над некоторым начальным словом
на ленте, или останавливается, или работает бесконечно. Было бы
полезно иметь алгоритм, который для любой машины Тьюринга T
над алфавитом V и для любого слова α в этом алфавите выяснял,
остановится ли машина, начав работу над словом α или нет.
Проблему остановки можно сформулировать также в терминах множеств. Пусть MS — множество всех пар слов в алфавите V , в каждой
паре первое слово — это словарное представление некоторой машины
Тьюринга, второе — такое слово, что эта машина останавливается, начав работу над ним. Тогда проблема остановки состоит в определении,
является ли множество MS разрешимым или неразрешимым. Для этого
необходимо установить, является ли вычислимой характеристическая
функция
FMS : V ∗2 → {0, 1}.
Следующая теорема, сформулированная A. Тьюрингом, утверждает,
что функция FMS не является вычислимой.
Т е о р е м а 1.2 (Тьюринг). Проблема остановки машины Тьюринга
неразрешима.
Д о к а з а т е л ь с т в о. Предположим, что существует алгоритм, представленный машиной Тьюринга A (см. рис. 1.2), который, получив
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
16
Гл. 1. Счетчиковые машины
Да (T останавливается на α)
T
A
A′
Нет (T зацикливается на α)
Рис. 1.2. Гипотетическая машина Тьюринга A, реализующая алгоритм решения
проблемы остановки
на вход произвольную машину Тьюринга T (точнее, ее словарное
представление) и некоторое слово α, всегда завершает свою работу,
причем с результатом «Да», если машина T останавливается на слове α, и результатом «Нет», если T зацикливается на α.
Если машина A может решить проблему остановки для всех пар
(машина Тьюринга T , слово α),
то она может, конечно, сделать это для очень частного вида таких пар
(машина Тьюринга T , машина Тьюринга T ),
где вместо произвольного слова α подается словарное представление
машины T . Следовательно, мы имеем алгоритм, определяющий, остановится ли машина Тьюринга на своем же собственном словарном
представлении или нет.
A′
T
T
Да (T останавливается на T)
Нет (T зацикливается на T)
Рис. 1.4. Машина Тьюринга A′′ , останавливающаяся только с ответом «Нет»
но поведение которой в остальном будет таким же, как и поведение
машины A.
Какой бы ни была внутренняя структура гипотетической машины
Тьюринга A′ , мы знаем, что должны существовать две ее финальные
конфигурации, соответствующие остановке, причем одна из них содержит ответ «Да», если машина T останавливается на словарном представлении машины T , а другая — ответ «Нет», если T зацикливается
на словарном представлении T . Проведем незначительные изменения
в структуре машины A′ следующим образом. Добавим в программу
машины A′ команды, зацикливающие A′ в том случае, когда она
завершает работу с ответом «Да». Для этого потребуется несколько
команд, которые будут образовывать «петлю» с началом в финальной
конфигурации, содержащей ответ «Да». Таким образом, получим новую
машину A′′ (см. рис. 1.4), завершающую свою работу тогда и только
тогда, когда машина T зацикливается на словарном представлении T .
Остается проделать ключевой шаг доказательства. Подадим на вход
машине A′′ ее же словарное представление (см. рис. 1.5), т. е. словарное
представление машины A′′ . Получим, что машина A′′ на входном
слове A′′ останавливается тогда и только тогда, когда поданная на
A
Нет (T зацикливается на T)
A′′
A′′
Нет (A′′ зацикливается на A′′)
Рис. 1.3. Машина Тьюринга A′ с одним входом
На основе машины A можно построить машину A′ (см. рис. 1.3),
требующую в качестве входа только описание машины Тьюринга T ,
17
A′′
T
α
T
1.2. Алгоритмические проблемы
Рис. 1.5. Машина Тьюринга A′′ с входным словом A′′
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
18
Гл. 1. Счетчиковые машины
вход та же самая машина A′′ зацикливается на своем словарном
представлении A′′ . Но этого не может быть. Пришли к противоречию.
Таким образом, машины A′′ , A′ и, следовательно, A не существуют. Эта теорема демонстрирует существование невычислимых функций.
Из тезиса Тьюринга следует, что для неразрешимых проблем нельзя
построить алгоритм, который решал бы их «механически», например
с помощью компьютера. Это означает, что неразрешимая проблема
представляет собой слишком общую задачу, включающую некоторые
особые случаи (как, например, работу машины Тьюринга над собственным словарным представлением). Попытки упростить неразрешимые
проблемы путем исключения особых случаев могут значительно обеднять их, сделать тривиальными с точки зрения практики. В частности,
теорема 1.2 не исключает возможности, что проблема остановки может
оказаться разрешимой для некоторого узкого класса машин Тьюринга.
Установив существование неразрешимых проблем и множеств, продемонстрируем существование неперечислимых множеств и проблем,
которые не являются частично разрешимыми. Для этого рассмотрим
проблему зацикливания, состоящую в определении, существует ли
алгоритм, хотя бы частичный, который выясняет заранее для произвольной машины Тьюринга и произвольного начального слова α, будет
ли машина работать бесконечно долго, т. е. надо установить, будет
разрешимым или перечислимым множество MC ⊂ V ∗2 всех пар слов
таких, что первое слово — словарное представление некоторой машины
Тьюринга, а второе — слово, на котором эта машина зацикливается.
Т е о р е м а 1.3 (О зацикливании). Проблема зацикливания машины
Тьюринга не является частично разрешимой.
Д о к а з а т е л ь с т в о. Из теоремы 1.1 и перечислимости множества MS
следует, что дополнение M S множества MS до множества всех пар
слов в алфавите V неперечислимо, так как в противном случае
окаS
залось бы разрешимым множество MS . Но M S = MC
M D , где
MD — множество всех пар слов, первые слова в которых являются
словарными представлениями машин Тьюринга, а M D — его дополнение. Так как множество MT всех словарных представлений машин
Тьюринга разрешимо (любая машина Тьюринга может быть представлена в словарном виде по определенным правилам), множество MD
и множество M D разрешимы.
1.3. Счетчиковые машины Минского
19
Предположим, что проблема зацикливания частично разрешима,
а множество MC — перечислимо. Тогда окажется перечислимым множество M S , так как объединение перечислимого множества и разрешимого множества есть перечислимое множество. Пришли к противоречию. Следовательно, MC не может быть перечислимым, а проблема
зацикливания не является частично разрешимой.
Итак, мы пришли к тому, что для множества всех пар слов вида
(машина Тьюринга T , слово на ленте α)
не существует полного алгоритма, определяющего, остановится ли
машина T на α или нет, более того, не существует даже частичного
алгоритма, который бы определял, зациклится ли T на α.
Отметим, что разрешимые множества могут включать в себя перечислимые множества, которые, в свою очередь, могут содержать
неперечислимые подмножества. Это означает, что разрешимые множества отличаются не меньшей количественной мощностью, а «меньшим
разнообразием» своих элементов.
1.3. Счетчиковые машины Минского
Счетчиковая машина Минского представляет собой конечный автомат, имеющий доступ к памяти в виде нескольких неограниченных
счетчиков, значениями которых могут быть лишь целые неотрицательные числа. Над каждым счетчиком допустимы лишь две операции:
безусловное увеличение на единицу и условное вычитание единицы
(т. е. в случае, когда счетчик равен нулю, происходит переход в альтернативное состояние).
Счетчиковые машины были введены в классической монографии
М. Минского [24], в которой они получили название «программные
машины». Кроме того, в той же монографии были описаны равномощные им регистровые машины, имеющие только лишь один регистр
(счетчик), но множество возможных операций над регистром было
расширено с помощью операции умножения на константу и операции
условного целочисленного деления на константу (переход в альтернативное состояние осуществляется, если значение счетчика не делится
нацело на константу команды деления).
Для произвольной машины Тьюринга может быть построена моделирующая ее работу трехсчетчиковая машина Минского. Более того, любая трехсчетчиковая машина Минского моделируется машиной
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
20
Гл. 1. Счетчиковые машины
Минского с двумя счетчиками при условии специальной кодировки
входа и выхода. Этот факт позволяет сделать вывод о равномощности
двухсчетчиковых машин Минского и машин Тьюринга. Отсюда следует, что трехсчетчиковые машины Минского наследуют от машин Тьюринга все неразрешимые проблемы, в частности «базовые» проблемы
остановки и зацикливания. Опираясь на эти «базовые» неразрешимые
проблемы, с использованием метода сведения (описанного во второй
главе) далее будет показана для машин Минского неразрешимость
ряда проблем, аналогичных проблемам машин Тьюринга, и некоторых
специфических проблем, связанных со структурой машин Минского.
Благодаря тому, что машины Минского имеют такую же вычислительную мощность, что и универсальные машины Тьюринга, а также
из-за своего очень простого вида, счетчиковые машины используются
для доказательства тьюринговой мощности различных языков программирования и формальных моделей программных систем.
Поскольку двухсчетчиковая машина моделирует работу произвольной машины Минского лишь при определенной кодировке входа и выхода, возникает вопрос о возможности реализации кодировок также
с помощью двухсчетчиковой машины. Эти задачи получили названия
проблемы «входа» и проблемы «выхода» соответственно. Изучению
этих проблем посвящена третья глава.
О п р е д е л е н и е. Счетчиковая машина Минского M задает некоторую числовую функцию F : Nm → Nm , где N — множество целых
неотрицательных чисел, и представляет собой описание машины —
набор (q0 , qn , Q, X, ∆) — и правило функционирования, общее для всех
машин, где
• Q = {q0 , . . . , qn } — конечное непустое множество состояний
машины M ;
• q0 ∈ Q — начальное состояние;
• qn ∈ Q — заключительное, или финальное, состояние;
• X = {x1 , . . . , xm } — конечное непустое множество счетчиков,
которые могут принимать значения из множества N;
• ∆ = {δ0 , . . . , δn−1 } — набор правил перехода из одного состояния
машины в другое; δi — правило перехода для состояния qi .
1.3. Счетчиковые машины Минского
21
Состояния qi , 0 6 i 6 n − 1, подразделяются на два типа. Состояния
первого типа имеют правила переходов вида:
δi : xj := xj + 1; goto qk ,
где 1 6 j 6 m, 0 6 k 6 n. Для состояний второго типа имеем:
δi : if xj > 0 then (xj := xj − 1; goto qk ) else goto ql ,
где 1 6 j 6 m, 0 6 k, l 6 n. Для заключительного состояния qn правило перехода не предусмотрено. Это означает, что при попадании
в состояние qn машина Минского M завершает свою работу.
Конфигурация машины Минского представляет собой набор
(qi , c1 , . . . , cm ), где qi — состояние машины, c1 , . . . , cm — натуральные
числа (включая ноль), являющиеся значениями соответствующих
счетчиков.
Исполнение машины Минского — это последовательность конфигураций s0 s1 s2 s3 . . . с начальной конфигурацией s0 , индуктивно определяемая в соответствии с правилами переходов. Необходимо отметить,
что счетчиковая машина имеет всего лишь одно (детерминированное)
исполнение из начальной конфигурации s0 , так как каждое состояние
имеет не более одного правила переходов.
Машина M , получив на вход некоторый набор значений счетчиков,
стартует из состояния q0 и либо останавливается в состоянии qn с выходным набором значений счетчиков, либо работает бесконечно долго
(зацикливается), реализуя тем самым частичную числовую функцию.
Поскольку, как будет показано далее, машина Минского уже всего
с двумя счетчиками может моделировать машину Тьюринга, проблема
(остановки) достижения финального состояния из некоторой начальной конфигурации (q0 , c1 , c2 ) для двухсчетчиковой машины Минского
не является разрешимой [24]. Однако существует простой частичный
алгоритм решения этой проблемы. Достаточно всего лишь запустить
счетчиковую машину из начальной конфигурации и, если финальное состояние достижимо, просто дождаться, когда она сгенерирует
конфигурацию с финальным состоянием. Двойственная же проблема, проблема зацикливания, не является даже частично разрешимой,
т. е. не существует даже частичного алгоритма, который устанавливает
для начальной конфигурации (q0 , c1 , c2 ), будет ли машина Минского
с двумя счетчиками работать бесконечно долго [26]. Более того, все
указанное выше остается справедливым и при фиксированной нулевой
начальной конфигурации (q0 , 0, 0).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
22
Гл. 1. Счетчиковые машины
Итак, n-счетчиковая машина Минского имеет n счетчиков, каждый
из которых может содержать неотрицательное целое число. Счетчиковую машину удобно представлять в виде программы, написанной
с помощью команд четырех типов, применяемых к счетчикам.
Число команд в программе этой машины может быть сокращено
следующим образом.
Старт
1. Увеличение значения определенного счетчика на единицу. Записывается A+, где A — это имя счетчика.
2. Условный переход по значению счетчика. Если счетчик содержит 0, то происходит переход к другой команде (вне нормальной
последовательности) без изменения его значения. В противном
случае значение счетчика уменьшается на единицу, и выполнение программы продолжается в нормальной последовательности.
Записывается A−, где A — имя счетчика, с использованием правосторонней стрелки, означающей переход по нулевому значению
счетчика.
Старт
4. Оператор остановки. Записывается «Стоп».
Счетчиковые машины иногда называют «регистровыми машинами»
или «программными машинами». Мы будем различать понятия «счетчик» и «регистр» (хотя они обычно используются как синонимы).
Термин «счетчик» будет употребляться в контексте операций условного
уменьшения на единицу или безусловного увеличения на единицу, в то
время как «регистр» будет применяться при более экзотических преобразованиях, таких как операция удвоения, умножения на константу
или условное деление.
П р и м е р 1.1. Рассмотрим трехсчетчиковую машину 3cM , вычисляющую функцию 3X + 2Y . Исходные значения переменных X и Y
находятся в счетчиках A и B соответственно. Третий счетчик C
имеет нулевое значение. После остановки машины результат будет
находиться в счетчике C. (На диаграммах нормальное исполнение
программы направленно вниз страницы.)
A−
C+
C+
C+
B−
C+
C+
A−
C+
C+
C+
B−
Стоп
П р и м е р 1.2. Построим четырехсчетчиковую машину, реализующую операцию умножения (содержимого) двух счетчиков A и B;
результат сохраняется в счетчике C. Начальные значения счетчиков C и D установлены в ноль.
3. Безусловный переход. Обозначается стрелкой.
Старт
23
1.3. Счетчиковые машины Минского
A−
B−
C+
D+
Стоп
D−
B+
П р и м е р 1.3. Реализуем с помощью трехсчетчиковой машины
функцию возведения числа в квадрат. Для этой цели воспользуемся
тем фактом, что N 2 = (2N − 1) + (2N − 3) + . . . + 3 + 1.
Старт
A−
C+
A−
B+
C+
Стоп
B−
A+
Далее для большей наглядности и удобства имена и значения
счетчиков будем обозначать прописными (заглавными) буквами.
Т е о р е м а 1.4. Трехсчетчиковые машины Минского могут моделировать машины Тьюринга.
Стоп
Д о к а з а т е л ь с т в о. Рассмотрим произвольную машину Тьюринга T
в двоичном виде, т. е. с алфавитом, состоящим из двух символов
«0» и «1», и без специальных служебных символов ленты. Построим
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
24
Гл. 1. Счетчиковые машины
1.3. Счетчиковые машины Минского
для машины Тьюринга T моделирующую ее работу трехсчетчиковую
машину 3cM с набором счетчиков A, B и C.
На бесконечной в обе стороны ленте машины Тьюринга T находится бесконечно много символов «0», но число единиц (символов «1»)
на ленте всегда будет конечным.
Разобьем ленту машины T на три части:
1) лента слева от считывающей/записывающей головки,
2) лента справа от головки
3) и ячейка ленты, находящаяся непосредственно напротив головки.
Левая часть ленты интерпретируется как бинарное число, соответствующее значению счетчика A. Счетчик B содержит число, представленное на правой части ленты в реверсной бинарной форме. Таким
образом, например, если лента имеет вид
. . . 000000001101 1 011010000000 . . . ,
то счетчик A будет содержать значение 13, а счетчик B будет хранить
число 22. Символ «1» под считывающей головкой соответствует тому
состоянию программы счетчиковой машины 3cM , в которое эта машина только что перешла.
Каждая команда машины Тьюринга T моделируется некоторой подпрограммой счетчиковой машины 3cM . Например, предположим, что
машина T на данном шаге записывает в текущую ячейку символ «1»
и перемещает считывающую головку на одну ячейку вправо:
. . . 000000011011 0 110100000000 . . . ,
Запись единицы и сдвиг вправо означает, что левая часть ленты
будет увеличена на одну ячейку с символом «1». Таким образом,
двоичное число, хранящееся в левой части ленты, умножается на 2
и увеличивается на 1. Чтобы смоделировать эту ситуацию, счетчиковой
машине 3cM необходимо удвоить значение счетчика A и затем прибавить к A единицу. Для реализации указанной последовательности
операций используется вспомогательный счетчик C:
...
A−
C+
C−
A+
A+
A+
...
25
После выполнения этой подпрограммы счетчик A будет содержать
значение 27.
При осуществлении сдвига вправо на одну ячейку двоичное число
в реверсной форме, записанное в правой части ленты, также изменяется. По сути, происходит деление на 2 без остатка. Однако от
того, каким именно будет остаток от деления, зависит дальнейший
выбор ветки исполнения программы счетчиковой машины 3cM , моделирующей машину Тьюринга T . Остаток от деления (0 или 1) после
сдвига будет находиться под считывающей головкой машины T . Таким
образом, при моделировании необходимо разделить (нацело) значение
счетчика B на 2, распознать остаток от деления и сделать соответствующий условный переход. При выполнении этой задачи счетчик C
также используется для вспомогательных целей:
...
B−
C+
C−
C−
B+
... ячейка = 0
... ячейка = 1
В результате в счетчик B будет записано число 11.
Таким образом, каждой паре (состояние, символ ленты) машины
Тьюринга T будет соответствовать около десятка команд (не считая
безусловных переходов) счетчиковой машины 3cM . Например, последовательное выполнение двух рассмотренных выше подпрограмм (в том
порядке, в котором они были представлены) соответствует команде
машины Тьюринга T вида q 1 → q ′ 1 r.
Поскольку алфавит рассмотренной машины Тьюринга T состоит
всего лишь из двух символов «0» и «1», то количество всех возможных
пар (состояние, символ ленты) для этой машины будет ограничено
сверху числом 2|Q|, где Q — это множество состояний машины T .
Следовательно, программа машины 3cM будет состоять не более, чем
из 2|Q| спаренных подпрограмм (т. е. подпрограмм, которые представляют собой последовательное соединение двух подпрограмм, реализующих адекватное изменение значений счетчиков A и B), построенных
исходя из изложенных выше соображений.
Для однозначности моделирования предполагаем, что считывающая
головка машины Тьюринга в начальном состоянии находится слева
от слова на ленте и всегда обозревает символ «0», т. е. начальное
состояние моделирующей машины Минского будет соответствовать
паре (q0 , 0).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
26
Гл. 1. Счетчиковые машины
При реализации машиной Тьюринга T функции от одного аргумента
обычно используют «унарную» нотацию. Значение аргумента функции
записывается на ленте в виде строки из символов «1», которой предшествует символ «0», обозреваемый считывающей головкой в начальном
состоянии. При моделировании такой машины Тьюринга счетчиковой
машиной Минского значение аргумента записывается в один из счетчиков. Вычисление функции F (N ) счетчиковой машиной M начинается
установкой значения одного счетчика в N и обнулением всех остальных
счетчиков. Если функция F определена в N , то счетчиковая машина M
обязательно завершит работу со значением F (N ) в конкретном (заранее определенном) счетчике. Если же F является неопределенной в N ,
машина M будет работать бесконечно долго (никогда не остановится).
Т е о р е м а 1.5. Трехсчетчиковой машиной может быть вычислена
(задана) любая вычислимая функция от одной переменной. Причем таким образом, что результат будет возвращен счетчиковой
машиной (если она остановится) в тот же счетчик, в котором
изначально содержался аргумент функции.
Д о к а з а т е л ь с т в о. Для каждой вычислимой функции можно построить вычисляющую ее машину Тьюринга. Построим счетчиковую
машину 3cM , моделирующую работу такой машины Тьюринга T .
Аргумент N функции F задается на ленте машины T как последовательность из N символов «1», которой предшествует «0», непосредственно справа от считывающей головки. Но при способе моделирования, описанном в доказательстве предыдущей теоремы, счетчиковая
машина 3cM интерпретирует запись на ленте справа от головки как
бинарное представление числа (в реверсной форме), т. е. последовательности из N единиц будет соответствовать число
2N − 1
в счетчике B. Данная же теорема требует, чтобы машина 3cM начинала работу со значением N в одном из счетчиков. Следовательно,
необходимо добавить входной преобразователь непосредственно перед
программой машины 3cM . Входной преобразователь должен превращать N в 2N − 1.
Аналогичная проблема возникает после остановки машины T , поскольку результат на ленте выглядит как последовательность из F (N )
символов «1» с первым символом «0», расположенная непосредственно
27
1.3. Счетчиковые машины Минского
справа от считывающей головки. Возникает необходимость в построении выходного преобразователя для 3cM , который бы менял содержимое счетчика
2F (N ) − 1
на число F (N ).
В итоге получаем следующую счетчиковую машину Минского.
Старт
C−
A+
B−
A+
3cM – модель
машины T,
вычисляющей F
A−
B+
C+
B−
A+
A−
A−
B+
Стоп
Эта счетчиковая машина начинает работу со значением N в счетчике
C при нулевых значениях счетчиков A и B. Если машина останавливается, результат F (N ) будет содержаться в счетчике C также при
нулевых значениях A и B.
Теперь покажем, что если разрешить представление входа и выхода
в специальном кодированном виде, то для реализации вычислимой
функции можно обойтись двухсчетчиковой машиной Минского.
Т е о р е м а 1.6 (Минский). Для любой счетчиковой машины может
быть построена моделирующая ее работу двухсчетчиковая машина
при соответствующей кодировке входа и выхода.
Д о к а з а т е л ь с т в о. Рассмотрим, например, произвольную четырехсчетчиковую машину 4cM со счетчиками W , X, Y и Z. Построим
для 4cM моделирующую ее работу двухсчетчиковую машину 2cM
с счетчиками A и B. Содержимое всех четырех счетчиков закодируем
одним числом
2W 3X 5Y 7Z ,
которое будет храниться в счетчике A. Счетчик B является вспомогательным и изначально содержит нуль. Каждая команда машины 4cM
моделируется подпрограммой машины 2cM .
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
28
Гл. 1. Счетчиковые машины
29
1.3. Счетчиковые машины Минского
Здесь мы используем тот элементарный факт из арифметики, что
каждое целое число может быть разложено на простые множители
единственным способом.
Важно то, что из одного числа 2W 3X 5Y 7Z можно найти значения
W , X, Y и Z просто путем определения, сколько раз число может быть
разделено на 2, на 3, на 5 и на 7 соответственно. Если, например,
Итак, при моделировании команды X− число, хранящееся в счетчике A, делится на 3 с занесением частного в счетчик B. Если деление
происходит нацело, содержимое счетчика B перемещается в счетчик A.
Если после деления получается остаток, исходное значение счетчика A
восстанавливается и осуществляется переход, соответствующий нулевой ветке команды X−.
A = 12600, то W = 3, X = 2, Y = 2 и Z = 1.
Для наших целей нам нужно лишь показать, как можно получить
результат операций над счетчиками
W + и W −, X + и X−, Y + и Y −, Z + и Z − .
Например, чтобы смоделировать команду X+ машины 4cM , т. е.
прибавление единицы к счетчику X, необходимо значение счетчика A
машины 2cM умножить на 3. Действительно, это означает, что мы
хотим заменить 2W 3X 5Y 7Z на
2W 3X+1 5Y 7Z = 2W · 3 · 3X · 5Y · 7Z = (2W 3X 5Y 7Z ) · 3.
Подобно этому увеличение на единицу содержимого W , Y или Z есть
соответственно удвоение, упятерение или усемирение содержимого
счетчика A.
Пример подпрограммы машины 2cM , моделирующей команду X+
машины 4cM , представлен ниже. Команды W +, Y + и Z+ моделируются по аналогии.
...
A−
B+
B+
B+
B−
A+
...
Условное вычитание единицы, например для счетчика X, оказывается несколько более сложным, так как мы должны определить,
не равняется ли значение счетчика X нулю; если значение X равно
нулю, то нам нужно оставить его неизменным и осуществить условный
переход. Если X не равен нулю, то нужно заменить 2W 3X 5Y 7Z на
...
A−
A−
A−
B+
(делится нацело)
A+
A+
A+
B−
B−
A+
нормальная ветка
нулевая ветка
С помощью левого цикла осуществляется деление путем последовательного вычитания. Если деление происходит нацело, т. е. без
остатка, то с помощью правого цикла производится занесение частного
от деления снова в счетчик A. Если деление происходит не нацело (т. е.
значение X равняется нулю), средний цикл восстанавливает остаток
(который в этот момент запоминается в виде состояния машины 2cM ,
т. е. в виде места в программе), а затем прибавляет к нему частное,
умноженное на делитель, и направляет результат обратно в A. Отметим, что после выполнения этой подпрограммы значение счетчика B
(как и до начала выполнения подпрограммы) снова становится равным
нулю.
Это все, что нам требовалось доказать, так как ясно, что то же
самое можно сделать и для трех, и для пяти и более счетчиков.
(В случае пяти счетчиков мы просто помещаем в A число
2W 3X 5Y 7Z 11V
2W 3X−1 5Y 7Z = (2W 3X 5Y 7Z )/3,
и используем описанные выше методы.)
Чтобы построить счетчиковую машину 2cM , эквивалентную исходной машине 4cM , надо заменить каждую из команд машины 4cM
эквивалентной подпрограммой, подобной тем, которые мы сейчас построили. Все указанное выше вместе с приведенными конструкциями
подпрограмм является доказательством этой теоремы.
т. е. разделить содержимое счетчика A на 3. Аналогично условное
уменьшение на единицу значений счетчиков W , Y и Z эквивалентно
делению значения A на 2, на 5 и на 7 соответственно.
С л е д с т в и е 1.1. Проблема остановки двухсчетчиковых машин
неразрешима.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
30
Гл. 1. Счетчиковые машины
С л е д с т в и е 1.2. Проблема зацикливания двухсчетчиковых машин
не является частично разрешимой.
Как уже отмечалось, для моделирования машины Тьюринга счетчиковой машиной Минского достаточно всего лишь трех счетчиков.
Пусть машина Минского 3cM вычисляет функцию F (N ). Смоделируем
машину 3cM двухсчетчиковой машиной 2cM . Тогда вход машины 2cM
будет состоять из
2N 30 50 ,
или просто 2N , в одном счетчике и 0 во втором счетчике, а выходом будет число 2F (N ) , находящееся в первом счетчике, при нулевом
значении второго счетчика. Особенностью такого рода моделирования
является то, что если машина 2cM начнет свою работу со входа
2N K
при (K, 30) = 1, где (K, 30) — наибольший общий делитель K и 30,
она остановится с результатом
F (N )
2
K.
С л е д с т в и е 1.3. Двухсчетчиковой машиной Минского может
быть реализована любая вычислимая функция F от одного
аргумента N при представлении (кодировании) входа как 2N
и выхода (если машина останавливается) как 2F (N ) .
Отсюда естественным образом возникают следующие две проблемы, касающиеся вычислительной способности двухсчетчиковых машин
Минского.
1. Проблема входа. Построить двухсчетчиковую машину 2cM , которая, начав работу со значением N в одном из счетчиков, будет
вычислять 2N , т. е. останавливается с результатом 2N .
2. Проблема выхода. Построить двухсчетчиковую машину 2cM ,
преобразующую значение 2N одного из счетчиков в число N .
Цель решения этих проблем состоит в построении счетчиковой
машины 2cM без ограничений кодирования, указанных в следствии.
Этого можно было бы достичь размещением двухсчетчиковой модели
машины Тьюринга между входным и выходным преобразователями
(конверторами). Однако, как будет показано далее, решения проблемы
1.3. Счетчиковые машины Минского
31
«входа» не существует. Построить необходимый входной преобразователь не представляется возможным. Проблема «выхода» затрагивает
некоторые сложные вопросы теории чисел. Исследованию проблем
«входа» и «выхода» посвящена третья глава.
Т е о р е м а 1.7. Для любой трехсчетчиковой машины Минского 3cM
может быть построена эквивалентная (имитирующая ее работу)
машина Минского с двумя счетчиками 2cM такая, что конфигурация со значениями счетчиков A = 2N · 3K · 5L и B = 0 машины
2cM будет существовать тогда и только тогда, когда существует
конфигурация с X = N , Y = K и Z = L машины 3cM .
Д о к а з а т е л ь с т в о. Чтобы свести машину Минского 3cM со счетчиками X, Y и Z к машине Минского 2cM с двумя счетчиками A и B,
воспользуемся приемом, который уже был применен ранее. Установим
начальными значениями счетчиков A и B числа
2X · 3Y · 5Z
и 0
соответственно. Как и прежде, важно то, что из одного числа
2X · 3Y · 5Z
можно найти числа X, Y и Z просто путем определения, сколько раз
исходное число может быть разделено на 2, на 3 и на 5 соответственно.
Для достижения поставленной задачи нужно лишь показать, как можно получить результат операций увеличения на единицу и условного
вычитания единицы до нуля для счетчиков X, Y и Z без нарушения
требований в формулировке теоремы.
Начнем с приращения. Например, пусть необходимо увеличить
значение счетчика Y на единицу, т. е. реализовать операцию Y +. Это
означает, что мы хотим заменить старое значение
2X · 3Y · 5Z
счетчика A на новое
2X · 3Y +1 · 5Z = 3 · (2X · 3Y · 5Z ).
Но это то же самое, что утроение значения счетчика A. Подобно этому
увеличение на 1 значения счетчика X или Z есть соответственно
удвоение или упятерение содержимого счетчика A. Ниже представлена подпрограмма, с помощью которой реализуется умножение на 3.
Подпрограммы умножения на 2 и на 5 строятся аналогичным образом.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
32
Гл. 1. Счетчиковые машины
B+
B+
B+
A−
A−
A+
...
A+
A+
A+
B−
B−
B−
B−
B+
1.3. Счетчиковые машины Минского
...
...
Левый цикл в каждой из подпрограмм осуществляет подсчет нового
содержимого счетчика A путем прибавления трех (или двух, или пяти)
единиц к значению счетчика B столько раз, сколько единиц в счетчике A, правый цикл осуществляет передачу содержимого счетчика B в A. Важным моментом в подпрограмме является то, что она
начинается с увеличения нулевого значения счетчика B на 1 и заканчивается уменьшением единичного значения B до 0. Таким образом,
все вспомогательные переходы (кроме последнего), переводящие конфигурацию
(2X · 3Y · 5Z , 0)
машины 2cM в конфигурацию
(2X · 3Y +1 · 5Z , 0),
проходят по промежуточным конфигурациям, которые имеют значение
счетчика B > 0.
Рассмотрим теперь условное вычитание единицы до нуля. При
уменьшении значения счетчика Y на единицу необходимо сначала
определить, не является ли Y нулем. Если значение Y равно нулю,
оставляем значение Y неизменным и осуществляем соответствующий
условный переход. Если Y не равен нулю, то нужно заменить старое
значение
2X · 3Y · 5Z
счетчика A на новое
B+
A−
A−
B+
A−
B+
A−
A+
(делится нацело)
A+
B−
B−
B− Y >0
B−
B+
A+
B−
A+
B−
A+
B− Y =0
B−
B+
33
нормальная ветка
нулевая ветка
Левый цикл переносит исходное значение счетчика A в счетчик B,
одновременно определяя, делится ли значение A нацело. Если деление
происходит нацело, т. е. без остатка, то с помощью правого цикла
производится занесение частного от деления B в счетчик A. Если
деление происходит не нацело (т. е. Y равен нулю), средний цикл
восстанавливает остаток (который в этот момент запоминается в виде
состояния машины), направляя его в A, а затем прибавляет к нему
частное (находящееся в B), умноженное на делитель. Как и в случае
приращения, все промежуточные переходы машины 2cM (кроме последнего) из
(2X · 3Y · 5Z , 0)
в конфигурацию
(2X · 3Y −1 · 5Z , 0)
или в конфигурацию
(2X · 30 · 5Z , 0)
осуществляются при значении счетчика B > 0.
Чтобы построить счетчиковую машину 2cM , эквивалентную машине 3cM , такую что конфигурация со значениями счетчиков
2X · 3Y −1 · 5Z = (2X · 3Y · 5Z )/3,
A = 2N · 3K · 5L и B = 0
т. е. разделить содержимое A на 3. Аналогично уменьшение X и Z
(если они не равны нулю) эквивалентно делению на 2 и на 5. Подпрограмма для уменьшения значения счетчика Y на 1 представлена ниже.
Деление осуществляется путем последовательного вычитания.
машины 2cM будет существовать тогда и только тогда, когда существует конфигурация с X = N , Y = K и Z = L машины 3cM , надо
заменить все правила переходов машины 3cM на соответствующие
наборы правил переходов так, как это показано выше.
2 Кузьмин Е. В., Соколов В. А.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
34
Гл. 1. Счетчиковые машины
1.3. Счетчиковые машины Минского
З а м е ч а н и я п о т е о р е м е 1.7. В основе своей доказательство этой
теоремы повторяет доказательство теоремы 1.6 (оригинальной теоремы
М. Минского о моделировании трехсчетчиковой машины машиной
с двумя счетчиками [24]). Однако применяемые в доказательстве теоремы 1.6 конструкции не обеспечивают для двух машин 2cM и 3cM
взаимную однозначность конфигураций со значениями счетчиков
A = 2N · 3K · 5L , B = 0 и X = N , Y = K, Z = L
соответственно. Потребовалось изменить конструкции моделирования
таким образом, чтобы все вспомогательные переходы порождали конфигурации со значением B > 0. Как только значение счетчика B
становится нулевым, это означает, что A содержит новое значение
′
′
′
2N · 3K · 5L ,
соответствующее
X = N ′ , Y = K ′ , Z = L′ .
′
′
′
Вычисление же этого нового значения 2N · 3K · 5L начинается с увеличения нулевого значения счетчика B на единицу. Таким образом,
конструкции, приведенные в доказательстве теоремы 1.7, обеспечивают для машин 2cM и 3cM взаимную однозначность конфигураций
указанного вида.
Итак, в этой главе была показана равномощность трехсчетчиковых
машин Минского и машин Тьюринга. Этот результат позволил доказать, что и двухсчетчиковые машины Минского, пусть с небольшой
оговоркой, имеют такую же вычислительную мощность, что и машины
Тьюринга. Причем доказательство этого факта проводилось без использования конструкций, непосредственно опирающихся на машины Тьюринга, с использованием лишь формализма машин Минского, а точнее,
формализма трехсчетчиковых машин. Таким образом, было показано,
что для моделирования машин Тьюринга машинами Минского (с командами увеличения на единицу и условного вычитания единицы)
достаточно использовать два счетчика при соответствующей кодировке.
Но можно получить еще более сильный результат (с точки зрения
количества счетчиков), если допустить в качестве возможных команд
счетчиковой машины операции умножения и деления на постоянные
величины. В этом случае мы можем обойтись всего одним счетчиком,
который, как мы условились ранее, теперь будем называть регистром.
Действительно, из доказательства теоремы 1.6 видно, что нужен всего
35
лишь один регистр, если можем осуществлять над его содержимым
операции «умножить на 2 (или 3, 5, 7, 11)» и «разделить на 2 (или 3, 5,
7, 11) условно по условию целочисленного деления». Но такая модель
машины Тьюринга не исключает проблем «входа» и «выхода», которые можно сформулировать относительно однорегистровой машины.
Например, проблема «входа» по-прежнему ставит вопрос о возможности реализации, но теперь уже однорегистровой машиной, функции
F (X) = 2X . Заметим, что по сути проблема входа для однорегистровой
машины и проблема входа для двухсчетчиковой машины представляют
собой одну и ту же задачу (аналогично для проблемы «выхода»).
Такое представление двухсчетчиковой машины в виде однорегистровой
никак не облегчает исследование проблем «входа» и «выхода». Поэтому
далее для этого мы будем использовать несколько иную конструкцию
однорегистровой машины.
Глава написана на основе работ [7, 16, 13, 24, 26, 40]. Материал
по машинам Тьюринга (определение и примеры) взят из монографии
В. Е. Котова и В. К. Сабельфельда [7]. Идея доказательства теоремы
Тьюринга о неразрешимости проблемы остановки — из монографии
М. Минского [24] и книги Д. Хопкрофта, Р. Мотвани и Д. Ульмана [26]. Доказательство теоремы о проблеме зацикливания почти
полностью повторяет доказательство этой же теоремы из книги [7]
(доп. см. [22]). Материал по теореме 1.4 о моделировании машин
Тьюринга трехсчетчиковыми машинами и теореме 1.6 о моделировании
произвольной счетчиковой машины двухсчетчиковой машиной взят из
монографии М. Минского [24] и технического отчета Р. Шреппеля [40]. Формулировка и доказательство теоремы 1.7 с небольшими
изменениями взяты из статьи [16]. Проблемы «входа» и «выхода»
для двухсчетчиковых машин Минского впервые были поставлены и
исследовались в работе [40].
2*
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
37
2.1. Неразрешимые проблемы и метод сведения
Глава 2
ДВУХСЧЕТЧИКОВЫЕ МАШИНЫ
В предыдущей главе было показано, что для произвольной машины
Минского может быть построена моделирующая ее работу двухсчетчиковая машина при соответствующей кодировке входа и выхода. Это
позволяет сделать вывод о равномощности двухсчетчиковых машин
Минского и машин Тьюринга. Отсюда получаем, что двухсчетчиковые
машины наследуют от машин Тьюринга неразрешимость всех общих
классических проблем, таких как проблемы остановки (зацикливания),
достижимости заданной конфигурации, эквивалентности двух машин
и т. д. В то же время счетчиковые машины Минского имеют важное
структурное отличие от машин Тьюринга. Наличие у машин Минского
счетчиков порождает новые задачи, присущие только машинам этого
класса. Одна из таких представляющих интерес важных задач —
изучаемая в этой главе проблема ограниченности, которая состоит в нахождении алгоритма, определяющего для произвольной счетчиковой
машины Минского, ограничены ли (или неограниченно возрастают)
значения счетчиков на протяжении бесконечного исполнения машины.
В главе на основе «базовых» неразрешимых проблем остановки и зацикливания, которые двухсчетчиковые машины наследуют от машин
Тьюринга, с помощью метода сведения доказывается неразрешимость
перечисленных проблем и ряда близких к ним проблем для двухсчетчиковых машин Минского.
2.1. Неразрешимые проблемы и метод сведения
Т е о р е м а 2.1. Проблема остановки при нулевых входных значениях
счетчиков неразрешима для двухсчетчиковых машин Минского.
Д о к а з а т е л ь с т в о. Предположим, что сформулированная проблема
является разрешимой, т. е. существует некоторый алгоритм, реализуемый машиной Тьюринга T , отвечающий на вопрос для произвольной
двухсчетчиковой машины, остановится ли она или нет при нулевых
входных значениях счетчиков. Тогда будет разрешимой (неразрешимая)
проблема остановки двухсчетчиковых машин Минского.
Действительно, пусть 2cM — это произвольная машина Минского
с двумя счетчиками A и B, и пусть начальной конфигурацией счетчиков будет (N , K), т. е. подадим на вход машине 2cM значение N
в счетчике A и значение K в счетчике B, где N и K — некоторые целые
неотрицательные числа. На основе 2cM построим двухсчетчиковую
машину 2cM ′ с нулевыми входными значениями счетчиков так, как
это показано ниже.
2cM′
Старт
A+ N
B+K
2cM
Стоп
(0, 0)
На рисунке действие A+N означает выполнение подряд N команд A+,
аналогично B + K — последовательность из K команд B+. Построенная таким образом машина 2cM ′ останавливается, начав работу при
нулевых значениях счетчиков, тогда и только тогда, когда исходная
машина 2cM останавливается, стартовав при A = N и B = K. Если
теперь подать на вход гипотетическому алгоритму T машину 2cM ′ ,
то получим ответ, останавливается ли машина 2cM ′ при начальной
конфигурации счетчиков (0, 0) или нет. А это означает, что мы узнаем,
останавливается ли машина 2cM при начальной конфигурации (N , K).
Поскольку выбор машины 2cM и чисел N и K осуществлялся произвольным образом, то мы имеем алгоритм решения неразрешимой
проблемы остановки двухсчетчиковых машин Минского.
Пришли к противоречию. Следовательно, заявленная проблема также не является разрешимой (однако существует очень простой частичный алгоритм ее решения).
Аналогичные рассуждения на основе проблемы зацикливания двухсчетчиковых машин Минского убеждают нас в справедливости следующей теоремы.
Т е о р е м а 2.2. Проблема зацикливания при нулевых входных значениях счетчиков не является частично разрешимой для двухсчетчиковых машин Минского.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
38
Гл. 2. Двухсчетчиковые машины
Экземпляр
проблемы
P
T′
Экземпляр
проблемы
P′
2.1. Неразрешимые проблемы и метод сведения
T
для P′
Да
Нет
Рис. 2.1. Если бы можно было разрешить проблему P ′ , то ее решение мы могли
бы использовать для разрешения (неразрешимой) проблемы P
В только что приведенном доказательстве использована следующая
схема рассуждений: выполнив некоторые вспомогательные построения,
мы предполагаем разрешимость исследуемой проблемы, что в силу проведенных построений дает нам возможность решать другую проблему,
о которой, однако, известно, что она неразрешима. Полученное противоречие доказывает неразрешимость исследуемой проблемы. Такой
метод доказательства называют методом сведе́ния: известная проблема сводится к исследуемой, поэтому последняя также неразрешима.
Метод сведения используется и в случае, когда доказывается, что
рассматриваемая проблема не является частично разрешимой. Метод
сведения имеет широкое применение. Как правило, осуществляется
последовательный многоступенчатый процесс сведения одних проблем
к другим, и часто «базовой» неразрешимой проблемой в этой цепочке оказывается проблема остановки машин Тьюринга. (Однако метод
сведения не универсален, так как существуют взаимно несводимые
неразрешимые проблемы.)
Схематически метод сведения проблемы P к проблеме P ′ можно
представить так, как это показано на рис. 2.1. Рассуждения проводятся
следующим образом. Предположим, что нам известно, что проблема
P неразрешима, а P ′ — новая проблема, неразрешимость которой нужно доказать. Допустим, что существует алгоритм, реализуемый машиной Тьюринга T , который останавливается с ответом «Да» или «Нет»
в зависимости от того, принадлежит или нет его вход (экземпляр
проблемы P ′ ) множеству, соответствующему проблеме P ′ . Для доказательства неразрешимости проблемы P ′ нужно создать алгоритм
T ′ , который преобразует любой экземпляр проблемы P в экземпляр
проблемы P ′ , причем так, чтобы их ответы всегда совпадали. Имея
такое преобразование, (неразрешимую) проблему P можно разрешить
следующим образом.
39
1) Применим алгоритм T ′ к данному экземпляру проблемы P , т. е.
к элементу, который может принадлежать или не принадлежать
соответствующему множеству проблемы P , и получим экземпляр
проблемы P ′ .
2) Проверим, принадлежит ли полученный экземпляр проблемы P ′
множеству, соответствующему проблеме P ′ , и перенесем ответ
на исходный экземпляр проблемы P и саму проблему P .
Например, в доказательстве теоремы 2.1 в качестве алгоритма T ′ выступало преобразование произвольной двухсчетчиковой машины 2cM
со входом (N , K), являющейся экземпляром неразрешимой проблемы P
остановки двухсчетчиковых машин Минского, в машину 2cM ′ со входом (0, 0) — экземпляр исследуемой проблемы P ′ остановки двухсчетчиковой машины при нулевых начальных значениях счетчиков.
Отметим, что направление сведения является важным. Обычная
ошибка — пытаться доказать неразрешимость проблемы P ′ путем
сведения ее к известной неразрешимой проблеме P , т. е. доказывать
утверждение «если P разрешима, то P ′ разрешима». Это утверждение,
безусловно истинное, бесполезно, поскольку предпосылка «P разрешима» ложна. Единственный путь доказать, что новая проблема P ′
неразрешима, состоит в том, чтобы свести к ней уже известную неразрешимую проблему, т. е. доказать утверждение «если P неразрешима,
то P ′ неразрешима». Если это удастся, то поскольку неразрешимость
проблемы P уже установлена, придем к выводу, что и проблема P ′
также неразрешима.
Итак, P сводится к P ′ , если у нас есть алгоритм, преобразующий
каждый экземпляр проблемы P в экземпляр проблемы P ′ с тем же
самым ответом («Да»/«Нет»), т. е. сведение должно переводить всякий
экземпляр проблемы P с ответом «Да» (позитивный) в экземпляр
проблемы P ′ с ответом «Да», и всякий экземпляр P с ответом
«Нет» (негативный) — в экземпляр P ′ с ответом «Нет». Отметим,
что неважно, является ли каждый экземпляр проблемы P ′ образом
одного или нескольких экземпляров проблемы P . В действительности,
обычно лишь небольшая часть экземпляров проблемы P ′ образуется
в результате сведения.
Таким образом, с помощью сведения показывается, что проблема
P ′ не менее трудна, чем P . Если P неразрешима, то и P ′ не может
быть разрешимой. Если P не является частично разрешимой, то и P ′
не может быть частично разрешимой.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
40
Гл. 2. Двухсчетчиковые машины
О п р е д е л е н и е. Проблема тотальности машин Минского состоит
в нахождении алгоритма, который для любой счетчиковой машины
определяет, будет ли она останавливаться при всех возможных начальных значениях счетчиков. Машина Минского пуста, если она
зацикливается при любом входном наборе значений счетчиков.
Т е о р е м а 2.3. Проблема тотальности двухсчетчиковых машин
неразрешима.
Д о к а з а т е л ь с т в о проводится сведением рассмотренной ранее проблемы остановки при нулевых начальных значениях счетчиков двухсчетчиковых машин к заявленной проблеме тотальности.
Возьмем произвольную двухсчетчиковую машину 2cM с нулевыми
начальными значениями счетчиков A и B. На основе машины 2cM
построим двухсчетчиковую машину 2cM ′ так, как это показано ниже.
2cM′
Старт
A−
B−
(0, 0)
2cM
41
2.1. Неразрешимые проблемы и метод сведения
Стоп
Т е о р е м а 2.5 (О тотальности). Проблема тотальности двухсчетчиковых машин не является частично разрешимой.
Д о к а з а т е л ь с т в о проведем в два этапа. Сначала сведем проблему
зацикливания с нулевыми значениями счетчиков двухсчетчиковых машин к проблеме тотальности трехсчетчиковых машин. Затем проблему
тотальности трехсчетчиковых машин сведем к заявленной проблеме
тотальности двухсчетчиковых машин.
Этап первый. Рассмотрим произвольную двухсчетчиковую машину
2cM с нулевыми начальными значениями счетчиков A и B. Построим
на основе 2cM трехсчетчиковую машину 3cM следующим образом.
Добавим новый счетчик C с командами, которые сначала обнуляют его
исходное значение, а потом помещают в C сумму начальных значений
счетчиков A и B, при этом обнуляя A и B. Затем происходит передача
управления машине 2cM , перед каждой командой которой выполняется
команда C−. Если при выполнении этой команды значение счетчика C
равно нулю, происходит завершение работы машины 3cM . Встраивание команд C− в программу машины 2cM происходит так, как это
показано ниже.
...
Машина 2cM ′ будет тотальной тогда и только тогда, когда машина
2cM останавливается при начальной конфигурации счетчиков (0, 0).
Следовательно, если бы была разрешима проблема тотальности двухсчетчиковых машин, то была бы разрешима (неразрешимая) проблема
остановки при нулевых начальных значениях счетчиков. Это означает,
что алгоритма решения проблемы тотальности быть не может.
С использованием аналогичной конструкции на базе проблемы зацикливания при нулевых входных значениях счетчиков двухсчетчиковых машин доказывается следующая теорема.
Т е о р е м а 2.4 (О пустоте). Проблема пустоты двухсчетчиковых машин не является частично разрешимой.
В действительности проблема тотальности двухсчетчиковых машин
не является даже частично разрешимой. Покажем это.
...
C−
A+
C−
A−
Стоп
...
...
Стоп
...
...
C−
B+
...
Стоп
...
C−
B−
Стоп
...
...
Наконец, добавим еще пару команд, образующих бесконечный цикл
(«петлю»), когда машина 2cM останавливается. Схематическое изображение машины 3cM представлено ниже.
C−
3cM
Старт
∀ (N, K, L)
C−
A−
C+
B−
C+
Стоп
(0, 0)
2cM
(Стоп)
Машина 3cM будет тотальной тогда и только тогда, когда машина 2cM зацикливается при нулевых начальных значениях счетчиков.
Действительно, работу машины 3cM можно описать так. При произвольной входной конфигурации счетчиков (N , K, L) машина 3cM
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
42
Гл. 2. Двухсчетчиковые машины
2.1. Неразрешимые проблемы и метод сведения
моделирует работу машины 2cM , которая стартует при нулевых значениях счетчиков A и B, первые ее N + K команд. Если за это время,
т. е. на протяжении N + K шагов, машина 2cM завершает свою работу,
то управление передается на бесконечный цикл, т. е. машина 3cM зацикливается. Если на протяжении этих же N + K шагов машина 2cM
не завершает свою работу, то после (N + K)-го шага машины 2cM
трехсчетчиковая машина 3cM останавливается (обратный отсчет числа
шагов осуществляется с помощью счетчика C). Таким образом, машина 3cM останавливается при каждом своем входе тогда и только тогда,
когда машина 2cM зацикливается при нулевых начальных значениях
своих счетчиков. Получили, что проблема тотальности трехсчетчиковых машин Минского не является частично разрешимой.
Этап второй. Сведем проблему тотальности трехсчетчиковых машин к проблеме тотальности двухсчетчиковых машин. Рассмотрим
произвольную трехсчетчиковую машину 3cM . Промоделируем 3cM
двухсчетчиковой машиной 2cM так, как это показано в доказательстве
теоремы 1.6. На основе машины 2cM построим новую двухсчетчиковую
машину 2cM ′ следующим образом. Добавим команды, обнуляющие
счетчик B, а затем увеличивающие исходное значение счетчика A
на единицу. После этого управление передается машине 2cM . Таким
образом, машина 2cM никогда не получит на вход конфигурацию (0, 0).
Конструкция машины 2cM ′ представлена ниже.
2cM′
Старт
∀ (N, K)
B−
A+
2cM модель
машины 3cM
Стоп
Начав работу при некоторой конфигурации (N , K), машина 2cM ′
через некоторое время передает управление машине 2cM с входной
конфигурацией (N + 1, 0). Таким образом, машина 2cM ′ останавливается при начальной конфигурации счетчиков (N , K) тогда и только
тогда, когда останавливается машина 2cM при начальной конфигурации счетчиков (N + 1, 0).
Но машина 2cM , моделирующая машину 3cM со счетчиками X,
Y и Z, требует, чтобы вход имел вид A = 2X 3Y 5Z и B = 0. Однако
заметим, если в счетчике A будет находиться значение вида J·2X 3Y 5Z ,
где J — целое положительное число, не делящееся ни на 2, ни на 3,
ни на 5, то, как уже отмечалось во второй главе, из-за особенностей
43
моделирования, если машина 2cM остановится при таком входе, выходными значениями счетчиков будут B = 0 и A = J · 2F (X) 3G(Y ) 5H(Z) ,
где F , G, H — некоторые функции, реализуемые двухсчетчиковой
машиной. Другими словами, число J не будет оказывать никакого
влияния на то, остановится машина 2cM или зациклится. Если машина
2cM останавливается при входной конфигурации (2X 3Y 5Z , 0), то она
остановится и при входе (J·2X 3Y 5Z , 0).
Следовательно, машина 2cM ′ будет тотальной тогда и только тогда,
когда тотальна машина 3cM .
У п р а ж н е н и е. Докажите, что для двухсчетчиковых машин проблема
существования зацикливающего (машину) входа не является частично
разрешимой.
Проблемы тотальности и существования зацикливающего входа —
двойственные проблемы. Они представляют собой пример того, что
существуют проблемы, не являющиеся частично разрешимыми, дополнения которых также не являются частично разрешимыми проблемами.
А вот двойственная к проблеме пустоты проблема существования
останавливающего (машину) входа является частично разрешимой.
Т е о р е м а 2.6. Проблема остановки хотя бы при одном входе для
двухсчетчиковых машин Минского частично разрешима.
Д о к а з а т е л ь с т в о. Для построения частичного алгоритма применяется известная техника «поиска в ширину». Упорядочим множество
всех возможных входов счетчиковой машины 2cM следующим образом: (0, 0), (1, 0), (0, 1), (0, 2), (1, 1), (2, 0), (3, 0), (2, 1), (1, 2), (0, 3)
и т. д. На каждом шаге будем запускать новый экземпляр машины
Минского 2cM с новым входом (взятым в соответствии с указанным
порядком), одновременно совершая по одному переходу для каждого
из уже запущенных экземпляров машины 2cM . Таким образом, после
n шагов алгоритма будет запущено n экземпляров машины 2cM ,
причем к этому моменту первый запущенный экземпляр машины совершит n переходов, второй — (n − 1) и т. д. После каждого шага
для всех запущенных экземпляров машины 2cM проверяется условие
остановки. Если существует хотя бы один вход, на котором машина
Минского 2cM останавливается, то рано или поздно он будет найден.
Однако, если такого входа не существует, алгоритм будет работать
бесконечно долго.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
44
Гл. 2. Двухсчетчиковые машины
2.1. Неразрешимые проблемы и метод сведения
45
О п р е д е л е н и е. Две n-счетчиковые машины эквивалентны, если
они на одном и том же входе либо обе зацикливаются, либо обе
останавливаются с одним и тем же выходом, т. е. их выходные наборы
значений соответствующих счетчиков равны.
Если машина 2cM ′ останавливается, то только в финальной конфигурации со значениями счетчиков (N , K). Таким образом, по построению машина 2cM ′ достигает своей финальной конфигурации (qn′ , N , K)
тогда и только тогда, когда исходная машина 2cM останавливается. Т е о р е м а 2.7. Проблема эквивалентности двухсчетчиковых машин
не является частично разрешимой.
Т е о р е м а 2.9. Проблема достижимости вектора нулевых значений
счетчиков 0̄ = (0, 0) для двухсчетчиковых машин Минского 2cM
неразрешима.
Д о к а з а т е л ь с т в о проводится сведением проблемы пустоты двухсчетчиковых машин к данной проблеме эквивалентности. Здесь достаточно указать, что если бы существовал алгоритм решения проблемы
эквивалентности, это автоматически бы означало наличие алгоритма,
решающего проблему пустоты. Действительно, нужно было бы всего
лишь подать на один вход алгоритму проблемы эквивалентности специально построенную заведомо пустую двухсчетчиковую машину, а на
другой вход — двухсчетчиковую машину, пустоту которой необходимо
проверить. Если алгоритм дает ответ «Да» (машины эквивалентны),
значит, проверяемая двухсчетчиковая машина пуста. Но поскольку
проблема пустоты не является частично разрешимой, то и проблема
эквивалентности не может быть частично разрешимой.
О п р е д е л е н и е. Проблема достижимости состоит в обнаружении
алгоритма, с помощью которого для любой n-счетчиковой машины
Минского ncM и для произвольного вектора c̄ = (c1 , . . . , cn ) значений счетчиков можно выяснить выполнимость условия c̄ ∈ R(ncM ),
где R(ncM ) — множество достижимых векторов значений счетчиков
из начальной конфигурации.
Т е о р е м а 2.8. Проблема достижимости заданной конфигурации
для двухсчетчиковых машин Минского неразрешима.
Д о к а з а т е л ь с т в о. Любую двухсчетчиковую машину 2cM можно
достроить до машины 2cM ′ так, как это показано ниже.
Старт
2cM
A−
B−
(0, 0)
B+K
Т е о р е м а 2.10. Проблема достижимости ненулевого вектора значений счетчиков вида (N , 0) для двухсчетчиковых машин Минского
неразрешима.
Д о к а з а т е л ь с т в о. Любую машину Минского 2cM со счетчиками X
и Y можно промоделировать машиной Минского 2cM ′ со счетчиками
A и B так, как это показано в теореме 1.7. Конфигурация (2K 3L , 0)
машины 2cM ′ будет существовать тогда и только тогда, когда существует конфигурация (K, L) машины 2cM . Пусть (2K0 3L0 , 0) — вектор
начальных значений счетчиков машины 2cM ′ . Тогда запустим машину
2cM ′ на векторе (2K0 3L0 N , 0), где N — число, которое не делится ни
на 2, ни на 3. Тогда машина 2cM ′ будет достигать вектора значений
счетчиков (N , 0) тогда и только тогда, когда исходная машина 2cM
будет достигать вектора нулевых значений счетчиков 0̄ = (0, 0).
Отметим, что основания 2 и 3 могут быть заменены на другие
простые числа с условием, что и число N будет выбрано таким, чтобы
оно не имело общих делителей с новыми основаниями.
Отметим, что проблема достижимости имеет очевидный частичный
алгоритм решения.
2cM′
A+ N
Д о к а з а т е л ь с т в о. Любую двухсчетчиковую машину 2cM можно
промоделировать другой двухсчетчиковой машиной 2cM ′ так, как это
показано в теореме 1.6, а затем из финального состояния обнулить
значения счетчиков так, как это показано в предыдущей теореме,
получив при этом двухсчетчиковую машину 2cM ′′ . По построению
полученная машина 2cM ′′ будет достигать вектора нулевых значений
счетчиков 0̄ = (0, 0) тогда и только тогда, когда исходная машина 2cM
будет останавливаться.
Стоп
Отдельного внимания заслуживают проблемы, связанные с существованием верхней границы суммы значений счетчиков во время
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
46
Гл. 2. Двухсчетчиковые машины
бесконечного исполнения из заданной начальной конфигурации машины Минского. Если такая граница существует, то это означает, что
поведение машины Минского при данном входе может быть представлено в виде конечного ориентированного графа, вершинами которого
будут конфигурации, достижимые машиной во время ее исполнения из
начальной конфигурации.
О п р е д е л е н и е. Счетчиковая машина Минского ограничена при заданной начальной конфигурации тогда и только тогда, когда существует число k ∈ N такое, что на протяжении всего исполнения машины
из начальной конфигурации выполняется условие, что в любой момент
времени сумма значений счетчиков не превосходит k.
Очевидно, что проблема ограниченности счетчиковых машин Минского является частично разрешимой. Если машина ncM ограничена,
то она будет иметь конечное множество всех возможных конфигураций. Таким образом, бесконечное исполнение машины (если оно
существует) обязательно будет проходить одни и те же конфигурации. Следовательно, если после запуска машины ncM она попадет
в конфигурацию, в которой уже находилась ранее (на исполнении),
это и будет означать ограниченность машины, так как, начиная с этой
конфигурации, будет порождаться бесконечный цикл, целиком состоящий из уже пройденных конфигураций, т. е. далее в исполнении новые
конфигурации порождаться не будут.
С одной стороны, свойство ограниченности является специфическим
и возникает вследствие особой конструкции машин Минского, включающей в себя счетчики. С другой стороны, можно провести аналогию
с машиной Тьюринга. Ограниченность машины Тьюринга будет означать, что при заданном входном слове на ленте для работы (конечного
или бесконечного исполнения) машине Тьюринга потребуется лишь
конечный кусок ленты. В этом случае поведение машины Тьюринга
также имеет конечное представление.
Т е о р е м а 2.11. Для трехсчетчиковых машин Минского проблема
ограниченности неразрешима.
Д о к а з а т е л ь с т в о осуществляется сведением проблемы остановки
при нулевых входных значениях счетчиков двухсчетчиковых машин
к проблеме ограниченности машин Минского с тремя счетчиками.
2.1. Неразрешимые проблемы и метод сведения
47
Рассмотрим произвольную двухсчетчиковую машину 2cM с счетчиками A и B. Преобразуем 2cM в машину Минского 3cM с тремя
счетчиками. Добавим новый счетчик C. И перед выполнением каждой
командой машины 2cM будем выполнять команду C+.
...
...
...
...
C+
A+
C+
A−
C+
B+
C+
B−
...
...
...
...
...
...
Запустим машину 3cM из нулевой начальной конфигурации (0, 0, 0).
Машина 3cM будет себя вести так же, как и машина 2cM , начавшая
работу с конфигурации (0, 0), за исключением того, что с помощью
счетчика C будет производиться подсчет количества выполненных
машиной 2cM команд, т. е. подсчет числа шагов машины 2cM . Следовательно, машина 3cM со входом (0, 0, 0) будет ограниченной тогда
и только тогда, когда машина 2cM со входом (0, 0) останавливается.
Поскольку проблема остановки при нулевой начальной конфигурации двухсчетчиковых машин неразрешима, получаем неразрешимость
проблемы ограниченности машин Минского с тремя счетчиками.
Т е о р е м а 2.12. Для двухсчетчиковых машин Минского проблема
ограниченности неразрешима.
Д о к а з а т е л ь с т в о проводится сведением проблемы ограниченности
трехсчетчиковых машин Минского к данной проблеме с помощью
преобразований из доказательства теоремы 1.6.
Итак, возьмем произвольную трехсчетчиковую машину 3cM с счетчиками X, Y и Z и преобразуем ее в машину 2cM с счетчиками
A и B так, как это показано в доказательстве теоремы 1.6. Исходя
из этих преобразований получаем, что счетчиковая машина 2cM будет ограничена при начальной конфигурации счетчиков (2X 3Y 5Z , 0)
тогда и только тогда, когда ограничена машина 3cM при некоторой
начальной конфигурации счетчиков (X, Y , Z). Если предположить, что
существует алгоритм решения проблемы ограниченности для двухсчетчиковых машин Минского, тогда мы будем иметь алгоритм решения аналогичной проблемы для произвольной машины Минского
с тремя счетчиками. Но эта проблема неразрешима по предыдущей
теореме 2.11. Пришли к противоречию.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
48
Гл. 2. Двухсчетчиковые машины
Заметим, что из доказательства теоремы 1.7 также следует неразрешимость проблемы ограниченности одного счетчика двухсчетчиковой
машины Минского, так как счетчик A машины 2cM , содержащий
значение 2X · 3Y · 5Z , где X, Y и Z — счетчики машины 3cM , будет
ограничен тогда и только тогда, когда ограничена машина 3cM . Таким
образом, справедлива следующая теорема.
Т е о р е м а 2.13. Проблема ограниченности одного счетчика двухсчетчиковых машин Минского неразрешима.
Поскольку преобразования, приведенные в доказательстве теоремы 1.6, исключают запуск двухсчетчиковой машины 2cM из нулевой
начальной конфигурации, вскользь коснемся неразрешимости проблемы ограниченности двухсчетчиковых машин Минского при нулевой
начальной конфигурации, еще раз продемонстрировав тем самым, что
рассмотрение класса счетчиковых машин с нулевыми начальными
конфигурациями не дает никаких преимуществ с точки зрения разрешимости свойств. Доказательство проводится сведением проблемы
ограниченности двухсчетчиковой машины при произвольной начальной конфигурации к данной проблеме с использованием конструкций
из доказательства теоремы 2.1.
Т е о р е м а 2.14. Проблема ограниченности двухсчетчиковых машин
Минского с нулевой начальной конфигурацией (т. е. при нулевых
начальных значениях всех счетчиков) неразрешима.
Рассмотрим теперь двойственную к проблеме ограниченности (соответственно при нулевой конфигурации) задачу существования неограниченного исполнения (соответственно из нулевой конфигурации)
двухсчетчиковой машины Минского. Еще раз напомним, по теореме
Поста (теорема 1.1), можно утверждать, что, если проблема и ее дополнение (двойственная проблема) являются частично разрешимыми, следовательно, они обе разрешимы. А поскольку проблема ограниченности
(как и проблема ограниченности для нулевой начальной конфигурации)
является частично разрешимой, то получаем, что проблема неограниченного пути не может быть частично разрешимой. Таким образом,
справедлива следующая теорема, касающаяся проблемы существования неограниченного пути двухсчетчиковых машин Минского.
2.1. Неразрешимые проблемы и метод сведения
49
Т е о р е м а 2.15. Для двухсчетчиковых машин Минского (с нулевой
начальной конфигурацией) проблема неограниченного пути не является частично разрешимой.
О п р е д е л е н и е. Счетчиковая машина Минского тотально ограничена, если и только если она ограничена для всех возможных начальных
конфигураций.
Т е о р е м а 2.16. Для двухсчетчиковых машин проблема тотальной
ограниченности не является частично разрешимой.
Д о к а з а т е л ь с т в о проводится по аналогии с доказательством теоремы 2.5. Сначала проблема зацикливания из нулевой начальной конфигурации двухсчетчиковых машин сводится к проблеме тотальной
ограниченности трехсчетчиковых машин. Конструкция трехсчетчиковой машины, реализованная на базе произвольной двухсчетчиковой,
в точности повторяет конструкцию машины 3cM из доказательства
теоремы 2.5 за исключением того, что набор команд, образующих
бесконечный цикл на выходе машины 2cM , включает в себя команду C+, обеспечивающую неограниченный рост значений счетчика C,
если машина 2cM завершит работу. Получится, что новая трехсчетчиковая машина будет тотально ограниченной тогда и только тогда,
когда исходная двухсчетчиковая машина зацикливается при начальной
конфигурации (0, 0). Затем проблема тотальной ограниченности трехсчетчиковых машин сводится к проблеме тотальной ограниченности
двухсчетчиковых машин.
У п р а ж н е н и е. Доказательство теоремы 2.16 приведено в виде наброска. Проведите полное доказательство этой теоремы.
У п р а ж н е н и е. Постройте частичный алгоритм решения проблемы
ограниченности хотя бы при одном входе двухсчетчиковых машин. У п р а ж н е н и е. Докажите, что проблемы тотальной неограниченности
и неограниченности хотя бы при одном входе для двухсчетчиковых
машин Минского не являются частично разрешимыми.
Частичная разрешимость проблемы ограниченности означает наличие частичного алгоритма ее решения, т. е. существование алгоритма,
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
50
Гл. 2. Двухсчетчиковые машины
2.1. Неразрешимые проблемы и метод сведения
51
над конечным множеством конфигураций
f 1 ( x)
...
f 2 ( x)
f l −1 ( x)
f l ( x) = f n ( x)
f l +1 ( x)
f n−1 ( x)
...
Рис. 2.2. Цикл и путь к циклу функции f при исходном x
который останавливается с положительным ответом в случае, если
счетчиковая машина ограничена. Этот алгоритм весьма прост. Необходимо запустить счетчиковую машину и дождаться либо ее остановки,
либо того момента, когда она попадет в конфигурацию, в которой уже
была. Последняя ситуация будет означать, что машина зациклилась и
новые конфигурации порождаться не будут, из чего следует ограниченность машины. Поскольку первая часть алгоритма сводится лишь
к проверке попадания в заключительное состояние, более детально
рассмотрим ситуацию с зацикливанием. Эту задачу можно представить
в виде проблемы нахождения цикла в периодической последовательности.
Пусть заданы функция f над конечным множеством D и произвольная стартовая точка x ∈ D. Последовательность
0
1
2
3
f (x), f (x), f (x), f (x), . . .
является в конечном счете периодической, т. е. для некоторых l и c
мы будем иметь конечную последовательность из различных значений
f 0 (x), f 1 (x), . . . , f l+c−1 (x) при f l+c (x) = f l (x) (см. рис. 2.2). В свою
очередь, из этого следует, что f i+c (x) = f i (x) для всех i > l. Такими
последовательностями обычно являются выходные последовательности
генератора случайных чисел. Относительно таких последовательностей
ставится задача, которая называется проблемой цикла, состоящая
в определении первого повторного элемента f n (x) последовательности,
а точнее, в нахождении пары значений (l, c).
Действительно, если некоторая n-счетчиковая машина ncM является ограниченной (зацикливается) при начальной конфигурации
(q0 , c10 , . . . , cn0 ), тогда машину ncM можно представить как функцию
D = {(q, c1 , . . . , cn ) | q ∈ Q ∧ ci ∈ Ci ⊂ N ∧ 1 6 i 6 n},
где Ci — конечное множество значений, которые может принимать
счетчик с номером i во время (ограниченного) исполнения машины
ncM из конфигурации (q0 , c10 , . . . , cn0 ). На вход машине подается конфигурация, результатом также будет конфигурация, в которую машина
перейдет из поданного на вход состояния в соответствии с входным
вектором значений счетчиков. Рассмотрим пример простого алгоритма
решения задачи нахождения цикла в периодических последовательностях, который может быть применен для (частичного) решения проблемы ограниченности счетчиковых машин Минского.
Одним из самых широко известных алгоритмов нахождения циклов
является алгоритм «Заяц и черепаха», предложенный Р. Флойдом (см.,
например, в [5]). Идея этого алгоритма заключается в использовании
двух переменных, пробегающих последовательность значений функции f с разной скоростью, одна переменная меняет значения в два
раза быстрее другой. Программа, реализующая эту идею, представлена
ниже.
y := x; z := x;
repeat
y := f (y);
z := f (f (z));
until y = z;
Алгоритм останавливается при y = f i (x) = f 2i (x) = z, где i —
наименьшее из больших или равных l положительное число, кратное
(длине цикла) c. Действительно,
2i = l + kc + r;
i
= l + r;
где r < c, а k — число полных проходов цикла. Отсюда мы имеем
i = kc, i > l и i < l + c.
Если l = 0, тогда потребуется 3n применений (вычислений результата)
функции f , где n = i + c; если l = c + 1 или c = 1 при l 6= 0, тогда
произойдет 3(n − 1) применений функции f .
Этот алгоритм хорош тем, что не требует дополнительных (вспомогательных) структур памяти, что весьма важно, так как относительно
счетчиковых машин Минского он является частичным, т. е. заранее
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
52
Гл. 2. Двухсчетчиковые машины
не известно, будет ли в конечном итоге найден цикл на исполнении
счетчиковой машины. Однако заметим, что ограничение на размер
памяти, использующейся для хранения значений переменных, все же
существует. В том случае, когда машина Минского не является ограниченной, необходимо постоянно увеличивать объем памяти, который
отводится для счетчиков.
2.2. Двухголовочные автоматы
Счетчиковые машины используются для доказательства тьюринговой мощности языков программирования, а также для доказательства алгоритмической неразрешимости свойств различных формализмов и абстрактных математических машин. Покажем это на примере
двухголовочных автоматов.
О п р е д е л е н и е. Двухголовочный автомат A = (V , Q, qf , q0 , #, I)
имеет одну ленту и две считывающие головки, которые могут независимо перемещаться вдоль ленты в одном направлении. Множество
состояний Q = Q1 ∪ Q2 разбито на два непересекающихся подмножества; в состояниях из Q1 активна первая головка, в состояниях
из Q2 — вторая. Как и ранее, V здесь означает конечный алфавит
символов на ленте, q0 ∈ Q — начальное состояние, qf ∈ Q — финальное
(заключительное) состояние, # — символ конца ленты, а I — программу двухголовочного автомата A, т. е. последовательность команд вида
qa → q ′ , где q, q ′ ∈ Q, a ∈ V , причём для любой пары (q, a) существует
единственная команда, начинающаяся этими символами. В начальном
состоянии обе головки просматривают первый символ ленты.
Согласно программе на каждом шаге автомат считывает активной
головкой символ с ленты, передвигает её по ленте вправо на одну клетку и переходит в новое состояние. Если автомат находится в состоянии
q ∈ Qi (1 6 i 6 2), то i-я головка является активной и читает символ
с ленты. При переходе автомата в состояние q ′ ∈ Qj (j 6= i) i-я головка
останавливается, а j-я начинает читать символы со своего места ленты
(т. е. с того места, на котором она остановилась до передачи управления i-й головке). Если одна из головок считывает символ # конца
ленты, автомат останавливается. Автомат также останавливается, если
не может сработать ни одна из команд программы I.
Неформально двухголовочный автомат можно представить как абстрактную машину, похожую на машину Тьюринга, но имеющую следующие особенности:
1) выделено заключительное состояние;
53
2.2. Двухголовочные автоматы
2) машина считывает символы с ленты двумя головками, ничего на
неё не записывая;
3) на каждом шаге активная головка автомата, считав символ с ленты
и перейдя согласно программе в новое состояние, обязательно передвигается вправо на одну клетку;
4) автомат останавливается, когда одна из головок достигнет конца
слова, т. е. символа #.
Автомат допускает слово α в алфавите V , если, начав работу
с лентой, содержащей это слово, он, считав активной головкой символ
# конца ленты, останавливается в заключительном состоянии. Автомат A задаёт характеристическую функцию множества MA допускаемых им слов в алфавите V . Действительно, его работу можно рассматривать как процедуру распознавания того, принадлежит ли заданное
слово множеству MA , если связать с остановкой в заключительном
состоянии символ 1, а с остановкой в незаключительном состоянии —
символ 0.
q25
1
1
q 10
*
0
0,1
*
q11
q24
*
q12
#
q16
0
q23
Рис. 2.3. Двухголовочный автомат A=
Приведем пример двухголовочного автомата, который проверяет
равенство двух последовательно записанных на ленте слов в алфавите
V ′ = {0, 1}. Признаком окончания каждого из слов сделаем вспомогательный символ ∗, не входящий в V ′ . Двухголовочный автомат должен
допускать только те слова, которые имеют вид α ∗ α ∗ , где α — слово
в алфавите V ′ . Рассмотрим автомат A= = (V , Q1 ∪ Q2 , q61 , q01 , #, I), где
Q1 = {q01 , q11 , q21 , q61 } — множество состояний, в которых активна первая
головка; Q2 = {q32 , q42 , q52 } — множество состояний, в которых активна
вторая головка; q61 — заключительное состояние. Граф автомата показан на рис. 2.3.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
54
Гл. 2. Двухсчетчиковые машины
Находясь в состоянии q01 , автомат передвигает первую головку
к началу второго слова и, обнаружив его, переводит в состояние q11 .
Когда автомат приходит к состоянию q11 , он считывает поочерёдно
символы второго слова первой головкой (состояние q11 ), а символы
первого слова — второй головкой (состояния q32 и q52 ), сравнивая эти
символы. Автомат возвращается каждый раз в состояние q11 , если
символы одинаковы. Если же обнаружится несовпадение символов
или первая головка встречает конец слова раньше символа ∗, автомат
останавливается в незаключительном состоянии. Слово на ленте отвергается. Если первая головка достигнет конца второго слова, а вторая
головка обнаружит, что первое слово тоже просмотрено до конца,
то автомат перейдет в заключительное состояние q61 , т. е. слово принимается. В противном случае автомат остановится в незаключительном
состоянии, отвергая слово.
q0
1
q′0
c1
1
*
1
*
1
1
2
q
1
q
qn
q′
1
*
2
2
1
1
1
q
2
1
1
*
1
1
2
1
1
*
1
1
1
1
1
q : if x 2 > 0 then x 2 := x 2 − 1; goto q ′
else goto q ′′
1
2
*
2
1
1
*
q′
1
q′
q : if x1 > 0 then x1 := x1 − 1; goto q ′
else goto q ′′
q
1
2
*
1
q
*
*
1
2
2
q′
#
1
q : x2 := x2 + 1; goto q ′
1
*
qn
2
2
q0
q : x1 := x1 + 1; goto q ′
Т е о р е м а 2.17. Для любой счетчиковой машины Минского может
быть построен двухголовочный автомат, моделирующий её работу.
. . . 1} ∗.
q 11
. . . 1} ∗ 11
| {z
| {z
qn
1
q0
Двухголовочный автомат моделирует работу счетчиковой машины
Минского, если автомат допускает те и только те слова, которые
являются конечными исполнениями этой машины (при всех возможных
начальных конфигурациях).
Д о к а з а т е л ь с т в о. Поскольку двухсчетчиковые машины Минского
обладают тьюринговой мощностью и могут моделировать произвольные n-счетчиковые машины, ограничимся двухсчетчиковым случаем,
т. е. будем моделировать двухголовочными автоматами работу только
двухсчетчиковых машин Минского. К тому же, в случае n-счетчиков
моделирование проводится по аналогии.
Начнем с алфавита и представления конфигурации счетчиковой
машины на ленте автомата. Положим V = {q0 , . . . , qn , 1, ∗}, где qi —
символы, обозначающие состояния машины Минского, * — специальный разделительный символ, а соответствующим количеством символов «1» будем задавать значения счетчиков. Конфигурацию (q, c1 , c2 )
счетчиковой машины будем представлять на ленте в виде
55
2.2. Двухголовочные автоматы
2
q
1
*
2
1
1
1
q
*
q′′
2
1
q
*
x1 = 0
*
1
1
1
q′′
q′′
2
2
1
q′
*
*
*
x2 = 0
q′′
2
1
q′
1
2
1
*
1
x1 > 0
1
*
q′
2
2
*
1
*
2
1
1
1
q′
*
1
2
*
2
1
x2 > 0
1
*
*
2
1
2
1
1
c2
Тогда, например, переход счетчиковой машины из конфигурации
(q, c1 , c2 ) в конфигурацию (q ′ , c1 +1, c2 ) при срабатывании команды
Рис. 2.4. Подпрограммы двухголовочного автомата, моделирующие работу соответствующих команд счетчиковой машины Минского.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
56
Гл. 2. Двухсчетчиковые машины
первого типа q : x1 := x1 + 1; goto q ′ , где q, q ′ ∈ {q0 , . . . , qn }, q 6= qn ,
будет изображен на ленте двухголовочного автомата как
. . . 1} ∗q ′ 11
. . . 1} ∗ 11
q 11
. . . 1} ∗ 11
. . . 1} ∗.
| {z
| {z
| {z
| {z
c1
c2
c1 +1
c2
Каждому состоянию счетчиковой машины сопоставим такое же
состояние (с той же пометкой) двухголовочного автомата, в котором будет активна вторая считывающая головка. Каждую команду
счетчиковой машины промоделируем соответствующей подпрограммой
двухголовочного автомата, изображенной в виде графа переходов на
рис. 2.4. На рисунке состояния автомата изображены в виде кружков,
цифра внутри кружка означает номер активной в этом состоянии
считывающей головки. Символы ленты, по которым возможен переход
из текущего состояния двухголовочного автомата, указаны над дугами.
Для финального состояния qn счетчиковой машины также сопоставим подпрограмму, см. рис. 2.4, завершающуюся в финальном состоянии, обозначенном двойным кружком, двухголовочного автомата
при активной первой считывающей головке. Начальным состоянием
двухголовочного автомата устанавливается новое состояние q0′ при
активной первой считывающей головке, для которого также приводится
подпрограмма (см. рис. 2.4). Смысл этой подпрограммы состоит в том,
чтобы прочитав первой головкой начальную конфигурацию счетчиковой машины, передать управление второй считывающей головке в состоянии q0 , которое соответствует начальному состоянию счетчиковой
машины.
За исключением подпрограмм для начального и финального состояний работа подпрограмм сводится к проверке того, удовлетворяют ли
две записанные на ленте соседние конфигурации счетчиковой машины
соответствующей команде (этой машины), которая переводит одну
конфигурацию в другую.
По построению двухголовочный автомат, моделирующий счетчиковую машину таким образом, будет допускать те и только те слова,
которые являются возможными конечными исполнениями этой счетчиковой машины.
О п р е д е л е н и е. Двухголовочный автомат называется пустым, если
он не допускает ни одного слова.
Т е о р е м а 2.18. Проблема пустоты двухголовочных автоматов не
является частично разрешимой.
2.2. Двухголовочные автоматы
57
Д о к а з а т е л ь с т в о. Используем проблему зацикливания счетчиковых
машин Минского и методом сведения. Предположим, что проблема
пустоты двухголовочных автоматов частично разрешима. Тогда оказывается частично разрешимой проблема зацикливания двухсчетчиковых
машин Минского. Действительно, частичный алгоритм распознавания
зацикливания сводится к следующим действиям.
1. Для заданной двухсчетчиковой машины Минского 2cM строится
двухголовочный автомат A, моделирующий работу машины 2cM .
2. Если частичный алгоритм, выясняющий пустоту автомата A,
обнаруживает, что автомат A не допускает ни одного слова, то
это значит, что машина 2cM зацикливается.
Существование частичного алгоритма распознавания зацикливания
двухсчетчиковых машин противоречит следствию 1.2, что и опровергает предположение о частичной разрешимости проблемы пустоты для
двухголовочных автоматов.
Т е о р е м а 2.19. Проблема эквивалентности двухголовочных автоматов не является частично разрешимой.
Д о к а з а т е л ь с т в о. Предположим противное. Тогда оказывается частично разрешимой проблема пустоты двухголовочных автоматов. Действительно, пусть A0 — произвольный фиксированный пустой двухголовочный автомат (пример такого автомата легко построить). Частичный алгоритм распознавания пустоты произвольного двухголовочного
автомата очевиден: надо установить, эквивалентен ли этот автомат
пустому A0 . Получили противоречие теореме 2.18.
Ранее в книге [7] факт отсутствия частичной разрешимости проблемы пустоты двухголовочных автоматов доказывался с помощью (сведением) проблемы зацикливания машин Тьюринга. Это доказательство
имеет громоздкий вид и при этом оформлено в виде наброска, в котором выражаются основные идеи моделирования двухголовочным автоматом работы машины Тьюринга над некоторым начальным словом.
В настоящей монографии же каждой команде счетчиковой машины
Минского соответствующая подпрограмма двухголовочного автомата,
моделирующая работу этой команды, сопоставлена в наглядном графическом виде.
Отметим, что последние две теоремы о свойствах двухголовочных
автоматов используются в теории схем программ для доказательства
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
58
Гл. 2. Двухсчетчиковые машины
отсутствия частичной разрешимости проблем пустоты и эквивалентности стандартных схем программ.
Глава написана на основе работ [7, 10, 16, 13, 24, 26]. Материал
по методу сведения базируется на источниках [24, 26]. Идеи доказательства неразрешимости представленных проблем для двухсчетчиковых машин Минского заимствованы из решений к упражнениям, приведенным в книге [26], в которых, однако, аналогичные задачи были
сформулированы для машин Тьюринга. Проблемы ограниченности для
двухсчетчиковых машин исследовались в статьях [16, 13]. Материал
о моделировании счетчиковых машин двухголовочными автоматами
взят из статьи [10].
Глава 3
ОДНОРЕГИСТРОВЫЕ МАШИНЫ
Глава посвящена проблемам «входа» и «выхода» (см. первую главу)
для двухсчетчиковых машин Минского, которые для удобства рассматриваются в виде однорегистровых машин.
3.1. Однорегистровые машины
При исследовании свойств двухсчетчиковых машин удобнее работать с ними в терминах однорегистровых машин. Поэтому сначала
мы дадим определение однорегистровых машин, а затем покажем,
каким образом двухсчетчиковые машины могут быть преобразованы
в однорегистровые. После этого работа по исследованию проблемы
входа и проблемы выхода двухсчетчиковых машин Минского будет
проводиться как в терминах двухсчетчиковых машин, так и на уровне
машин с одним регистром.
О п р е д е л е н и е. Однорегистровая машина 1RM имеет только один
регистр R, который может содержать неотрицательное целое число,
и расширенный по сравнению со счетчиковыми машинами набор типов
команд:
• Add K — увеличение значения регистра R на константу K;
• Mul K — умножение содержимого R на константу K;
• Sub1 — если R = 0, происходит переход (без изменения значения регистра R) к следующей команде вне нормальной последовательности; если R > 0, значение регистра R уменьшается
на единицу; эта команда полностью соответствует команде R−
счетчиковой машины;
• Div K — деление R на константу K > 0, в регистре R остается
частное от деления; далее в зависимости от остатка осуществляется переход в одно из K различных позиций, соответствующих
K возможным направлениям дальнейшего исполнения программы
(каждое из которых обозначается стрелкой);
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
60
Гл. 3. Однорегистровые машины
• Jump — переход к следующей команде без изменения значения
регистра; Jump∗ означает бесконечную петлю (переход к той же
самой команде);
• Halt — команда, означающая завершение исполнения программы;
результат работы машины 1RM находится в регистре R.
Константа K представляет собой неотрицательное целое число, которое
может быть разным в разных (в том числе однотипных) командах.
Во время работы (исполнения программы) машины 1RM значение K
в соответствующих командах изменяться не может (т. е. K не является
переменной).
Л е м м а 3.1 (О замене машин). Для любой двухсчетчиковой машины
Минского 2cM с нулевым начальным значением одного из счетчиков
может быть построена моделирующая ее работу однорегистровая
машина 1RM .
61
3.1. Однорегистровые машины
циклы не могут содержать подциклы, поскольку любой вложенный
цикл возвращается в основной цикл по стрелке нулевой ветки, которая
является частью основного цикла.
Следующий рисунок 3.1 (с восстановленными стрелками нулевых
веток) наглядно демонстрирует три строгих цикла.
...
A−
A−
A−
B+
Цикл 1
A+
A+
A+
B−
B−
A+
... n
Цикл 3
... z
Цикл 2
Рис. 3.1. Пример строгих циклов
Д о к а з а т е л ь с т в о. Перед тем как проводить доказательство, остановимся на основной идее. Дело в том, что, помимо увеличения и
уменьшения значений счетчиков на константы, двухсчетчиковая машина может осуществлять следующую важную последовательность
действий (вычислительный шаг): проводить умножение содержимого
одного из счетчиков на некоторое рациональное число P/Q, записывая
результат в другой счетчик и очищая при этом первый, с последующим
переходом в одно из Q различных мест в зависимости от остатка
(который получается после деления на Q).
Этот вычислительный шаг реализуется с помощью так называемых
«строгих циклов». Поэтому первая часть доказательства будет посвящена преобразованию произвольной двухсчетчиковой машины 2cM
к виду, позволяющему значительно упростить доказательство данного
утверждения.
Итак, рассмотрим машину 2cM с двумя счетчиками A и B, работу
которой предстоит смоделировать. Пусть в начальном состоянии счетчик B имеет нулевое значение.
Сначала определим понятие «строгий цикл». Допустим, что мы
на диаграмме программы машины 2cM временно удалили все стрелки, соответствующие нулевым веткам. Оставшиеся циклы называются
строгими. Строгим циклом является, например, замкнутая последовательность команд A+, A−, B+, B− и Jump (безусловный переход,
в данном случае ведущий к первой команде). Отметим, что строгие
Команда в строгом цикле называется точкой входа, если она может
быть достигнута (за один шаг) после выполнения команды «Старт»,
некоторой команды вне цикла или после перехода по нулевой ветке
какой-либо команды «−» другого цикла. На приведенном выше рисунке
строгие циклы 1 и 3 имеют по одной точке входа, а строгий цикл 2
содержит две входные точки.
Преобразуем машину 2cM таким образом, чтобы все ее строгие
циклы имели только лишь по одной точке входа. Для каждого строгого цикла, имеющего более одной точки входа, создадим столько
его копий, сколько избыточных точек входа он содержит. Каждая
копия и оригинал будут иметь различные и единственные входные
точки. Избыточные входы в оригинальный строгий цикл удаляются и перенаправляются в соответствующие (каждый в свою) копии
этого цикла. Выходы из копий цикла направляются в выход (или
выходы) оригинального строго цикла. Это преобразование порождает
достаточно много выходных стрелок, но не создает каких-либо новых
строгих циклов (не считая, конечно, копий оригинальных) или же
новых входных точек строгих циклов. Таким образом, модифицированная программа двухсчетчиковой машины 2cM будет иметь несколько
большие размеры (см. рис. 3.2) по сравнению с исходной программой,
но сохранит прежнее вычислительное поведение (последовательность
изменений значений счетчиков).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
62
Гл. 3. Однорегистровые машины
A−
A−
A−
B+
...
Цикл 1
B−
A+
A+
A+
A+
B−
A+
A+
A+
B−
... n
Цикл 3
Цикл 2б
... z
Цикл 2а
Рис. 3.2. Строгие циклы с одной точкой входа
Правило 1:
Правило 2:
Правило 3:
X+
X−
...
=
X+
Y−
...
=
Y−
X+
=
Y+
X+
X+
Y+
X−
Y−
... u
... v
Правило 5:
X−
X+
...
=
Правило 6:
X−
Y+
...
=
Правило 4:
=
удаление
Y−
X−
Регулярным циклом будем называть строгий цикл с одной точкой
входа, в котором все команды вычитания едницы «−» идут непосредственно после входной точки и предшествуют всем командам «+».
Точку после всех команд «−» и перед командами «+» в регулярном
цикле назовем средней точкой цикла. Строгий цикл с одной точкой
входа может быть превращен в регулярный посредством конечной последовательности преобразований. При этом достаточно использовать
лишь первое и второе правила из списка правил преобразований,
представленного на рис. 3.3.
Правила 3–6 включены в список для полноты. Заметим, что правила
2, 4 и 6 недействительны, если X и Y представляют собой один и тот
же счетчик. Преобразования также являются недопустимыми, если они
применяются в ситуации, когда вторая команда из рассматриваемой
пары команд является точкой входа. Поскольку мы уже сделали так,
что все строгие циклы имеют лишь по одной точке входа, после
проведения необходимых преобразований все теперь уже регулярные
циклы также будут иметь по одной точке входа (см. рис. 3.4).
...
X+
...
A−
A−
A−
B+
Цикл 1
Y+
X−
... u
... v
без изменений
Y+
X−
63
3.1. Однорегистровые машины
A+
B−
A+
A+
A+
A+
B−
A+
B−
A+
... n
Цикл 3
A+
Цикл 2б
A+
A+
... z
Цикл 2а
Рис. 3.4. Регулярные циклы
Y−
...
Рис. 3.3. Набор правил преобразования строгих циклов с одной точкой входа
в регулярные циклы
Предположим теперь, что все строгие циклы были регуляризированы. Программа машины 2cM после преобразований, возможно, стала
немного длиннее, но при этом новых точек входа и новых строгих
циклов создано не было.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
64
Гл. 3. Однорегистровые машины
Число команд в получившейся расширенной программе двухсчетчиковой машины 2cM обозначим I.
Следующий шаг — введение промежуточной полуторарегистровой
машины 1,5RM . Далее будет доказано, что любую двухсчетчиковую
машину 2cM можно смоделировать с помощью полуторарегистровой
машины 1,5RM ; и наоборот, любая машина 1,5RM моделируется
машиной 2cM .
Полуторарегистровая машина 1,5RM представляет собой однорегистровую машину 1RM с определенным количеством дополнительной
памяти. Машина 1,5RM имеет «флаг» F , который предназначается
для указания того, какой из счетчиков A или B в текущий момент
времени задается регистром R. Более того, машина 1,5RM имеет
также еще один (дополнительный) регистр, который обозначается OR
(от англ. Other Register). Регистр OR способен хранить лишь целые
числа от 0 до I + 1 и задает оставшийся счетчик из A и B, не представленный основным регистром R. Программа полуторарегистровой
машины 1,5RM содержит дополнительные команды
счетчик, то цель достигнута, если же это не так, необходимо произвести обмен содержимого регистров R и OR и поменять значение флага
F на противоположное (выполнить команду Comp F ).
Итак, промоделируем двухсчетчиковую машину 2cM полуторарегистровой машиной 1,5RM . В начальном состоянии машины 2cM
регистр R представляет счетчик A, флаг F отображает эту ситуацию
как R : A, а регистр OR соответствует счетчику B (который содержит
нулевое значение). Все команды A+, A−, B+ и B− машины 2cM ,
находящиеся вне строгих циклов, переводятся в эквивалентные подпрограммы машины 1,5RM , представленные на рис. 3.5.
=
A+
R: A
...
...
R:B
• OR−,
A−
• Set OR to 0 (или просто Zero OR),
... n
... z
=
...
Если вспомогательный регистр OR содержит значение I + 1, то команда OR+ является недопустимой. В различных местах доказательства нам потребуется проверять выполнимость неравенства
OR 6 I.
Для простоты выполнения этого мы будем осуществлять моделирование перехода по нулевой ветке машины 2cM с помощью команд машины 1,5RM таким образом, чтобы всегда после завершения (модели)
указанного перехода по нулевой ветке выполнялось условие OR = 0.
Поскольку срабатывание перехода по нулевой ветке означает, что один
из счетчиков A или B имеет нулевое значение, следовательно, если
регистр OR в данный момент времени представляет этот «нулевой»
OR +
R: A
Sub 1
R:B
OR −
Test F
Add OR to R
Zero OR
Comp F
... z
... n
• Test F ,
• Complement F (или Comp F ).
Add 1
Test F
• OR+,
• Add OR to R,
65
3.1. Однорегистровые машины
Рис. 3.5. Правила замены команд двухсчетчиковой машины 2cM , находящихся
вне строгих (регулярных) циклов, на эквивалентную подпрограмму полуторарегистровой машины 1,5RM
Аналогичные подпрограммы машины 1,5RM строятся и для команд
B+ и B− вне строгих циклов. Такого рода трансляция предполагает
применение Test F для каждой команды машины 1,5RM . Однако
большинство команд Test F может быть удалено простым перераспределением потока передачи управления.
Мы несколько небрежно сопоставили для команды A+ подпрограмму машины 1,5RM , содержащую команду OR+. Дело в том, что
для корректного выполнения этого шага необходима уверенность в
справедливости неравенства OR 6 I. Но, как будет доказано далее,
3 Кузьмин Е. В., Соколов В. А.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
66
Гл. 3. Однорегистровые машины
фактически это неравенство оказывается справедливым в любой момент выполнения программы машины 1,5RM (моделирующей работу
машины 2cM ).
Для начала заметим, что равенство OR = 0 возможно лишь в трех
случаях.
1. В начальном состоянии машины.
2. Всякий раз после реализации перехода по нулевой ветке (вне
строгого цикла).
3. Непосредственно после выхода из строгого цикла (это условие
появится далее после определения правил моделирования строгого цикла).
3.1. Однорегистровые машины
67
выйдет из цикла в этой части, будет выполняться условие OR = 0, поскольку выполнится подпрограмма машины 1,5RM , соответствующая
команде «−» машины 2cM . Значение флага F не будет меняться до тех
пор, пока не произойдет выход из цикла. Поэтому после замены при
желании могут быть удалены все, кроме одной, команды Test F .
Предположим, что программа достигла средней точки цикла. Тогда
мы выполняем команду Test F ; каждая ветка этой команды направляется в копию соответствующей подпрограммы, представленной ниже.
Опишем R : A и OR : B ветку.
Поскольку с тех пор, как мы вошли в цикл, значение флага F
не изменялось, в точке входа имеем OR : B. Следовательно, в момент
входа в цикл выполнялось неравенство B 6 I.
Возможны три случая.
В любом месте программы вне строгого цикла не более чем I
команд машины 2cM может быть выполнено с момента последнего
появления одного из трех указанных выше событий. Если рассмотреть
исполнение последовательности, состоящей из I + 1 команд, то она
обязательно будет содержать некоторую команду дважды. Но путь
между двумя срабатываниями повторяемой команды не может проходить по какой-либо нулевой ветке; следовательно, этот путь будет
строгим циклом. Но мы, по условию, должны находится вне строгих
циклов программы. Таким образом, поскольку самое большее I команд
машины 2cM может быть выполнено с последнего нулевого значения
регистра OR, емкость регистра OR ограничена числом I.
Рассмотрим теперь, каким образом осуществляется моделирование
регулярных циклов. Определим шесть констант Aplus, Bplus, Aminus,
Bminus, dA и dB. Константа Aplus представляет собой количество
команд A+ в регулярном цикле; Aminus — количество команд A−;
dA = Aplus − Aminus. Аналогичным образом определяются константы
Bplus, Bminus и dB.
Отметим, что в точке входа регулярного цикла справедливы следующие два условия.
1. dA > 0 и dB > 0. Тогда программа машины 2cM будет находится
в цикле бесконечно долго (т. е. никогда не выйдет из цикла).
В этом случае заменим программный код после средней точки
командой Jump∗ .
2. dB < 0. В оставшейся части цикла (после средней точки) заменяем A+ на Add 1 и B+ на OR+. Когда программа опять
вернется в точку входа, то значение счетчика B будет меньше
значения этого же счетчика непосредственно в момент входа
в цикл (а точнее, значение счетчика B при возврате в точку входа
равняется значению B в момент входа в цикл плюс константа dB).
Получаем, что значение счетчика B 6 I в любом месте цикла.
Таким образом, имеем OR 6 I в любом месте модели этого
цикла. Когда же, наконец, происходит выход из цикла (по нулевой ветке), то при этом выполняется условие OR = 0. Заметим,
что мы не можем точно сказать без дополнительной информации
(предварительных вычислений), через какую именно команду A−
или B− произойдет выход из цикла.
3. dA < 0 и dB > 0. Если программа после входа в цикл достигает
(в первый раз) средней точки, это означает, что выход из цикла
не может произойти по команде B−, так как значение счетчика B
не уменьшается после полного успешного прохода цикла (от точки входа до точки входа).
1. OR 6 I исходя из обоснований, приведенных выше.
2. Программа выйдет из цикла до полного прохода следующего
витка цикла тогда и только тогда, когда
A < Aminus или B < Bminus.
Пусть имеем A = Amid и B = Bmid в средней точке цикла
при самом первом попадании в нее. Один полный проход цикла
прибавляет dA к A и dB к B. После K проходов цикла от средней
В первой части цикла, от точки входа до средней точки, используется замена, приведенная выше для команды «−». Если программа
3*
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
68
Гл. 3. Однорегистровые машины
3.1. Однорегистровые машины
69
точки до средней точки имеем (−dA будет положительным, так
как dA < 0)
Div ( −dA )
A = Amid + KdA = Amid − K(−dA),
B = Bmid + KdB.
Программа машины 2cM будет возвращаться в среднюю точку
цикла в точности
L = [Amid/(−dA)]
раз — до тех пор, пока A > 0 в средней точке. ([N ] — наибольшее
целое число меньшее или равное N .)
Подпрограмма полуторарегистровой машины 1,5RM , представленная на рис. 3.6, моделирует L проходов цикла от средней
точки до средней точки (часть цикла от точки входа до средней
точки моделируется уже рассмотренным выше способом).
После выполнения этой подпрограммы выход из цикла произойдет до возврата в среднюю точку. Необходимо удостовериться в
справедливости неравенства OR 6 I в момент перехода в начало
цикла (в точку входа):
OR = Aplus + Rem < Aplus + (−dA) =
= Aplus − (Aplus − Aminus) = Aminus 6 I.
Это также подтверждает, что выход из цикла произойдет до достижения машиной 2cM средней точки. Выход будет осуществлен
через команду A−, при этом будет выполняться условие OR = 0.
Таким образом, мы позаботились о выполнении условия OR 6 I как
внутри регулярных циклов, так и при выполнении команд вне какоголибо регулярного цикла. Построенная по приведенным выше правилам
полуторарегистровая машина 1,5RM моделирует регуляризированную
двухсчетчиковую машину 2cM .
Теперь преобразуем полуторарегистровую машину 1,5RM в однорегистровую машину 1RM . Для каждого состояния машины 1,5RM
создадим 2(I + 2) состояний машины 1RM — по одному состоянию
на каждую комбинацию значений флага F и регистра OR. Команды
OR+, OR−, Zero OR, Test F и Comp F становятся командами Jump
между различными состояниями машины 1RM . Команда Add OR to R
заменяется на Add K.
Остаток =
0
(Копия этой
подпрограммы
содержится на
конце каждой
стрелки деления)
1
...
(теперь R содержит L)
(−dA) − 1
Mul dB
Add OR to R
Comp F
Set OR to 0
Set OR to Rem
Add Bplus (to R)
(R содержит Bmid + LdB)
(Rem раз выполнить OR+)
(OR = Rem =
= Amid − L ( −dA ) =
= Amid + LdA )
(Все эти команды
моделируют последний
проход машины 2cM
через набор "+"-команд)
(Aplus раз выполнить OR+)
Add Aplus to OR
Jump в точку входа цикла
Рис. 3.6. Подпрограмма полуторарегистровой машины 1,5RM , моделирующая
L проходов регулярного цикла от средней точки до средней точки двухсчетчиковой машины 2cM
З а м е ч а н и я п о л е м м е 3.1. В формулировке леммы перед тем, как
моделировать поведение двухсчетчиковой машины с помощью однорегистровой машины, требуется, чтобы один из двух счетчиков машины Минского имел нулевое значение. Такое требование не является
каким-либо ограничением. Действительно, любая машина 2cM с двумя
счетчиками A и B, имеющая начальную конфигурацию (q0 , N1 , N2 ),
может быть легко преобразована с помощью N2 команд B+ в двухсчетчиковую машину 2cM ′ с начальной конфигурацией (q0′ , N1 , 0) таким
образом, что, начав работу с конфигурации (q0′ , N1 , 0), машина 2cM ′
через N2 шагов будет вести себя в точности так, как машина 2cM ,
запущенная из конфигурации (q0 , N1 , N2 ).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
70
Гл. 3. Однорегистровые машины
Л е м м а 3.2 (Дополнение к лемме о замене машин). При моделировании двухсчетчиковой машины 2cM все константы K в командах
однорегистровой машины 1RM достаточно взять такими, чтобы
размер каждой из них не превышал количество команд в программе
оригинальной машины 2cM .
Д о к а з а т е л ь с т в о. Каждая команда Add K может быть разбита на
последовательность из K команд Add 1. Для команд Mul K и Div K
заметим, что приведенные выше конструкции для регуляризации строгих циклов не делают строгий цикл длиннее, чем он был в оригинальной машине 2cM . Величина констант K в командах Mul и Div никогда
не превосходят длину регулярного цикла, в моделировании которого
они участвуют. В свою очередь длина любого цикла ограничена размером моделируемой машины 2cM .
Итак, мы показали, что двухсчетчиковые машины могут моделироваться однорегистровыми машинами. Очевидно, что справедливо
и обратное утверждение. Моделирование соответствующих команд
однорегситровой машины с помощью подпрограмм (последовательностей команд) двухсчетчиковых машин оставляем в качестве простого
упражнения.
Т е о р е м а 3.1. Для любой однорегистровой машины 1RM может
быть построена моделирующая ее двухсчетчиковая машина 2cM .
С л е д с т в и е 3.1. Функция F (X) вычислима двухсчетчиковой машиной Минского 2cM тогда и только тогда, когда она вычислима
однорегистровой машиной 1RM .
Отметим, что если программа машины 1RM когда-либо совершает
переход по нулевой ветке некоторой команды Sub 1, то нам известны
состояние машины, в которое ведет этот переход, следующая команда,
готовая к выполнению, а также имеем R = 0. Таким образом, при
необходимости мы можем заменить код программы, следующий за
переходом по нулевой ветке команды Sub 1, подпрограммой, которая
устанавливала бы значение регистра R в окончательный ответ (тот,
который получается в результате выполнения заменяемого куска кода
с нулевого значения регистра R) и завершала бы работу машины
или же совершала переход в бесконечный цикл (если этого требует
оригинальный программный код машины). Программный код замены
3.2. Теоремы по проблеме «входа»
71
имеет вид
«Add K, Halt» или «Jump∗ ».
Такая же последовательность действий (замена кода) применима (по
той же аргументации) и для команды Mul 0.
Нулевую ветку команды Sub 1 и команду Mul 0 будем называть
оцененными, или вычисленными, если они непосредственно предшествуют либо «Add K, Halt», либо «Jump∗ ». Последовательность команд
«Mul 0, Jump∗ » может быть заменена просто на «Jump∗ ». Оценка
нулевой ветки Sub 1 зачастую позволяет нам игнорировать ветвление
команды Sub 1 и рассматривать только основные строки кода программы (идущие в нормальной последовательности).
3.2. Теоремы по проблеме «входа»
Возможность представления машин Минского с двумя счетчиками
в виде однорегистровых машин позволяет нам сформулировать центральную теорему о проблеме входа двухсчетчиковых машин.
Т е о р е м а 3.2 (О проблеме входа двухсчетчиковых машин). Не существует двухсчетчиковой машины, вычисляющей (реализующей)
функцию F (X) = 2X .
Д о к а з а т е л ь с т в о. Предположим противное. Пусть мы имеем двухсчетчиковую машину 2cM , которая вычисляет F (X) = 2X .
Преобразуем 2cM в эквивалентную однорегистровую машину 1RM .
Произведем оценку (вычисление) нулевых веток всех команд Sub 1
(большинство значений этих веток, вероятно, будут иметь степень
двойки, соответственно ответам функции).
Поскольку существует бесконечно много степеней двойки при конечном числе команд Sub 1, мы можем найти такое N , начав работу
с которого машина 1RM остановится с результатом 2N , но выполненная последней команда Halt не будет находиться в конце нулевой ветки
команды Sub 1.
Исследуем программное исполнение, а точнее последовательность
пройденных команд, для такого начального N . Это исполнение всегда
будет проходить по ненулевым веткам команд Sub 1 (если, конечно,
оно будет включать в себя команды Sub 1).
Рассмотрим в отдельности каждую команду, через которую проходит исследуемое исполнение. Перемножим все делители (константы
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
72
Гл. 3. Однорегистровые машины
команд вида Div K), встречающиеся в исполнении. Причем константаделитель входит в произведение столько раз, сколько раз исполнение
проходит через команду, содержащую эту константу. Обозначим такое произведение D. Поскольку все константы-делители ненулевые,
то и произведение D не может быть нулем. Теперь таким же образом
рассмотрим все команды вида Mul K, которые встречаются в исполнении. Перемножим все константы-множители с учетом повторений
и обозначим это произведение M .
Воспользуемся утверждением, справедливость которого будет доказана в следующей теореме 3.3. Если запустить машину 1RM при
значении регистра
R = N + jD,
где j > 0, тогда 1RM пройдет по командам тот же самый путь, который
она прошла, будучи запущена при R = N , а результатом исполнения
будет значение
2N + jM.
Но это невозможно, поскольку функция F (X) = 2X растет намного
быстрее, чем любая арифметическая прогрессия. Следовательно, заявленной двухсчетчиковой машины 2cM существовать не может. Пришли
к противоречию.
Т е о р е м а 3.3 (Об арифметической прогрессии). Пусть двухсчетчиковая машина Минского 2cM вычисляет некоторую функцию F (X)
(F может быть частичной). Тогда область значений функции F
содержит конечное подмножество S такое, что для любого N ,
для которого значение функции F (N ) определено и находится вне
множества S, существуют целые D > 0 и M > 0 такие, что
F (N + jD) = F (N ) + jM
для всех целых j > 0. Более того, числа D и M не имеют простых
делителей, больших, чем I, где I — количество команд двухсчетчиковой машины 2cM .
Д о к а з а т е л ь с т в о. Заменим машину 2cM эквивалентной однорегистровой машиной 1RM . Произведем оценку (вычисление) нулевых
веток всех команд Sub 1 и команд Mul 0. Возьмем в качестве множества S множество значений регистра R, которые были получены
в результате оценки нулевых веток команд Sub 1 и команд Mul 0.
3.2. Теоремы по проблеме «входа»
73
Возьмем такое N , для которого значение функции F (N ) определено
и находится вне множества S. Запустим (из начального состояния)
машину 1RM при значении регистра
R = N.
Машина остановится через некоторое время (число шагов) t с результатом F (N ) в регистре R. Теперь мы должны обеспечить такие целые
числа M и D, чтобы
F (N + jD) = F (N ) + jM
для всех целых j > 0 (т. е. j ∈ N, где N — множество целых
неотрицательных чисел).
Рассмотрим путь (исполнение), который проходит однорегистровая
машина 1RM от начального состояния при R = 0 до заключительного
состояния с итоговым значением R = F (N ). Обозначим I(n), или
просто In , команду, которая имеет номер n по порядку в этом пути;
1 6 n 6 t; I(t) — команда Halt.
Определим Mn , константу-множитель команды с номером n на рассматриваемом пути, следующим образом. Если команда In = Mul K,
тогда Mn = K. Иначе, Mn = 1.
Подобным образом определим Dn , константу-делитель с номером n.
Если In = Div K, тогда Dn = K. Иначе, Dn = 1.
Далее, обозначим Rn содержимое регистра R после выполнения
команды In . R0 — начальное значение R.
Положим
M = M 1 M 2 M 3 . . . M t и D = D1 D2 D3 . . . Dt .
Поскольку все множители Mi должны быть больше 0, то и M будет
больше 0. Если хотя бы один из Mi имел бы нулевое значение,
машина 1RM остановилась бы на i-м шаге со значением (записанным
в регистре R), являющимся элементом множества S. Но по условию
F (N ) не принадлежит S. Аналогичным образом, произведение D > 0,
так как все Di > 0. Более того, каждое из Mi и Di меньше или равно I.
Получаем, что M и D не имеют простых делителей, больших, чем I.
Итак, утверждается, что если однорегистровая машина 1RM начнет
работу при
R = N + jD,
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
74
Гл. 3. Однорегистровые машины
3.2. Теоремы по проблеме «входа»
где j ∈ N, то она пройдет путь по тем же самым командам, как если
бы стартовала при
R = N,
Если In = Mul K, то Nn = Nn−1 ∗ K, Mn = K и Dn = 1.
Rn
и остановится с результатом
R = F (N ) + jM.
Пусть Nn — это значение Rn , когда однорегистровая машина 1RM
стартует при R = N . Тогда N0 = N и Nt = F (N ). Доказательство
заявленного утверждения проводится индукцией формулы
Rn = Nn + j M1 M2 . . . Mn Dn+1 . . . Dt
(3.1)
по длине общего пути (по командам) машины 1RM для входов R = N
и R = N + jD.
Базис индукции:
R0 = N0 + jD = N + jD.
Предположение индукции. Пусть оба исполнения прошли одинаковый путь вплоть до n − 1 шага и уравнение 3.1 справедливо для n − 1.
Необходимо рассмотреть все возможные случаи следующей машинной
команды In .
Если In = Add K, то Nn = Nn−1 + K и Mn = Dn = 1.
Rn
=
=
=
Rn−1 + K =
Nn−1 + j M1 . . . Mn−1 Dn Dn+1 . . . Dt + K =
Nn + j M1 . . . Mn−1 Mn Dn+1 . . . Dt .
Если In = Sub 1, то Nn−1 > 0, так как исполнение, соответствующее F (N ), всегда проходит по ненулевым веткам команд Sub 1;
Nn = Nn−1 − 1. Все Mi и Di имеют значение большее 0; j > 0;
следовательно, Rn−1 > Nn−1 > 0. Таким образом, R-исполнение также
будет проходить через ненулевую ветку команды Sub 1; Rn = Rn−1 − 1,
Mn = Dn = 1.
Rn
= Rn−1 − 1 =
= Nn−1 + j M1 . . . Mn−1 Dn Dn+1 . . . Dt − 1 =
= Nn + j M1 . . . Mn−1 Mn Dn+1 . . . Dt .
75
=
=
=
=
Rn−1 ∗ K =
{Nn−1 + j M1 . . . Mn−1 Dn . . . Dt } ∗ K =
Nn + j M1 . . . Mn−1 K 1 Dn+1 . . . Dt =
Nn + j M1 . . . Mn−1 Mn Dn+1 . . . Dt .
Если In = Div K, то Dn = K и Mn = 1; Nn = [Nn−1 /K] и остатком
является Nn−1 − K Nn ; Rn = [Rn−1 /K], а остатком будет Rn−1 − K Rn .
Rn
=
=
=
[{Nn−1 + j M1 . . . Mn−1 Dn . . . Dt }/K] =
[Nn−1 /K] + j M1 . . . Mn−1 Dn+1 . . . Dt =
Nn + j M1 . . . Mn−1 Mn Dn+1 . . . Dt .
Rn−1 − K Rn
= Nn−1 + j M1 . . . Mn−1 Dn . . . Dt −
− K (Nn + j M1 . . . Mn Dn+1 . . . Dt ) =
= Nn−1 − K Nn .
Остатки от деления значения регистра R на число K являются одинаковыми в обоих исполнениях машины 1RM . Следовательно, оба
исполнения пройдут по одной и той же ветке команды Div K.
Если In представляет собой Jump или Halt, то Mn = Dn = 1, что
оставляет уравнение 3.1 истинным.
Итак, мы доказали, что все виды команд сохраняют истинность
уравнения 3.1, а также то, что оба исполнения проходят по одним
и тем же веткам команд, допускающих альтернативные направления
исполнения программы. Таким образом, в момент времени t (после
t шагов) оба исполнения, стартовав соответственно при значениях
регистра N и N + jD, завершатся с результатом
Nt = F (N ),
Rt = Nt + j M1 . . . Mt = F (N ) + j M ,
что и требовалось доказать.
О п р е д е л е н и е. Для произвольной частичной функции F определим
множество Sp , где p является простым числом, как множество всех
таких N , которые удовлетворяют следующим двум условиям.
1. N ∈ N — это целое неотрицательное число, а значение F (N )
определено.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
76
Гл. 3. Однорегистровые машины
2. Для каждого целого положительного числа D, не имеющего
простых делителей, больших p, если F (N + jD) определено для
всех j ∈ N, тогда функция F (N + jD) является нелинейной
функцией от j > 0.
Обозначим Sp′ множество всех таких N , которые удовлетворяют
условиям (1) и (2′ ).
2′ . Для каждого целого D > 0, не имеющего простых делителей,
больших p, частичная функция F (N + jD) в своей области
определения является нелинейной функцией от j ∈ N.
Следовательно, по определению имеем Sp′ ⊆ Sp . А также, если q
является простым числом, большим p, тогда множество Sp содержит
множество Sq , а Sp′ содержит Sq′ .
Пусть F — функция, а S — множество, тогда обозначим F (S)
множество {F (e) | e ∈ S}.
Следующая теорема по существу является контрапозицией теоремы
«Об арифметической прогрессии», т. е. теоремы 3.3.
Т е о р е м а 3.4 (Контрапозиция теоремы 3.3). Предположим, что множество F (Sp ) является бесконечным для любого простого числа p.
Тогда функция F не может быть вычислена никакой двухсчетчиковой машиной. Более того, если для всех p множество F (Sp′ ) также
является бесконечным, то не существует вычислимого продолжения (расширения) функции F .
Д о к а з а т е л ь с т в о. Пусть множество F (Sp ) бесконечно для любого
простого числа p. Предположим, что некоторая двухсчетчиковая машина 2cM вычисляет функцию F . Тогда по теореме 3.3 существует
конечное множество S такое, что если значение F (N ) находится вне S,
то существуют D > 0 и M > 0 такие, что
F (N + jD) = F (N ) + jM
для любого j ∈ N. Выберем целое p, большее общего числа команд
программы машины 2cM . Возьмем N ∈ Sp такое, что F (N ) ∈
/ S.
Найдем (вычислим) числа D и M для исполнения, соответствующего
этому N . Тогда получаем, что D не имеет простых делителей, больших p, а F (N + jD) = F (N ) + jM для всех j > 0, т. е. F является
линейной функцией от j, что противоречит условию (2) определения
множества Sp .
3.2. Теоремы по проблеме «входа»
77
Теперь предположим, что множество F (Sp′ ) бесконечно для всех
простых p и что двухсчетчиковая машина 2cM вычисляет функцию G,
которая является продолжением функции F . Построим множество S
таким, чтобы из определенности функции G на N и непринадлежности
G(N ) к S следовало существование D и M (по теореме 3.3). Выберем
такое N ∈ Sp′ , что F (N ) ∈
/ S. Поскольку G является продолжением
функции F , то G(N ) = F (N ). Следовательно, G(N ) ∈
/ S. Тогда
существуют M > 0 и D > 0 такие, что D не имеет простых делителей,
больших p, и
G(N + jD) = G(N ) + jM
для всех j > 0. Отсюда, любое сужение функции G, в частности
функция F , будет удовлетворять этому уравнению во всех точках
N + jD при j ∈ N,
в которых оно определено. Но это противоречит условию (2′ ).
О п р е д е л е н и е. Зададим арифметический ряд с начальным элементом A > 0 и разностью арифметической прогрессии D > 0 как
множество
{A + jD | j > 0}.
Арифметический ряд с числами A < 0 и D 6 0 считается недопустимым. Ряды, начинающиеся с элементов A и A + D соответственно,
являются различными, так как первый ряд имеет на один элемент
больше.
Введенное определение позволяет нам сформулировать важное
следствие теоремы 3.4 (контрапозиции теоремы об арифметической
прогрессии).
С л е д с т в и е 3.2. Пусть двухсчетчиковая машина 2cM вычисляет
функцию F (X). Тогда существует такое пороговое число T , что
множество
{N | F (N ) > T }
является объединением совокупности (возможно даже пустой или
бесконечной) взаимно непересекающихся арифметических рядов.
Разности прогрессий этих арифметических рядов имеют ограниченные простые делители. Функция F отображает каждый ряд
в другой арифметический ряд. Разности прогрессий рядов-образов
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
78
Гл. 3. Однорегистровые машины
также имеют ограниченные простые делители. Область значений
функции F представляет собой объединение конечного множества
и (возможно, пустой или бесконечной) совокупности арифметических рядов.
В частности, если функция F (X) является неограниченной
при X, стремящемся к бесконечности, то и область определения,
и область значений функции F должны содержать арифметические
ряды.
З а м е ч а н и е п о с л е д с т в и ю 3.2. Следствие производит такое впечатление, что между областью определения и областью значений функции F существует различие, которое состоит, скажем, в том, что область определения является взаимно непересекающимся объединением
совокупности рядов, а область значений представляет собой только
объединение. Однако это различие всего лишь кажущееся, поскольку
если множество является объединением совокупности арифметических
рядов, то оно может быть представлено в виде объединения совокупности других арифметических рядов, которые будут взаимно непересекающимися.
3.3. Теоремы по проблеме «выхода»
На основе теоремы 3.4 и следствия 3.2 проводятся доказательства
теорем, имеющих непосредственное отношение к проблеме выхода для
двухсчетчиковых машин.
Т е о р е м а 3.5. Функции Exactsqrt и Exactlog2, определенные ниже,
не могут быть реализованы двухсчетчиковой машиной.
√
Exactsqrt(X) = X, если X — полный квадрат числа; иначе,
значение функции не определено.
Exactlog2(X) = log2 (X), если X — степень двойки; иначе, значение функции не определено.
Д о к а з а т е л ь с т в о. Обе рассматриваемые функции являются неограниченными, но их области определения не содержат арифметических
рядов.
О п р е д е л е н и е. Далее по тексту фраза «функция F (X) имеет нелинейную скорость роста» означает, что F (X)/X при X → ∞ стремится
3.3. Теоремы по проблеме «выхода»
79
либо к нулю, либо к бесконечности (область определения функции F
является бесконечным множеством).
Если функция F (X) имеет нелинейную скорость роста и F (A+ jD)
определено для бесконечно многих j > 0, тогда функция F (A + jD)
в той области, где она определена, представляет собой нелинейную
функцию от j. Опираясь на теорему 3.4, имеем справедливость следующей теоремы.
Т е о р е м а 3.6. Если F (X) — это всюду определенная монотонная
неограниченная функция с нелинейной скоростью роста, то она
не может быть реализована никакой двухсчетчиковой машиной.
√
С л е д с т в и е 3.3. Функция F (X) вида X 2 , 2X , [log2 X], [ X], Fib(X)
или т. п. не может быть реализована двухсчетчиковой машиной
([N ] — наибольшее целое число меньшее или равное N , Fib(N ) —
N -е число Фибоначчи).
Отметим, что это следствие не решает проблему выхода для двухсчетчиковых машин, так как функция F (X) = [log2 X] является более
сильной, чем нам необходимо. Проблема выхода требует лишь, чтобы
двухсчетчиковая машина 2cM отображала 2N в N для всех целых
чисел N > 0, т. е. чтобы только точные степени двойки обрабатывались
корректно. Ничего не говорится о том, как должна вести себя машина 2cM , когда получает на вход число, не являющееся точной степенью
двойки. Фактически, мы знаем лишь то, что любая двухсчетчиковая
машина 2cM , решающая проблему выхода, будет вычислять функцию,
область определения которой должна содержать арифметические ряды.
Т е о р е м а 3.7. Пусть F (X) — это (возможно, частичная) неограниченная монотонная функция с нелинейной скоростью роста. Пусть
для бесконечно многих N из области определения функции F и для
всех D > 0 существует j такое, что F (N + jD) также определено.
Тогда функция F и все ее продолжения не могут быть реализованы
никакой двухсчетчиковой машиной.
Д о к а з а т е л ь с т в о. Из условия «для всех D > 0 существует j такое,
что F (N + jD) определено» следует, что для всех D > 0 существует
бесконечно много таких j, что F (N + jD) определено. Действительно,
для конкретных N и D′ обозначим J последний из подходящих j.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
80
Гл. 3. Однорегистровые машины
3.3. Теоремы по проблеме «выхода»
Рассмотрим новое число D, имеющее вид 2JD′ . Значение
′
F (N + j2JD )
определено для некоторого j > 0; но тогда 2jJ будет новым j для D′ .
Отсюда, для всех D > 0 функция F (N + jD), где N такое, что
значение F (N ) определено, является нелинейной функцией от j. Таким
образом, по теореме 3.4 функция F и все ее продолжения не могут быть
реализованы двухсчетчиковой машиной.
Иначе эту теорему можно сформулировать следующим образом.
Пусть F (X) — (возможно, частичная) неограниченная монотонная
функция с нелинейной скоростью роста. Число N не допускается,
или исключается, числом D, если область определения функции F
содержит только конечное множество чисел, равных N по модулю D.
Если значение F (N ) определено и N не исключается числом D,
тогда N допускается (числом D). Предположим, что (обязательно
бесконечное) подмножество области определения функции F является
допустимым. Тогда функция F не может быть реализована двухсчетчиковой машиной.
Воспользуемся теоремой 3.7 для доказательства следующих двух
теорем о невозможности реализации двухсчетчиковой машиной некоторых конкретных частичных монотонных неограниченных функций
с нелинейной скоростью роста при заранее оговоренном множестве
входных значений специального вида.
√
Т е о р е м а 3.8. Функция F (X) = X не может быть реализована
двухсчетчиковой машиной, даже если каждое входное значение
переменной X гарантированно будет полным квадратом числа.
Т е о р е м а 3.9. Функция F (X), обратная к функции Fib(X), не может быть реализована никакой двухсчетчиковой машиной, даже
если все входные значения переменной X гарантированно будут
числами Фибоначчи.
Д о к а з а т е л ь с т в о. Достаточно показать (исходя из утверждений
предыдущих теорем), что для любого N и любого D > 0 существует
такое j, что Fib(N ) + jD является числом Фибоначчи, т. е. существует
такое число Q ∈ N, что
Fib(N + Q) = Fib(N ) + jD.
Итак, нам необходимо найти такое Q, для которого бы выполнялось
следующее равенство
Fib(N ) ≡ Fib(N + Q) (mod D).
Докажем существование такого числа Q в пределах 0 < Q 6 D2 .
Рассмотрим множество, состоящее из различных пар вида
(Fib(I), Fib(I+1)) (mod D).
Размер этого множества не превосходит D2 . Значит, существуют такие
числа J и K, 0 6 J < K 6 D2 , что
Fib(J) ≡ Fib(K) (mod D) и Fib(J + 1) ≡ Fib(K + 1) (mod D).
Отсюда следует справедливость уравнения
Fib(J + X) ≡ Fib(K + X) (mod D)
для всех целых чисел X. Приняв
2
Д о к а з а т е л ь с т в о. Выберем N = z , где z ∈ N. Тогда для любого
числа D > 0 существует бесконечно много j таких, что N + jD будет
полным квадратом. Действительно, достаточно взять
j = 2zh + Dh2 ,
где h — это произвольное неотрицательное целое число.
Эта теорема утверждает больше, чем теорема о функции Exactsqrt.
Она утверждает, что никакое расширение функции Exactsqrt не может
быть вычислено двухсчетчиковой машиной. Если бы удалось доказать
подобную теорему для Exactlog2, это было бы решением проблемы
выхода.
81
X = N − J,
получим Q = K − J.
Техника доказательства последних двух теорем не может быть применена для решения проблемы выхода, так как неверно утверждение
о том, что для всех N и D существует число E > N такое, что
2N ≡ 2E (mod D)
В качестве контрпримера достаточно рассмотреть ситуацию, при которой 2N + 1 является делителем числа D, т. е. 2N +1 |D. Действительно,
если предположить существование такого числа E > N при 2N +1 |D,
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
82
Гл. 3. Однорегистровые машины
то получим равенство
3.4. О вычислимых функциях
83
В то же время всякий раз, когда q|j, выполняется
E
N
2 = 2 + kD,
N +1
где k ∈ N, а поскольку 2
можно переписать в виде
является делителем D, это равенство
2E = 2N + ki2N +1 при i ∈ N.
В результате получаем, что 2E−N = 2ki + 1, чего быть не может.
Теперь рассмотрим пример всюду определенной неограниченной
немонотонной функции, которая не может быть реализована никакой
двухсчетчиковой машиной.
Т е о р е м а 3.10. Функция SPF(X), возвращающая наименьший простой делитель числа X, не может быть вычислена двухсчетчиковой
машиной.
SPF(q + jD) 6 q.
Получается, что SPF(q + jD) не является монотонной функцией от j
и, следовательно, не является линейной.
Поскольку для любого простого p множество Sp содержит бесконечное число простых чисел, больших p, то множество SPF(Sp )
также является бесконечным (для любого простого p). По теореме 3.4
функция SPF(X) не может быть реализована никакой двухсчетчиковой
машиной, что и требовалось доказать.
T∞
T∞
′
Рассмотрим множества S∞ = p=2 Sp и S∞
= p=2 Sp′ . Любопытно, что во всех разобранных примерах, за исключением функции SPF,
′
множества S∞ и S∞
являлись бесконечными. В случае SPF множество
S∞ пустое, но каждое Sp — бесконечное множество. Но этого условия
оказалось достаточно, чтобы показать, что функция SPF не может быть
вычислена двухсчетчиковой машиной.
Д о к а з а т е л ь с т в о. Один из способов доказательства — заметить,
что область значений функции SPF(X) не содержит арифметических
рядов. Приведем альтернативное доказательство.
Обратимся к определению множества Sp . Покажем, что Sp содержит
все простые числа, большие p. Предположим, что q — простое число,
большее p. Тогда значение SPF(q) определено, а SPF(q + jD) является
нелинейной функцией от j для каждого целого числа D > 0, не имеющего простых делителей, больших p. Действительно, поскольку у D
нет простых делителей, больших p, то
О п р е д е л е н и е. Разбиением назовем функцию с конечной областью
значений. Разбиение P (X) делит множество неотрицательных целых
чисел на конечное число классов эквивалентности; два целых неотрицательных числа A и B принадлежат к одному классу, если
(q, D) = 1
P (A) = P (B)
((q, D) — наибольший общий делитель чисел q и D). По известной
теореме Дирихле (см., например, мультипликативную теорию чисел),
которая утверждает, что в арифметической прогрессии с целыми взаимно простыми разностью прогрессии и первым членом прогрессии
содержится бесконечно много простых чисел, имеем, что наша последовательность (арифметическая прогрессия)
или P (A) и P (B) не определены.
Тотальное разбиение определяется на всем множестве неотрицательных целых чисел. Значения, которые возвращаются разбиением,
обычно не важны, имеет смысл лишь то, на какие классы эквивалентности происходит разделение области определения.
Предикат — это разбиение, областью значений которого является
множество {0, 1}.
{q + jD | j ∈ N}
содержит бесконечно много простых чисел, и в этих точках
SPF(q + jD) = q + jD.
3.4. О вычислимых функциях
Обсудим кратко класс реализуемых двухсчетчиковой машиной
функций, имеющих конечную область значений.
В качестве примеров приведем несколько предикатов P (X), реализуемых двухсчетчиковой машиной.
• P (X) = «число X является степенью двойки».
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
84
Гл. 3. Однорегистровые машины
• P (X) = «число X является степенью двойки или тройки».
• P (X) = «число X является суммой трех чисел, представляющих
собой различные степени двойки».
• P (X) = «десятичное представление числа X содержит тройки
и семерки».
• P (X) = «значение [log2 X] является четным».
• P (X) = «в двоичном представлении числа X количество единиц
является нечетным числом». Этот предикат известен как функция
контроля четности, используемая при выявлении ошибок передачи данных.
• P (X) = «значение X является простым числом вида (2p − 1) или
K
вида (22 + 1)», где p — простое число.
• P (X) = «значение X является простым числом вида 2A 3B + 1».
Поскольку существует, вероятно, бесконечно много простых чисел такого вида, то кажется правдоподобным, что двухсчетчиковая машина может распознавать некоторые бесконечные классы
простых чисел.
Предикат P (X) возвращает значение 1, если соответствующее утверждение истинно, и 0 в противном случае.
Двухсчетчиковой машиной может быть также реализован двуместный предикат P (X, Y ) = (X > Y ), определяющий, является ли значение первого счетчика большим или равным значению второго счетчика.
Более того, очевидно, что любая вычислимая конечным детерминированным автоматом функция (разбиение), на вход которой подается
бинарное представление числа X, может быть реализована двухсчетчиковой машиной (см. теорему 1.4).
Однако остается ряд вопросов.
• Может ли двухсчетчиковая машина решить, является ли X простым числом?
• Может ли двухсчетчиковая машина решить, является ли X полным квадратом числа?
• Может ли двухсчетчиковая машина вычислять N -й знак числа π?
3.4. О вычислимых функциях
85
• Может ли машина с двумя счетчиками реализовать логическое
«ИЛИ» или логическое «И» двух предикатов?
• Что можно сказать по поводу «объединения» или «пересечения»
двух разбиений?
В работе [40] высказывается предположение о том, что ответы
на первые три вопроса, вероятно, будут отрицательными. Поскольку,
похоже, что многие из предикатов при их реализации предполагают
уничтожение входных данных, то, скорее всего, последние два вопроса
также имеют ответ «нет» [40].
Исходя из предположения, что двухсчетчиковые машины не могут
вычислять все возможные разбиения, очевидным дальнейшим шагом
является поиск теорем, определяющих реализуемые двухсчетчиковыми
машинами разбиения.
Естественной кажется следующая гипотеза: один из классов разбиения должен содержать бесконечный арифметический ряд. Однако это
не верно для вычислимого двухсчетчиковой машиной предиката
0, если X = 0 или [log2 X] — четное;
P (X) =
1, если [log2 X] — нечетное.
Ни один из классов этого разбиения не содержит бесконечного арифметического ряда.
О п р е д е л е н и е. Пусть имеем целые числа A, B, C и D такие, что
A + B > 0, B > 0, C > 1, D > 0, D | (A + B) и D | (A + BC).
Назовем множество
{ (A + BC K )/D | K > 0 }
геометрической прогрессией со смещением (OGP — Offset Geometric
Progression). Все элементы любой OGP-прогрессии являются целыми числами. Действительно, поскольку D | (A + B) и D | (A + BC),
то D | B(C − 1); отсюда следует, что D | B(C K − 1), а значит, и
D | (A + BC K ).
Т е о р е м а 3.11. Любая OGP-прогрессия содержит бесконечно много
составных чисел.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
86
Гл. 3. Однорегистровые машины
3.4. О вычислимых функциях
Д о к а з а т е л ь с т в о. Предположим, что для простого p выполняется
p | (A + BC K )/D
при некотором K. Допустим, что имеет место следующее равенство:
(p, C) = (p, D) = 1.
Тогда верно, что
p | (A + BC K+h(p−1) )/D
для любого целого h > 0. Действительно, по малой теореме Ферма
(см. теорию чисел) имеем, что если целое C не делится на простое p,
то C p−1 ≡ 1 (mod p). Из (p, C) = 1 следует, что (p, C h ) = 1 для всех
h ∈ N. Тогда, все по той же малой теореме Ферма, справедливо, что
Д о к а з а т е л ь с т в о. Из-за громоздкости конструкции дадим лишь
основную идею построения двухсчетчиковой машины, реализующей
предикат Q(X).
Первой производится проверка выполнимости 3 | X, т. е. осуществляется проверка, делится ли входное значение счетчика X на 3. Если
ответ положительный, тогда выполняется набор команд, устанавливающий значение X в 0; на этом машина завершает свою работу. Если
же начальное значение X не делится на три, то соответствующая
ветка строится следующим образом. Запускается цикл, преобразующий
число 22J V (при нечетном V ) в 3J V , а затем 3J V в 2J V , до тех
пор, пока J не станет нечетным. После выхода из цикла потребуется
проверка на равенство единице чисел J и V , поскольку Q(X) = 1,
только если J = V = 1.
Приведем еще ряд соображений по проблеме «выхода» и вычислимым функциям с бесконечной областью значений.
C h(p−1) ≡ 1 (mod p)
для всех h ∈ N. Домножим обе части сравнения на C K . Получаем
О п р е д е л е н и е. Обозначим Zp множество чисел, не имеющих простых делителей, больших p; например, Z5 = {2A 3B 5C }.
C K+h(p−1) ≡ C K (mod p)
для всех h ∈ N. Отсюда, если число
Л е м м а 3.3. Существует двухсчетчиковая машина, которая отображает 2N в N для всех N ∈ Zp , где p — фиксированное число.
(A/D) + (B/D)C K
делится на p, то, очевидно, и число
(A/D) + (B/D)C K+h(p−1)
тоже делится на p при любом h ∈ N.
87
Было бы большой удачей, если бы каждый бесконечный класс разбиения должен был содержать OGP-прогрессию. Это доказывало бы,
что двухсчетчиковая машина не может решить, является ли начальное
значение счетчика X простым числом. К сожалению, это предположение не верно. В следующей теореме доказывается существование
вычислимого двухсчетчиковой машиной предиката, ни один из классов
разбиения которого не содержит OGP-прогрессию.
Т е о р е м а 3.12. Предикат Q, определенный ниже, вычислим двухсчетчиковой машиной.
K
1, если X = 22 ;
Q(X) =
0, иначе.
Д о к а з а т е л ь с т в о. Предположим, что p = 7. Существует машина
6cM с шестью счетчиками U , V , W , X, Y и Z, которая, начав работу
при N = 2A 3B 5C 7D в счетчике U и при нулевых значениях остальных
счетчиков, завершает работу с результатом A в счетчике U , B в V ,
C в W , D в X и Y = Z = 0. Если смоделировать шестисчетчиковую
машину 6cM двухсчетчиковой машиной 2cM , получим, что машина
2cM будет преобразовывать число 2N в N .
Очевидно, что с ростом числа p промежуточный этап построения
двухсчетчиковой машины будет проводиться с помощью счетчиковой
машины, количество счетчиков которой зависит от количества простых
чисел, меньших или равных p.
Т е о р е м а 3.13. Любая вычислимая функция вида F : Zp → Zp
может быть реализована двухсчетчиковой машиной.
Д о к а з а т е л ь с т в о этой теоремы проводится по аналогии с доказательством леммы 3.3, исходя из приведенных там соображений.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
88
Гл. 3. Однорегистровые машины
Т е о р е м а 3.14. Пусть для некоторого множества Zp существует
вычислимая двухсчетчиковой машиной функция F , взаимно однозначно отображающая Zp на множество целых неотрицательных
чисел. Тогда проблема «выхода» может быть решена.
Д о к а з а т е л ь с т в о. Мы можем построить машину Тьюринга, которая
для входного числа N ищет такой элемент Q ∈ Zp , для которого
выполняется F (Q) = N . Эта машина Тьюринга затем моделируется
двухсчетчиковой машиной, которая стартует со входа 2N , при этом
завершая работу с результатом 2Q . По лемме 3.3 из числа 2Q мы можем
получить Q. Поскольку по предположению функция F вычислима
машиной с двумя счетчиками, то для Q находим N . Таким образом,
мы имеем двухсчетчиковую машину, преобразующую число 2N в N . К сожалению, подходящих кандидатур таких функций пока найдено
не было. Более того, естественным и наиболее вероятным кажется
предположение о том, что все же ответ на проблему «выхода» скорее
всего будет отрицательным. Подробнее о проблемах входа и выхода
для двухсчетчиковых машин Минского смотрите в работе [40].
Итак, в главе было показано, что решения для проблемы «входа»
для двухсчетчиковых машин Минского не существует, это же, вероятно, будет справедливо и для проблемы «выхода».
Глава написана на основе научно-технического отчета Р. Шреппеля
лаборатории искусственного интеллекта Массачусетского технологического института [40]. Некоторые доказательства утверждений из
этого отчета потребовали небольшой переработки для лучшего их
восприятия и были описаны более подробно, другие доказательства
приведены без изменений, представляя собой в определенном смысле
дополнительные упражнения, требующие самостоятельного участия
читателя при их доказательстве, граничащего с разгадыванием и восстановлением пропущенных участков доказательств, которые автору
работы показались очевидными.
Глава 4
СТРУКТУРИРОВАННЫЕ СИСТЕМЫ ПЕРЕХОДОВ
В главе приводятся предварительные сведения по теории правильных квазипорядков и теории структурированных систем переходов.
4.1. Квазипорядок
О п р е д е л е н и е. Бинарное отношение R называется отношением
частичного порядка, если оно рефлексивно (xRx), транзитивно
(xRy ∧ yRz =⇒ xRz) и антисимметрично (xRy ∧ yRx =⇒ x = y).
Если отношение только рефлексивно и транзитивно, то оно называется
отношением квазипорядка, или предпорядка.
Вместо xRy обычно пишут x 6R y или просто x 6 y. Будем также
говорить, что множество X, являющееся носителем отношения R,
частично упорядочено (или квазиупорядочено), не указывая явно отношения R, если из контекста ясно, о каком упорядочении идет речь.
Если x 6 y и y 66 x, то пишут x < y и говорят, что x строго меньше y.
Очевидно, что строгий порядок есть транзитивное и иррефлексивное
отношение.
Частично упорядоченное множество, в котором любые два элемента
сравнимы, называется линейно упорядоченным, или цепью.
Подмножество Y квазиупорядоченного множества (X, 6) называется антицепью, если элементы Y попарно несравнимы, т. е. для любой
пары элементов x 6= y из Y не выполняется ни x 6 y, ни y 6 x.
Элемент a квазиупорядоченного множества X называется минимальным элементом этого множества, если в X нет ни одного элемента x, удовлетворяющего условию x < a.
Если всякое непустое подмножество множества X имеет минимальный (в этом подмножестве) элемент, то это эквивалентно тому, что в X
нет бесконечно строго убывающих цепей вида x0 > x1 > x2 > . . . .
Квазипорядок 6 на множестве X называется правильным (wellquasi-ordering), если для любой бесконечной последовательности x0 ,
x1 , x2 , x3 , . . . элементов из X существуют индексы i < j такие, что
xi 6 xj .
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
90
Гл. 4. Структурированные системы переходов
4.1. Квазипорядок
У т в е р ж д е н и е 4.1. Квазипорядок 6 на множестве X является
правильным в том и только том случае, когда одновременно выполняются два следующих условия.
1. Множество X не содержит бесконечных строго убывающих
цепей x0 > x1 > x2 > . . ..
2. Всякая содержащаяся в X антицепь конечна.
Д о к а з а т е л ь с т в о Легко заметить, что для правильного квазипорядка выполняется условие минимальности. Действительно, если нарушается условие минимальности и существует бесконечная строго
убывающая последовательность x0 > x1 > x2 . . ., то для этой последовательности для любой пары индексов i < j не выполняется xi 6 xj .
Аналогично, если существует бесконечная антицепь Y , то из элементов Y можно построить бесконечную последовательность, не удовлетворяющую условию правильности.
Докажем, что если условия 1 и 2 выполняются, то отношение 6 — правильный квазипорядок. Предположим противное. Пусть
x0 , x1 , x2 , . . . — это некоторая бесконечная последовательность элементов из X, для которой условие правильности не выполняется, но выполняются условия 1 и 2. Итак, для любых j > i не выполняется xi 6 xj .
Тогда в силу конечности антицепей из этой последовательности можно
выбрать подпоследовательность
xi1 > xj1 , xi2 > xj2 , . . . ,
(4.1)
где i1 < j1 < i2 < j2 < i3 < . . . .
Рассмотрим теперь последовательность xi1 , xi2 , xi3 , xi4 , . . . . Повторяя предыдущие рассуждения, из нее можно выбрать подпоследовательность
xi′1 > xj1′ , xi′2 > xj2′ , . . . ,
(4.2)
91
x0 , x1 , x2 , . . . элементов из множества X содержит бесконечную
монотонно возрастающую подпоследовательность вида xi0 6 xi1 6
6 xi2 6 . . ., где i0 < i1 < i2 < . . . .
Д о к а з а т е л ь с т в о Рассмотрим бесконечную последовательность x0 ,
x1 , x2 , . . . и множество
M = {i ∈ N | ∀j > i : xi 66 xj }.
Множество M не может быть бесконечным, так как в этом случае из
его элементов можно было бы выбрать бесконечную подпоследовательность, для которой не выполняется условие правильности. Тогда множество M ограничено, и, следовательно, любая подпоследовательность,
начинающаяся с индекса i ∈
/ M , является бесконечной возрастающей
подпоследовательностью.
О п р е д е л е н и е. Пусть отношение 6 — это правильный квазипорядок
на множестве X. Идеалом, или замкнутым кверху множеством,
называется подмножество I ⊆ X такое, что для x ∈ I и y ∈ X из x 6 y
следует, что y ∈ I. Замкнутое книзу множество — это подмножество
I ⊆ X такое, что для x ∈ I и y ∈ X из x > y следует, что y ∈ I.
О п р е д е л е н и е. Идеал может быть получен замыканием кверху
некоторого множества. Каждый элемент x ∈ X порождает идеал
def
↑x = {y | y > x}. Базисом замкнутого
кверху множества I называется
S
множество min(I) такое, что I = x∈min(I) ↑x.
У т в е р ж д е н и е 4.3 ([35]). Если отношение 6 — это правильный
квазипорядок на множестве X, то всякий идеал I имеет конечный
базис.
где i′1 < j1′ < i′2 < j2′ < i′3 < . . . . Тогда, объединяя 4.1 и 4.2, имеем
xi′1 > xj1′ > xk1 , xi′2 > xj2′ > xk2 , . . . ,
где i′1 < j1′ < k1 < i′2 < j2′ < k2 < i′3 < . . . .
Применяя аналогичные рассуждения, из данной последовательности
x0 , x1 , x2 , . . . можно построить сколь угодно длинную строго убывающую подпоследовательность, что противоречит условию 2.
У т в е р ж д е н и е 4.2. Пусть отношение 6 — правильный квазипорядок на множестве X. Тогда всякая бесконечная последовательность
Д о к а з а т е л ь с т в о. Поскольку 6 — правильный квазипорядок порядок, множество минимальных элементов идеала образует его базис.
Этот базис может содержать только конечное число элементов, так
как в противном случае из этих минимальных элементов можно было
бы построить бесконечную последовательность попарно несравнимых
элементов, что противоречит условию правильности.
Далее потребуется следующее свойство идеалов.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
92
Гл. 4. Структурированные системы переходов
У т в е р ж д е н и е 4.4. Если отношение 6 является правильным квазипорядком на множестве X, то любая бесконечно возрастающая по отношению вложения множеств последовательность
I0 ⊆ I1 ⊆ I2 ⊆ . . . идеалов стабилизируется, т. е. найдется такое
k ∈ N, что Ik = Ik+1 = Ik+2 = . . . .
Д о к а з а т е л ь с т в о . Предположим противное, что для некоторой последовательности идеалов условия теоремы не выполняются. Выберем
из этой последовательности строго возрастающую подпоследовательность In0 ⊂ In1 ⊂ In2 ⊂ . . . . Тогда для каждого i > 0 найдется элемент
xi ∈ Ini \Ini−1 . В силу правильности среди элементов бесконечной
последовательности x1 , x2 , x3 . . . найдется пара xi 6 xj при i < j.
Но элемент xi принадлежит идеалу Ini , и, следовательно, xj ∈ Ini , что
противоречит условию xj ∈
/ Inj−1 .
О п р е д е л е н и е. Пусть отношение 6 — это некоторый квазипорядок
на множестве X. Отношение 6n на множестве X n векторов размерности n с элементами из X определим так, полагая для x̄, ȳ ∈ X n ,
x̄ = (x1 , x2 , . . . , xn ), ȳ = (y1 , y2 , . . . , yn ), что x̄ 6n ȳ в том и только том
случае, когда ∀i, 1 6 i 6 n : xi 6 yi .
У т в е р ж д е н и е 4.5 ([29]). Пусть отношение 6 — это правильный
квазипорядок на множестве X. Тогда отношение 6n на множестве
векторов размерности n из X n также является правильным квазипорядком.
Д о к а з а т е л ь с т в о. Пусть имеется некоторая бесконечная последовательность x̄0 , x̄1 , x̄2 , . . . векторов из множества X n . Выберем из этой
последовательности бесконечную подпоследовательность так, чтобы
все первые координаты векторов следовали в возрастающем порядке
(относительно порядка 6). Это возможно в силу утверждения 4.2.
Далее из полученной подпоследовательности выберем в свою очередь
бесконечную подпоследовательность, в которой вторые координаты
следуют в возрастающем порядке. Повторив этот процесс для всех n
координат, получим подпоследовательность, возрастающую в каждой
координате, т. е. последовательность векторов x̄i0 , x̄i1 , x̄i2 , . . .. В этой
подпоследовательности любая пара векторов удовлетворяет условию,
что x̄i 6 x̄j для i < j.
Необходимо отметить, что отношение 6n не является линейным
порядком на X n , даже если 6 — линейный порядок на X.
4.2. Структурированные системы переходов
93
4.2. Структурированные системы переходов
О п р е д е л е н и е. Система помеченных переходов представляет собой
набор из четырех элементов LTS = (S, T , →, s0 ), где
• S — множество состояний с элементами s0 , s1 , s2 , . . .,
• T — некоторый конечный алфавит пометок (множество имен
действий),
• → ⊆ (S × T × S) — отношение переходов между состояниями
системы,
• s0 ∈ S — начальное состояние системы.
t
Переход (s, t, s′ ) обычно записывается как s → s′ и означает, что
действие с именем t переводит состояние s в состояние s′ . Состояние s′
в этом случае называется t-последующим, или просто последующим
для s, а состояние s — t-предыдущим, или просто предыдущим
для s′ . Состояния, не имеющие последующих состояний, называются
финальными.
Через Succ(s) для состояния s обозначается множество последующих состояний, через Pred(s) — множество его предыдущих состояний.
Система LTS будет конечно ветвящейся, если для любого s множество Succ(s) конечно. Далее будут рассматриваться системы переходов,
имеющие только конечное ветвление.
Система помеченных переходов LTS имеет вычислимое отображение Succ (соот. Pred), если существует эффективная процедура
вычисления множества Succ(s) (соот. Pred(s)) для любого состояния s.
Последовательное исполнение для LTS есть конечная или бескоt1
t2
нечная цепочка переходов s0 →
s1 →
s2 → . . ., где s0 — начальное
∗
состояние системы. Запись s → s′ означает, что имеется (конечная) последовательность переходов, переводящая состояние s в состояние s′ .
Диаграмма переходов для LTS — это помеченный ориентированный связный граф GLT S , в котором вершинами являются элементы
множества состояний S, а дуги определяются отношением переходов
так, что дуга, помеченная t, соединяет вершину s с вершиной s′ в том
t
и только том случае, когда s → s′ .
Очевидно, что каждому последовательному исполнению системы LTS соответствует ориентированный путь с началом в вершине s0
в графе GLT S .
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
94
Гл. 4. Структурированные системы переходов
Деревом достижимости назовем ориентированное дерево с корнем
в начальном состоянии s0 системы переходов LTS, в котором вершины
помечаются элементами из S, а дуги определяются в соответствии
с отношением переходов.
В отличие от диаграммы переходов в дереве достижимости разные
вершины могут иметь одну и ту же метку из множества состояний S.
Дерево достижимости представляет собой множество всех возможных
исполнений системы переходов LTS.
s1
∀
≤
t
s1′
t
s2
≤
s′2
∃
Рис. 4.1. Свойство совместимости по возрастанию
О п р е д е л е н и е. Вполне структурированной системой переходов с совместимостью по возрастанию называется система переходов LTS =
= (S, T , →, s0 ), дополненная отношением квазипорядка 6 ⊆ S × S,
удовлетворяющим следующим двум условиям:
4.2. Структурированные системы переходов
95
Вместо того чтобы решать проблему достижимости, часто можно
ограничиться проверкой, может ли быть достигнуто некоторое состояние s′ , покрывающее данное состояние s, т. е. состояние s′ > s.
О п р е д е л е н и е. Проблема покрытия для данного состояния s0 и заданного своим конечным базисом идеала I состоит в проверке достижимости из s0 состояния, попадающего в идеал I. В частности, для
I = ↑s, где s — некоторое состояние системы, проблема покрытия
состоит в проверке достижимости из состояния s0 состояния s′ , s′ > s.
Для решения проблемы покрытия в случае вполне структурированных систем переходов с совместимостью по возрастанию используется
метод насыщения (saturation method), основанный на свойстве стабилизации возрастающей последовательности замкнутых кверху множеств (идеалов) (см. утверждение 4.4).
Пусть (LTS, 6) — вполне структурированная система переходов
с совместимостью по возрастанию. Напомним, что
↑X = {y ∈ S | x ∈ X : y > x}, где X ⊆ S.
S
t
Через Pred(s) = t∈T Predt (s), где Predt (s) = {s′ ∈ S | s′ → s},
будем обозначать множество непосредственных предшественников состояния s. Соответственно для множества состояний X ⊆ S полагаем
[
Pred(X) =
Pred(s).
s∈X
1) отношение 6 является правильным квазипорядком;
2) отношение 6 совместимо по возрастанию с отношением переходов
→, т. е. для любых двух состояний s1 и s′1 , s1 6 s′1 , и любого
t
t
перехода s1 → s2 существует переход s′1 → s′2 такой, что s2 6 s′2 .
Свойство совместимости по возрастанию правильного квазипорядка
с отношением переходов представлено в виде диаграммы на рис. 4.1.
О п р е д е л е н и е. Система переходов (LTS, 6) имеет разрешимое отношение порядка 6 на множестве состояний S, если существует
эффективная процедура проверки истинности s 6 s′ для любых двух
состояний s и s′ из S.
Одной из основных проблем систем переходов является проблема
∗
достижимости, состоящая в проверке выполнимости s0 → s для двух
состояний s0 и s.
Пусть I — идеал. Рассмотрим последовательность I0 ⊆ I1 ⊆ . . .,
где I0 = I, Ii+1 = Ii ∪ Pred(Ii ). Через Pred∗ (I) обозначим
предел
S
этой последовательности, т. е. множество Pred∗ (I) = i Ii . Решение
проблемы покрытия для заданных состояний s0 и s состоит в проверке
того, что s0 ∈ Pred∗ (↑s).
У т в е р ж д е н и е 4.6 ([31]). Пусть (LTS, 6) — вполне структурированная система переходов с совместимостью по возрастанию,
I ⊆ S — замкнутое кверху множество (идеал) (относительно квазипорядка 6). Тогда Pred∗ (I) также является замкнутым кверху
множеством (относительно 6).
Д о к а з а т е л ь с т в о. Покажем сначала, что если множество I замкнуто кверху, то Pred(I) также является замкнутым кверху множеством.
Действительно, пусть состояние s ∈ Pred(I), т. е. существует состояние
s′ ∈ I такое, что s → s′ , и пусть r > s. По свойству совместимости
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
96
Гл. 4. Структурированные системы переходов
4.2. Структурированные системы переходов
97
найдется состояние r′ такое, что r → r′ и r′ > s′ , т. е. r ∈ Pred(r′ )
и r′ ∈ I. Это значит, что r ∈ Pred(I).
Поскольку объединение двух идеалов также является идеалом,
применив индукцию, из доказанного получаем, что для любого индекса
i > 0 множество Ii , где I0 = I, Ii+1 = Ii ∪ Pred(Ii ) = Predi (I), также
является замкнутым кверху множеством (идеалом).
Пусть теперь s ∈ Pred∗ (I). Тогда s ∈ Ii для некоторого i > 0.
Поскольку Ii является идеалом, из r > s следует r ∈ Predi (I), а значит,
и r ∈ Pred∗ (I).
Д о к а з а т е л ь с т в о. Первое утверждение следует из дистрибутивности операций Pred и ↑ относительно объединения множеств, а также
из того, что если для множеств R и R′ выполняется ↑R = ↑R′ , то
↑pb(R) = ↑pb(R′ ).
Докажем второе утверждение. Индукцией по n проверяется, что
Из доказательства приведенного выше утверждения и утверждения 4.4 следует, что последовательность I0 ⊆ I1 ⊆ . . ., где I0 = I,
Ii+1 = Ii ∪ Pred(Ii ), стабилизируется, т. е. начиная с некоторого k будет
выполнено Ik = Ik+1 = . . . = Pred∗ (I). Заметим, что стабилизация
наступает после того, как в последовательности два последовательных
множества оказываются равными.
Множество Pred∗ (I) может быть эффективно вычислено при условии еще одного дополнительного предположения.
и, следовательно,
О п р е д е л е н и е. Вполне структурированная система переходов
(LTS, 6) с совместимостью по возрастанию имеет эффективный
предбазис, если для любых состояния s ∈ S и пометки t ∈ T может
быть эффективно вычислен конечный базис min(Pred
S t (↑s)). Обозначим
pb(s) конечный базис множества Pred(↑s) =
t∈T Predt (↑s), т. е.
pb(s) = min(Pred(↑s)).
Пусть вполне структурированная система переходов (LTS, 6) с совместимостью по возрастанию имеет эффективный предбазис. Для замкнутого кверху множества I с конечным базисом I b построим бесконечную последовательность B0 , B1 , . . . множеств таких, что B0 = I b
и Bi+1 = Bi ∪ pb(Bi ). Рассмотрим последовательность ↑B0 ⊆ ↑B1 ⊆ . . ..
В силу утверждения 4.4 эта последовательность стабилизируется.
Пусть m — первый индекс, для которого ↑Bm = ↑Bm+1 . Тогда справедливо следующее
У т в е р ж д е н и е 4.7 ([31]). При определенных выше условиях
1. ↑Bm =↑
2. ↑
S
i∈N
S
i∈N
Bi .
Bi = Pred∗ (I).
Bn ⊆ ↑Bn ⊆ Pred∗ (I)(= ↑Pred∗ (I)).
С другой стороны, из определения предбазиса следует, что
↑Predn (I) ⊆ ↑Bn
Pred∗ (I) ⊆
[
i∈N
↑Bi ⊆↑
[
i∈N
Bi ⊆ ↑Pred∗ (I).
Эффективное решение проблемы покрытия основано на следующем
утверждении.
У т в е р ж д е н и е 4.8 ([31]). Пусть вполне структурированная система переходов с совместимостью по возрастанию (LTS, 6) имеет
эффективный предбазис и разрешимое отношение 6. Тогда существует эффективная процедура построения конечного базиса множества Pred∗ (I) по произвольному замкнутому кверху множеству I,
заданному своим конечным базисом.
Д о к а з а т е л ь с т в о. В силу доказанного выше можно эффективно
порождать последовательность B0 , B1 , . . ., поскольку каждое множество Bi конечно и базис pb эффективно вычисляется. Из разрешимости
6 следует разрешимость проверки ↑B = ↑B ′ для конечных множеств B
и B ′ , и, следовательно, индекс m, начиная с которого последовательность стабилизируется, может быть эффективно вычислен. В результате получаем Bm — вычислимый базис идеала Pred∗ (I).
У т в е р ж д е н и е 4.9 ([31]). Проблема покрытия разрешима для
вполне структурированных систем переходов с совместимостью
по возрастанию, имеющих эффективный предбазис и разрешимое
отношение порядка 6.
Д о к а з а т е л ь с т в о. Проблема покрытия для двух данных состояний
s0 и s состоит в проверке s0 ∈ Pred∗ (↑s). Согласно утверждению 4.8
4 Кузьмин Е. В., Соколов В. А.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
98
Гл. 4. Структурированные системы переходов
4.2. Структурированные системы переходов
можно эффективно вычислить конечный базис B множества Pred∗ (↑s).
Тогда проблема покрытия сводится к проверке s0 ∈ ↑B. В силу разрешимости отношения 6 проверка s0 ∈ ↑B для конечного множества B
также может быть эффективно выполнена.
В случае, когда проверяется более общее свойство s ∈ Pred∗ (↑I),
где I — замкнутое кверху множество,
заданное своим конечным баS
зисом b1 , . . . , bk , мы имеем ↑I = i=1,...,k ↑bi , и достаточно проверить,
выполняется ли условие s ∈ Pred∗ (↑bi ) для некоторого i = 1, . . . , k. Проблема покрытия часто рассматривается как проблема достижимости управляющего состояния в случае, если множество состояний S вполне структурированной системы переходов (LTS, 6) имеет
вид Q × D, где Q — конечное множество управляющих состояний, D —
бесконечное множество (на котором задан правильный квазипорядок)
значений некоторых характеристик. В этом случае правильный квазипорядок 6 на множестве S = Q × D определяется следующим образом:
(q, d) 6 (q ′ , d′ ) ⇐⇒ q = q ′ ∧ d 6 d′ .
99
4) мертвые вершины не имеют потомков;
5) живая вершина с пометкой s имеет по одному потомку, помеченному s′ , для каждого состояния s′ ∈ Succ(s);
6) если на пути от корня дерева до некоторой вершины с пометкой
s′ встречается вершина с пометкой s такой, что s 6 s′ , то
говорят, что s′ покрывает s (или s покрывается s′ ), и вершина s′
объявляется мертвой; в противном случае s′ — живая вершина.
Листья в покрывающем дереве помечены финальными или покрывающими состояниями. Для вполне структурированных систем переходов с совместимостью по возрастанию частичный порядок 6 является правильным. Благодаря этому все пути в покрывающем дереве
конечны, так как всякий бесконечный путь должен был бы содержать
покрывающую вершину. В силу леммы Кёнига [37] о конечных деревьях, если покрывающее дерево не имеет бесконечных ветвлений, то
оно конечно.
Более того, очевидно, имеет место следующее утверждение.
Объединение и пересечение замкнутых кверху множеств — замкнутое кверху множество. Но, в отличие от объединения, не для всех
вполне структурированных систем переходов может быть построено
пересечение множеств состояний, образующих замкнутые кверху множества. Поэтому введем следующее понятие для систем переходов,
которое потребуется нам в дальнейшем.
У т в е р ж д е н и е 4.10. Если отношение квазипорядка 6 разрешимо
и отображение Succ вычислимо, то покрывающее дерево для вполне
структурированной системы переходов с совместимостью по возрастанию может быть эффективно построено.
О п р е д е л е н и е. Вполне структурированная система переходов с совместимостью по возрастанию является эффективной по пересечению,
если для любых состояний s и s′ вычислимо множество min(↑s ∩ ↑s′ ).
Для построения дерева покрытия не требуется совместимости между отношениями упорядоченности 6 и перехода →. Однако именно
при выполнении условия совместимости покрывающее дерево содержит
полезную информацию о свойствах поведения системы.
Для анализа некоторых свойств структурированных систем переходов используется конструкция покрывающего дерева [30].
Пусть, например, подмножество I ⊆ S является замкнутым кверху
множеством (идеалом). Покрывающее дерево позволяет ответить на
вопрос: существует ли такая последовательность переходов системы,
что все промежуточные состояния будут принадлежать идеалу I.
О п р е д е л е н и е. Покрывающим деревом вполне структурированной
системы переходов с совместимостью по возрастанию (LTS, 6) для
состояния s0 ∈ S называется конечный ориентированный граф (дерево)
такой, что
1) вершины дерева помечены состояниями системы LTS;
2) каждая вершина объявлена либо живой, либо мертвой;
3) корню дерева приписана пометка s0 , и эта вершина объявлена
живой;
У т в е р ж д е н и е 4.11. Пусть (LTS, 6) — вполне структурированная система переходов с совместимостью по возрастанию, I —
замкнутое кверху множество. Последовательность переходов системы из состояния s такая, что все промежуточные состояния
принадлежат идеалу I, существует тогда и только тогда, когда
покрывающее дерево системы содержит путь от корня s к листу,
в котором все вершины имеют пометки из I.
4*
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
100
Гл. 4. Структурированные системы переходов
Д о к а з а т е л ь с т в о следует непосредственно из определений.
4.2. Структурированные системы переходов
Для правильного квазипорядка 6 всякое замкнутое кверху множество I имеет конечный базис (см. утверждение 4.3), т. е. представимо
в виде I = {s ∈ S | s > s1 ∨ . . . ∨ s > sk }. Таким образом, если
отношение 6 разрешимо, то для любого состояния s ∈ S вполне
структурированной системы переходов с совместимостью по возрастанию эффективно проверяется его принадлежность к идеалу I. Если
к тому же функция Succ является вычислимой, то проверка того, что
все вершины некоторого пути в конечном покрывающем дереве имеют
пометки из I, может быть эффективно выполнена.
Рассматриваемая задача для замкнутого кверху множества I, заданного своим конечным базисом, называется проблемой поддержки
управляющего состояния (control state maintainability problem).
Таким образом, из утверждения 4.11 следует
У т в е р ж д е н и е 4.12 ([28]). Проблема поддержки управляющего состояния разрешима для вполне структурированных систем переходов с совместимостью по возрастанию, разрешимым отношением
правильного квазипорядка 6 и вычислимой Succ.
Пусть теперь D ⊆ S — замкнутое книзу множество, т. е. для
любых x ∈ D и y ∈ S, если y 6 x, то y ∈ D. Очевидно, что если D —
замкнутое книзу множество, то его дополнение I = S\D является
замкнутым кверху множеством. Ко-базисом D будем называть базис
I = S\D.
Двойственной к проблеме поддержки управляющего состояния является проблема неизбежности (inevitability problem): по данному
конечному ко-базису замкнутого книзу множества D и начальному
состоянию s0 определить, верно ли, что всякое исполнение приводит
к некоторому состоянию из D. В качестве двойственного к утверждению 4.12 получаем:
У т в е р ж д е н и е 4.13 ([28]). Проблема неизбежности разрешима
для вполне структурированных систем переходов с совместимостью по возрастанию, разрешимым отношением квазипорядка 6
и вычислимой Succ.
Частным, но очень важным случаем проблемы неизбежности является проблема останова: по данному начальному состоянию s0
101
определить, верно ли, что всякое исполнение завершается, т. е. приводит к некоторому финальному состоянию. Множество финальных
состояний является замкнутым книзу множеством в силу свойства
совместимости по возрастанию вполне структурированных систем переходов. Действительно, всякое состояние s, которое меньше некоторого финального состояния s′ , само является финальным, так как
в противном случае, если есть переход, который может сработать в s,
то существует переход (возможно, с той же пометкой), который мог бы
сработать и в s′ .
У т в е р ж д е н и е 4.14 ([31]). Проблема останова разрешима для
вполне структурированных систем помеченных переходов с совместимостью по возрастанию, разрешимым отношением порядка 6
и вычислимой Succ.
Д о к а з а т е л ь с т в о. Для проверки того, что всякое исполнение в системе переходов завершается, достаточно перебрать все листья в конечном покрывающем дереве системы и убедиться, что все они помечены
финальными состояниями.
s1
≤
t
∃
s1′
∀
t
s2
≤
s′2
Рис. 4.2. Свойство совместимости по убыванию
О п р е д е л е н и е. Вполне структурированная система переходов с совместимостью по убыванию — это система помеченных переходов
LTS = (S, T , →, s0 ), дополненная отношением правильного квазипорядка 6 ⊆ S × S, совместимым по убыванию с отношением переходов →,
t
т. е. для любых состояний s1 и s′1 , s1 6 s′1 , и любого перехода s′1 → s′2
t
существует переход s1 → s2 такой, что s2 6 s′2 .
Свойство совместимости по убыванию правильного квазипорядка 6
с отношением переходов → представлено в виде диаграммы на рис. 4.2.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
102
Гл. 4. Структурированные системы переходов
4.3. Автоматные системы переходов
103
Пусть K и K ′ — множества состояний вполне структурированной
системы переходов (LTS, 6) с совместимостью по убыванию. Введем
новое обозначение Succ= (K) = K ∪ Succ(K).
Проблема субпокрытия для некоторого состояния s системы переходов LTS состоит в проверке достижимости из заданного состояния s0
покрываемого состояния, т. е. состояния s′ 6 s.
У т в е р ж д е н и е 4.15 ([31]). Если для множеств K и K ′ выполнено
↑K ⊆ ↑K ′ , то ↑Succ= (K) ⊆ ↑Succ= (K ′ ).
У т в е р ж д е н и е 4.18 ([31]). Проблема субпокрытия является разрешимой для вполне структурированных систем помеченных переходов с совместимостью по убыванию, имеющих разрешимое отношение порядка 6.
Д о к а з а т е л ь с т в о. Предположим, что s ∈ ↑Succ= (K), причем
s ∈
/ ↑K, так как иначе из s ∈ ↑K следовало бы s ∈ ↑Succ= (K ′ ).
t
Тогда существуют s1 ∈ K и переход s1 → s′1 такой, что s′1 6 s.
Поскольку ↑K ⊆ ↑K ′ , существует s2 ∈ K ′ такое, что s2 6 s1 . Так
как LTS обладает свойством совместимости по убыванию, существует
t
последовательность переходов s2 → . . . → s′2 такая, что s′2 6 s′1 .
′
Следовательно, s2 6 s. Получили, что поскольку s′2 ∈ Succ= (K ′ ), то
и s ∈ ↑Succ= (K ′ ).
Пусть s — это состояние вполне структурированной системы переходов (LTS, 6) с совместимостью по убыванию. Определим последовательность K0 , K1 , . . ., где K0 = {s}, Kn+1 = Kn ∪Succ(Kn ). Пусть m —
первый индекс в этой последовательности такой, что ↑Km = ↑Km+1 .
Такой индекс существует по утверждению 4.4. Тогда имеем следующее
У т в е р ж д е н и е 4.16 ([31]). ↑Km = ↑ ∪ i∈N Ki = ↑Succ∗ (s).
Д о к а з а т е л ь с т в о. Первое равенство в выражении следует из утверждения 4.15, второе — из определения Ki .
У т в е р ж д е н и е 4.17 ([31]). Пусть (LTS, 6) — это вполне структурированная система переходов с совместимостью по убыванию
с разрешимым отношением порядка 6. Тогда для любого состояния
системы переходов LTS возможно построить конечный базис множества ↑Succ∗ (s).
Д о к а з а т е л ь с т в о проводится по аналогии с доказательством утверждения 4.8. Последовательность из множеств K0 , K1 , . . . Km , где
↑Km = ↑Km+1 , может быть эффективно построена. Множество Km
является конечным (но, возможно, избыточным) базисом замкнутого
кверху множества ↑Succ∗ (s).
Д о к а з а т е л ь с т в о. По утверждению 4.17 может быть построен конечный базис K множества ↑Succ∗ (s0 ). Из состояния s0 существует
исполнение в некоторое состояние s′ 6 s тогда и только тогда, когда
s ∈ ↑K. Поскольку отношение 6 разрешимо, то возможно осуществить
проверку s ∈ ↑K.
4.3. Автоматные системы переходов
О п р е д е л е н и е. Вполне структурированная система переходов автоматного типа WSA — это система помеченных переходов LTS =
= (S, T , →, s0 ), дополненная отношением правильного квазипорядка
6 ⊆ S × S, где S = Q × D, Q — конечное множество управляющих
состояний, D — конечное или бесконечное множество (на котором
задан правильный квазипорядок) значений некоторых характеристик,
s0 ∈ S — начальное состояние, отношение → ⊆ S × T × S такое, что
∃ →• ⊆ Q × T × Q : (q, t, q ′ ) ∈ →• , если ∃((q, d), t , (q ′ , d′ )) ∈ →,
t
а из существования перехода q →• q ′ следует, что ∀ d1 , d′1 ∈ D, d1 6 d′1 ,
существуют переходы
t
t
(q, d1 ) → (q ′ , d2 ) и (q, d′1 ) → (q ′ , d′2 ) при d2 6 d′2 ;
отношение 6 определяется так, что (q, d) 6 (q ′ , d′ ) ⇐⇒ q = q ′ и d 6 d′ .
Далее вполне структурированные системы переходов автоматного
типа будем называть автоматными структурированными системами переходов.
Л е м м а 4.1. Автоматная структурированная система переходов
WSA = (LTS, 6) удовлетворяет условиям совместимости по возрастанию и совместимости по убыванию отношения 6 с отношением
t
переходов →, т. е. ∀s1 , s′1 ∈ S, s1 6 s′1 , из существования s1 → s2
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
104
Гл. 4. Структурированные системы переходов
t
следует существование s′1 → s′2 при s2 6 s′2 , а из существования
t
t
s′1 → s′2 следует существование s1 → s2 при s2 6 s′2 .
Д о к а з а т е л ь с т в о. Выполнимость свойств совместимости по возрастанию и убыванию для WSA следует непосредственно из определения
автоматной структурированной системы переходов.
Л е м м а 4.2. Любая вполне структурированная система переходов
с совместимостью по возрастанию и убыванию является (может
быть представлена в виде) автоматной структурированной системой переходов.
Д о к а з а т е л ь с т в о. Пусть WTSud = (LTS, 6) — это вполне структурированная система переходов с совместимостью по возрастанию и
убыванию.
Покажем, что система WTSud является частным случаем вполне
структурированной системы переходов автоматного типа WSA, для
которой опущены управляющие состояния. Для этого необходимо
в множестве состояний S системы WTSud выявить конечное множество
таких непересекающихся групп (подмножеств) состояний, что между
этими группами будет существовать отношение переходов, удовлетворяющее определению автоматной структурированной системы переходов. Основная идея состоит в том, чтобы разбить множество S на
непересекающиеся замкнутые кверху множества и задать отношение
переходов на множестве этих идеалов таким образом, чтобы любой
переход из одного состояния системы WTSud в другое означал наличие
перехода (с той же пометкой) между идеалами, к которым принадлежат
соответствующие состояния.
Рассмотрим базис множества S, т. е. множество min(S) минимальных по отношению 6 состояний системы переходов WTSud . Сопоставим каждому состоянию sbi ∈ min(S) локальное управляющее состояние qki , где 1 6 ki 6 n, n = | min(S)|, таким образом, что если для пар
(qki , sbi ) и (qkj , sbj ) выполняется условие ↑sbi ∩ ↑sbj 6= ∅, то qki = qkj , т. е.
ki = kj .
Построим множество Sq ⊆ Q × S,
Sq = {(qki , s) | qki ∈ Q, sbi 6 s},
где Q = {qk1 , . . . , qkn }. Множество Sq является замкнутым кверху
множеством и имеет базис min(Sq ) = {(qk1 , sb1 ), . . . , (qkn , sbn )}.
105
4.3. Автоматные системы переходов
Зададим на множестве Sq частичный порядок 6q :
(qki , s) 6q (qkj , s′ ) ⇐⇒ qki = qkj ∧ s 6 s′ .
Очевидно, отношение 6q является правильным квазипорядком.
Также зададим на множестве Sq отношение переходов →q таким
образом, что
t
t
(qki , s) →q (qkj , s′ ) ⇐⇒ s → s′ ∧ (sbi 6 s ∨ sbm 6 s) ∧ (sbj 6 s′ ∨ sbl 6 s′ ),
где индексы i, m, j и l такие, что ki = km и kj = kl .
Построим на множестве Q отношение переходов →• так, чтобы
t
t
(qki , s) →q (qkj , s′ ) =⇒ qki →• qkj .
Покажем, что для любых двух состояний (qki , s1 ) 6 (qki , s′1 ) из Sq
t
t
и перехода qki →• qkj существуют переходы (qki , s1 ) →q (qkj , s2 ) и
t
(qki , s′1 ) →q (qkj , s′2 ) при (qkj , s2 ) 6 (qkj , s′2 ).
t
t
Переход qki →• qkj возможен, если ∃s, s′ ∈ S : (qki , s) →q (qkj , s′ ).
Пусть s > sbi , если s > sbm , то обозначим sbm как sbi (при ki = km ). Тогда
t
по свойству совместимости по убыванию существует переход sbi → s′′ ,
b
b
′′
′
b
′′
′
где si 6 s и либо sj 6 s 6 s , либо sl 6 s 6 s , где индексы j и l
t
такие, что kj = kl . Следовательно, имеем (qki , sbi ) →q (qkj , s′′ ).
Если sbi 6 s1 6 s′1 , то по свойству совместимости по возрастанию
t
t
существуют переходы (qki , s1 ) →q (qkj , s2 ) и (qki , s′1 ) →q (qkj , s′2 ) при
s′′ 6 s2 6 s′2 .
t
Если sbm 6 s1 6 s′1 , то имея (qki , sbi ) →q (qkj , s′′ ), необходимо
t
показать, что существует переход (qki , sbm ) →q (qkj , s′′′ ) и повторить
рассуждения, приведенные выше (в предыдущем абзаце). Итак, рассмотрим состояние s3 такое, что s3 > sbi и s3 > sbm . Совместимость по
t
возрастанию обеспечивает наличие перехода (qki , s3 ) →q (qkj , s4 ) при
′′
s4 > s . Свойство совместимости по убыванию гарантирует существоt
вание перехода (qki , sbm ) →q (qkj , s′′′ ) при s′′′ 6 s4 .
Таким образом, получили автоматную структурированную систему
переходов WSA = (Sq , T , →q , s0q ) с отношением порядка 6q на множестве состояний, где s0q = (qki , s0 ).
По построению система WSA имеет некоторое исполнение
t3
t2
t1
(qki , s0 ) →
q (qkj , s1 ) →q (qkl , s2 ) →q . . . тогда и только тогда, когда
t
t
t
1
2
система WTSud имеет исполнение s0 →
s1 →
s2 →3 . . . .
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
106
Гл. 4. Структурированные системы переходов
Т е о р е м а 4.1. Класс вполне структурированных систем переходов
с совместимостью по возрастанию и убыванию совпадает с классом автоматных структурированных систем переходов.
Совместимость по возрастанию
Д о к а з а т е л ь с т в о. Справедливость теоремы следует из леммы 4.1
и леммы 4.2.
Отсюда следует, что для класса автоматных структурированных систем переходов имеем разрешимость проблем покрытия, субпокрытия,
достижимости управляющего состояния, поддержки управляющего состояния, неизбежности и останова при условии эффективного предбазиса, вычислимости Succ и разрешимости правильного квазипорядка 6.
107
4.3. Автоматные системы переходов
s1
∀
≤
t
Совместимость по убыванию
s1′
s1
t
s2
≤
s′2
≤
t
∃
∃
s1′
∀
t
s2
≤
s′2
Автоматные структурированные системы переходов
Теория структурированных систем переходов [30, 28, 31] оказывается полезной для решения задач анализа семантических свойств
различных формальных моделей. Обзор (однако далеко не полный)
формализмов, модели в рамках которых представляют собой вполне
структурированные системы переходов разных классов, может быть
найден в работе [31]. Среди формализмов, не вошедших в этот обзор,
отметим, например, формализм вложенных сетей Петри [21], предложенный И. А. Ломазовой.
В главе введен новый класс структурированных систем помеченных
переходов — автоматные структурированные системы переходов. Доказывается, что класс автоматных структурированных систем переходов
совпадает с классом структурированных систем переходов с совместимостью по возрастанию и убыванию отношения переходов с правильным квазипорядком на множестве состояний системы (см. рис. 4.3).
Это означает, что если для структурированной системы переходов
одновременно выполняются свойство совместимости по возрастанию
и свойство совместимости по убыванию, то бесконечное множество
состояний такой системы разбивается на конечное число классов эквивалентности, каждый из которых является замкнутым кверху множеством, а переход из одного состояния в другое определяется исключительно принадлежностью этих состояний соответствующим классам
эквивалентности, поскольку это диктуется отношением переходов, имеющемся на конечном множестве классов эквивалентности. Другими
словами, в основе отношения переходов по состояниям системы лежит
конечный автомат, состояниями которого являются классы эквивалентности. Наличие такого управляющего автомата в основе отношения
переходов на множестве состояний системы дало название введенному
Рис. 4.3. Класс автоматных структурированных систем переходов
в этой главе новому классу автоматных структурированных систем
переходов.
С практической точки зрения автоматную структурированную систему переходов можно интерпретировать как конечный автомат, совершающий манипуляции с данными, но переходы самого автомата никак
не зависят от манипулируемых данных.
Преимущественно существующие формализмы позволяют строить
формальные модели, представляющие собой структурированные системы переходов либо с совместимостью по возрастанию, либо с совместимостью по убыванию. Однако, исследователями совсем не уделяется внимание формализмам, модели в рамках которых удовлетворяли
бы условию одновременной выполнимости свойств совместимости по
возрастанию и совместимости по убыванию. Исходя из этого напрашивается вывод, что, возможно, допущение одновременного выполнения
двух свойств совместимости по возрастанию и по убыванию отношения переходов с правильным квазипорядком на множестве состояний
системы приводит к вырожденной (весьма слабой по выразительной
способности) системе. В следующих главах будет показано, что это не
так и такого рода формализмы могут быть весьма интересны, имея
достаточную вычислительную мощность. В частности, далее будет
предложен и исследован нетривиальный формализм этого класса —
автоматные счетчиковые машины.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
108
Гл. 4. Структурированные системы переходов
В качестве примера формализма, позволяющего строить формальные модели, которые могут быть рассмотрены как автоматные структурированные системы переходов, отметим специальный фрагмент алгебры процессов, определяемой в стиле CSP Хоара и CCS Милнера. Одна
из возможных конкретных реализаций этого фрагмента алгебры процессов — это формализм для моделирования распределенных систем,
позволяющий отслеживать перемещение данных различного типа между компонентами системы, — взаимодействующие раскрашивающие
процессы (Communicating Colouring Processes) [12].
Глава написана на основе источников [11, 21, 31].
Глава 5
АВТОМАТНЫЕ СЧЕТЧИКОВЫЕ МАШИНЫ
Глава посвящена слабым счетчиковым машинам, способным лишь
слабо реализовывать вычислимые функции, т. е. из-за недетерминизма
переходов такие счетчиковые машины вычисляют значение некоторой
функции f (x1 , . . . , xn ), останавливаясь с результатом в счетчике y,
только таким образом, что y 6 f (x1 , . . . , xn ).
5.1. Слабые счетчиковые машины
На основе счетчиковой машины Минского Построим новую счетчиковую машину (в несколько обобщенном виде), для которой при
проверке на нуль значения счетчика может происходить неверное распознавание нуля (т. е. положительное значение счетчика может быть
принято машиной за нулевое). Такую машину будем называть слабой
счетчиковой машиной. Определение слабой счетчиковой машины дадим в следующем виде.
О п р е д е л е н и е. Слабая счетчиковая машина представляет собой
набор из четырех элементов (Q, {x1 , . . . , xm }, →, T ), где
• xi — счетчик (1 6 i 6 m);
• Q = {q0 , . . . , qf } — конечное множество состояний;
• q0 — начальное состояние, qf — финальное состояние;
• T — конечное множество меток действий, соответствующих выражениям над счетчиками;
t
• → ⊆ Q\{qf } × T × Q — отношение переходов; запись q → q ′
используется для обозначения правила перехода (q, t, q ′ ).
Переход из одной конфигурации в другую может быть одного из
t
следующих видов (при q → q ′ ):
t
(q, c1 , . . . , ci , . . . , cm ) → (q ′ , c1 , . . . , ci + 1, . . . , cm ), если t соответствует выражению xi := xi + 1;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
110
Гл. 5. Автоматные счетчиковые машины
t
(q, c1 , . . . , ci , . . . , cm ) → (q ′ , c1 , . . . , ci − 1, . . . , cm ), если t соответствует выражению xi := xi − 1; переход возможен лишь в случае ci > 0;
t
(q, c1 , . . . , ci , . . . , cm ) → (q ′ , c1 , . . . , ci , . . . , cm ), если t соответствует
выражению xi := xi .
Как видно из определения отношения переходов, одной конфигурации машины могут соответствовать несколько готовых к срабатыванию
команд. В этом случае срабатывание таких команд происходит недетерминировано, т. е. для срабатывания выбирается любая из них.
Счетчиковые машины этого класса являются вполне структурированными системами переходов со строгой совместимостью по возрастанию. Отсюда имеем для них разрешимость проблем общей ограниченности и ограниченности заданного счетчика, а также проблемы
покрытия. Проблема ограниченности в данном случае состоит в проверке того, являются ли все исполнения из начальной конфигурации
счетчиковой машины ограниченными. Разрешимость этих проблем доказывается с помощью дерева покрытия.
Пусть задан класс слабых счетчиковых машин, которые имеют одно
и то же множество счетчиков.
О п р е д е л е н и е. Проблема включения состоит в определении существования алгоритма, устанавливающего для любых двух слабых
счетчиковых машин wcM1 и wcM2 из этого класса, имеет ли место
соотношение
R(wcM1 ) ⊆ R(wcM2 ),
где R(wcMi ) — множество достижимых векторов значений счетчиков
из начальной конфигурации для машины wcMi (i = 1, 2). В случае
проблемы эквивалентности соотношение имеет вид
R(wcM1 ) = R(wcM2 ).
Обе проблемы не являются разрешимыми для слабых счетчиковых
машин. Доказательства проводятся сведением неразрешимой 10-й проблемы Гильберта [23] к рассматриваемым проблемам.
Проблема Гильберта формулируется следующим образом: существует ли алгоритм, с помощью которого можно выяснить, имеет ли
полином
P (x1 , x2 , . . . , xn )
5.1. Слабые счетчиковые машины
111
с целыми коэффициентами целое решение, т. е. существует ли вектор
целых чисел (c1 , c2 , . . . , cn ) такой, что P (c1 , c2 , . . . , cn ) = 0? Уравнение
P (x1 , x2 , . . . , xn ) = 0
называется диофантовым. В общем виде оно представляет собой сумму членов:
X
Pi (x1 , . . . , xn ),
P (x1 , . . . , xn ) =
i
где Pi (x1 , x2 , . . . , xn ) = ai · xs1 · xs2 · . . . · xsh .
Доказательство неразрешимости задачи эквивалентности слабых
счетчиковых машин состоит из трех частей. Сначала 10-я проблема
Гильберта сводится к задаче включения графов полиномов. Затем
задача включения графов полиномов сводится к задаче включения для
слабых счетчиковых машин. Наконец, задача включения для слабых
счетчиковых машин сводится к задаче эквивалентности для слабых
счетчиковых машин. Это показывает, что 10-я проблема Гильберта,
известная как неразрешимая, сводится к задаче эквивалентности, которая поэтому также должна быть неразрешимой.
Граф G(P ) диофантова полинома P (x1 , . . . , xn ) с неотрицательными
коэффициентами — это множество
G(P ) = {(x1 , . . . , xn , y) | y 6 P (x1 , . . . , xn ) ∧ 0 6 x1 , . . . , xn , y}.
Задача включения графов полиномов заключается в определении для двух диофантовых полиномов A и B, выполняется ли
G(A) ⊆ G(B).
Т е о р е м а 5.1. Задача включения графов полиномов неразрешима.
Д о к а з а т е л ь с т в о проводится сведением 10-й проблемы Гильберта к
задаче включения графов полиномов.
Ограничим доказательство задачами с целыми неотрицательными решениями. Если вектор (x1 , . . . , xn ) — это решение уравнения
P (x1 , . . . , xn ) = 0 с xi < 0, то (x1 , . . . , −xi , . . . , xn ) — решение для
P (x1 , . . . , −xi , . . . , xn ) = 0. Следовательно, для определения того, является ли (x1 , . . . , xn ) решением произвольного полинома, необходимо
только проверить каждый из 2n полиномов, получающихся в результате изменения знака у некоторого подмножества переменных для
неотрицательного решения.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
112
Гл. 5. Автоматные счетчиковые машины
Аналогично, поскольку P 2 (x1 , . . . , xn ) = 0 тогда и только тогда, когда P (x1 , . . . , xn ) = 0, необходимо рассматривать только те полиномы,
значения которых неотрицательны.
Сейчас мы можем разбить любой полином P (x1 , x2 , . . . , xn ) на два
полинома Q1 (x1 , . . . , xn ) и Q2 (x1 , . . . , xn ) такие, что
P (x1 , . . . , xn ) = Q1 (x1 , . . . , xn ) − Q2 (x1 , . . . , xn ),
помещая все члены с положительными коэффициентами в Q1 , а все
члены с отрицательными коэффициентами — в Q2 . Поскольку
P (x1 , . . . , xn ) > 0,
имеем, что Q1 (x1 , . . . , xn ) > Q2 (x1 , . . . , xn ) и P (x1 , . . . , xn ) = 0 тогда и
только тогда, когда Q1 (x1 , . . . , xn ) = Q2 (x1 , . . . , xn ).
Рассмотрим два графа полиномов:
G(Q1 ) = {(x1 , . . . , xn , y) | y 6 Q1 (x1 , . . . , xn )},
G(Q2 + 1) = {(x1 , . . . , xn , y) | y 6 1 + Q2 (x1 , . . . , xn )}.
Теперь G(Q2 + 1) ⊆ G(Q1 ) тогда и только тогда, когда для всех
неотрицательных x1 , . . . , xn и y из y 6 1 + Q2 (x1 , . . . , xn ) следует, что
y 6 Q1 (x1 , . . . , xn ). Это справедливо тогда и только тогда, когда не
существует x1 , . . . , xn и y таких, что
Q1 (x1 , . . . , xn ) < y 6 1 + Q2 (x1 , . . . , xn ).
Но, как указывалось ранее, Q1 > Q2 , поэтому
Q1 (x1 , . . . , xn ) < y 6 1 + Q2 (x1 , . . . , xn ) 6 1 + Q1 (x1 , . . . , xn ),
а поскольку все величины целые,
y = 1 + Q2 (x1 , . . . , xn ) = 1 + Q1 (x1 , . . . , xn ),
что справедливо тогда и только тогда, когда Q1 = Q2 . Таким образом,
мы убедились в том, что G(Q2 + 1) ⊆ G(Q1 ) тогда и только тогда, когда
не существует таких x1 , . . . , xn , для которых P (x1 , . . . , xn ) = 0.
Итак, для определения, имеет ли решение P (x1 , . . . , xn ) = 0, необходимо показать, что не выполняется G(Q2 + 1) ⊆ G(Q1 ).
Для последовательного сведения проблемы включения графов полиномов к проблемам включения и эквивалентности для слабых счетчиковых машин будем использовать слабые счетчиковые машины в качестве
абстрактных машин, «слабо» вычисляющих полиномы.
5.1. Слабые счетчиковые машины
113
О п р е д е л е н и е. Счетчиковая машина слабо вычисляет некоторый
полином P (x1 , . . . , xn ), если для произвольного начального вектора
чисел c̄ = (c1 , . . . , cn ) результатом на «выходе» машины может быть
любое число c′ такое, что 0 6 c′ 6 P (c1 , . . . , cn ). Это означает, что
вместо единственного результата, однозначно определяемого входным
вектором c̄, она может выдать любое из чисел, не превышающих
значения полинома P (c1 , . . . , cn ). Недетерминированность результата
работы отражает недетерминированность функционирования слабой
счетчиковой машины.
Необходимо показать, что слабые счетчиковые машины могут слабо
вычислять значение диофантова полинома P (x1 , x2 , . . . , xn ). Ограничим полином P до неотрицательных значений полинома, неотрицательных коэффициентов и неотрицательных значений переменных. Это
позволит нам представить значения переменных и значение полинома значениями счетчиков машины. Входные значения переменных
x1 , x2 , . . . , xn задаются начальной конфигурацией машины. Выходная
переменная y будет использоваться для хранения значения полинома,
где y 6 P (x1 , x2 , . . . , xn ).
Вычисление полинома начинается в начальной конфигурации
(q0 , x1 , . . . , xn , 0, . . . , 0) машины и заканчивается в финальной
конфигурации (qf , x1 , . . . , xn , y, c1 , . . . , ck ), где y 6 P (x1 , x2 , . . . , xn ),
т. е. машина попадает в состояние, из которого нет переходов.
Сейчас мы хотим показать, что можно построить слабую счетчиковую машину, слабо вычисляющую функцию умножения (двух чисел).
На ее основе мы можем построить составную машину, которая слабо
вычисляет значение каждого члена путем последовательной композиции машин умножения и затем суммирует результаты.
Машина умножения реализуется с помощью слабой счетчиковой
машины следующим образом:
q0 : if x1 > 0 then x1 := x1 − 1; goto q1 ;
q0 : x1 := x1 ; goto qf ;
q1 : if x2 > 0 then x2 := x2 − 1; goto q2 ;
q1 : x2 := x2 ; goto q3 ;
q2 : z := z + 1; y := y + 1; goto q1 ;
q3 : if z > 0 then z := z − 1; x2 := x2 + 1; goto q3 ;
q3 : z := z; goto q0 .
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
114
Гл. 5. Автоматные счетчиковые машины
При начальной конфигурации (q0 , x1 , x2 , 0, 0) в самом лучшем случае эта счетчиковая машина вычисляет значение y = x1 · x2 , в остальных случаях y < x1 · x2 .
Машина сложения реализуется следующим образом:
q0 : if x1 > 0 then x1 := x1 − 1; y := y + 1; goto q0 ;
q0 : x1 := x1 ; goto q1 ;
q1 : if x2 > 0 then x2 := x2 − 1; y := y + 1; goto q1 ;
q1 : x2 := x2 ; goto qf .
Из начальной конфигурации (q0 , x1 , x2 , 0) в лучшем случае машина
достигает конфигурацию (qf , 0, 0, y), где y = x1 + x2 , в остальных
случаях (qf , c1 , c2 , y), где y < x1 + x2 , c1 6 x1 , c2 6 x2 .
Слабая счетчиковая машина Mi , слабо вычисляющая некоторый
одночлен Pi = ai · xs1 · xs2 · . . . · xsh диофантова уравнения, представляет
собой последовательную композицию машин умножения
i
, xsk , y i , z),
M1i (ai , xs1 , y1i , z), M2i (y1i , xs2 , y2i , z), . . . , Mki (yk−1
результат вычислений y i 6 Pi = ai · xs1 · xs2 · . . . · xsh .
Далее слабая счетчиковая машина M , слабо вычисляющая полином
P (x1 , . . . , xn ) = P1 (xs1 , . . . , xsh )+P2 (xt1 , . . . , xtg )+. . .+Pk (xw1 , . . . , xwl ),
строится как комбинация машин M1 , M2 , . . . , Mk , слабо вычисляющих
одночлены P1 , P2 , . . . , Pk , и машины сложения M ′ (y 1 , y 2 , . . . , y k , y).
Л е м м а 5.1. Для любого полинома P (x1 , . . . , xn ) с неотрицательными целыми коэффициентами может быть построена слабая счетчиковая машина M такая, что G(P ) = Rn (M ), где G(P) — граф
полинома P , Rn (M ) — множество проекций векторов из множества
достижимости R(M ) на их первые n+1 координаты, т. е.
Rn (M ) = {(c1 , . . . , cn , cn+1 ) | (c1 , . . . , cn , cn+1 , . . . , ck ) ∈ R(M )}.
Д о к а з а т е л ь с т в о. Основой для построения слабой счетчиковой машины M (см. рис. 5.1) служит слабая счетчиковая машина MP , слабо
вычисляющая полином P . К этой машине добавляются новые состояния (в том числе и новое начальное), переходы и счетчики x1 , . . . , xn .
Для каждого счетчика xi создаются следующие правила переходов:
q0i : xi := xi + 1; x1i := x1i + 1; . . . xki := xki + 1; goto q0i ;
q0i :
xi := xi ; goto
q0i+1 ,
115
5.1. Слабые счетчиковые машины
♥
♥
2
2
x21 := x21 + 1
✒ ❅
✒ ❅xn := xn + 1
x11 := x11 + 1
x1n := x1n + 1
❘ ..
❅
❘ ..
❅
♥
♥
P = P1 +. . .+Pk
q♥
f ✛
y
y1 + . . . + yk
✻
.
.
k
k
k
k
yk
❅ x1 := x1 + 1
■
■ xn := xn + 1
❅
P
P
1
k
x1 := x❅
xn := ❅
xn + 1✠
1 + 1✠
1 . . .yk−1
✲ q♥
✲ ...
✲ ♥
✲ a1 ·x1s1 ·. . .·x1sh y✲
✲ ak ·xkt1 ·. . .·xktg
0
Рис. 5.1. Слабая счетчиковая машина M , порождающая для P (x1 , . . . , xn ) граф
G(P ) = {(x1 , . . . , xn , y) | y 6 P (x1 , . . . , xn )}
где xji — счетчик слабой машины MPj , слабо вычисляющей одночлен Pj , который соответствует переменной xi . В качестве нового начального состояния q0 возьмем q01 , старое начальное состояние заменим
на q0n+1 . Эти переходы позволяют задавать произвольные значения для
счетчиков x1 , . . . , xn (и для счетчиков xji каждой машины MPj , причем
xji = xi ) и передают управление машине MP . Зададим на множестве
счетчиков слабой машины M порядок так, чтобы первыми n + 1
счетчиками были x1 , . . . , xn , y, где y — счетчик, в который помещается
результат от слабого вычисления полинома P .
Для начальной конфигурации s0 слабой счетчиковой машины M
установим значения счетчиков равными нулю, за исключением счетчиков ai , которые положим равными соответствующим константам ai
одночленов Pi . Тогда для слабой счетчиковой машины M с начальной
конфигурацией s0 может быть получено множество Rn (M ) проекций
достижимых векторов значений счетчиков на счетчики x1 , . . . , xn , y,
которое будет равно графу G(P ) полинома P .
Т е о р е м а 5.2. Проблема включения для слабых счетчиковых машин
неразрешима.
Д о к а з а т е л ь с т в о. Для двух произвольных полиномов P и S с одинаковым числом переменных n можно построить слабые счетчиковые
машины MP и MS такие, что
G(P ) ⊆ G(S) ⇐⇒ R(MP ) ⊆ R(MS ).
Пусть MP и MS′ — слабые счетчиковые машины, построенные на
основе машин, слабо вычисляющих полиномы P и S соответственно,
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
116
Гл. 5. Автоматные счетчиковые машины
✲ MS′
❍❍vi := vi + 1✟✟
✙ ✲...
✟
❍ ♥
✲ ...
✲
❨
❍
✟
✟✟vi := vi − 1❍❍
117
5.1. Слабые счетчиковые машины
✲ q♥
f
Рис. 5.2. Слабая счетчиковая машина MS ; переменные vi ∈ V \{x1 , . . . , xn , y}
C
′
A′ B
xn+1 := xn+
1
A
A
✲1 +
♥
..
f♥
A
A
. qf
.
x
:=
x
+c
x
:=
x
+c
q
n
n
1
1
n
1
.
.
A
A
♥
✲...
✲ q0♥
✲ ′
xn+1 := xn+1 +1
❆❯ C♥
✒
q0
xn+1 := xn+1 +1✲
B
B
♥
..
f♥
B
B
. qf
❘ ♥
❅
x1 := x1 +c✲
.
1 . . . xn := xn +cn
.
.
B
✲ q0♥
✲ qB ′
xn+1 := xn+1 +1
причем G(P ) = Rn (MP ) и G(S) = Rn (MS′ ) (см. доказательство предыдущей леммы). Если первая машина имеет k счетчиков, а вторая — l,
то число счетчиков в обеих машинах можно уравнять, добавив |k − l|
счетчиков для машины с меньшим их количеством. Эти счетчики
не входят в выражения каких-либо переходов, начальное значение
каждого из них полагается равным 0.
Слабая счетчиковая машина MS строится на основе машины MS′
так, как показано на рис. 5.2. К машине MS′ добавляются новые состояния и переходы. Для каждой машины будем различать счетчики x1 ,
. . ., xn , y. Остальные счетчики, которые будем называть внутренними,
переименуем как v1 , v2 , . . ., vr−n−1 , где r — мощность множества
счетчиков V . Для каждого внутреннего счетчика vi ∈ V \{x1 , . . . , xn , y}
счетчиковой машины с ошибками MS′ построим новые переходы:
qi′ : if vi > 0 then vi := vi − 1; goto qi′ ;
qi′ : vi := vi + 1; goto qi′ ;
′
qi′ : vi := vi ; goto qi+1
,
где 1 6 i 6 r − n − 1.
После слабого вычисления полинома S машиной MS′ и помещения
результата вычисления в счетчик y эти новые переходы позволяют
установить произвольное значение для каждого внутреннего счетчика.
Таким образом,
R(MP ) ⊆ R(MS ) ⇐⇒ R(MP ) ⊆ Rn (MS′ ) × Nr−n−1 ,
где Nr−n−1 — множество векторов размерности r − n − 1 из целых неотрицательных чисел. Правая часть эквивалентна отношению
Rn (MP ) ⊆ Rn (MS′ ). Следовательно,
R(MP ) ⊆ R(MS ) ⇐⇒ Rn (MP ) ⊆ Rn (MS′ ).
Это означает, что для решения проблемы включения графов двух
произвольных полиномов P и S достаточно построить слабые счетчиковые машины MP , MS′ , MS , убедиться, имеет ли место включение
Рис. 5.3. Слабые счетчиковые машины A, A′ , B, B ′ и C
R(MP ) ⊆ R(MS ), на основании этого сделать заключение о том, имеет
ли место Rn (MP ) ⊆ Rn (MS′ ), и на основании леммы 5.1 установить,
содержится ли G(P ) в G(S).
Таким образом, если предположить разрешимость проблемы включения для множеств достижимых векторов значений слабых счетчиковых машин, получаем разрешимость проблемы включения графов
полиномов с неотрицательными коэффициентами, что неверно.
Т е о р е м а 5.3. Проблема эквивалентности для слабых счетчиковых
машин неразрешима.
Д о к а з а т е л ь с т в о. Для доказательства неразрешимости методом
сведения достаточно показать, что проблема включения сводится
к проблеме эквивалентности. Это означает, что нужно указать
способ, с помощью которого для любых двух слабых счетчиковых
машин A и B можно построить машины A′ и B ′ такие, что
R(B) ⊆ R(A) ⇐⇒ R(A′ ) = R(B ′ ).
Обе машины A′ и B ′ строятся добавлением нового счетчика и разных переходов к одной и той же машине C, которая, в свою очередь,
строится из машин A и B.
Способ конструирования машин C, A′ , B ′ показан на рис. 5.3
(переход с выражением x := x + c соответствует последовательности
из c переходов x := x + 1). Предполагается, что машины A и B
имеют одно и то же множество счетчиков (в противном случае добавляются новые счетчики, как в доказательстве теоремы 5.2). Пусть A
A
B B
B
и B имеют начальные конфигурации (q0A , cA
1 , . . . , cn ) и (q0 , c1 , . . . , cn )
соответственно. Машина C строится таким образом, что из началь-
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
118
Гл. 5. Автоматные счетчиковые машины
ного состояния q0C существуют две последовательности переходов в
начальные состояния q0A машины A и соответственно q0B машины B
такие, что из начальной конфигурации машины C, которая полагается
A
равной (q0C , 0, . . . , 0), в состоянии q0A мы достигаем (q0A , cA
1 , . . . , cn ),
B
B B
B
а в состоянии q0 — конфигурацию (q0 , c1 , . . . , cn ). Таким образом,
в зависимости от того, какое направление было выбрано, машина C
может функционировать далее как машина A или машина B.
Машина A′ строится из машины C добавлением нового счетчика
xn+1 , начальное значение которого полагается равным нулю, и добавлением для каждого состояния qiA машины A перехода
f
qiA : xn+1 := xn+1 + 1; goto qA
′,
где
f
qA
′
f
qiB : xn+1 := xn+1 + 1; goto qB
′.
В этом разделе вводятся автоматные счетчиковые машины в качестве общего средства для демонстрации неразрешимости ряда проблем для формализмов, относящихся к классу автоматных структурированных систем переходов, которые могут моделировать эти машины.
О п р е д е л е н и е. Автоматная счетчиковая машина АСM представляет собой набор из восьми элементов (c̄0 , q0 , qf , Q, X, →, T , E), где
Легко видеть, что
R(C) = R(A) ∪ R(B) ∪ R′ (C),
где R′ (C) — множество достижимых векторов значений счетчиков
машины C до состояний q0A и q0B ,
• X = {x1 , . . ., xm } — конечное множество счетчиков,
• Q = {q0 , . . . , qf } — конечное множество состояний,
• q0 — начальное состояние, qf — финальное состояние,
R′ (C) = {(c′1 , 0, . . . , 0) | c′1 6 cA
1 }∪
• c̄0 — вектор начальных значений счетчиков,
′
′
A
A A
′
′
A
∪ {(cA
1 , c2 , . . . , 0) | c2 6 c2 } ∪ . . . ∪ {(c1 , c2 , . . . , cn ) | cn 6 cn } ∪
• T — конечное множество меток действий, соответствующих выражению (преобразованию) над счетчиками,
∪ {(c′1 , 0, . . . , 0) | c′1 6 cB
1 }∪
t
′
′
B
B B
′
′
B
∪ {(cB
1 , c2 , . . . , 0) | c2 6 c2 } ∪ . . . ∪ {(c1 , c2 , . . . , cn ) | cn 6 cn }.
• →⊆ Q \ {qf } × T × Q — отношение переходов, запись q → q ′
используется для обозначения перехода (q, t, q ′ ) ∈→.
R(A′ ) = R(C) × {0} ∪ R(A) × {1};
R(B ′ ) = R(A′ ) ∪ R(B) × {1} = R(C) × {0} ∪ (R(A) ∪ R(B)) × {1}.
Поскольку из слабой счетчиковой машины C не достижима никакая
конфигурация, где xn+1 = 1, то из того факта, что
R(B) ⊆ R(A) ⇐⇒ R(A) = R(A) ∪ R(B),
R(A′ ) = R(B ′ ) ⇐⇒ R(B) ⊆ R(A).
Из научно-технического отчета [36] об исследовании свойств двумерных систем векторного сложения с состояниями следует, что множество достижимых конфигураций слабой двухсчетчиковой машины
представляет собой полулинейное множество (о полулинейных множествах см. далее), но существуют слабые трехсчетчиковые машины,
множество достижимости которых неполулинейно. Это означает, что
для слабых двухсчетчиковых машин разрешимы проблемы достижимости заданной конфигурации, включения и эквивалентности множеств
достижимых векторов значений счетчиков. (Подробнее об этом см.,
например, [8].)
5.2. Автоматные счетчиковые машины
′
— финальное состояние машины A .
Машина B ′ строится из A′ добавлением нового перехода для каждого состояния qiB машины B
следует
119
5.2. Автоматные счетчиковые машины
Каждой метке перехода t сопоставлено некоторое выражение E(t)
из множества E, представляющего собой конечное множество выражений над счетчиками вида xi := xi (значение счетчика не меняется),
xi := xi + 1, xi := xi ⊖ 1 или xi := xi + min(xj , 1), где ⊖ — операция
вычитания до нуля, i, j = 1 . . . m.
Для удобства обозначим Xi +, Xi ⊖ и Xi (Xj )+ соответственно
выражения xi := xi + 1, xi := xi ⊖ 1 и xi := xi + min(xj , 1). Выражения
вида xi := xi будем опускать.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
120
Гл. 5. Автоматные счетчиковые машины
Конфигурация автоматной счетчиковой машины — это набор
(qi , c1 , . . . , cm ), где qi — состояние машины, ci ∈ N — значение соответствующего счетчика (N — множество натуральных чисел, включая ноль). Переход из одной конфигурации в другую имеет вид
t
(q, c̄) −−−→ (q ′ , c¯′ ), т. е. при переходе из конфигурации (q, c̄) в (q ′ , c¯′ )
E(t)
происходит изменение значения счетчика не более чем на единицу в соответствии с приписанным к метке перехода t выражениемкомандой E(t):
если t соответствует выражению xi := xi + 1, тогда
t
(q, c1 , . . . , ci , . . . , cm ) −−−→ (q ′ , c1 , . . . , ci + 1, . . . , cm );
Xi +
если метка t соответствует выражению xi := xi ⊖ 1, тогда
t
(q, c1 , . . . , ci , . . . , cm ) −−−→ (q ′ , c1 , . . . , c′i , . . . , cm ),
Xi ⊖
где c′i = 0 при ci = 0 и c′i = ci − 1 при ci > 0;
если метка t соответствует выражению xi := xi + min(xj , 1), тогда
t
(q, c1 , . . . , ci , . . . , cm ) −−−−−−→ (q ′ , c1 , . . . , c′i , . . . , cm ),
Xi (Xj )+
где c′i = ci + 1 при cj > 1 и c′i = ci при cj = 0;
если t соответствует выражению xi := xi , тогда
t
121
5.2. Автоматные счетчиковые машины
Наряду с уже введенными обозначениями, для удобства правила
t
переходов по конфигурациям будем представлять в виде q −−−→ (q ′ , v̄),
E(t)
означающем, что существует переход t из состояния q в q ′ , при
котором к вектору старых значений счетчиков прибавляется вектор v̄
в соответствии с выражением E(t). Например, правила переходов, для
xi := xi + min(xj , 1) и xi := xi ⊖ 1 можно переписать соответственно
как
t
q −−−−−−→ (q ′ , (0, . . . , 0, min(xj , 1), 0, . . . , 0))
Xi (Xj )+
(выражения min(xj , 1) и ⊖1 стоят в i-х позициях) и
t
q −−−→ (q ′ , (0, . . . , 0, ⊖1, 0, . . . , 0)),
Xi ⊖
где ⊖1 — вычитание единицы до нуля, а min(xj , 1) — функция,
возвращающая минимум из единицы и значения счетчика xj .
Т е о р е м а 5.4. Система переходов (ACM , 6) является эффективной по пересечению вполне структурированной системой переходов
с совместимостью по возрастанию и убыванию, имеющей эффективный предбазис.
Д о к а з а т е л ь с т в о. Из определения ACM видно, что срабатывание
перехода с пометкой t ∈ T из некоторой конфигурации не зависит от
значений счетчиков, а определяется только лишь текущим состоянием
системы ACM . Поэтому для любых двух конфигураций s1 и s2 таких,
t
что s1 6 s2 , переход s1 −−−→ s′1 существует тогда и только тогда, когда
E(t)
t
(q, c1 , . . . , ci , . . . , cm ) → (q , c1 , . . . , ci , . . . , cm ).
существует переход s2 −−−→ s′2 , причем s′1 6 s′2 , так как при переходе
Исполнение счетчиковой машины — это последовательность конфигураций s0 → s1 → s2 → . . . с начальной конфигурацией s0 = (q0 , c̄0 ),
индуктивно определяемая в соответствии с правилами переходов.
На множестве конфигураций счетчиковой машины естественным
образом задается отношение 6 частичного порядка. Для двух конфигураций машины имеем:
в конфигурациях s1 и s2 совершается одна и та же операция E(t)
над счетчиками. Следовательно, для системы (ACM , 6) выполняется
условие совместимости квазипорядка 6 с отношением переходов → по
убыванию и возрастанию.
Опишем алгоритм построения предбазиса. Построим множество минимальных конфигураций ◦ t, при которых переход с пометкой t может
сработать. Для некоторого перехода t ∈ T множество конфигураций
′
(q, c1 , . . . , cm ) 6 (q ′ , c′1 , . . . , c′m ) ⇐⇒ q = q ′ и ci 6 c′i , i = 1, . . . , m.
Это отношение является правильным квазипорядком по лемме Диксона [29] (см. утверждение 4.5).
E(t)
◦
t
t = {(q, 0, . . . , 0) | ∃q ′ : q → q ′ }.
Обозначим через t◦ множество конфигураций, получаемых в результате срабатывания перехода t из конфигураций ◦ t. Рассмотрим
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
122
Гл. 5. Автоматные счетчиковые машины
множество ↑s ∩ ↑t◦ , состоящее из таких конфигураций s′ , что s′
может быть получена в результате срабатывания перехода t и s 6 s′ .
Это множество является замкнутым кверху множеством и в силу
правильности отношения 6 имеет конечный базис, который обозначим
lub(s, t◦ ). Конечный базис lub(s, t◦ ) состоит из одной конфигурации
и может быть эффективно построен следующим образом. Рассмотрим
конфигурации
(q, c1 , . . . , cm ) ∈ t◦ и s = (q ′ , c′1 , . . . , c′m ).
5.2. Автоматные счетчиковые машины
правиле перехода машины 2cM команду xi := xi − 1 на последовательность из двух команд
xi := xi − 1; K := K + 1
и xi := xi + 1 на «управляемое приращение» (i = 1, 2; n = |Q|):
if K > 0 then (K := K − 1; xi := xi + 1) else goto qn+1 .
Наконец, добавим три новых состояния qn+1 , qn+2 , qn+3 , и соответствующие им правила переходов δn+1 , δn+2 , δn+3 :
Для того чтобы пересечение идеалов ↑s ∩ ↑t◦ не было пустым, необходимо выполнение условия q = q ′ . Тогда
qn+1 : if x1 > 0 then (x1 := x1 − 1; K := K + 1; goto qn+1 )
else goto qn+2 ,
lub(s, t◦ ) = (q, max(c′1 , c1 ), . . . , max(c′m , cm )).
qn+2 : if x2 > 0 then (x2 := x2 − 1; K := K + 1; goto qn+2 )
else goto qn+3 ,
Пусть теперь некоторая конфигурация s′ ∈ Predt (↑s). Тогда возможно срабатывание перехода t, которое переводит s′ в конфигурацию
s′′ ∈ ↑s. Отсюда следует, что s′′ ∈ ↑t◦ . С другой стороны, для любой
конфигурации s′′ такой, что s′′ ∈ ↑s и s′′ ∈ ↑t◦ , можно построить
Predt (s′′ ). Получаем
Predt (↑s) = Predt (↑lub(s, t◦ )) = ↑Predt (lub(s, t◦ )).
Эта формула задает эффективное построение конечного базиса множества Predt (↑s) по конечному базису lub(s, t◦ ).
Рассмотрим проблему ограниченности и покажем ее неразрешимость для автоматных счетчиковых машин.
О п р е д е л е н и е. Автоматная счетчиковая машина ограничена, если
ограничены все ее исполнения из начальной конфигурации, т. е. на
протяжении всех исполнений машины сумма значений счетчиков не
будет превосходить некоторой константы.
Т е о р е м а 5.5. Для машины Минского 2cM с двумя счетчиками
и нулевой начальной конфигурацией, т. е. (q0 , 0, 0), можно построить автоматную трехсчетчиковую машину 3ACM с начальной
конфигурацией (q0 , 0, 0, 0) такую, что 3ACM будет ограничена
тогда и только тогда, когда ограничена машина 2cM .
Д о к а з а т е л ь с т в о. Преобразуем произвольную двухсчетчиковую машину Минского 2cM в машину Минского 3cM с тремя счетчиками
(и с несколько измененным набором правил переходов) следующим
образом. Добавим новый «емкостный» счетчик K. Заменим в каждом
123
qn+3 : K := K + 1; goto q0 .
В машине 3cM только правило перехода δn+3 изменяет (увеличивает на единицу) сумму счетчиков x1 + x2 + K.
Машина 3cM с начальной конфигурацией (q0 , 0, 0, 0) ограничена
тогда и только тогда, когда ограничена машина Минского 2cM с начальной конфигурацией (q0 , 0, 0) (наличие у машины Минского 2cM
бесконечного неограниченного исполнения означает наличие бесконечного неограниченного исполнения и у машины 3cM , так как значение
счетчика K (изначально K = 0) бесконечно возрастает из-за прохождения бесконечного числа раз через состояние qn+3 , где правило перехода
δn+3 увеличивает значение K на 1).
Разрешим еще один тип команд x := x ⊖ 1 для правил переходов.
И добавим новый оператор недетерминированного выбора []. В 3cM
заменим каждое правило перехода
if x > 0 then comm1 else comm2 ,
где x ∈ {x1 , x2 , K}, на правило
comm1 [] (x := x ⊖ 1; comm2 ).
В comm1 заменим каждую последовательность команд
xi := xi − 1; K := K + 1
на
K := K + min(xi , 1); K := K ⊖ 1; xj := xj + min(xi , 1); xj := xj ⊖ 1;
K := K + min(xi , 1); xi := xi ⊖ 1;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
124
Гл. 5. Автоматные счетчиковые машины
125
5.2. Автоматные счетчиковые машины
(i 6= j; i, j ∈ {1, 2}) и каждую последовательность команд
K := K − 1; xi := xi + 1
на
xi := xi + min(K, 1); xi := xi ⊖ 1; xj := xj + min(K, 1); xj := xj ⊖ 1;
xi := xi + min(K, 1); K := K ⊖ 1.
Таким образом, мы получили автоматную трехсчетчиковую машину 3ACM . И в машине 3ACM только δn+3 увеличивает сумму
счетчиков x1 + x2 + K, в то время как все остальные правила переходов
уменьшают или оставляют без изменения эту сумму.
Машина 3ACM с начальной конфигурацией (q0 , 0, 0, 0) ограничена
тогда и только тогда, когда ограничена машина 3cM с начальной
конфигурацией (q0 , 0, 0, 0).
Действительно, если существует некоторое неограниченное исполнение машины 3ACM , то оно бесконечно часто проходит через состояние qn+3 , так же как и через состояния qn+2 , qn+1 , q0 .
По построению счетчиковой машины 3ACM имеем, что если существует «составной» переход машины 3ACM , который не совпадает
(по смыслу) с переходом машины Минского 3cM , то, до того как
исполнение машины 3ACM вновь попадет в состояние qn+3 , сумма
значений счетчиков обязательно уменьшится по отношению к исходной
сумме, которая образовалась при последнем срабатывании правила
переходов δn+3 .
Поскольку исполнение неограниченное и только в состоянии qn+3
сумма x1 + x2 + K может увеличиться (на единицу), то должно существовать такое неограниченное исполнение машины 3ACM из конфигурации (q0 , 0, 0, 0), что в нем все команды вида (x := x ⊖ 1; comm2 )
выполняются тогда и только тогда, когда x = 0, и нет неверного
определения нуля, т. е. оно проходит по тем же веткам, что и машина
Минского 3cM , а это означает существование неограниченного исполнения машины 3cM .
С л е д с т в и е 5.1. Проблема ограниченности для автоматных трехсчетчиковых машин неразрешима.
Для доказательства неразрешимости проблем включения и эквивалентности достаточно показать, что можно построить автоматную счетчиковую машину, которая будет слабо вычислять значение произвольного диофантова полинома P (x1 , x2 , . . . , xn ). Как и ранее, ограничим
x2 := x2 ⊖✲
1❆
❯
q♥
0✛
♥
✛
z := z+ min(x2 , 1)
y := y+ min((min(z , 1)+ min(x1 , 1))⊖ 1, 1)
✲ ♥
✲ ♥
②❳❳
❳
✘
y
✘
x
:=
x
+
min
(z
,
1
)
2
❳❳ 2
✘✘
x1 := x1 ⊖ 1
❘♥
❅
z := z⊖ 1 ❳❳ ♥
✾✘✘
✘
qf
z
Рис. 5.4. Автоматная счетчиковая машина, вычисляющая слабо y = x1 · x2
❆❯
y := y+ min(x1 , 1✲
)
y := y+ min(x2 , 1✲
)
♥
♥
q♥
0✛
✛
x1 := x1 ⊖ 1
x2 := x2 ⊖ 1
y
✲ q♥
f
Рис. 5.5. Автоматная счетчиковая машина, вычисляющая слабо y = x1 + x2
задачу до неотрицательных значений полинома P , неотрицательных
коэффициентов и неотрицательных значений переменных.
Автоматная счетчиковая машина умножения приведена на рис. 5.4.
В лучшем случае эта счетчиковая машина умножения вычисляет значение y = x1 · x2 , в остальных случаях y < x1 · x2 .
На рис. 5.4 переход с выражением
y := y + min((min(z, 1) + min(x′1 , 1)) ⊖ 1, 1)
соответствует набору переходов
k := k + min(x1 , 1); k := k + min(z, 1); k := k ⊖ 1;
y := y + min(k, 1); k := k ⊖ 1.
Автоматная счетчиковая машина (слабого) сложения представлена
на рис. 5.5.
Автоматная счетчиковая машина, слабо вычисляющая некоторый
заданный одночлен
Pi = ai · xs1 · xs2 · . . . · xsk
диофантова уравнения, показана на рис. 5.6 и представляет собой
комбинацию машин умножения.
Т е о р е м а 5.6. Проблема включения для автоматных счетчиковых
машин неразрешима.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
126
✲ ai · xs1
Гл. 5. Автоматные счетчиковые машины
y1i ✲ y i · x
s2
1
y2i ✲ . . .
i
yk−
1 ✲ yi
k−1 · xsk
5.2. Автоматные счетчиковые машины
yki ✲ ♥
qf
Рис. 5.6. Автоматная счетчиковая машина, вычисляющая слабо одночлен Pi =
= ai · xs1 · xs2 · . . . · xsk диофантова уравнения. Каждый блок представляет собой
машину умножения
Д о к а з а т е л ь с т в о проводится по аналогии с доказательством рассмотренной ранее теоремы 5.2.
Т е о р е м а 5.7. Проблема эквивалентности для автоматных счетчиковых машин неразрешима.
Д о к а з а т е л ь с т в о проводится по аналогии с доказательством рассмотренной ране теоремы 5.3.
Несмотря на то, что задача эквивалентности в общей формулировке является неразрешимой для автоматных счетчиковых машин,
машины этого класса все же можно подвергнуть процедуре минимизации числа управляющих (локальных) состояний без какого-либо
влияния на множество достижимых конфигураций. Действительно, для
этого достаточно рассмотреть автоматную счетчиковую машину как
конечный автомат A = (Q, Σ, →, q0 , F ), где Q — конечное множество
управляющих состояний, Σ = E(T ) — множество входных символов,
q0 — начальное состояние, → — функция переходов, а F = Q —
множество заключительных или допускающих состояний, и провести
процедуру минимизации конечного автомата (см., например, [26]).
Напомним, что проблема достижимости состоит в обнаружении
алгоритма, с помощью которого для любой счетчиковой машины ACM
и для любого вектора значений счетчиков c̄ = (c1 , . . . , cm ) можно выяснить выполнимость условия c̄ ∈ R(ACM ), где R(ACM ) — множество
достижимых векторов значений счетчиков из начальной конфигурации
машины ACM .
Т е о р е м а 5.8. Для автоматных счетчиковых машин задача достижимости некоторой нулевой конфигурации (q, 0, . . . , 0) разрешима.
127
Д о к а з а т е л ь с т в о. Поскольку автоматные счетчиковые машины являются вполне структурированными системами переходов с совместимостью по возрастанию и убыванию, разрешимость данной задачи
следует из рассмотренного ранее утверждения 4.18.
Т е о р е м а 5.9. Для автоматных четырехсчетчиковых машин проблема достижимости вектора значений счетчиков (c1 , c2 , c3 , c4 ) >
> (0, 0, 0, 0) является неразрешимой.
Д о к а з а т е л ь с т в о. Из теоремы 2.9 имеем для для двухсчетчиковых
машин Минского неразрешимость задачи достижимости вектора нулевых значений счетчиков (0, 0).
Рассмотрим произвольную машину Минского с двумя счетчиками
2cM . Построим для 2cM ее «слабую» модель следующим образом.
Добавим оператор недетерминированного выбора []. И в машине 2cM
заменим каждое правило перехода
if xj > 0 then comm1 else comm2
на правило
comm1 [] comm2 .
В выражении xj := xj −1 оператор «−» заменим оператором вычитания
до нуля «⊖». Таким образом, мы получили автоматную двухсчетчиковую машину 2ACM .
Преобразуем машину 2ACM в автоматную четырехсчетчиковую
машину 4ACM следующим образом. Добавим счетчики x3 и x4 . В каждом правиле переходов comm1 [] comm2 заменим каждый переход
(q, xj := xj ⊖ 1, q ′ ) на последовательность переходов
(q, x3 := x3 + min(xj , 1), q1′ ), (q1′ , xj := xj ⊖ 1, q2′ ),
(q2′ , x3 := x3 ⊖ 1, q ′ ),
а переход (q, xj := xj , q ′′ ), который не изменяет значения счетчика,
на последовательность
(q, xj := xj , q1′′ ), (q1′′ , x4 := x4 + min(xj , 1), q ′′ ).
Рассмотрим автоматную счетчиковую машину 4ACM с начальной
конфигурацией s0 = (q0 , c1 , c2 , N1 , N2 ), где N1 > 0. Если 4ACM
из начальной конфигурации s0 достигает вектора значений счетчиков
(0, 0, N1 , N2 ), то исходная машина Минского 2cM достигает нулевого
вектора (0, 0), так как в автоматной счетчиковой машине 2ACM
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
128
Гл. 5. Автоматные счетчиковые машины
из (q0 , c1 , c2 ) в некоторую конфигурацию (q, 0, 0) существует исполнение, равное исполнению машины 2cM . Действительно, если бы
такого исполнения не было, то «неправильный» переход изменил бы
значение одного из счетчиков x3 или x4 , т. е. либо уменьшил значение
счетчика x3 , либо увеличил счетчик x4 . Значения этих счетчиков могут
остаться равными соответственно N1 и N2 , если 2ACM имеет конечное
исполнение, равное конечному исполнению в нулевую конфигурацию
машины Минского 2cM .
Обратно, очевидно, что если машина Минского 2cM из начальной конфигурации (q0 , c1 , c2 ) переходит в некоторую нулевую конфигурацию (q, 0, 0), то автоматная счетчиковая машина 4ACM из
(q0 , c1 , c2 , N1 , N2 ) достигает значений счетчиков (0, 0, N1 , N2 ).
5.3. Автоматные трехсчетчиковые машины
В теории формальных моделей особое пограничное место занимают
абстрактные машины с двумя счетчиками, поскольку уменьшение количества счетчиков до одного обычно приводит к резкому росту числа
разрешимых свойств, в то время как уже для трехсчетчиковых машин того же класса имеем неразрешимыми подавляющее большинство
полезных свойств. В связи с этим представляется интересным исследование выразительной способности (мощности) абстрактных двухсчетчиковых машин разных классов.
Известно, что для слабых двухсчетчиковых машин классические
проблемы эквивалентности, включения и достижимости являются алгоритмически разрешимыми. Например, алгоритмы, подобные представленному в работе [36], производят построение множеств достижимых конфигураций, которые в случае двух счетчиков представляют
собой полулинейные множества, имеющие конечное представление. Таким образом, каждая из указанных проблем может быть легко задана
формулой арифметики Пресбургера на основе полученного конечного
представления множества достижимости. Известно, что арифметика
Пресбургера разрешима, т. е. существует алгоритм определения истинности любой ее формулы.
Применение таких алгоритмов ограничивается случаем абстрактных машин с двумя счетчиками, поскольку уже для «слабых» машин с
тремя счетчиками множество достижимых конфигураций не является
полулинейным [36].
В этом разделе объектом исследования является класс автоматных
трехсчетчиковых машин. Основной вопрос — будет ли полулинейным
множество достижимости каждой машины из этого класса. Однако,
129
5.3. Автоматные трехсчетчиковые машины
будет показано, что автоматные трехсчетчиковые машины, множества
достижимости которых не являются полулинейными, могут иметь весьма простой вид. Отметим, что вопрос полулинейности множеств достижимости автоматных двухсчетчиковых машин пока остается открытым.
Пусть L ⊆ Nn — произвольное множество векторов. Вектор p ∈ Nn
называется периодом множества L, если для любого r ∈ L вектор r + p
также принадлежит множеству L.
Пусть C и P — подмножества множества Nn и L(C; P ) — множество всех векторов из Nn , представимых в виде c + p1 + . . . + pm , где c ∈
∈ C и p1 , . . . , pm — некоторая (возможно, пустая) последовательность
векторов из множества P , т. е.
L(C; P ) = {x | ∃ c ∈ C, k1 , . . . , km ∈ N, p1 , . . . , pm ∈ P : x = c+
m
X
i=1
ki pi }.
Тогда множества C и P называются соответственно системой предпериодов и системой периодов множества L(C; P ).
Итак, L(C; P ) — множество всех x из множества Nn , таких что
x=c+
m
X
ki pi ,
i=1
где c ∈ C, p1 , . . . , pm ∈ P и k1 , . . . , km ∈ N.
Если множество C состоит в точности из одного элемента, т. е. C =
= {c}, то для удобства вместо L(C; P ) будем писать L(c; P ).
Множество L ⊆ Nn называется линейным, если L = L(c; P ), где
система периодов P конечна, P = {p1 , . . . , pr }, а система предпериодов
состоит в точности из одного элемента c, т. е. C = {c}. В этом случае
вместо L(C; P ) будем писать L(c; p1 , . . . , pr ).
Всякий раз, когда говорится, что множество L(C; P ) линейно, имеется в виду, что P конечно.
Подмножество множества Nn называется полулинейным, если оно
является объединением конечного числа линейных множеств.
Например, пусть имеем c1 , c2 , p1 , . . . , pm , q1 , . . . , qr ∈ Nn , тогда
множество
L(c1 ; p1 , . . . , pm ) ∪ L(c2 ; q1 , . . . , qr )
является полулинейным подмножеством множества Nn .
5 Кузьмин Е. В., Соколов В. А.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
130
Гл. 5. Автоматные счетчиковые машины
5.3. Автоматные трехсчетчиковые машины
Объединение конечного числа полулинейных подмножеств множества Nn также является полулинейным множеством. Более того, класс
полулинейных множеств замкнут относительно операций пересечения
и дополнения [1, 36].
(0, 1, −1)
t1
q0
Рассматрим пример автоматной трехсчетчиковой машины 3ACM ,
которая генерирует экспоненту, убеждающий в том, что в общем автоматные трехсчетчиковые машины имеют неполулинейные множества
достижимости.
Л е м м а 5.2. Существует автоматная трехсчетчиковая машина,
которая имеет неполулинейное множество достижимости.
1. Если выполняется условие 1 (для состояния q0 ), то после срабатывания перехода t1 по-прежнему будет выполняться условие 1,
а после перехода t2 будет выполняться условие 2.
2. Если выполнено условие 2 (для состояния q1 ), то после срабатывания перехода t3 по-прежнему будет выполнено условие 2,
а после перехода t4 будет выполнено условие 1.
Отсюда следует, что любой достижимый вектор в зависимости от того
состояния, в котором он был получен, удовлетворяет либо условию 1,
либо условию 2.
Теперь докажем достаточность (⇐), т. е. покажем, что если для
некоторого вектора v = (α, β, γ) выполняется одно из двух рассматриваемых условий, то этот вектор v является достижимым машиной 3ACM (из начального состояния q0 и вектора v0 = (0, 0, 1))
в соответствующем состоянии (q0 или q1 ). Доказательство проводится
индукцией по значениям первой координаты.
Базис индукции. Пусть v = (α, β, γ). Если α = 0 и для вектора v
выполняется условие 1, тогда имеет место одно из двух возможностей.
(2) 0 < 2β + γ 6 2α+1 .
Покажем, что некоторый вектор v = (α, β, γ) достижим машиной
3ACM в состоянии q0 тогда и только тогда, когда выполняется условие 1; и вектор v ′ = (α′ , β ′ , γ ′ ) достижим в состоянии q1 тогда и только
тогда, когда выполняется условие 2.
Для удобства обозначим последовательность переходов t′1 t′′1 одним
переходом t1 , а последовательность переходов t′3 t′′3 t′′′
3 — переходом t3 .
Сначала докажем необходимость выполнения приведенных условий
для достижимых векторов (⇒). Заметим, что изначально выполняется
условие 1, и кроме того справедливо следующее.
q1
Рис. 5.7. Граф переходов трехсчетчиковой машины 3ACM с неполулинейным
множеством достижимости
3ACM = (v0 , q0 , Q, X, →, T , E),
(1) 0 < β + γ 6 2α ;
t4
(0, −1, 2)
t3
(1, 0, 0)
Д о к а з а т е л ь с т в о. Рассмотрим автоматную счетчиковую машину
где v0 = (0, 0, 1), Q = {q0 , q0′ , q1 , q1′ , q1′′ }, X = {x1 , x2 , x3 } , множество
меток переходов T = {t′1 , t′′1 , t2 , t′3 , t′′3 , t′′′
3 , t4 } соответствует следующим
правилам переходов (см. рис. 5.7):
t′1 : q0 → (q0′ , (0, min(x3 , 1), 0)),
t′′1 : q0′ → (q0 , (0, 0, ⊖1)),
t2 : q0 → (q1 , (0, 0, 0)),
t′3 : q1 → (q1′ , (0, 0, min(x2 , 1))),
t′′3 : q1′ → (q1′′ , (0, 0, min(x2 , 1))),
′′
t′′′
3 : q1 → (q1 , (0, ⊖1, 0)),
t4 : q1 → (q0 , (1, 0, 0)).
Рассмотрим следующие неравенства (условия):
(0, 0, 0)
t2
131
1. v = (0, 0, 1), и v достижим в состоянии q0 по пустому пути;
2. v = (0, 1, 0), и v достижим в состоянии q0 по переходу t1 .
Если же α = 0, но для вектора v справедливо условие 2, то в этом
случае возможен одни из следующих вариантов.
1. v = (0, 1, 0), и v достижим в состоянии q1 по пути t1 t2 ;
2. v = (0, 0, 1), и v достижим в состоянии q1 по переходу t2 ;
3. v = (0, 0, 2), и v достижим в состоянии q1 по пути t1 t2 t3 .
5*
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
132
Гл. 5. Автоматные счетчиковые машины
Во всех случаях вектор v достижим в правильном состоянии.
Предположение индукции. Предположим, что все векторы, удовлетворяющие условию 1 или условию 2, для первой координаты которых
выполняется неравенство α 6 a1 − 1, a1 ∈ N, достигаются машиной
3ACM в соответствующем правильном состоянии. Пусть вектор a =
= (a1 , a2 , a3 ) удовлетворяет условию 1, т. е. 0 < a2 + a3 6 2a1 .
Покажем, что вектор a достижим в q0 .
Шаг индукции. Рассмотрим случай, когда для вектора a выполняется неравенство 0 < a2 + a3 6 2a1 −1 . Тогда по предположению
индукции вектор a′ = (a1 − 1, a2 , a3 ) достижим в q0 . Применяя к a′
последовательность переходов t2 t4 , получим вектор a и окажемся при
этом в состоянии q0 .
Остается рассмотреть ситуацию, при которой 2a1 −1 < a2 + a3 6 2a1 .
Пусть a2 + a3 = 2a1 −1 + b, где 0 < b 6 2a1 −1 . По предположению индукции существует путь, приводящий к вектору
a′ = (a1 − 1, b, 2a1 −1 − b), так как вектор a′ удовлетворяет условию 1. Но теперь к вектору a′ может быть применена последовательность переходов t2 (t3 )b t4 (t1 )a2 , результатом которой будет
вектор (a1 , a2 , 2a1 −1 + b − a2 ) в состоянии q0 . Однако, поскольку
2a1 −1 + b − a2 = a3 , получается, что в действительности в состоянии q0
был достигнут рассматриваемый вектор a.
Аналогичным образом доказывается, что если вектор a удовлетворяет условию 2, то он достижим машиной 3ACM в состоянии q1 .
Итак, мы показали, что произвольный вектор достигается автоматной трехсчетчиковой машиной 3ACM в состоянии q0 или q1 тогда и
только тогда, когда он удовлетворяет соответственно либо условию 1,
либо условию 2.
5.3. Автоматные трехсчетчиковые машины
R(q1′ ) =
∪
R(q1′′ )
133
{(α, β, γ) | 0 < γ 6 2α+1 ∧ β = 0} ∪
{(α, β, γ + 1) | 0 < 2β + γ 6 2α+1 ∧ β > 0},
= {(α, β, γ) | 0 < γ 6 2α+1 ∧ β = 0} ∪
∪
{(α, β, γ + 2) | 0 < 2β + γ 6 2α+1 ∧ β > 0}.
Очевидно, что полученное множество достижимости счетчиковой
машины 3ACM
R(3ACM ) = R(q0 ) ∪ R(q1 ) ∪ R(q0′ ) ∪ R(q1′ ) ∪ R(q1′′ )
не является полулинейным. В частности, элементы множества
{(k + 1, 2k , 2k ) | k ∈ N} ⊆ R(3ACM )
имеют экспоненциальную зависимость последний двух координат от
первой.
Отметим, что рассмотренная 3-счетчиковая машина 3ACM в некотором смысле является примером простейшей машины, множество достижимости которой неполулинейно. Если мы уменьшим размерность
системы на единицу, уберем одно состояние или же сократим граф
переходов на одну дугу, то получим автоматную счетчиковую машину
с полулинейным множеством достижимости. В качестве примера чуть
более «простой» системы, но по-прежнему имеющей неполулинейное
множество достижимости, можно построить автоматную трехсчетчиковую машину, очень похожую на уже рассмотренную машину, которая
будет реализовывать возведение в квадрат, т. е. квадратичную зависимость между координатами достижимых векторов.
Вопрос о том, каждая ли автоматная двухсчетчиковая машина порождает полулинейное множество достижимости, остается открытым.
Таким образом для состояний q0 и q1 мы имеем следующие множества достижимости:
R(q0 ) = {(α, β, γ) | 0 < β + γ 6 2α },
R(q1 ) = {(α, β, γ) | 0 < 2β + γ 6 2α+1 }.
Построим множества достижимости для состояний q0′ , q1′ и q1′′ . Эти
множества легко получаются из уже построенных R(q0 ) и R(q1 ).
R(q0′ ) =
∪
{(α, β, γ) | 0 < β 6 2α ∧ γ = 0} ∪
{(α, β + 1, γ) | 0 < β + γ 6 2α ∧ γ > 0},
В главе определяются и исследуются два класса слабых счетчиковых машин — класс счетчиковых машин, получающихся ослаблением
машин Минского, и новый класс автоматных счетчиковых машин — которые рассматриваются в качестве общего средства для демонстрации
алгоритмической неразрешимости ряда проблем для вполне структурированных систем переходов, способных моделировать поведение
этих машин. Основное внимание уделяется проблеме ограниченности.
Эта проблема является одной из самых важных для теории формальных моделей, поскольку в случае разрешимости позволяет определять,
является ли множество состояний модели системы конечным, что
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
134
Гл. 5. Автоматные счетчиковые машины
критично, например, для автоматического метода верификации model
checking [4, 9].
Для автоматных счетчиковых машин доказана неразрешимость проблем включения и эквивалентности, проблемы ограниченности (в случае трех счетчиков) и проблемы достижимости (в случае четырех
счетчиков; однако, проблема достижимости конфигурации с нулевыми
значениями всех счетчиков разрешима для произвольной автоматной
счетчиковой машины).
Доказательство утверждения о неразрешимости задачи включении
графов полиномов взято из [39]. Раздел про автоматные счетчиковые
машины написана на основе результатов, опубликованных в работах [11, 20, 38, 19, 18].
Глава 6
ЯЗЫКИ АВТОМАТНЫХ СЧЕТЧИКОВЫХ МАШИН
В этой главе изучается класс языков, которые допускаются автоматными счетчиковыми машинами. Показывается, что этот класс
замкнут относительно операций объединения, регулярного пересечения, конкатенации, бесконечной итерации, гомоморфизма и обратного
гомоморфизма. Отсюда следует, что он является полным абстрактным
семейством языков [34, 2] со всеми вытекающими из этого свойствами.
Более того, класс языков автоматных счетчиковых машин (ЯАСМ)
замкнут относительно пересечения и полной подстановки, но незамкнут относительно дополнения и операции обращения. Для класса
ЯАСМ разрешимы проблемы пустоты и распознавания слова языка,
заданного автоматной счетчиковой машиной, но неразрешимы проблемы включения и равенства языков. Проводится сравнение с другими
классами языков — регулярными, контекстно-свободными, контекстнозависимыми языками и языками сетей Петри.
Глава написана на основе результатов, опубликованных в работах
авторов [17, 14].
6.1. Автоматная счетчиковая машина-распознаватель
О п р е д е л е н и е. Рассмотрим автоматную счетчиковую машину как
устройство, распознающее или отвергающее слова в некотором алфавите Σ, которые считываются машиной с помощью специальной
головки с входной ленты. Для этого каждой метке перехода t машины
сопоставим символ из множества Σ ∪ {ε}, где ε — «пустая» строка.
Будем считать, что Σ(t) = ε, если переходу t сопоставлена пустая
строка, и Σ(t) = a, если переходу t соответствует буква a ∈ Σ.
Определим работу машины-распознавателя следующим образом.
Начав с крайнего слева символа на ленте, она на каждом шаге будет
считывать символ с ленты и 1) или совершать переход t из одной
конфигурации в другую, который соответствует символу на ленте,
и передвигать считывающую головку вправо на одну ячейку ленты,
2) или совершать переход t, соответствующий символу ε без перемещения считывающей головки по ленте.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
136
Гл. 6. Языки автоматных счетчиковых машин
Таким образом, понятие конфигурации машины расширяется.
Пусть aα — непрочитанная часть входной строки (слова), q —
текущее состояние машины, а c̄ — вектор текущих значений счетчиков.
Тогда конфигурацией машины теперь будем называть упорядоченную
тройку (q, aα, c̄). Переход из одной конфигурации в другую может быть
двух видов:
t
137
увеличивает значение счетчика V на единицу. Далее никаких операций
уменьшения значения счетчика V не производится. Таким образом, все
пути, проходящие через команду V (X)+ с увеличением значения V ,
не приводят к принятию слова, соответствующего этому пути.
6.2. Проблемы пустоты и распознавания слов
′
1) (q, aα, c̄) −−−→ (q , α, c̄ + v̄) при Σ(t) = a;
E(t)
t
2) (q, aα, c̄) −−−→ (q ′ , aα, c̄ + v̄) при Σ(t) = ε.
E(t)
∗
Обозначим → произвольное (включая нулевое) число переходов
(шагов) автоматной счетчиковой машины.
Будем запускать машину в начальном состоянии q0 при нулевых
значениях счетчиков. Если существует такая последовательность переходов машины, которая после полного прочтения слова (с ленты)
приводит машину в заключительное состояние qf также при нулевых
значениях счетчиков, то такое слово допускается, или принимается,
машиной. Во всех других случаях входное слово отвергается.
Более формально, язык, допускаемый автоматной счетчиковой машиной ACM , — это множество слов в алфавите Σ
∗
∗
6.2. Проблемы пустоты и распознавания слов
L(ACM ) = {α | α ∈ Σ∗ ; (q0 , α, 0, . . . , 0) → (qf , ε, 0, . . . , 0)},
где Σ — множество всех слов в алфавите Σ, q0 — начальное состояние,
а qf — финальное состояние.
Далее мы будем называть счетчиковую машину, работающую
как распознаватель некоторого формального языка, машинойраспознавателем.
На рис. 6.1 представлены примеры языков автоматных счетчиковых машин-распознавателей. При построении автоматной счетчиковой
машины-распознавателя для языка
2
L>n2 = {an bn b∗ | n > 0}
(на рис. слева) был использован тот факт, что
n2 = (2n − 1) + (2n − 3) + . . . + 3 + 1.
Счетчик V играет роль «предохранителя» от неверного перехода и
разрешает переход только по нулевому значению опорного счетчика.
В случае когда счетчик X не является нулевым команда V (X)+
Л е м м а 6.1. Пусть (q, c̄) — конфигурация автоматной счетчиковой
машины ACM , а w = t1 t2 . . . tk — последовательность переходов машины ACM , переводящая (q, c̄) в нулевую финальную конфигурацию
(qf , 0̄). Тогда последовательность переходов w также переводит
любую конфигурацию (q, c¯′ ), такую что (q, c¯′ ) 6 (q, c̄), в конфигурацию (qf , 0̄).
Д о к а з а т е л ь с т в о. Непосредственно следует из свойства совместимости по убыванию правильного квазипорядка 6 с отношением переходов → автоматной счетчиковой машины.
Т е о р е м а 6.1. Проблема определения пустоты языка, заданного автоматной счетчиковой машиной-распознавателем ACM , является
разрешимой.
Д о к а з а т е л ь с т в о. Проблема пустоты языка автоматной счетчиковой
машины-распознавателя сводится к проблеме достижимости из начальной конфигурации (q0 , 0, . . . , 0) финальной нулевой конфигурации (qf , 0, . . . , 0) для исходной автоматной счетчиковой машины. А
эта проблема в свою очередь является частным случаем проблемы
субпокрытия. Действительно, нам достаточно построить множество
↑ Succ∗ (q0 , 0, . . . , 0) и проверить, входит ли в него финальная нулевая
конфигурация (qf , 0, . . . , 0). Поскольку любая автоматная счетчиковая
машина является вполне структурированной системой переходов с
совместимостью по убыванию, рассматриваемая проблема разрешима
(см. утверждению 4.18).
Позволим себе лишь немного уточнить с целью оптимизации общую схему построения множества ↑ Succ∗ (s) из утверждения 4.18.
Дело в том, что для автоматных счетчиковых машин при порождении
последовательности K0 , K1 , . . . , Km , где K0 = {s}, ↑Km = ↑Km+1
и Ki+1 = Ki ∪ Succ(Ki ), каждое из Ki может быть избыточным
базисом для замкнутого кверху множества ↑ Ki . Если есть две конфигурации s и s′ , принадлежащие Ki , такие что s 6 s′ , то бо́льшая
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
138
Гл. 6. Языки автоматных счетчиковых машин
X+
a
Z (X ) +
ε
ε
ε
Z⊖
b
V (X ) +
ε
X+
a
X⊖
X⊖ ε
Z+
ε
ε Y (X ) +
V (Y ) + ε
6.2. Проблемы пустоты и распознавания слов
V (X ) +
ε X⊖
Z⊖
b
ε
ε Y (Z ) +
ε Z (X ) +
Z⊖ ε
ε Z (X ) +
ε Y (Z ) +
V (Y ) + ε
ε V (X ) +
ε V (Z ) +
Y ⊖ ε ε X (Y ) +
X+
a
Y ⊖ ε ε Z (Y ) +
X⊖ b ε Y +
ε
Y⊖
c
ε
Рис. 6.1. Автоматные счетчиковые машины, распознающие формальные языки
2
n
L>n2 = {an bn b∗ | n > 0} (слева), L>2n = {an b2 b∗ | n > 0} (справа)
и Lk6l6m = {ak bl cm | k 6 l 6 m} (снизу); X+, X(Y )+ и X⊖ обозначают
команды X := X + 1, X := X + min(Y , 1) и X := X ⊖ 1 соответственно, где
X и Y — счетчики.
139
конфигурация s′ не оказывает никакого влияния на последовательность замкнутых кверху множеств ↑K0 , ↑K1 , . . . , ↑Km , так как для
конфигурации s′2 ∈ Ki+1 , s′ → s′2 , обязательно найдется конфигурация
s2 ∈ Ki+1 , s2 6 s′2 , s → s2 .
Поэтому целесообразно производить минимизацию множества Ki
на каждом шаге i, а точнее сразу строить множество Ki минимальным.
В таком случае множество Km будет минимальным конечным базисом
для ↑ Succ∗ (s).
Заметим также, из предыдущей леммы следует, что дерево покрытия автоматной счетчиковой машины, распознающей непустой язык,
с корнем в нулевой начальной конфигурации должно содержать финальную нулевую конфигурацию. Дерево покрытия для автоматной
счетчиковой машины может быть эффективно построено.
Некоторый класс языков можно формально рассматривать как пару
(Σ′ , L) [27], где Σ′ — счетное бесконечное множество символов, L —
∗
множество подмножеств в Σ′ , для каждого языка L ∈ L существует
такое конечное подмножество Σ множества Σ′ , что L ⊆ Σ∗ .
У т в е р ж д е н и е 6.1 ([27]). Пусть L — класс языков, для которого
проблема пустоты разрешима. Если класс L эффективно замкнут
относительно пересечения с регулярными множествами, то для L
проблема принадлежности слова языку также разрешима.
Д о к а з а т е л ь с т в о. Пусть L ⊆ Σ∗ — любой язык из класса L и w —
произвольное слово из Σ∗ . Слово w принадлежит L тогда и только
тогда, когда L ∩ {w} =
6 ∅.
Т е о р е м а 6.2. Класс языков автоматных счетчиковых машинраспознавателей эффективно замкнут относительно пересечения
с регулярными языками.
Д о к а з а т е л ь с т в о. Пусть L(DA) = {α | α ∈ Σ ∧ δ ∗ (q01 , α) ∈ F1 } —
регулярный язык, допускаемый детерминированным конечным автоматом DA = (Q1 , Σ, δ, q01 , F1 ), где Σ — конечный алфавит, Q1 — конечное множество состояний автомата, q01 ∈ Q1 — начальное состояние,
F1 ⊆ Q1 — множество финальных состояний, а δ : Q × Σ → Q —
всюду определенная функция переходов. Напомним, что δ ∗ (q, ε) = q,
δ ∗ (q, αa) = δ(δ ∗ (q, α), a) для всех q ∈ Q1 , α ∈ Σ∗ , a ∈ Σ.
∗
Пусть L(ACM ) = {α | α ∈ Σ∗ ∧ (q02 , α, 0, . . . , 0) → (qf2 , ε, 0, . . . , 0)} —
язык автоматной счетчиковой машины-распознавателя ACM =
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
140
Гл. 6. Языки автоматных счетчиковых машин
= (0̄, q02 , qf2 , Q2 , X, →, T , E, Σ), где (q02 , 0̄) — начальная конфигурация
машины, (qf2 , 0̄) — допускающая конфигурация.
Построим автоматную счетчиковую машину
ACM ′ = (0̄, q0′ , qf′ , Q′ , X, → ′ , T ′ , E ′ , Σ),
допускающую язык L(ACM ) ∩ L(DA), следующим образом. Мы полагаем Q′ = (Q1 × Q2 ) ∪ qf′ , q0′ = (q01 , q02 ). Переход t′ из одной
конфигурации (новой машины) в другую определим так:
t′
1) ((q1 , q2 ), aα, c̄) −−′−−→
((p1 , p2 ), α, c̄ + v̄) при Σ(t′ ) = a ⇐⇒
′
E (t )
δ(q1 , a) = p1
и
t
(q2 , aα, c̄) −−−→ (p2 , α, c̄ + v̄),
E(t)
где q1 , p1 ∈ Q1 , t ∈ T , Σ(t) = a, E ′ (t′ ) = E(t), q2 , p2 ∈ Q2 ;
t′
2) ((q1 , q2 ), aα, c̄) −−′−−→
((q1 , p2 ), aα, c̄ + v̄) при Σ(t′ ) = ε ⇐⇒
′
E (t )
t
(q2 , aα, c̄) −−−→ (p2 , aα, c̄ + v̄),
E(t)
где q1 ∈ Q1 и t ∈ T , Σ(t) = ε, E ′ (t′ ) = E(t), q2 , p2 ∈ Q2 ;
t′
3) ((q1 , q2 ), aα, c̄) −
→ (qf′ , aα, c̄), Σ(t′ ) = ε ⇐⇒ q1 ∈ F1 и q2 = qf2 .
Простым рассуждением по индукции можно показать, что
∗
((q01 , q02 ), α, 0, . . . , 0) → (qf′ , ε, 0, . . . , 0)
выполняется тогда и только тогда, когда
∗
δ ∗ (q01 , α) ∈ F1 и (q02 , α, 0, . . . , 0) → (qf2 , ε, 0, . . . , 0).
Это означает, что строка допускается машиной ACM ′ тогда и только
тогда, когда она допускается автоматом DA и машиной ACM одновременно, т. е. что она принадлежит пересечению L(ACM ) ∩ L(DA). Итак, из замкнутости относительно регулярного пересечения (пересечения с регулярным языком) следует справедливость следующей
теоремы.
Т е о р е м а 6.3. Проблема принадлежности слова языку, заданному
автоматной счетчиковой машиной-распознавателем, разрешима.
6.3. Свойства замкнутости
141
Д о к а з а т е л ь с т в о. Алгоритм распознавания произвольного слова α
с помощью автоматной счетчиковой машины аналогичен алгоритму
решения проблемы пустоты. Отличие состоит в том, что порождение
стабилизирующейся последовательности замкнутых кверху множеств
происходит в соответствии с расположением букв в распознаваемом
слове α.
Обозначим α(i) i-ю букву в слове α. Определим множество
Succα(i) (s) как множество достижимых машиной конфигураций за
один шаг из конфигурации s с помощью тех переходов, которым
соответствует буква α(i). Соответственно Succε (s) — множество достижимых из s конфигураций за один шаг с помощью ε-переходов.
Напомним, что Succ∗ (s) — множество достижимых из s конфигураций
за ноль или более шагов.
Тогда алгоритм распознавания произвольного слова α в алфавите Σ
можно описать следующим образом.
На первом шаге алгоритма по рассмотренной в предыдущей теореме
схеме происходит построение множества ↑ A0 = ↑ Succ∗ε (q0 , 0, . . . , 0),
которое будет представлено своим минимальным конечным базисом A0 .
На следующем шаге строим множество ↑ A1 = ↑ Succα(1) (A0 ). Далее
опять строим ε-замыкание ↑ A′1 = ↑ Succ∗ε (A1 ). Затем порождаем множество достижимых по следующей букве α(2) конфигураций ↑ A2 =
= ↑ Succα(2) (A′1 ) и т. д. На предпоследнем шаге мы получим множество
↑ Ak = ↑ Succα(k) (A′k−1 ), где k = |α|. Последний шаг — это построение
множества ↑ A′k = ↑ Succ∗ε (Ak ), представленного своим минимальным
конечным базисом A′k .
Слово α принадлежит языку автоматной счетчиковой машиныраспознавателя тогда и только тогда, когда финальная нулевая кон
фигурация (qf , 0, . . . , 0) ∈ A′k .
6.3. Свойства замкнутости
Пусть L, L1 и L2 — языки в алфавите Σ. Тогда языки
L1 ∪ L2 = {w | w ∈ L1 ∨ w ∈ L2 }, L1 ∩ L2 = {w | w ∈ L1 ∧ w ∈ L2 },
L1 L2 = {w1 w2 | w1 ∈ L1 ∧ w2 ∈ L2 }
— это соответственно объединение, пересечение и конкатенация языков L1 и L2 . Язык L̄ = {w | w ∈
/ L ∧ w ∈ Σ∗ } есть дополнение языка L,
∗
L = {ε} ∪ L ∪ LL ∪ LLL ∪ . . . — бесконечная итерация (или замыкание
Клини) языка L (ε — пустое слово).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
142
Гл. 6. Языки автоматных счетчиковых машин
Т е о р е м а 6.4. Класс языков автоматных счетчиковых машинраспознавателей замкнут относительно операций объединения,
конкатенации и бесконечной итерации.
Д о к а з а т е л ь с т в о. Замкнутость относительно операции объединения очевидна. Идея построения автоматной счетчиковой машины, допускающей объединение языков двух других автоматных счетчиковых
машин, представлена на рис. 6.2 (слева).
Операции конкатенации и итерации для автоматных счетчиковых
машин-распознавателей (см. рис. 6.2 снизу и справа соответственно) проводятся с помощью вспомогательного счетчика V , который
«разрешает» следующей компоненте включиться в процесс распознавания строки только в случае нулевых значений счетчиков в финальном состоянии предыдущей компоненты-распознавателя. Машиныраспознаватели, находящиеся под действием операций конкатенации
и итерации, не содержат счетчик V и, следовательно, не оказывают
влияние на его значение. Если некоторая последовательность переходов приводит к ненулевому значению «разрешающего» счетчика V , то,
поскольку в предложенной конструкции не существует команд уменьшения значений счетчика V , никакая дальнейшая последовательность
переходов не может привести к нулевой финальной конфигурации
автоматных счетчиковых машин ACM2 и ACM .
Т е о р е м а 6.5. Класс языков автоматных счетчиковых машинраспознавателей замкнут относительно операции пересечения.
Д о к а з а т е л ь с т в о. Пусть L(ACM1 ) и L(ACM1 ) — соответственно
языки автоматных счетчиковых машины
ACM1 = (0̄, q01 , qf1 , Q1 , X1 , → 1 , T1 , E1 , Σ) и
ACM2 = (0̄, q02 , qf2 , Q2 , X2 , → 2 , T2 , E2 , Σ).
Построим автоматную счетчиковую машину
ACM = (0̄, q0 , qf , Q, X, →, T , E, Σ),
допускающую язык L(ACM1 ) ∩ L(ACM2 ), следующим образом. Мы
полагаем Q = Q1 × Q2 , q0 = (q01 , q02 ) и qf = (qf1 , qf2 ). Переименуем
счетчики машин ACM1 и ACM2 таким образом, чтобы X1 ∩ X2 = ∅.
Тогда X = X1 ∪ X2 . Переход t ∈ T из одной конфигурации (новой
машины) в другую определим так:
143
6.3. Свойства замкнутости
ACM 1
ε
ε
K
ε
ε
ACM
ε
ACM 2
ACM 1
ε
V (X k ) +
ε
ε
ε
V ( X1 ) +
ε
V ( X1 ) +
ε
V (X 2 ) +
ε
K
V ( X k −1 ) +
V (X k ) +
ε
ε
ACM 2
ε
Рис. 6.2. Схемы объединения (слева), конкатенации (снизу) автоматных счетчиковых машин-распознавателей ACM1 и ACM2 и итерации (справа) автоматной счетчиковой машины-распознавателя ACM ; команда V (X)+ означает
V := V + min(1, X); X1 , . . . , Xk — все счетчики машины ACM1 (ACM )
t
1) ((q1 , q2 ), aα, (c¯1 , c¯2 )) −−−→ ((p1 , p2 ), α, (c¯1 + v¯1 , c¯2 + v¯2 )) при Σ(t) = a
E(t)
⇐⇒
t
t
E1 (t1 )
E2 (t2 )
(q1 , aα, c¯1 ) −−−1−→ (p1 , α, c¯1 +v¯1 ) и (q2 , aα, c¯2 ) −−−2−→ (p2 , α, c¯2 +v¯2 ),
где q1 , p1 ∈ Q1 , q2 , p2 ∈ Q2 , t1 ∈ T1 , t2 ∈ T2 , E(t) =
= {E1 (t1 ), E2 (t2 )}, Σ(t1 ) = Σ(t2 ) = a;
t
2) ((q1 , q2 ), aα, (c¯1 , c¯2 )) −−−→ ((q1 , p2 ), aα, (c¯1 , c¯2 + v¯2 )) при Σ(t) = ε
E(t)
⇐⇒
t
(q2 , aα, c¯2 ) −−−2−→ (p2 , aα, c¯2 + v¯2 ),
E2 (t2 )
где q2 , p2 ∈ Q2 , t2 ∈ T2 , E(t) = E2 (t2 ), Σ(t2 ) = ε;
t
3 ) ((q1 , q2 ), aα, (c¯1 , c¯2 )) −−−→ ((p1 , q2 ), aα, (c¯1 + v¯1 , c¯2 )) при Σ(t) = ε
E(t)
⇐⇒
t
(q1 , aα, c¯1 ) −−−1−→ (p1 , aα, c¯1 + v¯1 ),
E1 (t1 )
где q1 , p1 ∈ Q1 , t1 ∈ T1 , E(t) = E1 (t1 ), Σ(t1 ) = ε;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
144
Гл. 6. Языки автоматных счетчиковых машин
Заметим, что построенный переход t под номером 1 не удовлетворяет определению автоматной счетчиковой машины, так как метке t
соответствуют две команды (но над разными счетчиками) одновременно. Чтобы привести этот переход к привычному виду, разобьем его
на два последовательных перехода (порядок следования переходов не
имеет значения), т. е. заменим
145
6.3. Свойства замкнутости
X+
a
1
X+
a
X⊖
b
Y+
a
2
1
Y⊖
b
Y⊖
a
2
t
((q1 , q2 ), aα, (c¯1 , c¯2 )) −−−−−−−−→ ((p1 , p2 ), α, (c¯1 + v¯1 , c¯2 + v¯2 ))
E1 (t1 ), E2 (t2 )
X+ a ε Y+
a
на (где Σ(t′ ) = a и Σ(t′′ ) = ε)
t′
((q1 , q2 ), aα, (c¯1 , c¯2 )) −−−−→ (q ′ , α, (c¯1 + v¯1 , c¯2 )),
E1 (t1 )
t′′
(q ′ , α, (c¯1 + v¯1 , c¯2 )) −−−−→ ((p1 , p2 ), α, (c¯1 + v¯1 , c¯2 + v¯2 )).
E2 (t2 )
11
ε
X+
X ⊖ b ε Y⊖
22
Y⊖
Рис. 6.3. Автоматная счетчиковая машина-распознаватель (снизу), допускающая {an b>n | n > 0} пересечение языков {an b>n | n > 0} и {an b>n−2 | n > 0}
двух автоматных счетчиковых машин (вверху слева и справа)
Рассуждением по индукции нетрудно показать, что
∗
((q01 , q02 ), α, (0̄, 0̄)) → ((qf1 , qf2 ), ε, (0̄, 0̄))
выполняется тогда и только тогда, когда
∗
∗
(q01 , α, 0̄) → (qf1 , ε, 0̄) и (q02 , α, 0̄) → (qf2 , ε, 0̄).
Это означает, что строка допускается машиной ACM тогда и только
тогда, когда она допускается машинами ACM1 и ACM2 одновременно,
т. е. что она принадлежит пересечению языков этих автоматных счетчиковых машин L(ACM1 ) ∩ L(ACM2 ).
На рис. 6.3 приведен пример построения автоматной счетчиковой
машины, допускающей пересечение языков двух автоматных счетчиковых машин. Состояния, из которых недостижимо финальное состояние, не были включены в множество состояний машины-пересечения
(например, состояния (1, 2) и (2, 1)).
Гомоморфизм слов — это функция на множестве слов, которая
подставляет определенную последовательность букв вместо каждой
буквы данного слова. Формально, если h есть некоторый гомоморфизм
на алфавите Σ, а w = a1 a2 . . . an — последовательность символов в Σ,
то h(w) = h(a1 )h(a2 ) . . . h(an ). Таким образом, сначала h применяется
к каждой букве слова w, а потом полученные последовательности букв
соединяются в соответствующем порядке.
Гомоморфизм языка определяется с помощью его применения к
каждому слову языка, т. е. если L — язык в алфавите Σ, а h —
гомоморфизм на Σ, то h(L) = {h(w) | w ∈ L}.
Пусть h : Σ∗ → ∆∗ — гомоморфизм, а L — язык в алфавите ∆.
Тогда h−1 (L) — обратный гомоморфизм языка L, определяемый как
множество слов w ∈ Σ∗ , для которых h(w) ∈ L.
Т е о р е м а 6.6. Класс языков автоматных счетчиковых машинраспознавателей замкнут относительно гомоморфизма.
Д о к а з а т е л ь с т в о. Пусть L(ACM ) — это язык автоматной счетчиковой машины-распознавателя ACM = (0̄, q0 , qf , Q, X, →, T , E, Σ), а
h : Σ∗ → ∆∗ — гомоморфизм. На основе машины ACM построим
автоматную счетчиковую машину
ACM ′ = (0̄, q0 , qf , Q ∪ Q′ , X, → ′ , T ′ , E ′ , ∆),
допускающую язык h(L(ACM )). Для каждой буквы a ∈ Σ и отображения h(a) = w = a′1 a′2 . . . a′n , где a′i ∈ ∆, преобразуем всякий переход
машины ACM вида
t
(q, aα, c̄) −−−→ (p, α, c̄ + v̄)
E(t)
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
146
Гл. 6. Языки автоматных счетчиковых машин
147
6.3. Свойства замкнутости
в последовательность переходов
t′
t′n−1
f (X i )
t′
1
2
(q, a′1 a′2 . . . a′n α, c̄) →
(q1′ , a′2 . . . a′n α, c̄) →
...
1
a
f (X i )
2
1
ε
ACM a
V (Yk ) +
V (Y1 ) +
ε
K
ε
2
t′n
′
→ (p, α, c̄ + v̄),
, a′n α, c̄) −−′−−
. . . → (qn−1
′
E (tn )
′
q, p ∈ Q, q1′ , . . . , qn−1
∈ Q′ , Σ(t′1 ) = a′1 , . . . , Σ(t′n ) = a′n , E ′ (t′n ) = E(t),
t′1 , . . . , t′n ∈ T ′ .
Таким образом, каждому переходу машины ACM по букве a будет
сопоставлена последовательность переходов машины ACM ′ по буквам
слова a′1 a′2 . . . a′n при одинаковом изменении значений соответствующих
счетчиков.
Т е о р е м а 6.7. Класс языков автоматных счетчиковых машинраспознавателей замкнут относительно обратного гомоморфизма.
Д о к а з а т е л ь с т в о. Пусть L(ACM ) — язык автоматной счетчиковой
машины ACM = (0̄, q0 , qf , Q, X, →, T , E, ∆), а h : Σ∗ → ∆∗ — гомоморфизм. На основе машины ACM построим автоматную счетчиковую машину ACM ′ = (0̄, q0 , qf , Q ∪ Q′ , X, →′ , T ′ , E ′ , Σ), допускающую
язык h−1 (L(ACM )). Для этого от ACM оставим только «каркас» из
множества состояний Q. Одновременно формируя дополнительное множество состояний Q′ , определим правила переходов новой автоматной
машины-распознавателя ACM ′ следующим образом.
Для каждой буквы a ∈ Σ и отображения h(a) = w = a′1 a′2 . . . a′n ,
где a′i ∈ ∆ построим детерминированный конечный автомат DAw ,
допускающий только одно слово w = a′1 a′2 . . . a′n , с начальным состоянием p0 и финальным состоянием pf . Для каждого такого автомата
DAw и каждого состояния q ∈ Q машины ACM построим автоматную
счетчиковую машину-произведение ACM × DAw так, как это было
проделано в доказательстве теоремы о замкнутости относительного
регулярного пересечения (теорема 6.2) с той лишь разницей, что в
качестве начального состояния для ACM каждый раз будем брать текущее состояние q, а также не будем обращать внимание на финальное
состояние qf , рассматривая его как обычное состояние. Полученная
машина-произведение ACM × DAw будет иметь одно начальное состояние (q, p0 ) и несколько финальных состояний (q1 , pf ), . . . , (qk , pf ),
где qi ∈ Q, с помощью которых будет допускать (если пересечение
не пусто) по-прежнему лишь одно слово w. Объединение множеств
Рис. 6.4. Подстановка автоматной машины-распознавателя ACMa вместо букa
вы a для перехода q1 −−−−→ q2 ; Y1 , . . . , Yk — все счетчики машины ACMa
f (Xi )
состояний полученных машин-произведений будет формировать множество Q′ машины ACM ′ . Теперь всем переходам машины-произведения
ACM ×DAw сопоставим пустое слово ε, т. е. «обезличим» все переходы
этой машины. Далее построим переход машины ACM ′ из текущего
состояния q ∈ Q в начальное состояние (q, p0 ) машины ACM × DAw
с пометкой a ∈ Σ, т. е.
t
(q, aα, c̄) → ((q, p0 ), α, c̄), Σ(t) = a,
а из всех финальных состояний машины ACM × DAw вида (qi , pf )
построим ε-переходы в соответствующие состояния qi ∈ Q машины
ACM ′ . Таким образом, мы надстроили машину-распознаватель ACM ′
с помощью машины-распознавателя ACM × DAw присоединив последнюю к первой. Как видно из построения, эта надстройка ACM × DAw
для q и h(a) = w = a′1 a′2 . . . a′n играет роль всех возможных переходов
из q в другие состояния qi по слову w = a′1 a′2 . . . a′n (если, конечно,
это возможно), реализуя при этом переход по букве a ∈ Σ. Проведя
эту операцию для всех пар q и h(a), получим автоматную счетчиковую
машину ACM ′ , распознающую требуемый язык h−1 (L(ACM )).
Обобщим результаты замкнутости относительно операций объединения, конкатенации, итерации и гомоморфизма с помощью теоремы
о замкнутости относительно операции подстановки, поскольку все
перечисленные операции могут быть реализованы соответствующей
подстановкой [26].
О п р е д е л е н и е. Пусть для каждого символа a из алфавита Σ выбран
язык La в произвольном конечном алфавите. Выбор языков определяет
функцию s на Σ, и La обозначается как s(a) для каждого символа a.
Если w = a1 a2 . . . an — слово из Σ∗ , то s(w) представляет собой
язык всех слов α1 α2 . . . αn , у которых αi ∈ s(ai ), т. е. s(w) является
конкатенацией языков s(a1 )s(a2 ) . . . s(an ). Распространим определение
подстановки на языки: s(L) = ∪w∈L s(w).
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
148
Гл. 6. Языки автоматных счетчиковых машин
Т е о р е м а 6.8. Если L — язык в алфавите Σ, допускаемый автоматной счетчиковой машиной-распознавателем, а s — подстановка
на Σ, при которой s(a) является языком автоматной счетчиковой машины-распознавателя для каждого a ∈ Σ, то s(L) также
является языком некоторой автоматной счетчиковой машиныраспознавателя.
Д о к а з а т е л ь с т в о. Пусть ACM — это автоматная машина-распознаватель со счетчиками X1 , . . . , Xn , допускающая язык L, а ACMa —
автоматная машина со счетчиками Y1 , . . . , Yk , допускающая язык s(a).
Автоматная счетчиковая машина-распознаватель ACM ′ для языка s(L)
строится на основе машины ACM заменой каждого перехода вида
a
q1 −−−−→ q2 , где f (X) — некоторая операция над счетчиком Xi ,
f (Xi )
машиной ACMa с помощью специального «разрешающего» счетчика V
так, как это показано на рис. 6.4.
Очевидно, что класс языков автоматных счетчиковых машинраспознавателей (АСМ) полностью включает в себя класс регулярных
языков. Однако класс АСМ-языков несравним по включению с классом
контекстно-свободных языков. Действительно, автоматные счетчиковые машины-распознаватели допускают язык
{an bk cl | 0 6 n 6 k 6 l},
который не является контекстно-свободным. С другой стороны, АСМмашины не способны распознавать нулевые значения счетчиков, возможна лишь проверка на непустоту счетчиков. Поэтому, контекстносвободный язык
{an bn | n > 0}
не является АСМ-языком. К тому же, класс АСМ-языков является
полным абстрактным семейством языков (full-AFL), замкнутым по
пересечению. Из теории формальных языков известен результат (см.,
например, [33]), что наименьшее замкнутое по пересечению семейство
языков full-AFL, содержащее язык {an bn | n > 0}, представляет собой
семейство рекурсивно-перечислимых языков, т. е. класс языков, допускаемых машиной Тьюринга (или машиной Минского). Автоматные
счетчиковые машины слабее счетчиковых машин Минского и поэтому класс АСМ-языков не может содержать язык {an bn | n > 0}.
В противном случае, мы бы имели равномощность счетчиковых машин
Минского и автоматных счетчиковых машин, что, конечно же, не так.
6.4. Проблемы включения и равенства языков
149
Языки автоматных счетчиковых машин являются контекстнозависимыми языками. Для любой машины АСМ нетрудно построить
контекстно-зависимую грамматику, порождающую язык этой машины,
или промоделировать машину АСМ линейно-ограниченным автоматом.
В качестве примера класса языков, который тоже является несравнимым с классом контекстно-свободных языков, но полностью входит
в класс контекстно-зависимых, можно привести класс языков сетей
Петри. Однако, класс языков сетей Петри несравним по включению
с классом языков автоматных счетчиковых машин, поскольку из-за
незамкнутости относительно бесконечной итерации (замыкания Клини) сети Петри не распознают язык {(an bk )∗ | 0 6 n 6 k}, который
допускается машиной АСМ.
В дополнение к теме замкнутости относительно различных операций отметим, что класс АСМ-языков не замкнут относительно обращения, т. е. для произвольного языка L автоматной машины АСМ
язык LR = {wR | w ∈ R}, где wR — слово w, буквы которого
расположены в обратном порядке, может не быть языком автоматных
счетчиковых машин. Например, язык {b>n an | 0 6 n}, обратный к
языку {an b>n | 0 6 n}, не является АСМ-языком. В противном случае,
язык-пересечение
{bn an | 0 6 n} = {b>n an | 0 6 n} ∩ {bn a>n | 0 6 n}
был бы АСМ-языком, что, как было показано выше, не верно. Также
класс АСМ-языков не замкнут относительно дополнения, так как
{an b>n | 0 6 n} ∩ {a∗ b∗ } = {a>n bn | 0 6 n}.
Таким образом справедлива следующая теорема.
Т е о р е м а 6.9. Класс языков автоматных машин-распознавателей
не замкнут относительно операций обращения и дополнения.
6.4. Проблемы включения и равенства языков
О п р е д е л е н и е. Проблема включения языков состоит в определении
существования алгоритма, устанавливающего для любых двух счетчиковых машин-распознавателей ACM1 и ACM2 , имеет ли место
L(ACM1 ) ⊆ L(ACM2 ),
где L(ACMi ) — язык, распознаваемый машиной ACMi , i = 1, 2.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
150
Гл. 6. Языки автоматных счетчиковых машин
В случае проблемы равенства языков соотношение имеет вид
L(ACM1 ) = L(ACM2 ).
Доказательство неразрешимости задачи равенства языков для автоматных счетчиковых машин состоит из трех частей.
Сначала 10-я проблема Гильберта сводится к задаче включения
«надграфов» полиномов. Затем задача включения «надграфов» полиномов сводится к задаче включения языков для автоматных счетчиковых машин-распознавателей. Наконец, задача включения языков
сводится к задаче равенства языков для автоматных счетчиковых
машин-распознавателей. Это показывает, что 10-я проблема Гильберта,
известная как неразрешимая, сводится к задаче равенства, которая
поэтому также должна быть неразрешимой.
Граф G(P ) диофантова полинома P (x1 , . . . , xn ) с неотрицательными
коэффициентами — это множество
G(P ) = {(x1 , . . . , xn , y) | y 6 P (x1 , . . . , xn ) ∧ 0 6 x1 , . . . , xn , y}.
Надграфом OG(P ) диофантова полинома P (x1 , . . . , xn ) с неотрицательными коэффициентами назовем множество
OG(P ) = {(x1 , . . . , xn , y) | y > P (x1 , . . . , xn ) ∧ 0 6 x1 , . . . , xn , y}.
Задача включения надграфов полиномов заключается в определении для двух диофантовых полиномов A и B, выполняется ли
OG(A) ⊆ OG(B).
Л е м м а 6.2. Задача включения надграфов полиномов неразрешима.
Д о к а з а т е л ь с т в о этого утверждения почти полностью повторяет
рассуждения, приведенные в доказательстве аналогичного утверждения о графах полиномов, взятого из [39] и проводится сведением 10-й
проблемы Гильберта к данной задаче включения надграфов полиномов.
Ограничим доказательство задачами с целыми неотрицательными решениями. Если вектор (x1 , . . . , xn ) — это решение уравнения
P (x1 , . . . , xn ) = 0 с xi < 0, то вектор (x1 , . . . , −xi , . . . , xn ) — решение
для P (x1 , . . . , −xi , . . . , xn ) = 0. Следовательно, для определения того,
является ли (x1 , . . . , xn ) решением произвольного полинома, необходимо только проверить каждый из 2n полиномов, получающихся в результате изменения знака у некоторого подмножества переменных для
неотрицательного решения.
6.4. Проблемы включения и равенства языков
151
Аналогично, поскольку P 2 (x1 , . . . , xn ) = 0 тогда и только тогда,
когда выполнено P (x1 , . . . , xn ) = 0, необходимо рассматривать только
те полиномы, значения которых неотрицательны.
Сейчас мы можем разбить любой полином P (x1 , x2 , . . . , xn ) на два
полинома Q1 (x1 , . . . , xn ) и Q2 (x1 , . . . , xn ) такие, что
P (x1 , . . . , xn ) = Q1 (x1 , . . . , xn ) − Q2 (x1 , . . . , xn ),
помещая все члены с положительными коэффициентами в Q1 , а все
члены с отрицательными коэффициентами — в Q2 . Так как полином P (x1 , . . . , xn ) > 0, имеем, что Q1 (x1 , . . . , xn ) > Q2 (x1 , . . . , xn )
и P (x1 , . . . , xn ) = 0 тогда и только тогда, когда выполняется равенство
Q1 (x1 , . . . , xn ) = Q2 (x1 , . . . , xn ).
Рассмотрим два надграфа полиномов:
OG(Q1 ) = {(x1 , . . . , xn , y) | y > Q1 (x1 , . . . , xn )},
OG(Q2 + 1) = {(x1 , . . . , xn , y) | y > 1 + Q2 (x1 , . . . , xn )}.
Теперь OG(Q1 ) ⊆ OG(Q2 + 1) тогда и только тогда, когда для всех
неотрицательных значений x1 , . . . , xn и y из y > Q1 (x1 , . . . , xn ) следует,
что y > 1 + Q2 (x1 , . . . , xn ). Это справедливо тогда и только тогда, когда
не существует x1 , . . . , xn и y таких, что
1 + Q2 (x1 , . . . , xn ) > y > Q1 (x1 , . . . , xn ).
Но, как указывалось ранее, Q1 > Q2 , поэтому
1 + Q1 (x1 , . . . , xn ) > 1 + Q2 (x1 , . . . , xn ) > y > Q1 (x1 , . . . , xn ),
а поскольку все величины целые, то
y = Q1 (x1 , . . . , xn ) = Q2 (x1 , . . . , xn ).
Таким образом, мы убедились в том, что OG(Q1 ) ⊆ OG(Q2 + 1)
тогда и только тогда, когда не существует такого набора значений
x1 , . . . , xn , для которого P (x1 , . . . , xn ) = 0.
Итак, для определения того, что уравнение P (x1 , . . . , xn ) = 0
имеет решение, необходимо показать, что не выполняется включение
OG(Q1 ) ⊆ OG(Q2 + 1).
Возьмем двухбуквенный алфавит Σ = {a, b}. Рассмотрим следующий язык LOG(P (x1 ,...,xn )) в этом алфавите:
{ax1 bax2 b . . . axn bay | y > P (x1 , . . . , xn ) ∧ 0 6 x1 , . . . , xn , y}.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
152
Гл. 6. Языки автоматных счетчиковых машин
6.4. Проблемы включения и равенства языков
Y1i = ai ⋅ X s1
ε
X 1 , X 2 , Y , Z , K ,V
( x1 , x2 , 0, 0, 0, 0)
V ( X1 ) +
ε
X 2⊖ ε
V (Z ) + ε
X 1 , X 2 , Y ,V
( x1 , x2 , 0, 0)
X 1⊖ ε ε Y ( X 1 ) +
ε V ( X1 ) +
ε Y (K ) +
X 2⊖ ε ε Y ( X 2 ) +
ε Z (K ) +
ε K⊖
Y i = Yhi−1 ⋅ X sh
Очевидно, что для двух полиномов P (x1 , . . . , xn ) и P ′ (x1 , . . . , xn ) выполняется
OG(P ) ⊆ OG(P ′ ) ⇐⇒ LOG(P ) ⊆ LOG(P ′ ) .
ε K ( X1 ) +
ε K⊖
...
Рис. 6.6. Автоматная счетчиковая машина-распознаватель, вычисляющая одночлен Pi = ai · xs1 · . . . · xsk диофантова полинома. Каждый блок представляет
собой автомат умножения
ε X 1⊖
ε K (X 2 ) +
Y2i = Y1i ⋅ X s2
153
ε V (X 2 ) +
ε V (X 2 ) +
Z ⊖ ε ε X 2 (Z ) +
Рис. 6.5. Автоматные счетчиковые машины-распознаватели, вычисляющие значения функций y = x1 · x2 (слева) и y = x1 + x2 (справа)
Таким образом, для определения, имеет ли место OG(P ) ⊆ OG(P ′ ),
можно проверить выполнимость LOG(P ) ⊆ LOG(P ′ ) . Но, как было
только что показано, проблема включения надграфов полиномов неразрешима, и, следовательно неразрешима проблема включения языков
вида LOG(P ) .
Теперь, если мы докажем (приведем процедуру построения), что
для каждого полинома P (x1 , . . . , xn ) > 0 с целыми неотрицательными
коэффициентами может быть построена автоматная счетчиковая машина, распознающая язык LOG(P ) , это и будет означать неразрешимость
проблемы включения языков для автоматных счетчиковых машинраспознавателей.
Будем говорить, что автоматная счетчиковая машина вычисляет
значение полинома P (x1 , . . . , xn ), если и только если она, начав работать в начальной конфигурации (q0 , x1 , . . . , xn , 0, . . . , 0), завершает
свою работу в финальной конфигурации вида
(qf , 0, . . . , 0, P (x1 , . . . , xn ), 0, . . . , 0).
Покажем, каким образом это может быть реализовано. Сначала мы
построим автоматную счетчиковую машину, вычисляющую функцию
умножения (двух чисел). На ее основе мы можем построить составную
машину, которая вычисляет значение каждого члена путем последовательной композиции машин умножения и затем суммирует результаты.
Автоматная счетчиковая машина, реализующая (в нашем смысле)
функцию умножения двух чисел, и автоматная счетчиковая машина
сложения представлены на рис. 6.5 (соответственно слева и справа).
Автоматная счетчиковая машина, вычисляющая некоторый одночлен Pi = ai ·xs1 ·xs2 ·. . .·xsh диофантова полинома, показана на рис. 6.6
и представляет собой комбинацию машин умножения.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
154
Гл. 6. Языки автоматных счетчиковых машин
X12 +
ε
ε
X 13 +
X n2 +
ε
ε
M
X11 +
a
ε
X 1k +
X n1 +
a
ε
X nk +
K
b
b
b
P = P1 + K + Pk
Y = Y1 + K + Yk
ε
M
Pk
P1
Y1 = a1 ⋅ X ⋅ K ⋅ X
1
s1
1
sh
ε
155
Т е о р е м а 6.11. Проблема равенства языков неразрешима для автоматных счетчиковых машин-распознавателей.
Y⊖
a
X n3 +
6.4. Проблемы включения и равенства языков
K
ε
ε
Yk = ak ⋅ X tk1 ⋅ K ⋅ X tkg
Рис. 6.7. Автоматная счетчиковая машина, которая допускает язык
LOG(P (x1 ,...,xn )) = {ax1 bax2 b . . . axn bay | y > P (x1 , . . . , xn ) ∧ 0 6 x1 , . . . , xn , y}
надграфа полинома P (x1 , . . . , xn )
Автоматная счетчиковая машина ACM , вычисляющая полином
P (x1 , . . . , xn ) = P1 (xs1 , . . . , xsh )+P2 (xw1 , . . . , xwl )+. . .+Pk (xt1 , . . . , xtg ),
строится как комбинация машин M1 , M2 , . . . , Mk , вычисляющих
одночлены y 1 = P1 , y 2 = P2 , . . . , y k = Pk , и машины сложения
M ′ (y 1 , y 2 , . . . , y k , y), которая записывает результат в y.
Автоматная счетчиковая машина-распознаватель, допускающая
язык LOG(P (x1 ,...,xn )) надграфа полинома P (x1 , . . . , xn )
{ax1 bax2 b . . . axn bay | y > P (x1 , . . . , xn ) ∧ 0 6 x1 , . . . , xn , y},
представлена на рис. 6.7. Необходимо отметить, что на этом рисунке
блоки Y1 = a1 · Xs11 · . . . · Xs1h , . . . , Yk = ak · Xtk1 · . . . · Xtkg построены
таким образом, чтобы счетчики, содержащие значения лишних для
соответствующего одночлена переменных, обнулялись (в этих блоках).
Таким образом, получили справедливость следующей теоремы.
Т е о р е м а 6.10. Проблема включения языков неразрешима для автоматных счетчиковых машин-распознавателей.
Для двух произвольных множеств A и B мы имеем
B ⊆ A ⇐⇒ A = A ∪ B.
Отсюда для демонстрации неразрешимости проблемы равенства языков двух автоматных счетчиковых машин-распознавателей необходимо показать возможность построения новой автоматной счетчиковой
машины-распознавателя, допускающей объединение языков исходных
машин. Такая автоматная счетчиковая машина-распознаватель строится очевидным образом так, как это показано на рис. 6.2 (слева).
О п р е д е л е н и е. Рассмотрим в качестве алфавита ∆ для автоматной
счетчиковой машины конечное множество пар вида
(буква в алфавите Σ или ε, команда машины).
Определим на множестве автоматных счетчиковых машин отношеr
ние регулярной эквивалентности ∼ следующим образом.
Две автоматные счетчиковые машины регулярно эквиваленты тогда
и только тогда, когда эквивалентны (т. е. допускают один и тот же
язык) недетерминированные конечные автоматы над алфавитом ∆, лежащие в основе этих автоматных счетчиковых машин. Тогда, очевидно,
справедливо выражение
r
ACM 1 ∼ ACM 2 =⇒ L(ACM 1) = L(ACM 2).
r
Отношение ∼ разрешимо, поскольку разрешима проблема эквивалентности недетерминированных конечных автоматов. Импликация
в обратную сторону не выполняется. В противном случае мы имели бы
разрешимость проблемы равенства языков для автоматных счетчиковых машин, так как не сложно привести две автоматные счетчиковые
машины к одному алфавиту ∆, не оказывая влияния на допускаемые
ими языки.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Литература
Литература
1. Гинзбург С. Математическая теория контекстно-свободных языков. М.: Мир, 1970. 328 с.
2. Гинзбург С., Грейбах Ш. Абстрактные семейства языков // Сборник «Языки и автоматы». М.: Мир, 1975. С. 233–281.
3. Карп Р. М., Миллер Р. Е. Параллельные схемы программ // Кибернетический сборник. Вып. 13 (новая серия). М.: Мир, 1976.
С. 5–61.
4. Кларк, Э. М., Грамберг О., Пелед Д. Верификация моделей программ: Model Checking. М.: МЦНМО, 2002. 416 с.
5. Кнут Д. Э. Искусство программирования. Т. 2.: Получисленные
алгоритмы. М: Вильямс, 2000. 832 с.
6. Котов В. Е. Сети Петри. М.: Наука, Физматлит, 1984. 160 с.
7.
Котов В. Е., Сабельфельд В. К. Теория схем программ. М.: Наука,
Физматлит, 1991. 248 с.
8. Кузьмин Е. В. Счетчиковые машины. Уч. пособие. Ярославль,
ЯрГУ, 2010. 128 с.
9. Кузьмин Е. В. Верификация моделей программ. Уч. пособие. Ярославль, ЯрГУ, 2008. 176 с.
10. Кузьмин Е. В., Соколов В. А. Моделирование счетчиковых машин
двухголовочными автоматами // Моделирование и анализ информационных систем. Ярославль, 2012. Т. 19, №5.
11. Кузьмин Е. В., Соколов В. А. Структурированные системы переходов. Уч. пособие. М.: Наука, Физматлит, 2006. 176 с.
12. Кузьмин Е. В., Соколов В. А. Взаимодействующие раскрашивающие процессы // Моделирование и анализ информационных
систем. Ярославль, 2004. Т. 11, №2. С. 8–17.
13. Кузьмин Е. В., Соколов В. А., Чалый Д. Ю. Проблемы ограниченности счетчиковых машин Минского // Доклады Академии наук.
Москва, 2008. Т. 421, №6. С. 741–743.
157
14. Кузьмин Е. В., Соколов В. А., Чалый Д. Ю. О языках автоматных
счетчиковых машин // Материалы Международного рабочего совещания «Program Semantics, Specification and Verification: Theory
and Applications (PSSV 2010)». Казань, 2010. С. 70–75.
15. Кузьмин Е. В., Чалый Д. Ю. Алгоритмы для проблемы ограниченности счетчиковых машин // Моделирование и анализ информационных систем. Ярославль, 2008. Т. 15, №4. С. 42–55.
16. Кузьмин Е. В., Чалый Д. Ю. О разрешимости проблем ограниченности для счетчиковых машин Минского // Моделирование
и анализ информационных систем. Ярославль, 2008. Т. 15, №1.
С. 16–26.
17. Кузьмин Е. В., Чалый Д. Ю. О языках автоматных счетчиковых
машин // Моделирование и анализ информационных систем. Ярославль, 2010. Т. 17, №2. С. 48–71.
18. Кузьмин Е. В., Чалый Д. Ю. О множестве достижимости автоматных счетчиковых машин // Моделирование и анализ информационных систем. Ярославль, 2010. Т. 17, №1. С. 52–64.
19. Кузьмин Е. В., Чалый Д. Ю. О множестве достижимости автоматных трехсчетчиковых машин // Моделирование и анализ информационных систем. Ярославль, 2009. Т. 16, №3. С. 77–84.
20. Кузьмин Е. В., Чалый Д. Ю. Об одном классе счетчиковых машин
// Моделирование и анализ информационных систем. Ярославль,
2009. Т. 16, №2. С. 75–82.
21. Ломазова И. А. Вложенные сети Петри: моделирование и анализ
распределенных систем с объектной структурой. М.: Научный
мир, 2004. 208 с.
22. Мальцев А. И. Алгоритмы и рекурсивные функции. 2-е изд. М.:
Наука, Физматлит, 1986. 386 с.
23. Матиясевич Ю. В. Диофантовость перечислимых множеств //
Доклады Академии наук СССР. Москва, 1970. Т. 191, №2.
С. 279–282.
24. Минский М. Вычисления и автоматы. М.: Мир, 1971. 268 c.
25. Питерсон Дж. Теория сетей Петри и моделирование систем. М.:
Мир, 1984. 264 с.
26. Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений. 2-е изд.; пер. с англ. М.: Вильямс,
2002. 528 с.
27. Aho A. V. Indexed grammars — an extension of context-free
grammars // Journal of the ACM. 1968. V. 15, №4. P. 647–671.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
158
Литература
28. Abdulla P. A., Cerans K., Jonsson B., Tsay Y.-K. General decidability
theorems for infinite-state systems // Proceedings of the Eleventh
Annual IEEE Symposium on Logic in Computer Science (LICS
1996). IEEE Computer Society Press, 1996. P. 313–321.
29. Dickson L. E. Finiteness of the odd perfect and primitive abundant
numbers with r distinct prime factors // Amer. Journal Math. 1913.
V. 35. P. 413–422.
30. Finkel A. Reduction and covering of infinite reachability trees //
Information and Computation. 1990. V. 89, №2. P. 144–179.
31. Finkel A., Schnoebelen Ph. Well-Structured Transition Systems
Everywhere! // Theoretical Computer Science. 2001. V. 256, №1–2.
P. 63–92.
32. Ginsburg S. The mathematical theory of context-free languages.
McGraw-Hill, 1966. 244 с.
33. Ginsburg S. Algebraic and Automata-Theoretic Properties of Formal
Languages. Elsevier Science Inc., 1975.
34. Ginsburg S., Greibach S. Abstract families of languages // «Studies
in Abstract Families of Languages», Amer. Math. Soc. 1969. V. 87.
P. 1–32.
35. Higman G. Ordering by Divisibility in Abstract Algebras // Proc.
London Math. Soc. 1952. V. s3–2, №1. P. 326–336.
36. Hopcroft J. E., Pansiot J.-J. On the Reachability Problem for 5Dimensional Vector Addition Systems. Computer science technical
report. Cornell University, 1976. http://hdl.handle.net/1813/6102
37. König D. Theorie der Endlichen und Unendlichen Graphen //
Akademische Verlagsgesellschaft. Leipzig, 1936.
38. Kuzmin E. V., Sokolov V. A., Chalyy D. Ju. Automaton Counter
Machines // Proc. Int. Workshop on Program Understanding (sat.
of PSI’09). 2009. P. 1–4.
39. Peterson J. L. Petri Net Theory and the Modeling of Systems.
Prentice-Hall Int., 1981.
40. Schroeppel R. A Two Counter Machine Cannot Calculate 2N . Memo
257. Massachusetts Institute of Technology, Artificial Intelligence
Laboratory, 1972. 32 p.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
Научное издание
КУЗЬМИН Егор Владимирович
СОКОЛОВ Валерий Анатольевич
АВТОМАТНЫЕ СЧЕТЧИКОВЫЕ МАШИНЫ
Монография
Печатается в авторской редакции
Компьютерный набор и верстка Е. В. Кузьмин
Подписано в печать 15.10.2012. Формат 60×84/16.
Усл. печ. л. 9, 5. Уч.-изд. л. 9, 0.
Тираж 500 экз. Заказ 094/012.
Оригинал-макет подготовлен
в Управлении научных исследований и инноваций
ЯрГУ им. П. Г. Демидова.
Отпечатано на ризографе.
Ярославский государственный университет им. П. Г. Демидова
150000, Ярославль, ул. Советская, 14
Документ
Категория
Без категории
Просмотров
16
Размер файла
1 104 Кб
Теги
1144, счетчиковые, автоматные, машина, кузьмин
1/--страниц
Пожаловаться на содержимое документа