In nondeterministic computational models, a program is allowed to make ‘guesses’ in the course of computation.
We use an equivalent definition via the notion of ‘certificate’:
Definition
is the set of languages for which there is a polynomial-time algorithm (algorithm takes 2 inputs and ) and a polynomial such that:
\large x \in L \iff \exists y \cdot (\lvert y \rvert \lt p(\lvert x \rvert)) \text{ and } A(x,y) \text{ accepts}
For a given $x \in L$, we may call such a witness $y$ the **certificate** of acceptance. The algorithm $A(x,y)$ is the verifier.
Example: Satisfiability again
SAT =
Example: Clique
A Clique is a set of nodes such that (any 2 nodes in has edge between them)

K-Clique =
For the graph above:
- is in the set
- is in the set
- is not in the set
Another Definition
So, we have concluded that the problem (K-Clique) NP