NP完全(な)問題(エヌピーかんぜん(な)もんだい、英: NP-complete problem)とは、(1) クラスNP(英: Non-deterministic Polynomial)に属する決定問題(言語)で、かつ (2) クラスNPに属する任意の問題から多項式時間還元(帰着)可能なもののことである。条件 (2) を満たす場合は、問題の定義が条件 (1) を満たさない場合にも、NP困難な問題とよびその計算量的な困難性を特徴づけている。多項式時間還元の推移性から、クラスNPに属する問題で、ある一つのNP完全問題から多項式時間還元可能なものも、またNP完全である。現在発見されているNP完全問題の証明の多くはこの推移性によって充足可能性問題などから導かれている。充足可能性問題がNP完全であることは1971年、スティーブン・クックによって証明され[1]、R. M. カープの定義した多項式時間