Uma Breve Descrição do Algoritmo HL
Este algoritmo funciona em quatro etapas:
- Etapa 1: Nivelamento
- Os nós são particionados em grupos. Cada grupo de nós forma um nível. O objetivo é agrupar os nós de forma que os links sempre apontem de um nível com um índice menor para um nível com um índice maior.
- Etapa 2: Redução de Cruzamentos
- Os nós são classificados em cada nível. O algoritmo tenta manter o número de cruzamentos de links pequeno quando, para cada nível, os nós são posicionados nesta ordem em uma linha (consulte Índices de nível e de posição). Esta ordem resulta no índice de posição relativa de cada nó em seu nível.
- Etapa 3: Posicionamento de Nós
- A partir dos índices de nível e dos índices de posição, são calculadas coordenadas balanceadas para os nós. Por exemplo, para um layout em que o fluxo do link ocorre de cima para baixo, os nós são posicionados em linhas horizontais de forma que todos os nós pertencentes ao mesmo nível tenham (aproximadamente) a mesma coordenada y. Os nós de um nível com um índice menor possuem uma coordenada y menor que os nós de um nível com um índice maior. Em um nível, os nós com um índice de posição menor possuem uma coordenada x menor que os nós com um índice de posição mais alta.
- Etapa 4: Roteamento de Links
- As formas dos links são calculadas de forma que os links ignorem os nós nas linhas de níveis. In many cases, it requires that a bend point is created whenever a link needs to cross a level line. Em um layout de cima para baixo, estes pontos de curvatura possuem a mesma coordenada y que a linha de nível que eles cruzam. (These bend points also obtain a position index).
Índices de nível e de posição mostra como
o algoritmo de Layout Hierárquico usa os índices de nível e de posição
para desenhar o gráfico.

Índices de nível e de posição
É possível configurar os parâmetros do algoritmo de layout
de várias maneiras. For instance, you can specify the level index that
the algorithm must choose for a node in Step 1 or the relative node
position within the level in Step 2. You can also specify the justification
of the nodes within a level and the style of the link shapes.
Exemplo de HL
A seguinte amostra de código mostra como executar um
Layout Hierárquico:
var layout = new ibm_ilog.graphlayout.hierarchical.HierarchicalLayout(); graph.setNodeLayout(layout); graph.performGraphLayout();