O Algoritmo HL

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 em um layout hierárquico
Í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();