Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория вычислительных процессов и структур. Учебное пособие
.pdf
тупиковыми переходами. Активным называется переход, не являю-
щийся тупиковым.
Проблема тупиков может возникнуть, в частности, при моделировании процессов, совместно использующих какие-либо ресурсы.
Если использование ресурсов не синхронизировано должным образом,
может наступить момент, когда какие-либо части сети Петри или даже
вся сеть не смогут продолжать свою работу.
5.8. Задача достижимости
Cвойство достижимости характеризует возможность перехода сети из одного заданного состояния в другое. Под состоянием понимается некоторая маркировка ' R(C, ).
Можно сформулировать следующую задачу достижимости, к
которой фактически и сводятся многие задачи анализа сетей Петри:
Для данной сети Петри C с начальной маркировкой и некоторой маркировки ' определить, принадлежит ли ' множеству R(C, ).
Множество R(C, ) можно представить в виде дерева – дерева
достижимости. Его построение начинается с исходной маркировки :
записывается количество фишек в каждой позиции сети для . На следующем уровне рассматриваются все возможные варианты развития
данной маркировки в результате срабатывания разрешенных ею переходов, и дерево получает свои первые ветви. Далее для каждой новой
вершины дерева рассматривают дальнейшие варианты развития соответствующих маркировок и т.д. Дуга, направленная от одной вершины
дерева к другой, помечается переходом, срабатывание которого изменяет разметку, соответствующую первой вершине на разметку, соответствующую второй.
Построим в качестве примера дерево достижимости для сети
Петри C2, которая представлена на рис. 5.9. Начальная маркировка
имеет вид (1, 0, 0, 0, 0): фишка в сети только одна, и находится она в
позиции с номером 1. Рассмотрим, какие маркировки достижимы из
начальной. Таких маркировок, очевидно, две, и получаются они в результате срабатывания переходов t1 и t3 (рис. 5.10).
Рассмотрим маркировку, полученную в результате срабатывания перехода t1. В ней может сработать только один переход – t2, причем он создаст фишку в позиции p3 и «вернет» фишку в позицию p2.
В маркировке, полученной в результате срабатывания t3, могут сработать два перехода: t4 и t5.
51

Рис. 5.9. Сеть Петри C2
Рис. 5.10. Маркировки сети C2, достижимые из начальной
Таким образом, у нас имеется в общей сложности еще три достижимых маркировки (рис. 5.11). Рассмотрим их. Поскольку переход t2
при срабатывании добавляет фишку в свою единственную входную
позицию, он имеет возможность срабатывать бесконечное число раз,
без ограничений увеличивая количество фишек в p3.
Рис. 5.11. Маркировки сети C2, получающиеся при срабатывании
переходов t2, t4 и t5
52

Маркировка, полученная в результате срабатывания перехода
t4, не разрешает ни одного перехода, т.е. сеть останавливается, и эта
ветвь дерева достижимости не получает дальнейшего развития.
Маркировка, полученная в результате срабатывания t5, приводит к ситуации, аналогичной той, которая возникла после срабатывания t3: вновь могут сработать переходы t4 или t5.
Нетрудно видеть из рисунка. 5.12, что дерево достижимости
для сети C2 будет расти до бесконечности. Таким образом, конечной
сети Петри (каковой и является C2) может соответствовать бесконечное дерево достижимости.
Рис. 5.12. Тенденция неограниченного роста дерева достижимости
для сети Петри C
2
Для дополнительной иллюстрации данного факта рассмотрим
тривиальную сеть Петри, изображенную на рис. 5.13. Нетрудно видеть, что дерево достижимости данной сети будет представлять собой
единственную бесконечную ветвь, вершины которой будут представлять собой чередующиеся маркировки (1, 0) и (0, 1), получаемые в результате поочередного срабатывания переходов t1 и t2. Очевидно, что в
таком виде дерево достижимости не может служить в качестве эффективного инструмента анализа, и необходимо каким-то образом ограничить возможности его роста, сохранив при этом его информативность.
53

встречались в дереве. Такие вершины называются дублирующими. Ко-
Рис. 5.13. Пример простой
сети Петри, имеющей
бесконечное дерево
достижимости
гда возникает дублирующая вершина, маркировки, которые из нее
достигаются, можно не рассматривать, т.к. они уже были рассмотрены
в дереве ранее. В нашем примере дублирующая вершина с маркировкой (0, 0, 0, 1, 0) возникает при срабатывании последовательности переходов t3t5. Указанная маркировка уже была рассмотрена в связи со
срабатыванием перехода t3 и не приведет к появлению в дереве какихто новых вершин, что и демонстрируется на рис. 5.12.
Граничные вершины – это вершины, которые еще не были обработаны алгоритмом построения дерева достижимости и не были
классифицированы. После обработки вершина может получить статус
терминальной, дублирующей или внутренней (т.е. находящейся внутри дерева).
Для решения проблемы неограниченного разрастания дерева
достижимости вследствие бесконечного накопления фишек в какойлибо маркировке (как это происходит в нашем примере при срабатывании последовательности переходов t1t2t2…) введем специальный
символ ω, обладающий следующими свойствами:
где a – любая константа.
Также воспользуемся следующими обозначениями: (x) – маркировка вершины x; (x)i – количество фишек в позиции i в маркиров-
Сделать это можно несколькими
способами. Для начала рассмотрим более подробно свойства вершин дерева
достижимости и проведем их классификацию.
Первый вид вершин, на который
мы обратим внимание, это терминаль-
ные вершины. Данный вид вершин представляет пассивные маркировки, т.е. такие маркировки, в которых не разрешен
ни один переход. Такие вершины не дают новых ветвей дерева.
Следующий вид вершин соответствует маркировкам, которые ранее уже
ω + a = ω, a < ω;
ω – a = ω, a ≤ ω,
54

ке (x); δ(, t) = ' – функция перехода из маркировки к новой маркировке ' (другому состоянию) в результате срабатывания перехода t.
Запишем теперь подробно алгоритм построения дерева дости-
жимости, в котором будет решена проблема бесконечного роста.
Алгоритм работает, пока имеются граничные вершины. Первая
граничная вершина, очевидно, соответствует начальной маркировке.
Пусть х – некоторая граничная вершина. Тогда при ее обработ-
ке возможны следующие варианты:
1. Если в дереве имеется другая неграничная вершина, у, которой соответствует та же маркировка ((x) = (у)), то вершина х является дублирующей.
2. Если для маркировки (х) ни один из переходов не является
разрешенным ( tj T δ((x), tj) не определена), то х является терминальной вершиной.
3. Если первые два пункта не выполнены, то tj T, являюще-
гося разрешенным (δ((x), tj) определена), создается новая вершина z,
причем маркировка (z) для позиции pi определяется следующим образом:
3.1. Если (x)i = ω, то (z)i = ω.
3.2. Если на пути от корневой вершины к х существует вершина у, для которой справедливо (y) < δ((x), tj) и (y)i < δ((x), tj)i, то
(z)i = ω.
3.3. Если пункты 3.1 и 3.2 не выполнены, то (z)i = δ((x), tj)i.
Дуга, помеченная tj, направляется от вершины х к вершине z.
Вершина х переопределяется как внутренняя, а вершина у становится
теперь граничной.
Таким образом, пункт 3 алгоритма предлагает следующий ме-
ханизм по превращению бесконечного дерева достижимости в конечное: если возникает ситуация, когда какая-то последовательность запусков неограниченно увеличивает значение маркировки в позиции pi,
то соответствующее число заменяется на символ ω; если рассматривается граничная вершина, и в маркировке, связанной с ней, позиция pi
уже отмечалась символом ω, то в порождаемых ею новых маркировках
этот символ также будет находиться на указанном месте.
Если в дереве не осталось граничных вершин (каждая вершина
классифицирована как терминальная, дублирующая или внутренняя),
то работа алгоритма останавливается. На рис. 5.14 представлен конечный вид дерева достижимости для сети Петри C2.
55

Можно доказать, что рассмотренный алгоритм не может создавать граничные вершины бесконечно, а, следовательно, рано или
поздно он обязательно прекратит свою работу, и дерево достижимости
будет конечным.
В заключение сформулируем еще одну задачу, похожую на задачу достижимости – задачу покрываемости.
Для заданной сети Петри С с начальной маркировкой и маркировки ' определить, существует ли такая достижимая маркировка
'' R(С, ), что " > '. Говорят, что маркировка " покрывает '.
Рис. 5.14. Дерево достижимости сети Петри C2
В некоторых задачах содержимое отдельных позиций не является важным и потому может игнорироваться. В таких случаях говорят
о достижимости (покрываемости) подмаркировки.
Задачу можно дополнительно усложнить, если определять достижимость и покрываемость для множества маркировок. Тогда говорят о задачах достижимости (покрываемости) множества.
5.9. Основы моделирования систем с помощью сетей Петри
Сети Петри являются мощным инструментом моделирования
самых разных систем и вычислительных процессов, как последовательных, так и параллельных. Для того, чтобы правильно и эффективно им пользоваться, прежде всего необходимо учесть ряд особенностей построения сетей Петри. Некоторых из них мы уже фактически
коснулись в материале предыдущих разделов. С другими познакомимся в данном разделе.
56

Развитие того или иного процесса представляется в сети Пет-
Рис. 5.15. Непримитивное
событие, представленное
в виде двух
ри в виде последовательности событий, которые моделируются с помощью срабатывания соответствующих переходов. При этом сеть
Петри имеет асинхронный характер: в ней отсутствует измерение времени. Запуск перехода рассматривается как мгновенное событие, затраты времени на которое равны нулю. Моделируемые таким способом события называются примитивными.
Если же для моделирования события такого подхода недостаточно, и его длительность нельзя считать равным нулю, то это событие называется непримитивным.
Непримитивное событие может
быть смоделировано в сети Петри, например, в виде двух примитивных событий, как это показано на рис. 5.15. Первый переход
означает начало непримитивного
события, а второй переход – его
окончание.
Еще один способ – использование подсетей. Сложное событие моделируется подсетью, которая на более высоком уровне иерархии изображается прямоугольником. Примитивные события при этом на всех уровнях иерархии
изображаются планками.
На рис. 5.16. представлен пример модели вычислительной системы.
Рис. 5.16. Сеть Петри, моделирующая вычислительную систему
57

На вход поступают исходные данные двух сортов, что
a
Db
x
2
2,1
изображается присутствием фишек в двух начальных позициях. Далее
эти данные поступают на обработку, в рамках которой проводятся основные вычисления. Этот этап является непримитивным событием и
представлен в модели в виде подсети, изображенной прямоугольником. В зависимости от результата вычислений выводится отчет по одной из двух форм. Вывод отчета может считаться примитивным событием, поэтому соответствующие переходы изображены в виде планок.
Рассмотрим теперь на практике построение модели вычислительного процесса с помощью сети Петри. Возьмем в качестве примера алгоритм решения квадратного уравнения
ax2 + bx + c = 0.
Как известно, вначале вычисляется дискриминант
D = b2 – 4 ac,
а затем, если D 0, вычисляются корни уравнения:
.
Соответствующая программа на языке Pascal может быть записана следующим образом:
begin
readln(a, b, c);
d:=b*b–4*a*c;
if d >= 0 then
begin
x1:=(–b+sqrt(d))/(2*a);
x2:=(–b–sqrt(d))/(2*a);
writeln('x1=', x1,' x2=', x2);
end;
else
writeln('Нет действительных корней.');
end.
58

В тексте программы для простоты не приводятся строки, свя-
Обозначение
Действие
a
readln(a, b, c);
b
d:=b*b–4*a*c;
с
if d >= 0 then
d
x1:=(–b+sqrt(d))/(2*a);
x2:=(–b–sqrt(d))/(2*a);
e
writeln('x1=', x1,' x2=', x2);
f
Writeln ('Нет действительных корней.').
занные с загрузкой каких-либо дополнительных модулей, выделением
памяти для переменных и т.д. Напомним, что в языке Pascal оператор
readln используется для ввода данных пользователем, а writeln – для
вывода на экран.
Построим блок-схему данной программы (рис. 5.17), в которой
для простоты дальнейшего анализа примем обозначения, представленные в табл. 5.1.
Рис. 5.17. Блок-схема программы решения квадратного уравнения
Условные обозначения к блок-схеме на рис. 5.17
Таблица 5.1
59

Далее построим сеть Петри, которая соответствовала бы описанному алгоритму.
В первую очередь будет естественным найти «перевод» узлов
вычисления и принятия решения блок-схемы на язык сети Петри.
Такой перевод представлен на рис. 5.18, 5.19. Символы «1» и
«0» на рис. 5.19 соответствуют результату проверки условия в узле
решения: «1» – это «истина», а «0» – «ложь».
Рис. 5.18. Узел вычисления в блок-схеме и его представление
в сети Петри
Рис. 5.19. Узел решения в блок-схеме и его представление
в сети Петри
Теперь дадим интерпретацию элементам сети Петри. Наша
программа представляет собой последовательность инструкций с условным ветвлением.
Выполнение каждой инструкции моделируется срабатыванием
соответствующего перехода. Тогда наличие фишек во входных позициях некоторого перехода говорит о возможности выполнения в данной момент соответствующей инструкции. Можно сказать и другими
словами: фишка имеет интерпретацию счетчика команд, и, находясь в
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
