Petri-Net


Petri-Net是用于描述事件和条件关系的模型,一个Petri-Net由位置、迁移、 关系组成。在tikz中绘制Petri-Net,要用到“petri”库,所以请在LaTeX导言中加入

\usetikzlibrary{petri}

在tikz中一个位置就是一个节点,只是要在节点的选项中加入风格

place
还可以在图形选项或范围选项中加入
every place
比如
\begin{tikzpicture}
[every place/.style={draw=blue,fill=blue!20,thick,minimum size=9mm}]
\node[place,tokens=7,label=above:$p_1$] (p1) {};
\node[place,structured tokens={3,2,9},
label=below:$p_2\ge1$,right=of p1] (p2) {};
\end{tikzpicture}

迁移也是节点,只是要在节点的选项中加入风格

transition
还可以在图形选项或范围选项中加入
every transition
比如
\begin{tikzpicture}
\node[place,tokens=2,label=above:$p_1$] (p1) {};
\node[place,label=above:$p_2\ge1$,right=of p1] (p2) {};
\node[transition,below right=of p1,label=below:$t_1$] {}
edge[pre] (p1)
edge[post] node[auto] {2} (p2);
\end{tikzpicture}
迁移的前置和后置集合由风格
pre
post
pre and post
设置。

令牌仍然是节点,所以要在节点的选项中加入风格

token
还可以在图形选项或范围选项中加入
every token
比如
\begin{tikzpicture}
\node[place,label=above:$p_1$] (p1) {};
\node[token] at (p1) {};
\node[place,label=above:$p_2$,right=of p1] (p2) {};
\node[token] at (p2) {$y$};
\end{tikzpicture}

放置令牌有一个简单的方法,是使用风格

children are tokens
比如
\begin{tikzpicture}
\node[place,label=above:$p_1$] {}
[children are tokens]
child {node [token] {1}}
child {node [token] {2}}
child {node [token] {3}};
\end{tikzpicture}
令牌间距由选项
token distance=距离
设置。实际上你还可以简单地指定令牌的数量
tokens=数量
比如
\tikz \node[place,tokens=3] {};

你可以用选项

colored tokens={颜色表达式列表}
为每一个令牌指定颜色。比如
\tikz \node[place,colored tokens={black,black,red,blue}] {};

指定令牌文本可以用选项

structured tokens={文本列表}
比如
\tikz \node[place,structured tokens={$x$,$y$,$z$}] {};


目录