我正在用 Latex 写一份数学报告,需要绘制自由状态自动机。到目前为止,使用该tikz
软件包都很棒,但它却莫名其妙地变得奇怪。我试图复制同一个自动机的几个迭代,如下所示:
\item{Show the computation of your deterministic automaton for the input tape $abb$.
\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=3cm, every state/.style={align=center,minimum size=1.5cm,text width=1cm}]
\node [initial, state] (q0) {$q_0$};
\node [state] (q0q1) [right of=q0] {$\{q_0,q_1\}$};
\node [state,accepting] (q1q2) [right of=q1] {$\{q_1,q_2\}$};
\node [state] (q1) [right of=q1q2] {$q_1$};
\path[->]
(q0) edge node {a} (q0q1)
(q0q1) edge [bend left] node {a} (q0)
(q0q1) edge node {b} (q1q2)
(q1q2) edge [bend left] node {b} (q1)
(q1) edge [bend left] node {b} (q1q2);
\end{tikzpicture}
\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=3cm, every state/.style={align=center,minimum size=1.5cm,text width=1cm}]
\node [initial, state] (q0) {$q_0$};
\node [state] (q0q1) [right of=q0] {$\{q_0,q_1\}$};
\node [state,accepting] (q1q2) [right of=q1] {$\{q_1,q_2\}$};
\node [state] (q1) [right of=q1q2] {$q_1$};
\path[->]
(q0) edge node {a} (q0q1)
(q0q1) edge [bend left] node {a} (q0)
(q0q1) edge node {b} (q1q2)
(q1q2) edge [bend left] node {b} (q1)
(q1) edge [bend left] node {b} (q1q2);
\end{tikzpicture}
}
这导致了这样的情况发生:
即从 到 的路径在每次迭代中(q0q1)
都会(q1q2)
延伸。在问题的前一部分中,使用完全相同的代码,自动机看起来完全正常,但每次迭代都会导致越来越多的延伸。对于我重复多次的先前自动机,它没有这样做。
有人能发现什么吗?
谢谢
答案1
部分重写了您的代码 - 我改变了状态及其名称的出现顺序,纠正了状态节点定位的语法 - 给出了预期的结果:
从上面的图片可以看出,没有任何奇怪的拉伸。对于它们,我使用以下代码:
\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=3cm, every state/.style={align=center,minimum size=1.5cm,text width=1cm}]
\node [initial, state] (q0) {$q_0$};
\node [state] (q0q1) [right=of q0] {$\{q_0,q_1\}$};
\node [state,accepting] (q1q2) [right=of q0q1] {$\{q_1,q_2\}$};
\node [state] (q1) [right=of q1q2] {$q_1$};
\path[->]
(q0) edge node {a} (q0q1)
(q0q1) edge [bend left] node {a} (q0)
(q0q1) edge node {b} (q1q2)
(q1q2) edge [bend left] node {b} (q1)
(q1) edge [bend left] node {b} (q1q2);
\end{tikzpicture}
\begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=3cm, every state/.style={align=center,minimum size=1.5cm,text width=1cm}]
\node [initial, state] (q0) {$q_0$};
\node [state] (q0q1) [right=of q0] {$\{q_0,q_1\}$};
\node [state,accepting] (q1q2) [right=of q0q1] {$\{q_1,q_2\}$};
\node [state] (q1) [right=of q1q2] {$q_1$};
\path[->]
(q0) edge node {a} (q0q1)
(q0q1) edge [bend left] node {a} (q0)
(q0q1) edge node {b} (q1q2)
(q1q2) edge [bend left] node {b} (q1)
(q1) edge [bend left] node {b} (q1q2);
\end{tikzpicture}
因为documentclass
我使用带有必要 TikZ 库的独立包。正如我从您的代码片段中看到的那样,它不寻常地包含在某些列表中。正常情况下它应该遵循以下项目:
\item Show the computation of your deterministic automaton for the input tape $abb$.
\begin{tikzpicture}
...
\end{tikzpicture}
\item ...