Я создаю эпсилон NFA для распознавания регулярного выражения с использованием канонической конструкции. Я использую подграфы для группировки различных частей регулярного выражения. Оператор * вызывает у меня особые проблемы, поскольку точка решила изменить порядок узлов.Я пробовал добавлять веса краев, чтобы отдельные края были короткими, чтобы сохранить порядок краев на одной линии, но это, похоже, не работает.
Я бы хотел заставить узлы в подграфе размещаться в определенном порядке, чтобы выходной граф можно было распознать как особый тип (хорошо известной) конструкции. В приведенном ниже примере я хотел бы, чтобы края 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;
}