如何使用 graphviz、dot 使这个图成为非循环图?

How do I make this graph acyclic, with graphviz, dot?

这里是 DOT/GraphViz 的第一次用户。我有下图

digraph G {
  rankdir=LR;
  "START" -> "A" -> "B" -> "A" -> "C" -> "A" -> "END"
  "START" -> "A" -> "C" -> "A" -> "B" -> "A" -> "END"
}

渲染成这样

而我希望它像这样呈现

如何在 DOT 中表达?

在 Graphviz 中,您不能有超过一个具有相同 ID 的状态。但是,您可以创建一个图表,其中各州的 ID 不同但标签相同。

为了构建你想要的图表,我会尝试这样的事情:

digraph G{
    START [label="START"]; 
    A1 [label="A"]; 
    A2 [label="A"]; 
    A3 [label="A"]; 
    B1 [label="B"]; 
    B2 [label="B"]; 
    C1 [label="C"]; 
    C2 [label="C"]; 
    END [label="END"]
    START->A1
    A1->B1
    A1->C1
    B1->A2
    C1->A2
    A2->B2
    A2->C2
    B2->A3
    C2->A3
    A3->END
}

即定义了不同的状态以相同的名称(标签)显示。在这里你可以看到结果:

这与@rakwaht 的建议完全相同,您已经接受了,只是写得更简洁——我不认为这是一场噩梦:

digraph G{
    START [label="START"]; 
    A1, A2, A3 [label="A"]; 
    B1, B2 [label="B"];  
    C1, C2 [label="C"];  
    END [label="END"];
    START-> A1 -> { B1 C1 } -> A2 -> { B2 C2 } -> A3 -> END
}