我正在使用经典构造法来构建一个识别正则表达式的epsilon NFA,使用子图来分组正则表达式的各个部分。*运算符让我特别困扰,因为dot决定改变节点的顺序。我尝试添加边权重以强制保持边的顺序,但似乎不起作用。
我想强制将子图中的节点按照一定顺序放置,以便输出图形可以被识别为特定类型的(公认的)构造。在下面的示例中,我希望将边3、4、5和6按照那个顺序放置,但是dot将它们放置在6、3、4、5的顺序中。感谢任何指导。
请注意,当前的权重参数与没有权重参数产生的结果没有区别。我有以下:
我想强制将子图中的节点按照一定顺序放置,以便输出图形可以被识别为特定类型的(公认的)构造。在下面的示例中,我希望将边3、4、5和6按照那个顺序放置,但是dot将它们放置在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;
}