Para simplificar el problema, tengo un gráfico que contiene los nodos y aristas que están en un plano 2D.

Lo que quiero ser capaz de hacer clic en un botón y automáticamente el diseño de la gráfica mirada limpia. Por que me refiero a un mínimo de cruce de los bordes, agradable espacio entre los nodos, tal vez incluso representar la escala del gráfico (ponderada de los bordes).

Sé que esto es completamente subjetivo de lo que es un aspecto limpio gráfico, pero ¿alguien sabe de un algoritmo para empezar, en lugar de reinventar la rueda?

Gracias.

InformationsquelleAutor Cheetah | 2011-02-17

5 Comentarios

  1. 19

    Me permito sugerir que usted tome una mirada en graphviz. El dot programa puede tomar una especificación de un gráfico y generar una imagen de la red para algo «limpiamente». La «teoría» que aparece en esa página te da algunos enlaces que pueden ser relevantes si usted está interesado en la base teórica.

    • La pregunta es acerca de un Algoritmo para el diseño gráfico, no de la aplicación.
    • Por eso mencioné específicamente la teoría de enlace en esa página.
    • La respuesta no se refiere explícitamente a la teoría del vínculo. Es más de un «si usted está interesado en la teoría». Hubiera sido mejor para referirse a la teoría del vínculo y «si usted está interesado en una aplicación» en su lugar.
    • Justo lo suficiente. Entendí que el OP como querer resolver el problema de diseño (en lugar de reimplementar una solución), y a partir de mi respuesta sobre eso (un bien probado, la calidad de la producción «rueda» que él o ella no tiene que reinventar).
  2. 75

    Encontrará http://graphdrawing.org/ y este tutorial, por Roberto Tamassia, profesor en la Universidad de Brown, bastante útil.

    Me gusta mucho la Fuerza Dirigida Técnicas (pp 66-72 en el tutorial) como el Primavera Embedder.

    Que asumir que hay un manantial o de fuerza entre dos nodos adyacentes y dejar que la naturaleza (simulación) hacer el trabajo 🙂

    • Pensé que la pregunta era acerca de los algoritmos y no marcos. No entiendo por qué no a esta pregunta fue aceptada, este es el único que se acerca de los algoritmos.
    • Posiblemente debido a que el aceptado respuesta apuntó a la «teoría» de la sección de la graphviz documentación, lo que hace la dirección de algoritmos, como se solicita? Aún así, el tutorial que enlaza parece útil, así que estar contentos con los +1s que usted consigue.
    • thnx. No me queje por el camino. Alguien más lo hizo!
    • El «tutorial» enlace parece que no funciona más.
    • thnx! He editado el enlace, a Roberto Tamassia » en las páginas, en la Universidad de Brown.
    • Yo sólo acerca de agregar el link actualizado, son rápidos.
    • Enlace proporcionado está muerto «en este tutorial». Por favor actualizar en consecuencia.
    • thnx por dejarme saber. He actualizado el enlace 2 o 3 veces en el pasado, desde mi primera publicación aquí. Yo no la puede encontrar en línea en cualquier página oficial de la autora. Voy a actualizar si tengo que hacer (encontrar).
    • El enlace es ahora cs.brown.edu/people/rtamassi/papers/gd-tutorial/…

  3. 2

    Yo diría que como Noufal Ibrahim, pero también se puede ver, más precisamente en la API de C de la graphviz proyecto. Incluye una lib para construir su gráfica (libgraph.pdf) con todos los nodos y aristas, y una lib para el diseño de la gráfica (libgvc.pdf) (sólo calcular cada uno de los nodos de la posición), por lo que puede mostrar en su propia interfaz de usuario, por ejemplo.

  4. 1

    Una buena guía visual de cómo los más populares diseños de mirar: siga las enlace

    • Aunque esto, en teoría, puede responder a la pregunta, sería preferible para incluir las partes esenciales de la respuesta aquí, y proporcionar el enlace de referencia.

Dejar respuesta

Please enter your comment!
Please enter your name here