Атрибут ранга сбивает меня с толку - PullRequest
32 голосов
/ 27 мая 2011

Атрибут ранга на ребре имеет пять значений: «одинаково», «мин», «источник», «макс», «сток». Я не знаю, когда использовать другие значения, кроме «тот же».

min
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=min;A;B}
  B->D
  A->B;
\end{dotpic}

max
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=max;A;B}
  B->D
  A->B;
\end{dotpic}

source
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=source;A;B}
  B->D
  A->B;
\end{dotpic}

sink
\begin{dotpic}
  rankdir=LR;
  size="7,5";
  node[shape=circle];
  C->A;
  {rank=sink;A;B}
  B->D
  A->B;
\end{dotpic}

С тестом в моей среде vim я могу понять, что между этими значениями есть некоторая разница. Но не знаю точно, для чего они.

1 Ответ

40 голосов
/ 27 мая 2011

Оставление ранга пустым или использование rank = same используются гораздо чаще. Эти остальные четыре обычно используются только в особых обстоятельствах.

При использовании по отдельности min и source имеют одинаковую функцию: помещают все эти узлы в минимальный ранг (верхний ряд графика TB). Разница между ними заключается в том, что min позволит использовать другие подграфы в минимальном ранге. Источник не будет. Источник только позволяет другим подграфам мин или источника быть на минимальном ранге.

Рассмотрим следующий фрагмент кода:

{ rank=source; a -> b; }
{ rank=same;   c -> d; }

В итоге вы получите 2 ряда. a -> b будет выше c -> d.

Source


Если вы измените источник на min, вы получите только одну строку. a -> b будет слева от c -> d, все в минимальном ранге.

{ rank=min;    a -> b; }
{ rank=same;   c -> d; }

Min

Макс и сток являются эквивалентами для нижней части графика.

...