25
我正在构建一个epsilon NFA来识别使用规范构造的正则表达式。我使用子图将正则表达式的各个部分分组。 *运算符给我特别麻烦,因为点决定移动节点的顺序。我已经尝试添加边权重来强制特定的边是短的,以保持边缘的顺序,但似乎没有工作。Graphviz .dot节点排序
我想要做的是强制子图中的节点以特定的顺序放置,以便输出图形可以被识别为特定类型的(众所周知的)构造。在下面的例子中,我希望按照顺序放置边3,4,5和6,但点将它们放置在顺序6,3,4,5。任何指针赞赏。
请注意,当前权重参数完全不会产生与完全没有权重参数的差异。
我有以下
digraph G {
rankdir = LR;
node [shape = none];
0 [label = "start"];
node [shape = circle];
1 [label = "q1"];
2 [label = "q2"];
3 [label = "q3"];
4 [label = "q4"];
5 [label = "q5"];
node [shape = doublecircle];
6 [label = "q6"];
subgraph re1 {
rank = same;
edge[label = "0"];
1 -> 2;
};
subgraph re2 {
rank = same;
edge[label = "ε"];
3 -> 4 [weight = 10];
edge[label = "1"];
4 -> 5 [weight = 10];
edge[label = "ε"];
5 -> 6 [weight = 10];
5 -> 4 [weight = 1];
6 -> 3 [weight = 1];
};
edge[color=black];
0 -> 1
edge[label = "ε"];
2 -> 3;
}
对不起,延迟谢谢你的帮助! –