14/122
\begin{frame}{Complexity Classes P and NP}
  \begin{block}{}
    A nondeterministic Turing machine $M$ is \emph{polynomial time}
    if $M$ runs in time $p$ for some polynomial $p$.
  \end{block}
  Equivalently, $M$ has time complexity $O(n^k)$ for some $k$.
  \pause\medskip

  \begin{goal}{}
    \emph{NP} is the class of languages accepted by \alert{nondeterministic}
    polynomial time Turing machines:
    \begin{talign}
      \text{\emph{NP}} = \{\, L(M) \mid \text{$M$ is nondeterministic polynomial time TM}\,\}
    \end{talign}
  \end{goal}  
  \pause
  
  \begin{goal}{}
    \emph{P} is the class of languages accepted by \alert{deterministic}
    polynomial time Turing machines:
    \begin{talign}
      \text{\emph{P}} = \{\, L(M) \mid \text{$M$ is deterministic polynomial time TM}\,\}
    \end{talign}
  \end{goal}
  \pause\medskip
  
  \begin{alertblock}{}
    Clearly $\text{P} \subseteq \text{NP}$, but it is unknown whether $\text{P} = \text{NP}$.
  \end{alertblock}
\end{frame}