コンテンツにスキップ

ヒューリスティック問題を解く

ヒューリスティック型の問題に関する記事を以下の観点でカテゴリ分けしています。

  • 入門者・初心者向け
  • コンテストに参加する
  • 資料集
  • 典型的な手法の解説と応用

参考

カテゴリやサブカテゴリによっては、中・上級者向けの内容も含まれています。 難しすぎる内容だと思ったときは、少し時間を置いて読み直してみましょう。

入門者・初心者向け

典型的な問題と実生活

コンテストの面白さ・楽しみ方

問題を解く

最初の解法を思いつくには?

入出力データの管理

コンテストに参加する

取り組み方(心構え)

  • マラソンマッチにおける精神論 - ヒューリスティック型コンテストでスコアを上げるために、地道な改善を根気よく続けることの重要性を指摘している記事。

取り組み方(技術)

取り組み方(実装)

参加記・解法の解説

コンテスト企画者の振り返り

問題や参加者に関する調査・分析

便利ツールの作成・活用

ビジュアライザを自作する

Optuna

AWS

資料集

数理最適化

ゲームAI

  • 世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - ゲーム木探索に関する入門記事。ゲームの種類(一人ゲーム・交互着手二人ゲーム・同時着手二人ゲーム)と対応する探索アルゴリズムがとても丁寧に解説されている。また、汎用アルゴリズムの実装例と動作可能なサンプルコードが両方とも掲載されているのが特徴。
  • オセロAIの教科書 - オセロAIの初歩から高度な内容まで解説されている記事集。C++とPythonで実装されたサンプルもある。

探索手法の解説と応用

chokudaiサーチ

  • chokudaiサーチ(ビームサーチ亜種)の利点の話 - 探索アルゴリズムの一種であるchokudaiサーチについて解説されている記事。Beam Stack Searchと比べて、時間管理が楽になることや探索の多様性を考慮できることに特徴がある。
    • Chokudai search - 上記の記事の内容が簡潔にまとめられているスライド。

ビームサーチ

焼きなまし法

  • 誰でもできる焼きなまし法 - gasinさんが「焼きなまし法」の汎用性の高い実装方法を紹介した記事。
  • 競技プログラミングにおいて焼きなまし法に堕ちずに落とすコツ - tsukammoさんが「焼きなまし法」を適切に利用するための知見をまとめた記事。相性の良い/悪い問題の特徴、同手法の適用範囲、問題の特性を活用したアプローチ方法が紹介されている。
  • 焼きなまし法のコツ Ver. 1.3 - shindanninさんが「焼きなまし法」の使い方について、高速化・次の状態の決め方・評価関数などの観点から網羅的にまとめている記事。また、各項目について重要度が併記されているのが特徴。
  • 焼きなまし法での評価関数の打ち切り - 焼きなまし法の判定条件を式変形することで、評価値が閾値を超過した時点で評価関数を打ち切る方法が紹介されている。
  • 焼きなまし法の適用メモ - 焼きなまし法を問題に適用するときに、留意すべき事項(重要なパラメータ・適用の妥当性を判断・概念や用語)がまとめられている記事。
  • 詳解 焼きなまし法 - hakomoさんが、コンテストで高いスコア・順位を取るために、最上位陣による実践的な工夫と適用例の網羅を目指しているレポジトリ。

    注意

    最終更新が2018年11月末であり、一部の項目については準備中であると思われる。

  • 焼きなまし法の真実 - 焼きなまし法に関する疑問点・コンテストを通して得られた知見が整理されている記事。

    注意

    前提条件として、焼きなまし法に関する一定程度の知識が求められる。

ベイズ推定

シュタイナー木

  • プリム法ベースのシュタイナー木 - プリム法をベースとしたシュタイナー木に関するアルゴリズムが図解されている記事。Dreyfus-Wagner法と比べて計算量は少ないもののコストが最小になるとは限らないため、厳密さよりも速度が優先される場面での利用が想定されている。

ゲーム探索木