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