Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サンタコンペ 2025 考察と解法解説

Avatar for shr shr
February 26, 2026

サンタコンペ 2025 考察と解法解説

Avatar for shr

shr

February 26, 2026

Other Decks in Technology

Transcript

  1. 自己紹介 shr / saharan / さはら という名前で活動しています[1] 物理シミュレーション好き[2] AtCoder Heuristic

    Contest (AHC) によく参加してます ▪ 昨日まで世界ランク1位(タイ)でした 2 [1] X IDs: @shr_id / @shr_pc [2] 興味ある人は oimo.io を見てね
  2. 自己紹介 shr / saharan / さはら という名前で活動しています[1] 物理シミュレーション好き[2] AtCoder Heuristic

    Contest (AHC) によく参加してます ▪ 昨日まで世界ランク1位(タイ)でした ▪ 一昨日終わった AHC061 で惨敗したため鉑冠が剥奪されました ▪ 夢をありがとう 3 [1] X IDs: @shr_id / @shr_pc [2] 興味ある人は oimo.io を見てね
  3. 自己紹介 shr / saharan / さはら という名前で活動しています[1] 物理シミュレーション好き[2] AtCoder Heuristic

    Contest (AHC) によく参加してます ▪ 昨日まで世界ランク1位(タイ)でした ▪ 一昨日終わった AHC061 で惨敗したため鉑冠が剥奪されました ▪ 夢をありがとう Kaggle は初参加 ▪ サンタ面白いという話は聞いていたのでワクワク 4 [1] X IDs: @shr_id / @shr_pc [2] 興味ある人は oimo.io を見てね
  4. 問題概要 皆さんご存知だと思うのでざっくり…… ▪ 変な形したクリスマスツリーを正方形に詰めなくてはならない ▪ 1 個から 200 個まで ▪

    スコアはツリーあたりの面積の総和 ▪ 小さいほどよい 期間中街中で装飾されたツリーを見て苦しんだ人は多いはず 7
  5. 物理演算を利用する際の懸念点 ▪ まず誤差が厳しい ▪ 普通の物理エンジンでは挙動の安定性のために若干のめり込みを許容する ➢ 今回は一切のめり込みも許されない ▪ 非凸形状と衝突解消の相性が悪い ▪

    非凸形状は深くめり込むとすぐに stuck する ▪ そもそも「物理に正しく従う必要」があんまりない ▪ 最終的に欲しいのは良さげなシーンのスナップショットだけ ➢ 速度や時間発展については真面目に考える必要なし 14
  6. 位置ベース物理を使う ▪ 位置ベース物理 (Position Based Dynamics, PBD) とは? ▪ 位置に対する拘束条件(めり込まない、伸びない

    等)を解いて、そこから速度を更新 ➢ 他の手法よりもめり込みに強く、最終的に細かい座標調節が必須な問題要件に一致 ただし、非凸形状が深くめり込むと暴れるのは避けられないので工夫は必要 15
  7. 位置ベース物理を使う ▪ 位置ベース物理 (Position Based Dynamics, PBD) とは? ▪ 位置に対する拘束条件(めり込まない、伸びない

    等)を解いて、そこから速度を更新 ➢ 他の手法よりもめり込みに強く、最終的に細かい座標調節が必須な問題要件に一致 ただし、非凸形状が深くめり込むと暴れるのは避けられないので工夫は必要 ▪ ミンコフスキー差を利用して確実に分離する案[1] ▪ 回転すると形状が大きく変わるのが難しい ▪ 重いので事前計算 + LUT が必要そうだが、補間による誤差が心配…… 16 [1] 詰め込み問題では No Fit Polygon と呼ばれているらしい
  8. 位置ベース物理を使う ▪ 位置ベース物理 (Position Based Dynamics, PBD) とは? ▪ 位置に対する拘束条件(めり込まない、伸びない

    等)を解いて、そこから速度を更新 ➢ 他の手法よりもめり込みに強く、最終的に細かい座標調節が必須な問題要件に一致 ただし、非凸形状が深くめり込むと暴れるのは避けられないので工夫は必要 ▪ ミンコフスキー差を利用して確実に分離する案[1] ▪ 回転すると形状が大きく変わるのが難しい ▪ 重いので事前計算 + LUT が必要そうだが、補間による誤差が心配…… ▪ Ad hoc にゴリ押す案 17 [1] 詰め込み問題では No Fit Polygon と呼ばれているらしい
  9. 探索の方針 移動・回転の transition 後に物理演算によるめり込み量の最小化を適用 ▪ めり込みが全体に分散され、ある種のエネルギー極小状態に落ち着く ▪ この操作を diffuse と(勝手に)呼ぶことにする

    最適化のメインループ 1. ツリーを正方形の領域に重ならないように詰め込む 2. 正方形の領域を少しだけ縮小して圧縮する 3. ツリーを動かして重なりが 0 になるのを祈る 21
  10. パターン別の特徴 ▪ パターン1 ▪ 高密度 ▪ 柔軟性は低め ▪ パターン2 ▪

    低密度 ▪ 高い柔軟性 結晶構造で性質に違いが出るのが面白い! ▪ ダイヤモンドと黒鉛みたいな…… 29
  11. N の解から N±1 の解を作る 「たまたま見つかった良いパターン」を他の N でも活用したい ➢ 一個抜く /

    一個入れる で特徴を引き継いだ解を作る 特に「一個入れる」は難しくなりがちだが、物理演算による局所改善と相性が良い 42
  12. 焼きなまし法の詳細 あまり凝ったことはできなかった ▪ いくつか移動 → diffuse が基本 ▪ N が大きいと重いので、局所的に

    diffuse するなどの工夫を入れた 無限に焼きたいので、parallel tempering を導入 ▪ 適当な温度間隔でレプリカを交換 ▪ 高温がすぐゴミになる問題 45
  13. 焼きなまし法の詳細 あまり凝ったことはできなかった ▪ いくつか移動 → diffuse が基本 ▪ N が大きいと重いので、局所的に

    diffuse するなどの工夫を入れた 無限に焼きたいので、parallel tempering を導入 ▪ 適当な温度間隔でレプリカを交換 ▪ 高温がすぐゴミになる問題 ▪ 定期的にベスト解を注入 ▪ ベスト解と比較して一定以上評価(めり込み量)が悪化する遷移は行わない ▪ これがかなり効いた 46
  14. 焼きなまし法の詳細 最適解から一定範囲でのスコア悪化を許容して探索するアルゴリズムに Record- to-Record Travel (RRT) がある ちょうどコンペ期間中に行われた AHC059 延長戦でも活躍していた

    ▪ hitonanode さんによる解説[1]で RRT を知りました ▪ 偶然似たようなことをしていてびっくり 48 [1] https://atcoder.jp/contests/ahc059/editorial/15052
  15. Record-to-Record Travel をちょっと解説 山登り法 (Hill Climb, HC) の亜種 ▪ HC:スコアが改善する場合のみ受理

    ▪ RRT:スコアがこれまでの最善解から一定範囲 𝜽 の悪化なら受理 49
  16. Record-to-Record Travel をちょっと解説 山登り法 (Hill Climb, HC) の亜種 ▪ HC:スコアが改善する場合のみ受理

    ▪ RRT:スコアがこれまでの最善解から一定範囲 𝜃 の悪化なら受理 見方によっては焼きなまし法 (SA) の deterministic な亜種とも捉えられる ▪ 温度 𝑇 許容悪化量 𝜃 の対応 ▪ SA:受理確率が悪化量と 𝑇 の比率で指数的に低下 ▪ RRT:受理確率が悪化量と 𝜃 の比率でステップ関数的に低下 50
  17. HC, SA, RRT の相関図 51 山登り法 焼きなまし法 (パラメータ 𝑻, 非決定的)

    Record-to-Record Travel (パラメータ 𝜽, 決定的) 受理確率の二値化 受理確率の連続化
  18. やろうと思ってできなかったこと Large Neighborhood Search ▪ 他の解を混ぜるとか ▪ 部分的に解を拾ってきて組み合わせるとか GPU 利用

    ▪ 物理演算部分が複雑になりすぎて SIMD を使うのが限界だった 反省:全体的に「放置しとけば改善する」に甘えていた感がある ▪ 長期 AHC のように常に積極的に良いアルゴリズムを掴みに行かないといけなかった ▪ が、2ヶ月あれをやるのは辛い…… 54
  19. 全体を振り返って ▪ Discussion が楽しい ▪ AHC は解法共有が厳禁なので、Kaggle ならでは ▪ 長い!!!

    ▪ つらい ▪ 特にソロだと辛い ▪ 治安が…… ▪ 不審なメール・チームマージリクエストを多数受け取った ▪ 公開 Notebook 問題 ➢ チーム戦なのもあり、純粋な競技として参加するのは辛くなりそう 57 ↑は??
  20. 全体を振り返って ▪ コンペ中に勉強ができるのはとても良い ▪ Parallel tempering の理論と実装の勉強になった ▪ 体調と生活が破壊される ▪

    長期 AHC ですら、いわんや Kaggle をば ▪ いのちだいじに 色々大変でしたが楽しかったです! ▪ 今年も参加するかは謎 59