Estou procurando um algoritmo para desenhar um gráfico misto de constituição / dependência (para um aplicativo linguístico). Esse gráfico teria dois tipos diferentes de vértices (tokens, nós) e dois tipos diferentes de arestas (hierárquica, não hierárquica).
Eu sou novo na teoria dos grafos e algoritmos em geral, e espero que essa pergunta não colide, por exemplo, com os requisitos de nível de pesquisa deste site. No entanto, geralmente deve estar no escopo da história .
O gráfico teria que ser desenhado de baixo para cima (eu acho), pois todos os tokens devem ser exibidos com a mesma coordenada y, e as coordenadas y dos nós que agrupam tokens e / ou nós em constituintes terão que ser calculadas dinamicamente, por exemplo, pelo caminho mais longo para um token.
As arestas hierárquicas (usadas para agrupar tokens / nós em constituintes) devem ter um número mínimo de pontos de curvatura (idealmente 0), mas também deve haver um número mínimo de cruzamentos, substituindo o requisito anterior, se necessário.
As arestas não hierárquicas (usadas para dependências) devem ter um número mínimo de cruzamentos e ser desenhadas como curvas de Bézier.
A próxima melhor coisa que me deparei é o algoritmo descrito por Buchheim et al. , melhorando o algoritmo de Walker para executar em tempo linear.
Informe-me se houver necessidade de melhorar minha pergunta e desde já agradeço muito por qualquer indicação.
EDITAR:
Como apontado em um comentário, devo mencionar que basicamente quero um layout de gráfico padrão por um algoritmo que, a longo prazo, eu quero editar e revisar dentro das possibilidades do Eclipse GEF . Anteriormente, examinei as opções para que o Graphviz funcionasse com o GEF, mas parece não haver uma solução funcional que preserve todas as funcionalidades de edição herdadas do GEF.