Showing that a problem is NP-Complete requires you to show that it is in NP.
- Get familiar to a subset of NP Complete problems
- Prove NP Hardness : Reduce an arbitrary instance of an NP complete problem to an instance of your problem. This is the biggest piece of a pie and where the familiarity with NP Complete problems pays. The reduction will be more or less difficult depending on the NP Complete problem you choose.
- Prove that your problem is in NP : design an algorithm which can verify in polynomial time whether an instance is a solution.
Showing that it is in NP :
Given a random subset of people of size N
, How do you check if they
form a conflict-free committee?
Should be easy enough. Algorithm doesn't have to be efficient in memory or size, just correct. Form all possible pair in the subset and check if a pair is in the conflict matching list.
Familiarity with NP Completeness:
There are some specific NP Complete problems which are very popular for prooving NP hardness. For instance Karp's 21 NP-complete problems
Proof:
From a quick analysis of your problem, I may initially try to use Vertex Cover NP Complete problems, especially because of the conflict clause. Given that you have a restriction on the committee size, maybe you could first try minimum vertex cover.
Good luck.