У меня есть DAG около 3.300 вершин, которые можно довольно успешно выложить dot
как более или менее простое дерево (вещи усложняются, потому что вершины могут иметь более одного предшественника из совершенно другого ранга, поэтому кроссоверы часто). Каждая вершина в графе возникла в определенное время в исходном процессе, и я хочу, чтобы одна ось в макете представляла время: отношение к краю, подобное a -> v, b -> v
, означает, что a
и b
возникли на некоторых конкретных время до v
.
Есть ли алгоритм компоновки для DAG, который позволил бы мне определять позиции (или, по крайней мере, расстояния) на одной оси и придумывать оптимальную компоновку относительно кроссоверов на другом?