P NP NP-Hard NP-Complete