Os Algoritmos LL

Os algoritmos de layout de link são implementados pelas seguintes classes:

Algoritmo de Layout de Link Curto

O algoritmo de Layout de Link Curto é baseado em uma otimização combinatória que escolhe a forma “ideal” dos links para minimizar a função de custo. Esta função de custo é proporcional ao número de cruzamentos de link para link e de link para nó.
Por razões de eficiência, a forma básica de cada link é escolhida a partir de um conjunto de formas predefinidas. Estas formas são diferentes para cada opção de estilo de link. Para o estilo de link ortogonal, os links são redimensionados para uma linha poligonal de até cinco segmentos alternados horizontais e verticais (consulte Layout de Link Curto com Links Ortogonais). For the direct link style, the links are reshaped to a polygonal line composed of three segments: a straight-line segment that starts and ends with small horizontal or vertical segments (see O mesmo gráfico no layout de link curto com links diretos).
A forma de um link também depende da posição relativa dos nós de origem e de destino. Por exemplo, quando dois nós estão muito próximos ou se sobrepõem, a forma do link é escolhida para fornecer a melhor visibilidade do link.
A forma exata de um link é calculada considerando restrições adicionais. The layout algorithm tries to:
  • Minimize the number of crossings between the links incident to a specific side of a node.
  • Espaçar os segmentos finais dos links incidentes para um lado específico de um nó igualmente na borda do nó.

Algoritmo de Layout de Link Longo

O algoritmo de Layout de Link Longo primeiro trata cada link individualmente. Para cada link, primeiro ele calcula os pontos de conexão nos nós de extremidade que estão na grade e ordena-os de acordo com um valor de penalidade. Connection points on used grid points have a high penalty and, therefore, are unlikely to be used.
Para os links ortogonais (consulte Layout de link longo com links ortogonais), o algoritmo de Layout de Link Longo usa então uma passagem de grade para procurar uma rota sobre pontos de grade livres, do ponto de conexão inicial ao ponto de conexão final. Therefore, in contrast to the short link mode, orthogonal links can have any shape with many bends if it is necessary to bypass obstacle nodes to avoid overlapping. For the direct links, see O mesmo gráfico no layout de link curto com links diretos, it shortens the search by using a direct segment between the connection points.
Quando todos os links forem posicionados, uma fase de redução de cruzamentos examinará pares de links e eliminará os cruzamentos de links, trocando partes das rotas entre os dois links.
O algoritmo de Layout de Link Longo depende do fato de que os links se ajustem ao espaçamento da grade e que partes das rotas entre diferentes links possam ser trocadas. Portanto, o algoritmo de Layout de Link Longo não considera a largura do link, porque seria muito difícil localizar as partes de dois links que podem ser trocadas. É recomendável configurar o espaçamento da grade maior que a maior largura do link.

Exemplo de Layout de Link

O exemplo de código a seguir mostra o uso da classe ibm_ilog.graphlayout.shortlink.ShortLinkLayout.
var layout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout();
graph.setLinkLayout(layout);
graph.performGraphLayout();