Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория вычислительных процессов и структур. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
тупиковыми переходами. Активным называется переход, не являю- щийся тупиковым.
Проблема тупиков может возникнуть, в частности, при моде­лировании процессов, совместно использующих какие-либо ресурсы. Если использование ресурсов не синхронизировано должным образом, может наступить момент, когда какие-либо части сети Петри или даже вся сеть не смогут продолжать свою работу.
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]