ある問題がNP困難といった場合は, クラスNPに属する全ての問題以上に難しいことを意味します. より正確に述べるために, 二つの問題の難しさを比較する帰着と呼ばれる概念を解説します.

帰着


帰着とは, 二つの問題の困難性を比較する方法です. 端的に言えば, 問題1を高速に (多項式時間で) 解くアルゴリズムを使って問題2を高速に(多項式時間で)解けるとき, 問題2は問題1に帰着できるといいます.

例1. クリークと独立点集合

例2. 最大フロー問題と最大マッチング問題

例3. ハミルトンパス問題とハミルトン閉路問題

このように, 一方の問題1を解くアルゴリズムを使ってもう一方の問題2が解けるとき, 問題1は問題2以上に難しいとみなします.

カープ帰着とチューリング帰着

ハミルトン閉路からハミルトンパスへのカープ帰着


<aside>

命題. 任意のグラフ $G$ に対して以下が成り立つ:

$$ \text{$G$がハミルトン閉路を持つ} \iff \text{$f(G)$がハミルトンパスを持つ}. $$

</aside>