Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория вычислительных процессов. Лабораторный практикум. Учебное пособие
.pdf
71
символов и множество определяемых функциональных символов. Базовые
функциональные символы не отличаются от функциональных символов в
базисе стандартных схем. Определяемые функциональные символы
будем записывать прописными буквами, например F, G, H.
Множество термов в рекурсивных схемах делятся на простые и
условные. Простые термы включают в себя базовые, которые не
отличаются от термов стандартных схем (например f(x, g(x, y)), и вызовы,
которые содержат в себе определяемые функциональные символы
(например f(F(x), g(x, F(x))) или H(H(y))). Условный терм — это слово
вида:
если то 1 иначе 2,
где — логическое выражение, 1 и 2 — простые термы, называемые
левой и соответственно правой альтернативой.
Рекурсивным уравнением, или определением функции F называется
слово вида:
Fn(x1, …, xn) = (x1, …, xn),
где Fn — n-местный определяемый функциональный символ,
(x1, …, xn) — терм, содержащий переменные из множества {x1, …, xn},
называемых формальными параметрами функции F, и никаких других
переменных.
Рекурсивной схемой R называется пара (, M), где — главный терм
схемы (или ее вход), M — конечное множество рекурсивных уравнений,
в котором определен каждый определяемый функциональный символ,
причем только один раз.
Примеры рекурсивных схем:
1) R1: F(x),
F(x) = если p(x) то a иначе g(x, F(h(x)));
2) R2: F(b,c),
F(x,y) = если p(x) то f(y) иначе G(x, y),
G(x,y) = если p(y) то F(g(x), a) иначе H(x, y),
H(x,y) = F(g(x), F(x, g(y))).
Рекурсивная программа
Интерпретация базиса рекурсивной схемы совпадает с определением
интерпретации базиса стандартной схемы. Определяемые
функциональные символы не интерпретируются.
Рекурсивной программой называется пара (R, I), где R — рекурсивная
схема, I — интерпретация ее базиса. Понятие выполнения рекурсивной
программы определим с помощью протокола выполнения, который
представляет собой конечную или бесконечную последова-тельность

72
I (W) =
конфигураций. Конфигурации рекурсивной программы определяются с
помощью понятия значение терма.
Пусть — терм, I — некоторая интерпретация, W — некоторое
состояние памяти. Значение I (W) терма при интерпретации I и
состоянии памяти W определяется следующим образом:
1) если — базовый терм, то I (W) определяется точно так же, как для
стандартных схем;
2) если — терм вида Fn(1,…, n), то I (W) = Fn(
(W),…,
1 I
(W));
n I
3) если — терм вида fn(1,…, n) и хотя бы один из термов 1,…, n
содержит определяемый функциональный символ, то значение терма I
(W) = Фn(
скобках следует список значений термов
(W),…,
1 I
(W)), где Фn — символ функции I(fn), за которым в
n I
(W),…,
1 I
n I
(W);
4) если — условный терм вида если pn(1,…, n) то l иначе r, то
(W), если I(pn)(
l I
(W) в противном случае.
r I
(W),…,
1 I
(W)) = 1,
n I
Таким образом, в общем случае значения термов — это выражения,
содержащие элементы из области интерпретации, определяемые
функциональные символы и символы конкретных функций.
Протокол выполнения рекурсивной программы (R, I) — это
последовательность конфигураций t1, t2, t3, … такая, что:
1) t1 =
(W0), где 1 — главный терм схемы, W0 — начальное
1 I
состояние памяти;
2) t
получается из ti заменой в ti самого левого, самого внутреннего
i + 1
вхождения вызова Fn(d1,…, dn) на значение терма в правой части
уравнения Fn(x1, …, xn) = (x1, …, xn) при интерпретации I и значениях
переменных W(x1) = d1,…, W(xn) = dn;
3) если ti не содержит определяемых функциональных символов,
то ti — последняя конфигурация протокола.
Если протокол конечен, то программа (R, I) останавливается и
последняя конфигурация в протоколе считается результатом программы,
если она представляет собой элемент из области интерпретации. Если же
последняя конфигурация — выражение, составленное из символов
функций, значений констант и переменных, то выполняется вычисление
этого выражения, и результат вычисления объявляется результатом
программы. Программа зацикливается, если протокол бесконечен.
В табл. 15 представлен протокол выполнения программы (R, I), где
R — рекурсивная схема:
F(x),
F(x) = если p(x) то a иначе g(x, F(h(x)));

73
Порядковый номер
Значение терма
1
F(4)
2
4*F(3)
3
4*(3*F(2))
4
4*(3*(2*F(1)))
5
4*(3*(2*(1*F(0))))
6
4*(3*(2*(1*1))) = 24
t(w, x) = t(A, x) =
I(p)(x) =
и I — интерпретация:
D — множество всех целых неотрицательных чисел;
I(x) = 4; I(y) = 0; I(a) = 1;
I(g)(x, y) = x * y;
I(h)(x) = x – 1;
1, если x = 0
0, если x 0
Таблица 15
Протокол выполнения программы (R, I)
Трансляция стандартных схем в рекурсивные
Базисы стандартной схемы BS и рекурсивной схемы BR согласованы,
если совпадают множества переменных, базовых функциональных
символов и предикатных символов. Стандартная схема S и рекурсивная
схема R функционально эквивалентны, если для любой интерпретации I
согласованных базисов BS и BR программы (S, I) и (R, I) или обе
зацикливаются, или обе останавливаются с одним и тем же результатом.
Для любой стандартной схемы существует функционально
эквивалентная рекурсивная схема, но не для любой рекурсивной схемы
найдется функционально эквивалентная ей стандартная схема. Поэтому
говорят, что класс рекурсивных схем мощнее класса стандартных схем, а
класс стандартных схем транслируем в класс рекурсивных схем.
Существует алгоритм, который любую стандартную схему преобразует
(транслирует) в функционально эквивалентную ей рекурсивную схему.
Для описания алгоритма трансляции стандартных схем в рекурсивные
введем понятие термального значения переменной x на пути w.
Термальное значение переменной x на пути w стандартной схемы S — это
терм t(w, x), который определяется следующим образом:
1) если путь w содержит только один оператор A, то
, если A — оператор присваивания x := ;
x, в остальных случаях.
2) если w = w A, где A — оператор, w — непустой путь к A, то терм
t(w, x) получается из терма t(A, x) путем подстановки вместо всех

74
входящих в него переменных xi их термальных значений t(w, xi) на пути
w.
Неформально термальные значения переменных использовали ранее
при рассмотрении свободных интерпретаций и логико-термальной
эквивалентности.
Ограничим класс стандартных схем схемами, содержащими
заключительные операторы вида стоп (x).
Алгоритм трансляции.
1. Каждой вершине, отличной от преобразователя, с меткой i поставим
в соответствие определяемый функциональный символ Fi.
2. Формальными параметрами каждого определяемого
функционального символа будут все переменные (x1,…, xn) схемы.
Главный терм рекурсивной схемы — Fi (x1,…, xn), где Fi — определяемый
функциональный символ, соответствующий начальной вершине с
оператором старт (…). Правила определения уравнений рекурсивной
схемы следующие:
1) если определяемый функциональный символ Fi соответствует
оператору старт (…), то
Fi (x1,…, xn) = Fj (t(wij, x1),…, t(wij, xn)),
где wij — путь, не содержащий распознавателей, начинающийся дугой,
выходящей из вершины с меткой i и заканчивающийся дугой, входящей в
вершину с меткой j; Fj — определяемый функциональный символ,
соответствующий вершине с меткой j;
2) если определяемый функциональный символ Fi соответствует
условному оператору , то
Fi (x1,…, xn) = если то Fj (t(wij, x1),…, t(wij, xn))
иначе Fk (t(wik, x1),…, t(wik, xn))
где wij — путь, не содержащий распознавателей, начинающийся дугой,
выходящей из вершины с меткой i и заканчивающийся дугой, входящей в
вершину с меткой j; Fj — определяемый функциональный символ,
соответствующий вершине с меткой j; wik — путь, не содержащий
распознавателей, начинающийся дугой, выходящей из вершины с меткой
i и заканчивающийся дугой, входящей в вершину с меткой k; Fk —
определяемый функциональный символ, соответствующий вершине с
меткой k;
3) если определяемый функциональный символ Fi соответствует
оператору стоп (x), то
Fi (x1,…, xn) = x;

75
0
старт (x)
y := a
стоп (y)
p (x)
y := g(x, y)
x := h(y)
1
1
2
3 4 5
0
4) если определяемый функциональный символ Fi соответствует
оператору петля, то
Fi (x1,…, xn) = Fi (x1,…, xn).
Результатом трансляции стандартной схемы (рис. 27) будет
рекурсивная схема:
F0 (x, y),
F0 (x, y) = F2 (x, a),
F2 (x, y) = если p(x) то F5 (x, y) иначе F2 (h(g(x, y)), g(x, y)),
F5 (x, y) = y.
Рис. 27. Стандартная схема программы
Контрольные вопросы
1. Что такое схема программы и чем она отличается от программы?
2. Определите полный базис стандартных и рекурсивных схем.
3. Что такое интерпретация базиса?
4. Как определяется значение терма и теста при заданных
интерпретации и состоянии памяти в стандартных и рекурсивных схемах?
5. Как получить протокол выполнения стандартной и рекурсивной
программы?
6. Дайте определение основным свойствам стандартных схем.
7. Что такое свободная интерпретация? Как ее задать?
8. Дайте определение основным свойствам стандартных схем,
используя понятие свободной интерпретации.
9. Какие виды эквивалентности вы знаете? Сравните их.

76
10. Как определить термальное значение переменной на заданном
пути стандартной схемы?
11. Опишите алгоритм трансляции стандартных схем в рекурсивные.

77
Л а б о р а т о р н а я р а б о т а № 5
Сети Петри
Цель работы: изучить сети Петри, их основные свойства и способы ана-
лиза.
З а д а н и е
1. Изучить основные понятия:
— структура сети Петри и способы ее задания;
— маркировка, выполнение сети Петри, множество достижимости.
2. Изучить основные свойства сетей Петри:
— ограниченность, безопасность;
— сохраняемость;
— живость;
— устойчивость;
— эквивалентность;
— достижимость;
— покрываемость.
3. Изучить способы анализа сетей Петри:
— с помощью дерева достижимости;
— с помощью матричных уравнений.
4. Программно реализовать алгоритм выполнения сети Петри.
5. Программно реализовать алгоритм построения дерева
достижимости.
6. Выполнить индивидуальное задание (см. «Варианты заданий).
Варианты заданий
Вариант 1.
Задать начальную маркировку из трех фишек так, чтобы сеть Петри
была живой и безопасной. Построить дерево (граф) достижимости и выполнить анализ сети Петри.

78
Вариант 2.
Построить дерево достижимости и выполнить анализ сети Петри.
Вариант 3.
Построить дерево достижимости и выполнить анализ сети Петри.

79
Вариант 4.
Задать начальную маркировку из двух фишек так, чтобы сеть Петри
была живой и безопасной. Построить дерево (граф) достижимости и выполнить анализ сети Петри.
Вариант 5.
Задать начальную маркировку из трех фишек так, чтобы сеть Петри была
живой и безопасной. Построить дерево (граф) достижимости и выполнить анализ сети Петри.

80
Вариант 6.
Задать начальную маркировку из двух фишек так, чтобы сеть Петри
была живой и безопасной. Построить дерево (граф) достижимости и выполнить анализ сети Петри.
Вариант 7.
Задать начальную маркировку из трех фишек так, чтобы сеть Петри
была живой и безопасной. Построить дерево (граф) достижимости и выполнить анализ сети Петри.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
