おねえさんを組み合わせ爆発から救う:完結編おねえさんは星になった

おねえさんを組み合わせ爆発から救うために、経路をZDDとして表したら、すっきりと経路情報が扱えました。
http://d.hatena.ne.jp/nowokay/20121018#1350528607


あとは、このZDDを効率よく構築できれば、おねえさんを救えそうです。このZDDの構築には、クヌース先生の開発したSimpathアルゴリズムを使うと非常に効率よく構築できます。


前回生成したZDDを見ると、同じノードにまとまっているものがいくつかあることがわかります。特に後半になるとどんどん同じパターンになるものがまとめられていきます。
つまり、この経路問題のZDDを構築するときには、いかに同じパターンになるものをまとめるかが鍵になるということです。


Simpathでは、辺の端だけに注目して、同じパターンになっていればそれ以降のノードを使いまわすという考え方で、ノードをまとめていきます。
つまり、この図では、1と8がつながっている、9と10がつながっている、という端のパターンが同じなので、これ以降のパターンは共通になると考えられます。

続きを読む