[1] 図: 次のような継承関係に、更に a -> b
を足すところ。
[2] 推移的閉包のようなものを考えると、次の継承関係が存在していることになる。
継承関係 a -> b
の追加によって新たに次の関係が生じる。
j -> b
, j -> c
, j -> d
, j -> e
, j -> f
, j -> g
k -> b
, k -> c
, k -> d
, k -> e
, k -> f
, k -> g
i -> b
, i -> c
, i -> d
, i -> e
, i -> f
, i -> g
h -> b
, h -> c
, h -> d, h -> e
, h -> f
, h -> g
a -> b
, a -> c
, a -> d
, a -> e
, a -> f
, a -> g
[3] つまり、 a
へ向かう逆向きの木の各節点すべてに、
その節点から b
の全節点への継承関係を追加すればいい
(あたりまえ)。
追加する矢印の先の節点の一覧は、すなわち b
の節点の継承先リストそのもの
(および b
自体)。追加する矢印の前の節点の一覧は、
全節点を探索して継承先リストに a
が含まれているものを見つければいい。んな悠長なことはやっていられないので、
逆方向の関係のリストも各節点に持たせれば実現できる。
ただし、循環や重複に注意すること。