Quais são as diferenças entre NP, NP-Complete e NP-Hard?

Quais são as diferenças entre NP , NP-Complete e NP-Hard ? Estou ciente de muitos recursos em toda a web. Gostaria de ler suas explicações, e o motivo é que elas podem ser diferentes do que está lá fora, ou há algo que eu não