P와 NP에 대해서 알아보자
P(Polynomial probelm)와 NP(Non-deterministic Polynomial probelm) 모두 결정 문제의 집합이다.
쉽게 답을 낼 수 없는 문제에 대해서 문제를 더 풀이할 가치가 있는가 없는가를 결정하기 위해 문제를 분류하고 메타적으로 이해할 필요가 있다.
쉽게 말해서 어떤 문제가 곱게 풀릴 것 같지 않을 때 각을 재보고 안되겠다 싶으면 다른 방법을 찾아야겠죠? 그 판단을 하기 위해서 필요한 것임.

P와 NP의 가장 큰 차이는 문제의 답을 찾는 데 걸리는 시간에 집중 vs 문제의 답을 검증하는 데 걸리는 시간에 집중이라고 할 수가 있다.
사실 문자만 보면 맞기도 한데 아무튼
NP의 정의는 다항 시간에 풀리지 않는 문제의 집합이 아니다. NP의 N은 Non-deterministic이다.
Non-deterministic (비결정적)이 뭔지 이해하려면 deterministic이 뭔지부터 이해해야 된다.
결정적이라는 건 어떤 상황에서 어떻게 흘러갈지 결정되어 있다는 것을 말한다.
P와 NP를 정의하고 해결하는 데 사용하는 튜링 머신에서는 같은 state 같은 input symbol에 대해 하나의 동작만 정의되어 있는 것을 deterministic하다고 말한다. 튜링 머신까지 설명하기는 너무 길어지므로... 생략
비결정적이라는 건 결정적과 반대로 어떤 상황에서 어떻게 흘러갈지 결정되어 있지 않은 것이다.
튜링 머신에서 같은 state 같은 input symbol에 대해 여러 개의 동작이 정의되어 있는 것을 Non-deterministic하다고 말한다.

그래서 NP는 뭐냐면 Non-deterministic Turing machine을 사용해서 어떤 문제에 어떤 certificate을 넣었을 때 이 certificate이 답인지 아닌지 polynomial time에 검증할 수 있는 문제인 것이다.
그러면 이제 아래 두 명제가 참인지 거짓인지 생각해볼 수 있다.
시험기간에 유익한 딴짓 하는 거 되게 재밌네