Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория вычислительных процессов. Лабораторный практикум. Учебное пособие
.pdf
61
Номер
конфигурации
Метка
Состояние памяти
x
y
0 0 abc 1 1 abc 2
20
abc
3 3 abc a 4 4 bc
a
5
20
bc
a
6 3 bc
ba 7 4 c ba 8 20 c ba 9 3 c cba
10
4 cba
11
20 cba
12
5 cba
Таблица 12
Протокол выполнения программы (S, I2)
Свойства стандартных схем программ
Стандартная схема S в базисе B тотальна, если при любой интерпретации I базиса B программа (S, I) останавливается.
Стандартная схема S в базисе B пуста, если при любой интерпретации
I базиса B программа (S, I) зацикливается.
Стандартные схемы S1 и S2 в базисе B функционально эквивалентны,
если при любой интерпретации I базиса B программы (S1, I) и (S2, I) либо
обе зацикливаются, либо обе останавливаются с одинаковым результатом.
чительной;
Записывается цепочка стандартной схемы как последовательность номеров вершин, лежащих на пути. Номер вершины-распознавателя отмечается верхним индексом 1 или 0 в зависимости от дуги, по которой проходит
путь.
Цепочка стандартной схемы — это
1) конечный путь по вершинам схемы от начальной вершины к заклю-
2) безконечный путь по вершинам схемы от начальной вершины.
Примеры цепочек схемы S (рис. 19):
(0, 1, 21, 5)
(0, 1, 20, 3, 4, 20, 3, 4, 21, 5)
(0, 1, 20, 3, 4, 20,…, 20,…)

62
x := f(y)
x := f(x)
4
стоп (y)
p (y)
p (x)
3
5
0
1
2
1
старт (x)
y := f(x)
p (y)
6
7 1 1 0 0
Если номера вершин в цепочке схемы заменить на вписанные в них
операторы, получим цепочку операторов:
(старт (x), y := a, p1 (x), стоп (y))
(старт (x), y := a, p0 (x), y := g(x, y), x := h(x), p0 (x), y := g(x, y), x
:= h(x), p1 (x), стоп (y))
(старт (x), y := a, p0 (x), y := g(x, y), x := h(x), p0 (x), …, p0 (x),…)
Пусть (0, 1,…) — последовательность меток в протоколе выполнения
программы (S, I). Это одна из цепочек схемы S. Будем говорить, что интерпретация I подтверждает эту цепочку. Цепочка называется допусти-
мой, если она подтверждается хотя бы одной интерпретацией. Не всякая
цепочка схемы является допустимой. Например, (0, 1, 20, 5, 61, 7), (0, 1, 21,
3, 40, 7) и все другие конечные цепочки схемы (рис. 20) не подтверждают-
ся ни одной интерпретацией.
Рис. 20. Стандартная схема программы
Схема свободна, если все ее цепочки допустимы. В тотальной схеме
все допустимые цепочки конечны, а в пустой — бесконечны.

63
Ih(p)(x) =
I() =
Свободные интерпретации
Множество всех интерпретаций очень велико и поэтому вводится
класс свободных интерпретаций, который образует ядро класса всех
интерпретаций в том смысле, что справедливость высказываний о
свойствах схем программ достаточно продемонстрировать для программ,
получаемых только с помощью свободных интерпретаций.
Все свободные интерпретации базиса В имеют одну и ту же область
интерпретации, которая совпадает со множеством Т всех термов базиса В.
Все свободные интерпретации одинаково интерпретируют переменные и
функциональные символы и константы, а именно:
а) для любой переменной х из базиса В и для любой свободной
интерпретации Ih этого базиса Ih(x) = x;
б) для любой константы a из базиса В Ih(a) = a;
в) для любого функционального символа fn из базиса В, где n 1,
Ih(fn) = Fn: Tn T, где Fn — n-местная словарная функция такая, что
Fn(1, 2, ..., n) = fn (1, 2, ... n), т. е. функция Fn по термам 1, 2, ..., n
строит новый терм с использованием функционального символа fn.
Ограничений на интерпретацию предикатных символов в свободных
интерпретациях нет, т.е. разные свободные интерпретации различаются
лишь интерпретаций предикатных символов.
Таким образом, после введения свободных интерпретаций термы
используются в двух разных качествах, как функциональные выражения в
схемах и как значения переменных и выражений. В дальнейшем термызначения будем заключать в апострофы. Например, если ‘f(x, a)’ — термзначение переменной x (x = ‘f(x, a)’), а y = ’g(y)’, то значение терма f(x,
h(y)) при указанных значениях переменных x и y равно терму-значению
’f(f(x, a), h(g(y)))’.
Пусть Ih — свободная интерпретация базиса, в котором определена
стандартная схема S (рис. 19), и в ней
1, если число функциональных символов в терме-значе-нии
x больше двух;
0, иначе.
Протокол выполнения программы (S, Ih) представлен в табл. 13.
Терм , являющийся значением переменной в Ih, можно
интерпретировать в произвольной интерпретации I:
I(x), если = x;
I(a), если = a;
I(fn)(I(1), I(2), …, I(n)), если = fn(1, 2, …, n).

64
Номер
конфигурации
Метка
Состояние памяти
x
y
0 0 ‘x’
‘y’ 1 1
‘x’
‘a’ 2 20
‘x’
‘a’ 3 3
‘x’
‘g(x,a)’
4 4 ‘h(x)’
‘g(x,a)’
5
20
‘h(x)’
‘g(x,a)’
6 3 ‘h(x)’
‘g(h(x),g(x,a))’
7 4 ‘h(h(x))’
‘g(h(x),g(x,a))’
8
20
‘h(h(x))’
‘g(h(x),g(x,a))’
9 3 ‘h(h(x))’
‘g(h(h(x)),g(h(x),g(x,a)))’
10
4
‘h(h(h(x)))’
‘g(h(h(x)),g(h(x),g(x,a)))’
11
20
‘h(h(h(x)))’
‘g(h(h(x)),g(h(x),g(x,a)))’
12
5
‘h(h(h(x)))’
‘g(h(h(x)),g(h(x),g(x,a)))’
Таблица 13
Протокол выполнения программы (S, Ih)
Интерпретация I и свободная интерпретация Ih (того же базиса В)
согласованы, если для любого логического выражения справедливо
Ih() = I().
Если интерпретация I и свободная интерпретация Ih согласованы, то
программы (S, I) и (S, Ih) либо зацикливаются, либо обе останавливаются
и I(val(S, Ih)) = val(S, I), т.е. каждой конкретной программе можно
поставить во взаимно-однозначное соответствие свободно
интерпретированную (стандартную) согласованную программу.
Если интерпретация и свободная интерпретация согласованы, они
порождают одну и ту же цепочку операторов схемы.
Стандартные схемы S1 и S2 в базисе В функционально эквивалентны
тогда и только тогда, когда они функционально эквивалентны на
множестве всех свободных интерпретаций базиса В, т.е. когда для любой
свободной интерпретации Ih программы (S1, Ih) и (S2,Ih) либо обе
зацикливаются, либо обе останавливаются и
val(S1, I) = I(val(S1, Ih)) = I(val(S2, Ih)) = val(S2, I).
Стандартная схема S в базисе В пуста (тотальна, свободна) тогда и
только тогда, когда она пуста (тотальна, свободна) на множестве всех
свободных интерпретаций этого базиса, т.е. если для любой свободной
интерпретации Ih программа (S, Ih) зацикливается (останавливается).
Стандартная схема S в базисе В свободна тогда и только тогда, когда
она свободна на множестве всех свободных интерпретаций этого базиса,

65
1
S
A
2
S
A
S
A
1
S
A
2
S
A
S
A
S
A
т. е. когда каждая цепочка схемы подтверждается хотя бы одной
свободной интерпретацией.
Изоморфизм стандартных схем
Схемы S1 и S2 изоморфны, если совпадают множества всех цепочек
операторов этих схем.
Расширим понятие цепочки. Под цепочкой будем понимать любой
путь в схеме от начальной вершины, а под цепочкой операторов —
любую возможную последовательность операторов. Для определения
изоморфизма схем S1 и S2 построим одноленточные конечные автоматы
и
, моделирующие эти схемы. Автомат
моделирует схему S,
если он допускает множество цепочек операторов схемы S. Схемы S1 и S2
будут изоморфными, если моделирующие их автоматы
и
эквивалентны.
Алфавит автомата
множество операторов схемы S. Автомат
, моделирующего схему S, представляет собой
строится в три этапа:
1) отметка схемы S и определение множества состояний;
2) определение функции переходов (команд программы);
3) определение множества заключительных состояний.
Метками a1, a2, …, an отмечаем дуги схемы так, чтобы только дуги,
входящие в одну и ту же вершину, имели одинаковые метки. Начальная
вершина отмечается меткой a0, а заключительная — меткой ak. Метки
соответствуют состояниям автомата. Кроме них введем еще одно
самозацикливающееся состояние a.
Пути, проходящие только через один оператор, соответствуют
командам программы автомата. Если путь проходит от метки ai до метки
aj через оператор присваивания х := τ , то в программу автомата
добавляем команду ai х:=τ aj. Если путь проходит от метки ai до метки
aj через условный оператор p(1, 2, …, n) дуге с меткой 1, то в программу
автомата добавляем команду ai p1(1, 2, …, n) aj, а если по дуге с
меткой 0, то добавляем команду ai p0(1, 2, …, n) aj. Если путь от
метки ai проходит через оператор стоп (
автомата добавляем команду ai стоп(
,
,…,
1
2
,
,…,
1
) ak. Если путь от метки
2
n
), то в программу
n
a0 проходит через оператор старт (x1, x2,…, xk) до метки aj, то в
программу автомата добавляем команду ai старт (x1, x2,…, xk) aj. Если
путь от метки ai не проходит через некоторый оператор O из множества
операторов схемы, то в программу автомата добавляем команду ai O
a.
Все состояния, за исключением a, заключительные.

66
1
S
A
2
S
A
1 1 0
старт (x)
y := a
стоп (y)
p (x)
y := g(x, y)
x := h(x)
1
b5
0
0
старт (x)
y := a
стоп (y)
p (x)
y := g(x, y)
p (x)
x := h(x)
b7
b4
b3
b3
b2
b1
b7
bk
b0
a1
a2
a3
a2
a5
a4
a0
ak
На рис. 21 и рис. 22 представлены отмеченные схемы S1 и S2, а на рис.
23 и рис. 24 — моделирующие их автоматы
и
в графовой форме.
Рис. 21. Отмеченные схемы S1
Рис. 22. Отмеченные схемы S2

67
1
S
A
2
S
A
1
S
A
2
S
A
1
S
A
2
S
A
a1
старт (x)
a0
a2
a3
a4
a1
ak
a4
a4
y := a
p0 (x)
p0 (x)
p1 (x)
p1 (x)
стоп (y)
стоп (y)
y := g(x,y)
x := h(x)
a1
p0 (x)
x := h(x)
старт(x)
y := g(x,y)
y := a
стоп (y)
a0
a2
a3
a4
a1
ak
p1 (x)
Чтобы не загромождать рисунок, состояние a и переходы в него не
показаны. На рис. 25 представлено дерево проверки эквивалентности
автоматов
и
, из чего следует, что автоматы
эквивалентны, а схемы S1 и S2 изоморфны.
и
Рис. 23. Граф автомата
Рис. 24. Граф автомата

68
1
S
A
2
S
A
стоп (y)
p1 (x)
старт (x)
y := a
стоп (y)
p1 (x)
a1 b1
a3 b3
a4 b4
p0 (x)
y := g(x,y)
x := h(x)
p0 (x)
a4 b
4
a1 b1
a4 b4
a4 b4
a4 b4
a4 b4
a3 b
3
a4 b4
Рис. 25. Дерево проверки эквивалентности автоматов
и
Изоморфные схемы программ функционально эквивалентны. Но
функционально эквивалентные схемы могут быть не изоморфными.
Поэтому изоморфизм является более сильной эквивалентностью, чем
функциональная.

69
0
старт (x)
y := a
стоп (y)
p (x)
y := g(x, y)
x := h(y)
1
1
2 3 4
5
Логико-термальная эквивалентность
Одним из отношений эквивалентности стандартных схем является
логико-термальная эквивалентность.
Рассмотрим стандартную схему S (рис. 26). Запишем произвольную
цепочку схемы, заканчивающуюся заключительной вершиной, например
(0, 1, 20, 3, 4, 20, 3, 4, 21, 5).
Рис. 26. Стандартная схема программы
Допустим, что некоторая свободная интерпретация Ih подтверждает
эту цепочку. Протокол выполнения программы (S, Ih) представлен в табл.
14. В этой таблице добавлен столбец «Оператор», в котором в каждой
строке записан оператор, соответствующий метке. Если прочитать этот
столбец последовательно с верху в низ, то получим цепочку операторов
схемы, заканчивающуюся оператором стоп. Теперь, просматривая
столбец «Оператор», выпишем условные операторы, в которых
аргументы заменим значениями переменных в соответствующих
конфигурациях. Затем допишем термы-результаты оператора стоп, в
которых аргументы так же заменим значениями переменных в последней
конфигурации. В результате получим логико-термальную историю
цепочки операторов схемы, заканчивающуюся оператором стоп:

70
Номер
конфигурации
Метка
Оператор
Состояние памяти
x
y
0
0
cтарт(x)
‘x’
‘y’ 1 1
y:=a
‘x’
‘a’
2
20
p0(x)
‘x’
‘a’
3
3
y:=g(x, y)
‘x’
‘g(x,a)’
4
4
x:=h(y)
‘h(g(x,a))’
‘g(x,a)’
5
20
p0(x)
‘h(g(x,a))’
‘g(x,a)’
6
3
y:=g(x, y)
‘h(g(x,a))’
‘g(h(g(x,a)),g(x,a))’
7
4
x:=h(y)
‘h(g(h(g(x,a)),g(x,a)))’
‘g(h(g(x,a)),g(x,a))’
8
21
p1(x)
‘h(g(h(g(x,a)),g(x,a)))’
‘g(h(g(x,a)),g(x,a))’
9
3
стоп(y)
‘h(g(h(g(x,a)),g(x,a)))’
‘g(h(g(x,a)),g(x,a))’
(p0(x), p0(h(g(x,a)))), p1(h(g(h(g(x,a)),g(x,a))), g(h(g(x,a)),g(x,a))).
Таблица 14
Протокол выполнения программы (S, Ih)
Детерминантом стандартной схемы S называется множество логикотермальных историй всех ее цепочек операторов, завершающихся
оператором стоп. Схемы S1 и S2 логико-термально эквивалентны, если их
детерминанты совпадают.
Логико-термально эквивалентные схемы являются функционально
эквивалентными. Но функционально эквивалентные схемы могут не быть
логико-термально эквивалентными. Поэтому логико-термальная
эквивалентность является более сильной эквивалентностью, чем
функциональная.
Изоморфные схемы являются логико-термально эквивалентными. Но
логико-термально эквивалентные схемы могут не быть изоморфными.
Поэтому логико-термальная эквивалентность является более слабой
эквивалентностью, чем изоморфизм.
Также, как и стандартные схемы, рекурсивные схемы определяются в
некотором базисе. Полный базис рекурсивных схем, как и базис
стандартных схем, включает четыре множества символов: переменные,
функциональные символы, предикатные символы и специальные
символы. Множества операторов в базисе рекурсивных схем нет.
Множества переменных и предикатных символов ничем не
отличаются от соответствующих множеств в базисе стандартных схем.
Множество специальных символов — другое, а именно: {если, то, иначе,
(, ), =, ,}. Множество функциональных символов разбито на два
непересекающихся множества: множество базовых функциональных
Рекурсивные схемы программ
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
