Masalah NP-hard adalah masalah ya / tidak di mana menemukan solusi untuk itu setidaknya sama sulitnya dengan menemukan solusi untuk masalah tersulit yang solusinya dapat dengan cepat diperiksa sebagai benar. Beberapa masalah NP-hard adalah masalah di mana solusi yang berhasil dapat diperiksa dengan cepat (masalah NP) dan beberapa tidak. Masalah NP-hard yang juga merupakan masalah NP masuk ke dalam kategori yang disebut NP-complete.

Contoh masalah yang paling tidak sulit untuk dipecahkan seperti masalah lain yang dapat kita periksa solusinya dengan cepat, yang juga dapat diperiksa dengan cepat (NP-hard dan NP):

Seorang salesman keliling ingin mengunjungi 100 kota dengan mengemudi, memulai dan mengakhiri perjalanannya di rumah. Ia memiliki persediaan bensin yang terbatas, sehingga ia hanya bisa berkendara sejauh 10.000 kilometer. Ia ingin mengetahui apakah ia bisa mengunjungi semua kota tanpa kehabisan bensin.

Orang tidak tahu bagaimana menyelesaikan masalah ini lebih cepat daripada menguji setiap jawaban yang mungkin, tetapi jika ditemukan solusi yang memungkinkan salesman melakukan ini, kita dapat menggunakan algoritma untuk memeriksa bahwa itu benar. Masalah ini juga dikenal sebagai Travelling salesman problem.

Contoh masalah yang paling tidak sulit untuk dipecahkan seperti masalah lain yang dapat kita periksa solusinya dengan cepat, tetapi tidak dapat diperiksa dengan cepat (NP-hard, tetapi bukan NP):

jika seseorang memulai sebuah program yang hanya berjalan begitu saja,

while(true){ lanjutkan; }

dan tidak pernah menghentikannya, apakah akan berjalan selamanya?

Tidak ada cara yang diketahui untuk menemukan solusi bagi semua masalah semacam ini, dan ini juga tidak dapat diperiksa.