Character-Based Phylogeny

http://rosalind.info/problems/chbp/

Counting Quartetsを解いた直後だったので、このときの考え方を利用すればいいのだと思った。これに基づいて組んでみると、微妙に合わない。この逆問題は非常に簡単なので、この問題でグラフを作って、そこから表を作ると、少し差異が出てくる。ただ、大きなグラフだとデバッグが難しい。そこで、ランダムにunrooted binary treeを発生させ、このグラフから表を作り、表からグラフを作り、さらにグラフから表を作り、さきほどの表と比較する。ランダムで葉が10程度のグラフを100個作っても差が出ない。すなわち、間違いがわからない。葉が20程度のグラフを作るとやっと数個違いが出た。このうちの一つについて手でグラフを書いてデバッグしてみた。深刻なバグに気が付いたが、同時に別の方法も思いついた。これを実装してみたら、答えがあった。
あとで気づいたが、この問題のほうが先だった。