実装ノート

ダミー頂点

頂点集合を階層に分割する際にダミー頂点が挿入される。 BrandesとKöpfのアルゴリズムは、 両端点がダミー頂点であるエッジを垂直にレイアウトする。

ダミー頂点は入力エッジと出力エッジをただひとつだけ持つ。 非ダミー頂点と非ダミー頂点をつなぐエッジ列をパスと呼ぶことにすると、 ダミー頂点を挿入する前の各エッジについて、一対一で対応するパスが存在する。

それ以外にもダミー頂点の挿入が役に立つ場合が考えられる。

  1. 自己エッジを分割する
  2. 多重エッジを分割する
  3. ラベルを持つエッジを分割する

自己エッジを分割すると閉路になる。 明示的な非閉路化あるいは非閉路化のアルゴリズムによってエッジを反転させると、 入力エッジと出力エッジをただひとつだけ持つという条件が満たされなくなる。 このように非閉路化されたグラフにBrandesとKöpfのアルゴリズムを適用すると、 ダミー頂点の扱いで問題が発生しうる。

楕円

\[\begin{aligned} \frac{x^2}{r_x^2} + \frac{y^2}{r_y^2} &= 1 \\ r_y^2 x^2 + r_x^2 y^2 &= r_x^2 r_y^2 \\ r_x^2 r_y^2 - r_x^2 y^2 &= r_y^2 x^2 \\ r_x^2 (r_y^2 - y^2) &= r_y^2 x^2 \\ r_x &= \frac{ r_y }{ \sqrt{r_y^2 - y^2} } x \\ \end{aligned}\]