A directed, bipartite graph in which nodes are either "places" (represented by circles) or "transitions" (represented by rectangles), invented by Carl Adam Petri. A Petri net is marked by placing "tokens" on places. When all the places with arcs to a transition (its input places) have a token, the transition "fires", removing a token from each input place and adding a token to each place pointed to by the transition (its output places).
Petri nets are used to model concurrent systems, particularly network protocols.
Variants on the basic idea include the coloured Petri Net, Time Petri Net, Timed Petri Net, Stochastic Petri Net, and Predicate Transition Net.