Non Deterministic Polynomial Time Definition