Алгебраическая сеть Петри (GliyQjgncyvtgx vym, Hymjn)

Перейти к навигации Перейти к поиску

Алгебраическая сеть Петри (англ. algebraic Petri net, APN) — расширение обычных сетей Петри, в котором обычные маркеры заменены на элементы алгебраических типов данных[1]. Этот формализм во многом подобен раскрашенным сетям Петри[2], однако в случае алгебраических сетей семантика типов данных задаётся системой аксиом, позволяющей осуществлять с её использованием доказательства и вычисления над типами.

Впервые введены Жаком Вотереном в 1985 году[3], усовершенствованы Вольфгангом Райзигом[4].

Формализм включает две составляющие:

  • управляющую часть, задаваемую сетью Петри;
  • часть данных, задаваемую одним или несколькими алгебраическими типами данных.

Сами алгебраические типы данных могут быть разделены на две части:

Управляющая часть включает:

  • позиции, содержащие мультимножества маркеров; маркеры являются элементами алгебры термов, построенной с использованием сигнатуры, каждая позиция содержит одно и только одно мультимножество термов, позиция типизирована приписанным ей мультимножеством;
  • дуги могут быть отмаркированы мультмножествами определённых или свободных термов, также как и для позиций, термы определяются из алгебраических типов сигнатуры;
  • переходы — это события, которые активируются каждый раз, когда достаточно маркеров во входных позициях, чтобы переместить маркер по каждой из входных дуг и, одновременно, выполняется условие активации (защита) перехода.

В момент активации события произведённые маркеры перемещаются в целевые позиции выходных дуг. Для того, чтобы определить семантику операций, проверить выполняются ли заданные условия и вычислить выходные термы, как правило используют техники переписывания термов[5].

Алгебраические сети Петри послужили базой для развития более сложных вариантов того же формализма, в частности CO-OPN[англ.] (Concurrent Object-Oriented Petri Nets).

Пример алгебраической сети Петри, предназначенной для моделирования задачи об обедающих философах:

Используются два алгебраических типа данных. Один из них (Fork) задаёт алгебру вилок, другой (Philosopher) — алгебру философов. Поскольку все философы могут взять левую вилку, не взяв правую, выполнение этой модели может привести ко взаимной блокировке. На старте работы модели возможен только переход goEat. Если хотя бы один goEat был активирован, разрешёнными становятся также переходы takeL и takeR.

Примечания

[править | править код]
  1. Ehrig, Hartmut. Fundamentals of Algebraic Specification 1 : Equations and Initial Semantics (англ.). — Berlin: Springer Berlin Heidelberg, 1985. — 321 p. — ISBN 978-3-642-69962-7, 3-642-69962-6, 978-3-642-69964-1, 3-642-69964-2. Архивировано 4 сентября 2020 года.
  2. Jensen K. Coloured Petri Nets — Berlin: Springer-Verlag, 1997. — 236 p.
  3. Vautherin J. Parallel systems specifications with Coloured Petri nets and algebraic specifications. European Workshop on Applications and Theory of Petri Nets — Berlin, N.Y.: Springer-Verlag, 1987. — P. 293—308.
  4. Reisig W. Petri Nets and Algebraic Specifications // Theor. Comput. Sci. — 1991. — Vol. 80. — № 1. — P. 1—34.
  5. Dick A. J., Watson P. Order-sorted term rewriting // Comput. J. — 1991. — Vol. 34. — № 1. — P. 16—19.