In computational complexity, problem can be classified based on their degree of difficulty into the following categories:- P, NP, NP-Complete, and NP-Hard
a) How is a given problem categorized as P, NP, NP-Complete, or hard?
b) Give one example of a problem in each category
c) Explain using appropriate examples the concept of problem reduction and show how it can be used to determine the complexity of a problem?