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;
}
對不起,延遲謝謝你的幫助! –