2011-02-20 11 views
7

Estoy utilizando networkx (un paquete de dibujo de gráficos python) http://networkx.lanl.gov/index.html para uno de mis proyectos. Aunque networkx es bastante bueno, la función de visualización es una mierda debido a la cantidad de bordes transversales. ¿Hay alguna manera de minimizar los bordes cruzados en un gráfico? Me refiero a un algoritmo que puede ordenar los nodos de manera que se minimicen los bordes cruzados.Minimizar bordes cruzados en un gráfico

+0

¿Has probado Graphviz para tu dibujo? Podría ser mejor para minimizar los cruces (especialmente Dot si tiene el tipo de gráficos que prefiere). ¿Qué tipo de gráfico tienes (es decir, de dónde viene)? –

+0

Pensé que networkx usa graphviz para mostrar (a través de pydot). Estos gráficos provienen de rastros de un tipo especial de redes. Los anillos son los más golpeados :( –

+0

posible duplicado de [Planar Graph Layouts] (http://stackoverflow.com/questions/2347748/planar-graph-layouts) –

Respuesta

3

La determinación de un diseño de gráfico plano que minimiza el número de cruces es NP-Hard. Vea la página de la wiki en Crossing Number.

Podría intentar algunas heurísticas, la disposición basada en la fuerza es bastante popular, creo (graphviz las usa, si recuerdo correctamente).

También podría probar algunos algoritmos de aproximación, debería encontrar referencias en la página wiki que he vinculado.

Espero que ayude.

Cuestiones relacionadas