El algoritmo DJ

Una breve descripción del algoritmo DJ

Este algoritmo funciona en cuatro pasos:
Paso 1: Nivelación
Los nodos se dividen en grupos. Cada grupo de nodos forma un nivel. El objetivo es agrupar los nodos de forma que los enlaces siempre apunten de un nivel con un índice menor a un nivel con un índice mayor.
Paso 2: Reducción de intersecciones
Los nodos se ordenan dentro de cada nivel. El algoritmo intenta que el número de intersecciones de enlaces sea pequeño cuando, para cada nivel, los nodos se colocan en este orden en una línea (consulte Índices de nivel y posición). Este orden da lugar al índice de posición relativo de cada nodo dentro de su nivel.
Paso 3: Colocación de los nodos
A partir de los índices de nivel y posición, se calculan coordenadas equilibradas para los nodos. Por ejemplo, para un diseño donde el flujo de los enlaces es de arriba abajo, los nodos se colocan a lo largo de líneas horizontales de forma que todos los nodos que pertenecen al mismo nivel tengan (aproximadamente) la misma coordenada y. Los nodos de un nivel con un índice menor tienen una coordenada y menor que los nodos de un nivel con un índice mayor. Dentro de un nivel, los nodos con un índice de posición menor tienen una coordenada x menor que los nodos con un índice de posición mayor.
Paso 4: Direccionamiento de los enlaces
Las formas de los enlaces se calculan de tal modo que los enlaces eviten los nodos de las líneas de nivel. En muchos casos, esto exige crear un punto de inflexión siempre que un enlace tenga que cruzar una línea de nivel. En un diseño de arriba abajo, estos puntos de inflexión tienen la misma coordenada y que la línea de nivel que cruzan. (Estos puntos de inflexión también obtienen un índice de posición).
Índices de nivel y posición muestra como el algoritmo Diseño jerárquico utiliza los índices de nivel y posición para representar el gráfico.
Índices
de nivel y posición en un diseño jerárquico
Índices de nivel y posición
Puede establecer parámetros para los pasos del algoritmo de diseño de varias maneras. Por ejemplo, puede especificar el índice de nivel que el algoritmo debe elegir para un nodo en el Paso 1 o la posición relativa del nodo dentro del nivel en el Paso 2. También puede especificar la justificación de los nodos dentro de un nivel y el estilo de las formas de los enlaces.

Ejemplo de DJ

En el código de ejemplo siguiente se muestra cómo ejecutar un Diseño jerárquico:
var layout = new ibm_ilog.graphlayout.hierarchical.HierarchicalLayout();
graph.setNodeLayout(layout);
graph.performGraphLayout();