28 人が閲覧(直近 30 日) AI

ヒューリスティックとは?アルゴリズムとの違いと代表手法を実測で解説

ヒューリスティックとは?アルゴリズムとの違いと代表手法を実測で解説

ヒューリスティック(heuristic)とは、最適解が得られる保証を手放す代わりに、短い時間で「十分に良い解」を見つける手法の総称です。広い意味ではヒューリスティックもアルゴリズム(計算手順)の一種ですが、「アルゴリズムとの違い」が問われるときの比較相手は、最適化では「必ず最適解を返す厳密解法」、心理学では「必ず正解にたどり着く手順」です。どちらでも、分かれ目は最適解や正解の保証を持つかどうかにあります。

この記事では最適化・探索での意味を中心に、心理学での意味、貪欲法や局所探索などの基本手法、遺伝的アルゴリズムや焼きなまし法などのメタヒューリスティックを整理します。後半では巡回セールスマン問題をPythonで解き、厳密解とヒューリスティックの差と計算時間を実測した結果を載せます。

まとめ:ヒューリスティックとアルゴリズムの違いと使い分けの要点

  • 違いは保証の有無:厳密解法は最適解を保証し、ヒューリスティックは保証しない。その間に、最適解との差を近似比として証明する近似アルゴリズムがある。
  • 心理学でも同じ区別:Tversky & Kahneman(1974)は、人が確率を見積もるときの近道として代表性・利用可能性・係留と調整の3つを挙げた。
  • 基本手法は「作る」と「直す」:貪欲法や最近傍法で解を作り、2-optなどの局所探索で直す。局所探索は局所最適解で止まる。
  • メタヒューリスティックは止まった所から抜け出す枠組み:焼きなまし法・タブーサーチ・遺伝的アルゴリズムなど。前提を置いて全問題を平均すると手法の優劣は付かない(ノーフリーランチ定理)。
  • 実測の数字:10都市以下の15問で、最近傍法は最適解より平均9.2%長く、2-optで直すと12問が最適解に一致した。厳密解の全探索は10都市で約5秒かかり、1都市増えるごとに約10倍に伸びた。
  • 使わない方がよい場面:規模が小さく厳密解が数秒で出る問題、最適であることを説明する責任がある問題、混合整数計画ソルバーで時間内に解ける問題。

ヒューリスティックの意味と語源、ヒューリスティクスとの表記の違い

heuristic は古代ギリシャ語の heuriskein(見つける)に由来し、日本語では「発見的手法」と訳されます。アルキメデスの「エウレカ(見つけた)」と同じ語根です。数学者ジョージ・ポリアは1945年の『How to Solve It』(邦題『いかにして問題をとくか』)で、問題を解く過程そのものを研究する学問として heuristic を取り上げました。

「ヒューリスティック」と「ヒューリスティクス」は同じものを指します。英語の heuristic は形容詞と名詞(1つの手法)、heuristics は複数形または学問名です。日本語の文章では、心理学の文脈で「ヒューリスティクス」、情報科学の文脈で「ヒューリスティック」と書く傾向がありますが、意味の差はありません。対義語として挙がるのは「アルゴリズム」です。ただし、これは「保証のある手順」という狭い意味でのアルゴリズムを指しており、プログラムの手順という広い意味では、ヒューリスティックもアルゴリズムの一種です。

ヒューリスティックとアルゴリズムの違い:厳密解法・近似アルゴリズムとの保証の比較

最適化の文脈では、解き方を保証の強さで3段に分けると混乱しません。日本語の解説では「アルゴリズム=正確、ヒューリスティック=近似」の2分類がよく使われますが、それだと近似アルゴリズムの位置が抜け落ちます。

区分 保証するもの 巡回セールスマン問題での例 計算時間
厳密解法 最適解そのもの 全探索、動的計画法、分枝限定法 規模に対し急増しうる
近似アルゴリズム 証明された近似比などの品質保証 Christofides法(1.5倍以内) 多項式時間
ヒューリスティック なし 最近傍法、2-opt、焼きなまし法 手法と打ち切り次第

Christofides法は、都市間の距離が対称で三角不等式を満たす完全グラフの巡回セールスマン問題で、最適な巡回路の1.5倍を超えないことが証明されています。一方、最近傍法には定数倍の保証が無く、最適解のΘ(log n)倍(nは都市数)の長さになる入力が存在することが知られています。都市が増えるほど、最悪の場合の差は広がります。それでも実務で最近傍法や2-optが使われるのは、保証が無くても平均的にはよく働き、実装が数十行で済むからです。保証の有無と実用上の出来は別の話だという点が、ヒューリスティックを理解する要になります。

心理学での「アルゴリズムとヒューリスティック」

認知心理学では、問題解決の方略を「アルゴリズム」と「ヒューリスティック」に分けます。アルゴリズムは手順どおりに進めれば必ず正解に着く方法(4桁の暗証番号を0000から9999まで1万通り試す)で、ヒューリスティックは経験則による近道(よく使われる番号から試す)です。計算機の世界と同じく、近道は速いが外れることがあります。

この分野の古典が、Amos Tversky と Daniel Kahneman が1974年に Science 誌(185巻4157号)に発表した「Judgment under Uncertainty: Heuristics and Biases」です。不確かな状況で確率を見積もるとき、人は次の3つの近道に頼り、それが系統的な誤り(バイアス)を生むと示しました。

Herbert Simon は1956年の論文で、人も組織も最適な選択肢を探し切るのではなく「満足できる水準」を超えた時点で決めるとして、satisficing という語を使いました。最適化のヒューリスティックが「十分に良い解で止める」のと同じ発想です。心理学側の全体像は認知心理学とは?知覚・記憶・思考のしくみと身近な具体例をわかりやすく解説にまとめています。なお、UIの専門家が経験則に照らして画面を点検する「ヒューリスティック評価」は、さらに別の用法です(認知的ウォークスルーとは?4つの質問と進め方、ヒューリスティック評価との違い)。

探索AIのヒューリスティック関数(A*探索)

AIの探索では、ヒューリスティックはゴールまでの残りコストを見積もる関数を指します。代表例が、Hart・Nilsson・Raphael が1968年に発表したA*(エースター)探索です。A*は「ここまでのコスト+ゴールまでの見積もり」が小さい順に探索を広げます。

注目すべきは、見積もりが実際のコストを決して上回らない(許容的な)ヒューリスティック関数を使えば、A*は最短経路を必ず返すことです。移動距離を最小化し、各辺のコストが対応する直線距離以上なら、ゴールまでの直線距離は許容的な見積もりになります。移動時間や料金を最小化する場合は、そのコストの下界を使います。つまり「ヒューリスティック=保証が無い」は最適化の手法の話で、探索AIではヒューリスティック関数を使っても最適性が保証される場合があります。最短経路の基礎になるグラフの考え方はグラフ理論とは?頂点と辺の基礎から最短経路・グラフDB・GNNの実装応用までが参考になります。

代表的なヒューリスティック手法:解を作る方法と直す方法

問題ごとに設計する基本のヒューリスティックは、解をゼロから組み立てる構築法と、手元の解を少しずつ直す改善法に分かれます。実務ではこの2つを順に使います。

手法 種類 やること 弱点
貪欲法 構築法 その時点で最も良い選択を続ける 先を読まない
最近傍法 構築法 未訪問で最も近い都市へ進む 終盤に長い辺が残る
セービング法 構築法 まとめて回ると節約できる顧客から結ぶ 配送計画向けで汎用性は低い
山登り法(局所探索) 改善法 近傍の解に良くなる限り移る 局所最適解で止まる
2-opt 改善法 2辺をつなぎ替えて巡回路を短縮する 局所最適解で止まる

貪欲法は、硬貨の支払い枚数や区間スケジューリングのように最適解が出る問題もありますが、一般には保証がありません。改善法の性能は「近傍」の定義で決まります。2-optなら「2本の辺を外して別のつなぎ方に変えた解」が近傍で、近傍に改善する解が無くなった状態が局所最適解です。この種の工夫を競う場として、AtCoder Heuristic Contest(AHC)があります(AtCoderとは?レーティングの色と難易度・コンテスト4種類の違いと始め方【2026年版】)。

メタヒューリスティックとは:局所最適解から抜け出す枠組み

メタヒューリスティックは、特定の問題に依存しない探索の枠組みです。問題ごとの近傍や評価関数を差し込めば、配送計画にもスケジューリングにも同じ骨格が使えます。この語は、Fred Glover が1986年にタブーサーチを提案した論文で、タブーサーチを「別のヒューリスティックに重ねるメタヒューリスティック」と説明したのが始まりとされています。通常のヒューリスティックとの違いは、悪化する方向への移動や複数解の並行探索を許し、局所最適解で止まらない仕組みを持つことです。

手法 提案 局所最適を抜ける仕組み
遺伝的アルゴリズム(GA) Holland 1975 解の集団で交叉・突然変異を繰り返す
焼きなまし法(SA) Kirkpatrick ら 1983 温度に応じて悪化する手も確率的に受け入れる
タブーサーチ Glover 1986 直近に戻った手を禁止して堂々巡りを防ぐ
アリコロニー最適化(ACO) Dorigo 1992 良い経路にフェロモンを残し後続が辿る
粒子群最適化(PSO) Kennedy と Eberhart 1995 各粒子が自分と群れの最良位置へ寄る

手法選びで押さえておきたいのが、Wolpert と Macready が1997年に示したノーフリーランチ定理です。有限の探索空間で、すべての目的関数を一様に扱うなどの前提の下では、同じ回数だけ異なる点を評価する探索手法の成績分布が一致する、という内容です。「遺伝的アルゴリズムが最強」のような一般論は成り立たず、問題の構造に合った近傍と評価関数を設計した手法が勝ちます。遺伝的アルゴリズムをPythonで動かす手順は遺伝的アルゴリズムとは?仕組みとDEAPでのPython実装をわかりやすく解説で解説しています。

巡回セールスマン問題で厳密解とヒューリスティックを比べた実測

ここからは、すべての都市を1回ずつ回って戻る最短の巡回路を求める巡回セールスマン問題(TSP)を使い、厳密解(全探索)・最近傍法・最近傍法+2-opt・焼きなまし法の差を測ります。都市は1×1の正方形にランダムに置き(乱数シード0〜4)、距離はユークリッド距離です。実行環境は Python 3.9.6、Intel Core i9-9880H(2.3GHz)、macOS 26.6.2 で、標準ライブラリだけを使っています。

実験に使ったコード(最近傍法・2-opt・全探索)

import itertools, math, random, time

def dist(a, b):
    return math.hypot(a[0] - b[0], a[1] - b[1])

def tour_len(pts, tour):
    return sum(dist(pts[tour[i]], pts[tour[i - 1]]) for i in range(len(tour)))

def brute_force(pts):
    # 厳密解:都市0を起点に固定して残りの順列をすべて調べる
    rest = range(1, len(pts))
    best = min(itertools.permutations(rest), key=lambda p: tour_len(pts, (0,) + p))
    return [0] + list(best)

def nearest_neighbor(pts, start=0):
    # 貪欲法:未訪問のうち最も近い都市へ進む
    unvisited = set(range(len(pts))) - {start}
    tour = [start]
    while unvisited:
        nxt = min(unvisited, key=lambda j: dist(pts[tour[-1]], pts[j]))
        unvisited.remove(nxt)
        tour.append(nxt)
    return tour

def two_opt(pts, tour):
    # 局所探索:2本の辺をつなぎ替えて短くなる限り続ける
    n = len(tour)
    improved = True
    while improved:
        improved = False
        for i in range(n - 1):
            for j in range(i + 2, n if i > 0 else n - 1):
                a, b = pts[tour[i]], pts[tour[i + 1]]
                c, d = pts[tour[j]], pts[tour[(j + 1) % n]]
                if dist(a, c) + dist(b, d) < dist(a, b) + dist(c, d) - 1e-12:
                    tour[i + 1:j + 1] = reversed(tour[i + 1:j + 1])
                    improved = True
    return tour

全探索は都市0を起点に固定し、残り n−1 都市の並べ方をすべて試します。10都市なら9!=362,880通りです。上の関数を使って、乱数シード0の10都市を解く実行例は次のとおりです。

random.seed(0)
pts = [(random.random(), random.random()) for _ in range(10)]
nn = nearest_neighbor(pts)
op = two_opt(pts, nn[:])
ex = brute_force(pts)
print(*(round(tour_len(pts, t), 4) for t in (nn, op, ex)))
# 出力: 2.6765 2.3937 2.3937(最近傍法、+2-opt、厳密解)

焼きなまし法(後述)も、最近傍法の解のコピーを初期解として渡しています。

10都市までの結果:2-optは15問中12問で最適解に一致

8・9・10都市について乱数シードを変えて5問ずつ、計15問を解きました。

都市数 最近傍法の超過 +2-optの超過 全探索の時間
8 +3.2〜+16.1% 5問中4問が0%(残り+0.4%) 0.055〜0.072秒
9 +2.0〜+21.5% 5問中4問が0%(残り+0.5%) 0.47〜0.53秒
10 +2.0〜+24.3% 5問中4問が0%(残り+0.5%) 4.97〜5.10秒

超過は最適解の長さに対する差です。最近傍法だけだと平均で9.2%長く、最悪の問題では24.3%長くなりました。2-optで直すと15問中12問が最適解と数値誤差の範囲で一致し、残る3問の超過率も約0.52%以内です。最近傍法+2-optの所要時間は15問中14問で1ミリ秒未満でした。

全探索の時間は1都市増えるごとに約10倍になっています。掲載実装は各順列についてn本の辺を評価するため、計算量はΘ(n×(n−1)!)です。10都市で5秒を基準にこの計算量で外挿すると、15都市で約180万秒(約21日)、20都市で約10.6万年となりますが、いずれも未実測の概算です。この結果は、単純な全探索が都市数の増加に対応しにくいことを示します。動的計画法や分枝限定法などの厳密解法まで、同じ都市数で実用不能になることを示した実験ではありません。

200都市での最近傍法+2-optと焼きなまし法+2-optの比較

都市数を増やすと全探索は使えないので、手法どうしで比べます。200都市では最近傍法の13.013に対し2-optで11.216(13.8%短縮・0.35秒)、1000都市では29.422から25.090(14.7%短縮・15.4秒)でした。2-optが止まった解は、この実装の2辺交換と改善判定の範囲では局所最適で、同じ改善操作を続けても短くなりません。

比較実験では、最近傍法の解から焼きなまし法を開始しました。2-opt近傍の候補選択を200万回試行し、悪化する交換も温度に応じた確率で受け入れ、最後に2-optで仕上げました。

def simulated_annealing(pts, tour, iters=2_000_000, t0=0.1, t1=0.0005, seed=1):
    # 焼きなまし法:2-opt近傍を乱択し、悪化する手も温度に応じた確率で受け入れる
    rng = random.Random(seed)
    n = len(tour)
    cur = tour_len(pts, tour)
    best, best_tour = cur, tour[:]
    for k in range(iters):
        temp = t0 * (t1 / t0) ** (k / iters)   # 温度を指数的に下げる
        i, j = sorted(rng.sample(range(n), 2))
        if j - i < 2 or (i == 0 and j == n - 1):
            continue
        a, b = pts[tour[i]], pts[tour[i + 1]]
        c, d = pts[tour[j]], pts[tour[(j + 1) % n]]
        delta = dist(a, c) + dist(b, d) - dist(a, b) - dist(c, d)
        if delta < 0 or rng.random() < math.exp(-delta / temp):
            tour[i + 1:j + 1] = reversed(tour[i + 1:j + 1])
            cur += delta
            if cur < best:
                best, best_tour = cur, tour[:]
    return best_tour
200都市 最近傍法 +2-opt 焼きなまし法+2-opt 2-opt比
シード0 13.013 11.216 10.668 −4.9%
シード1 13.543 11.508 10.566 −8.2%
シード2 13.224 11.379 10.900 −4.2%

焼きなまし法+2-optは、3問すべてで最近傍法+2-optの解より4.2〜8.2%短い巡回路を見つけました。ただし初期解は最近傍法の解なので、2-optが止まった解そのものから抜け出したことを示す実験ではありません。代わりに所要時間は31〜34秒で、2-optの約100倍です。温度の初期値・終値・反復回数はこの問題に合わせて手で決めた値で、問題が変われば調整し直す必要があります。この「パラメータ調整の手間」がメタヒューリスティックの実務上のコストです。

この実測から言えるのは次の3点です。まず、今回のランダムなユークリッドTSP15問では、最近傍法と2-optの組み合わせで、最適解との差を約0.52%以内に抑えられました。次に、さらに数%を詰めたいときに初めてメタヒューリスティックの出番になります。最後に、何秒で打ち切るかを決めないと、ヒューリスティックの速さという利点は活きません。

ヒューリスティックを使う場面と避けるべき場面

ヒューリスティックが向くのは、探索空間が大きく厳密解法が時間内に終わらない問題で、かつ「数%の差より、決まった時間内に解が出ること」の方が価値を持つ場面です。配送ルート、勤務シフト、生産スケジュール、機械学習のハイパーパラメータ探索がこれに当たります。

逆に、次の場面では避けるか、厳密解法と組み合わせる方が安全です。

  • 規模が小さい問題:上の実測のように、今回の10都市の実験では全探索でも数秒で終わりました。その待ち時間を許容でき、最適性の保証を求めるなら、まず厳密解法を選びます。
  • 最適であることの説明が求められる問題:入札の評価や料金計算など、「これ以上良い解は無い」と示す必要がある場合は、厳密解法か、下界を示せる手法を使います。
  • 数理最適化ソルバーで解ける問題:線形・整数計画として定式化できるなら、まずソルバーに渡します。SCIPなどのソルバーは内部でヒューリスティックも使い、探索を完了できれば最適性を証明します。時間制限などで終了した場合は、終了状態と得られた解・上下界を確認する必要があります。定式化の考え方は数理最適化とは?3要素・アルゴリズム・機械学習との違いをPythonで解説、ソルバーの使い方はSCIPソルバーとは?PySCIPOptでPythonから使う手順とCBC・HiGHSとの比較【SCIP 10.1】が参考になります。

実務でヒューリスティックを使う道具:OR-ToolsとOptuna

自前で焼きなまし法を書く前に、既存のライブラリを確認するのが近道です。Googleの OR-Tools(PyPI最新版 9.15、2026年1月公開)の配送計画ソルバーでは、初期解の作り方として PATH_CHEAPEST_ARC・SAVINGS・CHRISTOFIDES など、局所探索のメタヒューリスティックとして GREEDY_DESCENT・GUIDED_LOCAL_SEARCH・SIMULATED_ANNEALING・TABU_SEARCH などを選べます。なお、OR-Tools の CHRISTOFIDES は元のアルゴリズムの変種で、1.5倍以内の保証は持たないと公式に注記されています。公式ドキュメントのルーティングオプションは、GUIDED_LOCAL_SEARCH を「車両経路問題では一般に最も効率的なメタヒューリスティック」と説明しています。

機械学習のハイパーパラメータ探索では Optuna が定番で、create_study の公式リファレンスによれば、サンプラーを指定しないと TPESampler が使われます。2026年9月公開の Optuna 5.0.0 では、多目的最適化の既定も遺伝的アルゴリズム系の NSGAIISampler から TPESampler に変わりました。探索手法の選び方はハイパーパラメータ探索とは?手法の選び方と打ち切り設計を実装目線で解説で扱っています。配送ルートや配車の最適化をシステムに組み込む場合は、制約の洗い出しと打ち切り時間の設計が成否を分けます。業務要件から設計したい場合は、当社の物流システム開発でもご相談を受けています。

よくある質問

ヒューリスティックとアルゴリズムの違いは何ですか?

最適解や正解の保証があるかどうかです。アルゴリズムは問題を解く計算手順の総称で、ヒューリスティックもその一種ですが、最適化では最適解を必ず返す厳密解法と、保証を手放して短時間で良い解を探すヒューリスティックを対比します。心理学では、必ず正解に着く手順をアルゴリズム、経験則による近道をヒューリスティックと呼び分けます。

メタヒューリスティックとは何ですか?ヒューリスティックとどう違いますか?

問題を選ばずに使える探索の枠組みで、遺伝的アルゴリズム・焼きなまし法・タブーサーチなどが該当します。通常のヒューリスティックは特定の問題向けに作られ、局所最適解で止まりやすいのに対し、メタヒューリスティックは悪化する移動や複数解の並行探索を許して局所最適解から抜け出します。

ヒューリスティックとヒューリスティクスは違うものですか?

同じものです。英語の heuristic(単数・形容詞)と heuristics(複数・学問名)の違いで、日本語では心理学で「ヒューリスティクス」、情報科学で「ヒューリスティック」と書くことが多いという慣用の差にとどまります。

アルゴリズムの対義語は何ですか?

問題解決の方略として対比する場合は「ヒューリスティック」が対義語として挙げられます。ただし、これは「必ず正解に着く手順」という狭い意味のアルゴリズムとの対比です。計算手順一般という意味では対義語はありません。

ヒューリスティックはAIや機械学習でどう使われますか?

探索AIでは、A*探索のようにゴールまでの残りコストを見積もる関数として使われます。機械学習では、ハイパーパラメータの探索に TPE や遺伝的アルゴリズムなどの手法が使われ、Optuna はサンプラー未指定時に TPESampler を使います。将棋や囲碁のAIで有望な手に絞って読む評価も、ヒューリスティックの一種です。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.23 テックブログ Renta!不正アクセスでサービス停止:再開未定の現状と運営側の停止判断・証拠保全・段階的再開
  2. 2025.01.09 コラム アドレサブルCM(Addressable CM)とは?フジテレビで出る表示の意味・仕組みと視聴データの扱い
  3. 2026.10.21 テックブログ ふるさとチョイス不正アクセスで445万件流出:対象確認・パスワード変更と再開時期
  4. 2026.07.09 テックブログ Muse Imageとは?Metaの画像生成AIの使い方・API料金(1枚0.01ドル)と日本での提供状況【2026年10月】
  5. 2026.10.22 テックブログ お名前.com デスクトップクラウドの不正アクセス|MT4口座の不正操作と対象・今すること

RELATED POSTS 関連記事

目次