русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Достижимость и покрываемость сетей Петри. Пример.


Дата добавления: 2013-12-23; просмотров: 6006; Нарушение авторских прав


Теорема Задача достижимости сводится к задаче активности.

Активность сетей Петри. Задача о чтении/записи.

Причиной рассмотрения сохранения в сети Петри было распре­деление ресурсов в операционной системе ЭВМ. Другая задача, которая может возникнуть при распределении ресурсов вычисли­тельной системы — тупики. Тупики служат предметом многих исследований в области вычислительной техники . Лучше всего иллюстрирует задачу простой пример. Рассмотрим систему, включающую два различных ресурса q и r и два процесса а и b. Если оба процесса нуждаются в обоих ресурсах, им необходимо будет совместно использовать ресурсы. Для выполнения этого потребуем, чтобы каждый процесс запрашивал ресурс, а затем освобождал его. Теперь предположим, что процесс, а сначала запрашивает ресурс q, затем ресурс r и, наконец, освобождает и q, и r. Процесс В работает аналогично, но сначала запрашивает r, а затем q. Сеть Петри на рис. 4.6 иллюстрирует два процесса и распределение ресурсов между ними.

Начальная маркировка помечает ресурсы q(p4) и r(р5) доступ­ными и указывает на готовность процессов a и b. Одним выполне­нием этой сети является t1 t2 t3 t4 t5 t6 Другим — t4 t5 t6 t1 t2 t3 Ни одно из этих выполнений не приводит к тупику. Однако рассмотрим после­довательность, которая начинается переходами t1 t4 . процесс а об­ладает ресурсом q и хочет получить r, процесс b обладает r и хочет получить q. Система заблокирована; никакой процесс продолжать­ся не может.

Тупик в сети Петри — это переход (или множество переходов), которые не могут быть запущены. В сети Петри на рис. 4.6. тупик возникает, если нельзя запустить переходы t2 и t5. Переход назы­вается активным, если он не заблокирован (нетупиковый). Это не означает, что переход разрешен, скорее он может быть разре­шенным. Переход tj сети Петри С называется потенциально запустимым в маркировке μ, если существует маркировка μ' R(C,μ), в которой tj разрешен. Переход активен в маркировке μ, если по­тенциально запустим во всякой маркировке из R(C, μ). Следова­тельно, если переход активен, то всегда возможно перевести сеть Петри из ее текущей маркировки в маркировку, в которой запуск перехода станет разрешенным.



Существуют другие, связанные с активностью понятия, которые рассматривались при изучении тупиков . Их можно разбить на категории по уровню активности и определить для сети Петри С с маркировкой μ следующим образом:

Уровень 0: Переход tj обладает активностью уровня 0, если он никогда не может быть запущен.

Уровень 1: Переход tj обладает активностью уровня 1, если он потенциально запустим, т. е. если существует такая μ, R(C,μ ), что tj разрешен в μ'.

Уровень 2: Переход tj обладает активностью уровня 2, если для всякого целого n существует последовательность запусков, в кото­рой tj присутствует по крайней мере n раз.

Уровень 3: Переход tj обладает активностью уровня 3, если существует бесконечная последовательность запусков, в которой tj присутствует неограниченно часто.

Уровень 4: Переход tj обладает активностью уровня 4, если для всякой μ' R(C, μ) существует такая последовательность запусков σ, что tj разрешен в δ (μ, σ).

Переход, обладающий активностью уровня 0, называется пас­сивным. Переход, обладающий активностью уровня 4, называется активным. Сеть Петри обладает активностью уровня i, если каж­дый ее переход обладает активностью уровня i.

В качестве примера, иллюстрирующего уровни активности, рассмотрим сеть Петри на рис. 4.7. Переход t0 не может быть за­пущен никогда; он пассивен. Переход t1 можно запустить точно один раз; он обладает активностью уровня 1. Переход t2 может быть запущен произвольное число раз, но это число зависит от числа запусков перехода t3. Если мы хотим запустить t2 пять раз, мы запускаем пять раз t3, затем t1 и после этого пять раз t2. Однако, как только запустится t1 (t1 должен быть запущен до того, как будет запущен t2), число возможных запусков t2 станет фиксированным. Следовательно, t2 обладает активностью уровня 2, но не уровня 3. С другой стороны, переход t3 можно запускать бесконечное число раз, и поэтому он обладает активностью уровня 3, но не уровня 4, поскольку, как только запустится t1 , t3 больше запустить будет нельзя.

 

 

 

Задача активности одного перехода. Активен ли данный переход tj T?

Очевидно, что задача активности сводится к задаче активности одного перехода. Для нахождения решения задачи активности мы просто решим задачу активности одного перехода для каждого tj Т; если |Т| = т, то мы должны решить т задач активности од­ного перехода.

Задачу достижимости можно также свести к задаче активности. Поскольку варианты задачи достижимости эквивалентны, мы рас­смотрим задачу достижимости нуля в одной позиции. Если перед нами стоят какие-либо другие задачи достижимости, их можно свес­ти, как показано в разд. 5.2, к задаче достижимости нуля в одной позиции. Теперь, если мы хотим определить, может ли быть позиция pi нулевой в какой-либо достижимой маркировке для сети Петри С1 = (Р1, Т1, I1, O1) с начальной маркировкой μ1 то построим сеть Петри С2 = (Р2, Т2, I2, O2) с начальной маркировкой μ2, кото­рая будет активна тогда и только тогда, когда нулевая маркировка не будет достижима из μ1.

Сеть Петри С2 строится из C1 введением двух позиций r1 и r2 и трех переходов s1 s2 и s3. Сначала модифицируем все переходы Т1, включая r1 в качестве входа и выхода. Начальная маркировка μ2 будет включать фишку в r1. Позиция r1 — это позиция «действия», пока фишка остается в r1, переходы Т1 могут запускаться. Следова­тельно, любая маркировка, достижимая в С1 достижима также и в позициях Р1 в С2. Определим переход S1 так, что его входом будет T1, а выход пуст. Это позволяет удалить фишку из r1, запрещая запуск всех переходов в 7\ и «замораживая» маркировку Р1. (За­метим, что все переходы Т1 находятся в конфликте и не только по определению, но и по построению могут запускаться каждый раз не более чем по одному.)

Позиция r1 и переход s1 позволяют сети С1 достичь любой дости­жимой маркировки, затем запуском S1 заморозить сеть в этой мар­кировке. Далее необходимо проверить, является ли позиция рi нулевой. Введем новые позицию r2 и переход s2, имеющий в качестве входа рi а в качестве выхода r2. Если pi может когда-либо стать нулевой, то этот переход не является активным. В действительнос­ти вся сеть будет пассивной, если в этой маркировке сработает пе­реход S1. Следовательно, если pi может быть пустой, сеть не явля­ется активной. Если рi не может быть пустой, тогда s2 всегда мо­жет быть запущен, помещая фишку в r2. В этом случае мы должны будем вернуть фишку в r1 и гарантировать, что все переходы в С2 активны. Необходима уверенность в том, что С2 активна, даже если С1 не является активной. Это обеспечивается переходом s3, кото­рый «наполняет» сеть С2 фишками, гарантируя тем самым, что, если фишка помещена в r2, каждый переход активен. Переход s3 в ка­честве входа имеет r2 , а в качестве выхода все позиции С2 (все pi в С1, r1 и r1). Эта конструкция иллюстрируется рис. 5.6.

Далее, если маркировка μ с μ(рi) = 0 достижима в R(C1, μ1), тогда С2 также может достичь этой маркировки в позициях Р1 пу­тем выполнения той же самой последовательности запусков пере­ходов. Затем можно запустить s1, замораживая подмножество С1. Поскольку μ(pj) = 0, s2 запустить нельзя и С2 пассивна. Таким образом, если рi может стать нулевой — С2 неактивна.

Справедливо обратное, если С2 неактивна, тогда должна быть

 

 

достижима маркировка μ с μ(r2) = 0, из которой недостижимо состояние с фишкой в r2. (Если в r2 есть фишка, то s3 разрешен, а повторно запуская s3 достаточное число раз, можно разрешить лю­бой (или все) переход, т. е. сеть активна.) Если r2 не имеет фишек и не может их получить, тогда маркировка pi также должна быть нулевой. Таким образом, если С2 неактивна, тогда достижима мар­кировка, в которой маркировка pi нулевая.

На основе этой конструкции мы доказали следующую теорему.

 

Для доказательства основного утверждения раздела покажем следующее.

Теорема 5.6. Задача активности одного перехода сводится к задаче достижимости.

Доказательство того, что задача активности одного перехода сводима к задаче достижимости, опирается на проверку достижи­мости любой из конечного множества максимальных пассивных для tj подмаркировок. Сеть Петри не активна для перехода tj тогда и только тогда, когда достижима некоторая маркировка, в которой переход tj не запускаем и не может стать запускаемым. Марки­ровка такого вида называется пассивной для tj. Для любой марки­ровки μ можно проверить, является ли она пассивной для tj, по­строением дерева достижимости с корнем μ и проверкой, можно ли

 

 

где-либо в дереве запустить переход tj. Если нельзя, то μ массивна для tj. Проверка активности tj в таком случае требует проверки достижимости какой-либо пассивной для tj маркировки.

В общем случае, однако, может существовать бесконечное число пассивных для tj маркировок и бесконечное множество маркиро­вок, в котором находятся пассивные для tj маркировки. Заметив два свойства, сведем множество маркировок, которые необходимо проверить для достижимости, к конечному числу. Во-первых, если маркировка μ пассивна для tj, то и любая маркировка μ' μ пас­сивна для tj. (Любая последовательность запусков, возможная из μ', возможна также из μ, поэтому если μ' может привести к запуску tj , то это может и μ.) Во-вторых, маркировки некоторых позиций не будут влиять на пассивность для tj данной маркировки, поэтому маркировки этих позиций являются «несущественными», они могут быть произвольными. Заимствуя прием из построения дерева дости­жимости, заменим «несущественные» компоненты на ω, показывая, что в этих позициях может быть произвольно большое число фишек, не влияющих на пассивность маркировки для tj. Теперь, поскольку любая μ' μ пассивна для tj, если μ пассивна для tj, нам не нужно рассматривать позиции pi с μ(pi)=. Это означает, что мы приме­няем задачу достижимости подмаркировки с P= Pi |μ(Pi)ω}

Рассмотрим в качестве примера сеть Петри на рис. 5.7. Марки­ровки (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3),... являются пассивными для t2 , но их можно представить конечным образом множеством {(2, 0), (1, 0), (0, ω)}.

Хэк показал, что для сети Петри С существует такое конечное множество Dt маркировок (расширенных, т. е. включающих ω), что С активна тогда и только тогда, когда никакая марки­ровка из Dt недостижима. Если маркировка из Dt содержит ω, тогда подразумевается достижимость подмаркировки.

Более того, Dt можно эффективно вычислять. Поскольку Dt конечно, не- ω -компоненты имеют верхнюю границу b. Граница b определяется как такое наименьшее число, что если пассивна для tj любая маркировка μ, такая, что μ(pi) b + 1 для всех pi то является пассивной для tj и подмаркировка μ', такая, что μ'(pi) = μ(pi), если μ(рi) < b, и μ'(pi) = ω, если μ(рi) = b + 1. При таком определении b можно построить Dt следующим образом.

Вычислить b. Начать с b = 0, увеличивать b до тех пор, пока не окажется, что b удовлетворяет описанному определению границы. Проверка каждого b требует проверки всех (b + 2)n маркировок с компонентами, меньшими или равными b+1.

Вычислить Dt проверкой всех маркировок и подмаркировок с компонентами, не превышающими b или равными ω. Dt — это множество пассивных для tj маркировок из множества (b + 2)n маркировок.

Построив Dt, можно рассматривать задачу достижимости под­маркировки для каждого элемента Dt. Если какой-либо элемент Dt достижим из начальной маркировки, сеть Петри неактивна, если же никакой элемент Dt недостижим - сеть Петри активна.

 

Существует несколько вариантов задачи о чтении/записи , однако основная структура их остается неизменной. Имеются про­цессы двух типов: процессы чтения и процессы записи. Все процес­сы совместно используют общий файл или переменную или элемент данных. Процессы чтения не изменяют объект в отличие от процес­сов записи. Таким образом, процессы записи должны взаимно ис­ключать все другие процессы чтения и записи, в то время как не­сколько процессов чтения могут иметь доступ к разделяемым дан­ным одновременно. Задача состоит в определении структуры управ­ления, которая не приведет к тупику и не допустит нарушения критерия взаимного исключения.

На рис. 3.33 иллюстрируется решение задачи в том случае, когда количество процессов чтения ограничено величиной n. Если в системе количество процессов чтения не ограничено, то только n процессов могут выполняться в одно и то же время.

Проблема возникает в том случае, если количество процессов чтения не ограничено и мы хотим предоставить возможность не­

ограниченному количеству процессов читать одновременно.

 

В этом случае можно утверждать, что возникает необходимость хранения количества читающих процессов. При инициализации каждого процесса чтения в счетчик добавляется единица, а по окончании про­цесса единица

вычитается. Это легко моделируется позицией, в которой количество фишек равно количеству процессов чтения. Однако, для того, чтобы предоставить процессу записи возможность приступить к записи, необходимо, чтобы счетчик был нулевым, т. е. соответствующая позиция была бы пустой. В сетях Петри нет механизма, который бы осуществлял проверку на нуль неограни­ченной позиции [1]К Таким образом, оказывается, что задача о чтении/записи с неограниченным числом процессов чтения не может быть решена с помощью сетей Петри. Это первый случай, когда мы столк­нулись с тем, что сети Петри не способны моделировать все системы.

 

 

Большинство задач, к которым мы до сих пор обращались, касаются достижимых маркировок. Задача достижимости являет­ся, по-видимому, наиболее простой (для формулировки).

Определение 4.5. Задача достижимости. Для данной сети Петри С с маркировкой μ и маркировки μ’ определить: μ' R(C, μ)?

Задача достижимости, быть может, основная задача анализа сетей Петри; многие другие задачи анализа можно сформулировать в терминах задачи достижимости. Например, для сети Петри с рис. 4.6 тупик может возникнуть, если достижимым является со­стояние (0, 1, 0, 0, 0, 0, 1, 0).

На рис. 4.8 показана сеть Петри, цель которой заключается в решении задачи о взаимном исключении, — предполагается, что позиции p4 и р9 будут взаимно исключающими. Мы хотим знать, является ли какое-либо состояние с μ(р4) 1 и μ(p9) 1 достижи­мым. Эта задача аналогична достижимости, но несколько отлича­ется; она называется задачей покрываемости. Маркировка

μ "пок­рывает маркировку μ,, если μ" μ'.

 

 

ОпределениеЗадача покрываемости. Для данной сети Петри С с начальной маркировкой μ и маркировки μ.' определить, сущест­вует ли такая достижимая маркировка μ" R(C, μ), что μ" μ'.

В других возможных задачах типа достижимости могло бы игно­рироваться содержимое некоторых позиций и приниматься во вни­мание сравнение или покрытие содержимого нескольких важных позиций. Например, в сети Петри на рис. 4.8 наш интерес огра­ничен позициями р4 и р9 — маркировка остальных позиций не важна. Таким образом, мы можем рассматривать достижимость и покрываемость «по модулю» множества позиций. Эти задачи назы­ваются задачами достижимости подмаркировки и покрываемости подмаркировки.

Их можно еще более усложнить требованием, определить дос­тижимость и покрываемость для множества маркировок, придя к задачам достижимости множества и покрываемости множества. Однако, если множество конечно, задачи можно решить обычно многократным решением задач достижимости и покрываемости для одной маркировки.

 

 

Последняя задача, которую можно решить с помощью дерева достижимости, — задача покрываемости. В задаче покрываемос­ти мы хотим для данной маркировки μ' определить, достижима ли маркировка μ" μ'. Данная задача решается проверкой дерева достижимости. Строим для начальной маркировки μ дерево дости­жимости. Затем ищем любую вершину х с μ[х] μ'. Если такой вершины не существует, маркировка р' не покрывается никакой достижимой маркировкой; если она найдена, μ[х] дает достижимую Маркировку, покрывающую μ'.

Путь от корня к покрывающей маркировке определяет последо­вательность переходов, которые приводят из начальной маркиров­ки к покрывающей маркировке, а маркировка, связанная с этой вершиной, определяет покрывающую маркировку. Символ (о вновь должен рассматриваться как обозначение бесконечного множества значений. Если компонента покрывающей маркировки — μ , то в пути от корня к покрывающей маркировке имеется «цикл». Для увеличения соответствующей компоненты с тем, чтобы она была не меньше, чем в данной маркировке, необходимо достаточное число раз повторить этот цикл.

 

Заметим, что, если несколько компонент покрывающей марки­ровки равны w, между изменениями маркировки, получающимися в результате прохождения циклов, возможна взаимосвязь. Рассмот­рим сеть Петри на рис. 4.18 и ее дерево достижимости, показанное на рис. 4.19. Согласно проведенному анализу, маркировка (0, 14, 1, 7) покрывается в множестве достижимости. Путь, порождающий покрывающую маркировку, состоит из некоторого числа переходов t1, за которыми следует переход t2, после которого уже следует некото­рое число переходов t3. Задача заключается в определении того, сколько раз нужно запустить переходы t1 и t3. Так как мы хотим иметь в позиции р1 14 фишек, a t1 помещает в р2 одну фишку, попытаемся

 

выполнить 14 t1. Однако нам необходимо выполнить 7t3, а каждый за­пуск t3 удаляет из р2 фишку, поэтому в действительности необходимо выполнить не менее 21 t1 затем t2 и после этого не менее 7t3 (выпол­нить t3 такое число раз, чтобы в позиции р2 осталось не менее 14 фишек). Карп и Миллер предложили алгоритм, определяю­щий минимальное число запусков переходов, необходимых для покрытия дайной маркировки.

 



<== предыдущая лекция | следующая лекция ==>
Отечественное законодательство в борьбе с компьютерными преступлениями. | Конечные автоматы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.