Class Spn_siphons
A siphon is a non-empty set S of place levels with *S contained in S*: once empty it stays empty. A trap Q has Q* contained in *Q: once marked it stays marked. Commoner's property (every minimal siphon contains a marked trap) is decided per siphon by marking the largest trap inside it; for the underlying ordinary net it implies deadlock freedom, for an asymmetric-choice net liveness, and for an extended-free-choice net it is equivalent to liveness. Structural: inhibitor arcs, priorities and immediate precedence are ignored.
The enumeration is a complete, duplicate-free branch and bound over the levels forced in or out, bounded by the largest siphon inside the allowed levels. Each search node costs O(n^3 E), but the number of minimal siphons can be exponential in n and deciding whether a minimal siphon contains a given place is NP-complete, so the worst case is exponential.
References: T. Murata, Proc. IEEE 77(4) (1989), Sec. VI-B; R. Cordone, L. Ferrarini, L. Piroddi, IEEE Trans. SMC-A 35(6) (2005) 844-854.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe minimal siphons, in level coordinates. -
Method Summary
Modifier and TypeMethodDescriptionstatic Spn_siphons.SpnSiphonsstatic Spn_siphons.SpnSiphonsspn_siphons(NetworkStruct sn, double[] init) Minimal siphons and Commoner's property.
-
Method Details
-
spn_siphons
-
spn_siphons
Minimal siphons and Commoner's property.- Parameters:
sn- a NetworkStruct of a closed model holding Places and Transitionsinit- initial tokens per place level, place-major; null reads the marking declared on the Places, and failing that the reference station populations- Returns:
- the siphons
-