Upload
yowaken
View
1.783
Download
2
Embed Size (px)
Citation preview
k: ビーム幅(解の保持数)
● サイズNのとき、だいたい N 手くらいの解がある● 一つの局面で有効な手は O(N) 手● 1手のシミュレーションに、最悪O(N)くらいかかる
● 解を求めるのに O(k N^3) くらいかかりそう
→ k を O(1/N^3) とかにしとけば、
だいたい決まった時間でおわりそうだぜ
(実際は O(1/N^2.5) くらいにした)
枝刈りとか
● 1手で4枚以下しか壊れなかった– 出口側から入射でも同じ結果になるのでスキップ
● 枚数少ないからシミュレーション重くないしあんま意味ないかもだ
● 局面の同一判定とか– Zobrist Hash をつかった
● 各マスにランダムなhash値を割り当てる● (局面のhash値) = (壊したマスのhash値を全部 xor )
所感
● 幅優先だから、時間調節が難しかった● 高速化はわかんない
vector<int> じゃなく vector<char> にするとか
優先度順に並べるのに partial_sort() するとか
そんくらい(しか知識がない)
奇数/偶数でわかれる理由
● 特に考察とかは無いです– 2つに分かれるのに気づいたの
最終提出の2時間前とかだし
– 問題自体がそういうものなのか、
オレのアルゴリズムがそうなってるのか、
それすらわかんない