Los algoritmos de DE

Los algoritmos de diseño de enlaces se implementan mediante las clases siguientes:

Algoritmo Diseño de enlaces cortos

El algoritmo Diseño de enlaces cortos se basa en una optimización combinatoria que elige la forma “óptima” de los enlaces para minimizar una función de coste. Esta función de coste es proporcional al número de intersecciones de enlace a enlace y de enlace a nodo.
Por cuestiones de eficacia, la forma básica de cada enlace se selecciona a partir de un conjunto de formas predefinidas. Estas formas son diferentes para cada opción de estilo de enlace. Para el estilo de enlace ortogonal, se cambia la forma de los enlaces por una línea poligonal de hasta cinco segmentos horizontales y verticales alternos (consulte Diseño de enlaces cortos con enlaces ortogonales). Para el estilo de enlace directo, se cambia la forma de los enlaces por una línea poligonal compuesta de tres segmentos: un segmento straight-line que empieza y termina con pequeños segmentos horizontales o verticales (consulte El mismo gráfico del diseño de enlaces cortos con enlaces directos ).
La forma de un enlace también depende de la posición relativa de los nodos de origen y destino. Por ejemplo, cuando dos nodos están muy próximos o se solapan, la forma del enlace se elige para proporcionar la mejor visibilidad del enlace.
La forma exacta de un enlace se calcula teniendo en cuenta restricciones adicionales. El algoritmo de diseño intenta:
  • Minimizar el número de intersecciones entre los enlaces incident en una cara concreta de un nodo.
  • Espaciar los segmentos finales de los enlaces incidentes en una cara concreta de un nodo uniformemente en el borde del nodo.

Algoritmo Diseño de enlaces largos

El algoritmo Diseño de enlaces largos primero trata cada enlace individualmente. Para cada enlace, primero calcula los puntos de conexión en los nodos finales que se encuentran en la cuadrícula y los ordena de acuerdo con un valor de penalización. Los puntos de conexión en los puntos de la cuadrícula utilizada tienen una penalización alta y, por lo tanto, es poco probable que se utilicen.
Para los enlaces ortogonales (consulte Diseño de enlaces largos con enlaces ortogonales), el algoritmo Diseño de enlaces largos a continuación recorre la cuadrícula para buscar una ruta por los puntos de la cuadrícula libres desde el punto de conexión inicial hasta el punto de conexión final. Por consiguiente, a diferencia de la modalidad de enlaces cortos, los enlaces ortogonales pueden tener cualquier forma con muchas curvas si es necesario para eludir los nodos obstáculo con el fin de evitar solapamientos. Para los enlaces directos (consulte El mismo gráfico del diseño de enlaces cortos con enlaces directos ) acorta la búsqueda utilizando un segmento directo entre los puntos de conexión.
Después de colocar todos los enlaces, una fase de reducción de intersecciones examina pares de enlaces y elimina intersecciones de enlaces mediante el intercambio de partes de las rutas entre ambos enlaces.
El algoritmo Diseño de enlaces largos se basa en el hecho de que los enlaces de ajustan al espaciado de la cuadrícula y que partes de las rutas entre enlaces diferentes se pueden intercambiar. Por consiguiente, el algoritmo Diseño de enlaces largos no tiene en cuenta el ancho del enlace porque sería demasiado difícil encontrar las partes de dos enlaces que puedan intercambiarse. Se recomienda establecer un valor para el espaciado de la cuadrícula mayor que el mayor ancho de los enlaces.

Ejemplo de Diseño de enlaces

En el ejemplo de código siguiente se muestra el uso de la clase ibm_ilog.graphlayout.shortlink.ShortLinkLayout.
var layout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout();
graph.setLinkLayout(layout);
graph.performGraphLayout();