在 Latex 中使用 tikz 导致路径自动机无法解释的拉伸

在 Latex 中使用 tikz 导致路径自动机无法解释的拉伸

我正在用 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}
}

这导致了这样的情况发生:

latex 代码的结果

即从 到 的路径在每次迭代中(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 ...

相关内容