Я хотел бы создать диаграмму, представляющую конечный автомат, чтобы ребра между узлами не пересекались или, по крайней мере, имели минимальное количество пересечений.Вот пример использования
dot -Tpng diagram.dot
:
![enter image description here](https://i.stack.imgur.com/qCd6p.png)
Эта диаграмма имеет 7 пересечений.Я вручную расположил эту диаграмму так, чтобы она имела только 3 пересечения, но я хотел бы иметь алгоритм, чтобы сделать это автоматически и найти оптимальное решение.Пожалуйста, укажите мне алгоритм / исходный код / инструмент, который делает это.
Вот исходный код figure.dot для этой диаграммы:
digraph {
START
A
B
C
D
E
F
G
H
I
J
L
M
K
START -> A
A -> B
A -> L
B -> C
C -> G
C -> D
D -> J
E -> F
F -> A
G -> B
G -> H
G -> I
G -> M
H -> L
I -> L
J -> L
J -> H
J -> I
J -> K
J -> G
J -> E
J -> M
K -> L
L -> B
L -> H
L -> I
L -> J
L -> M
M -> L
}