ペグソリティアの枝刈り

調べてみると、各局面での解のありなしをパゴダ関数とかいう数値割り当てによって判定できるらしい。これで枝刈が出来る。
で、パゴダ関数とは、、、というとP,Q,Rの連続する枠があったとき、この順どおり(=Qが真ん中)であれば、pag P + pag Q \ge pag Rが成り立つように各枠に数字を割り当てておく方法らしい。もちろん一通りではない。
これを使って from , to の盤面を考えて、その石のあるところのパゴダ関数の合計値は from >= to となるはず(各ジャンプで P, Q が消えて R になるので、smaller or equal な R は減るか同値)。
更に、探索範囲も基本的には盤面の前候補を蓄積しておいて、それと共に変換点だけ調べるようにすれば相当探索数は減るはず。
というわけで何とかしようかと思うんだけど例によって「次の瞬間答えが出るかも」とか言ってブレークする度胸が無い。バカ丸出し。