Et problem X kalles hardt for ei kompleksitetsklasse K hvis alle problemer i K kan reduseres til X. Med andre ord finnes det intet problem i K som er hardere enn X. En algoritme for X vil løse alle problemer i K. Reduksjonen det snakkes om fra problemene i K til X vil sjølsagt være avhengig av hvilke kompleksitetsklasser det snakkes om. I kompleksitetsklasser større enn P er det ofte snakk om polynomielltidsreduksjoner. Mengda av disse harde problemene for ei kompleksitetsklasse K får ofte navn. Et eksempel på dette er der de problemene som er hardt for NP. De kalles NP-hardt.