\newsection
\section{Complexity}
\label{sec:complexity}
\stepcounter{subsection}
\subsection{Measurements of Complexity}
\compactdef{Time complexity} For a computation $D = C_1, \ldots, C_k$ of $M$ on $x$ is defined by $\text{Time}_M(x) = k - 1$.
For the TM $M$ itself, we have $\text{Time}_M(n) = \max\{ \text{Time}_M(x) \divides x \in \Sigma^n \}$

\begin{definition}[]{Space complexity}
    Let $C = (q, x, i, \alpha_1, i_1, \ldots, \alpha_k, i_k)$,
    with $0 \leq i \leq |x| + 1$ and $0 \leq i_j \leq |\alpha_j|$ for $j = 1, \ldots, k$ be a configuration.

    The space complexity of configuration $C$ is $\text{Space}_M(C) = \max\{ |\alpha_i| \divides i = 1, \ldots, k \}$.

    The space complexity of a calculation $D = C_1, \ldots, C_l$ on $x$ is $\text{Space}_M(x) = \max\{ \text{Space}_M(C_i) \divides i = 1, \ldots, l \}$

    The space complexity of a TM $M$ is $\text{Space}_M(n) = \max\{ \text{Space}_M(x) \divides x \in \Sigma^n \}$
\end{definition}

\inlinelemma For every $k$-tape-TM $A$, there exists an equivalent $1$-tape-TM $B$ such that $\text{Space}_B(n) \leq \text{Space}_A(n)$

\inlinelemma For every $k$-tape-TM $A$, $\exists$ a $k$-tape-TM such that $L(A) = L(B)$ and $\text{Space}_B(n) \leq \frac{\text{Space}_A(n)}{2} + 2$

\inlinedef The big-O-notation is defined as in A\&D, we however write $\text{Time}_A(n) \in \tco{g(n)}$, etc

\inlinetheorem There exists decision problem $(\alphabetbool, L)$, such that for each MTM $A$ that decides it,
there exists an MTM $B$ that also decides it and for which $\text{Time}_B(n) \leq \log_2(\text{Time}_A(n))$

\inlinedef An MTM $C$ is \bi{optimal} for $L$, if $\text{Time}_C(n) \in \tco{f(n)}$ and $\tcl(f(n))$ is a lower bound for the time complexity of $L$


% ────────────────────────────────────────────────────────────────────

\subsection{Complexity classes}
Below is a list of complexity classes
\begin{definition}[]{Complexity classes}
    \drmvspace\rmvspace
    \begin{align*}
        \text{TIME}(f)  & = \{ L(B) \divides B \text{ is an MTM with } \tc_B(n) \in \tco{f(n)} \}  \\
        \text{SPACE}(g) & = \{ L(A) \divides A \text{ is an MTM with } \spc_A(n) \in \tco{g(n)} \} \\
        \text{DLOG}     & = \text{SPACE}(\log_2(n))                                                \\
        \text{P}        & = \bigcup_{c \in \N} \text{TIME}(n^c)                                    \\
        \text{PSPACE}   & = \bigcup_{c \in \N} \text{SPACE}(n^c)                                   \\
        \text{EXPTIME}  & = \bigcup_{d \in \N} \text{TIME}(2^{n^d})
    \end{align*}
\end{definition}

\inlinelemma For any function $t : \N \rightarrow \R^+$, we have $\text{TIME}(t(n)) \subseteq \text{SPACE}(t(n))$.

A list of relationships for these classes:
\rmvspace
\begin{multicols}{2}
    \begin{itemize}
        \item $P \subseteq \text{PSPACE}$
        \item $\text{DLOG} \subseteq P$
        \item $\text{PSPACE} \subseteq \text{EXPTIME}$
        \item $\text{DLOG} \subseteq P \subseteq \text{PSPACE} \subseteq \text{EXPTIME}$
    \end{itemize}
\end{multicols}

\drmvspace
\begin{definition}[]{Space- and time-constructible}
    Let $s, t : \N \rightarrow \N$. $s$ is called \bi{space-constructible} if there exists $1$-Band-TM $M$, such that
    \begin{enumerate}
        \item $\text{Space}_M(n) \leq s(n) \ \forall n \in \N$
        \item for each input $0^n$ with $n \in \N$, $M$ generates the word $0^{s(n)}$ on its memory tape and stops in $\qacc$
    \end{enumerate}

    $t$ is called \bi{time-constructible}, if there exists an MTM $A$, such that
    \begin{enumerate}
        \item $\text{Time}_A(n) \in \tco{t(n)}$
        \item For each input $0^n$ with $n \in \N$, $A$ generates $0^{t(n)}$ on its first memory tape and stops in $\qacc$
    \end{enumerate}
\end{definition}

\inlinelemma Let $s$ be space-constructible, $M$ an MTM with $\text{Space}_M(x) \leq s(|x|) \ \forall x \in L(M)$.
Then exists MTM $A$ with $L(A) = L(M)$ and $\text{Space}_A(n) \leq s(n)$, i.e. we have
$\text{Space}_A(y) \leq s(|y|) \ \forall y \in \Sigma_M$.

\inlinelemma Let $t$ be time-constructible, $M$ an MTM with $\text{Time}_M(x) \leq t(|x|) \ \forall x \in L(M)$.
Then exists MTM $A$ with $L(A) = L(M)$ and $\text{Time}_A(n) \in \tco{t(n)}$

\inlinetheorem $\forall s : \N \rightarrow \N$ with $s(n) \geq \log_2(n)$, we have $\text{SPACE}(s(n)) \subseteq \bigcup_{c \in \N} \text{TIME}(c^{s(n)})$

\inlinetheorem Given $s_1, s_2: \N \rightarrow \N$ with properties $s_2(n) \geq \log_2(n)$, $s_2$ is space-constructible and $s_1(n) = o(s_2(n))$
($s_2(n)$ grows asymptotically faster than $s_1$).
Then we have $\text{SPACE}(s_1) \subsetneq \text{SPACE}(s_2)$


\inlinetheorem Given $t_1, t_2: \N \rightarrow \N$ with properties $t_2$ is time-constructible and $t_1(n) \cdot \log_2(t_1(n)) = o(t_2(n))$
Then we have $\text{TIME}(s_1) \subsetneq \text{TIME}(s_2)$



% ────────────────────────────────────────────────────────────────────

\subsection{Non-deterministic measurements of complexity}
\inlinedef For NMTM or NTM, the time complexity is the length of the shortest accepting calculation of $M$ on $x$ and the same applies to space complexity as well.
The rest of the definition is equivalent to the one for deterministic TM and MTM.

\begin{definition}[]{Complexity classes}
    For all $f, g: \N \rightarrow \R^+$, we define
    \rmvspace
    \begin{align*}
        \text{NTIME}(f)  & = \{ L(M) \divides M \text{ ist eine NMTM mit } \tc_M(n) \in \tco{f(n)} \}  \\
        \text{NSPACE}(g) & = \{ L(M) \divides M \text{ ist eine NMTM mit } \spc_M(n) \in \tco{g(n)} \} \\
        \text{NLOG}      & = \text{NSPACE}(\log_2(n))                                                  \\
        \text{NP}        & = \bigcup_{c \in \N} \text{NTIME}(n^c)                                      \\
        \text{NPSPACE}   & = \bigcup_{c \in \N} \text{NSPACE}(n^c)
    \end{align*}
\end{definition}

\inlinelemma For all $t$ and $s$ with $s(n) \geq \log_2(n)$: $\text{NTIME} \subseteq \text{NSPACE}(t)$ and
$\text{NSPACE}(s) \subseteq \bigcup_{c \in \N} \text{NTIME}(c^{s(n)})$

For $t: \N \rightarrow \R^+$ and every space-constructible $s$ with $s(n) \geq \log_2(n)$, we have:
\rmvspace
\begin{multicols}{2}
    \begin{enumerate}
        \item $\text{TIME}(t) \subseteq \text{NTIME}(t)$
        \item $\text{SPACE}(t) \subseteq \text{NSPACE}(t)$
        \item $\text{NTIME}(s(n)) \subseteq \text{SPACE}(s(n)) \subseteq \bigcup_{c \in \N} \text{TIME}(c^{s(n)})$
        \item $\text{NP} \subseteq \text{PSPACE}$
        \item $\text{NSPACE}(s(n)) \subseteq \bigcup_{c \in \N} \text{TIME}(c^{s(n)})$
        \item $\text{NLOG} \subseteq P$
        \item $\text{NPSPACE} \subseteq \text{EXPTIME}$
        \item $\text{NSPACE}(s(n)) \subseteq \text{SPACE}(s(n)^2)$ (Savitch)
        \item $\text{PSPACE} = \text{NPSPACE}$
    \end{enumerate}
\end{multicols}

\rmvspace
If we combine some of the above results, we get:
\rmvspace
\begin{align*}
    \text{DLOG} \subseteq \text{NLOG} \subseteq P \subseteq NP \subseteq \text{PSPACE} \subseteq \text{EXPTIME}
\end{align*}


% ────────────────────────────────────────────────────────────────────

\subsection{Proof verification}
\begin{definition}[]{$p$-Verifier}
    And MTM $A$ is a $p$-Verifier (for $p : \N \rightarrow \N$) and $V(A) = L$ for $L \subseteq \word$, if $A$ has the following properties and works on all inputs $\word \times \wordbool$:
    \begin{enumerate}[label=\textit{(\roman*)}]
        \item $\text{Time}_A(w, x) \leq p(|w|)$ for each input $(w, x) \in \word \times \wordbool$
        \item $\forall w \in L, \exists x \in \wordbool$, such that $|x| \leq p(|w|)$ and $(w, x) \in L(A)$. $x$ is \bi{proof} of the claim $w \in L$
        \item $\forall y \notin L$ we have $(y, z) \notin L(A)$ for all $z \in \wordbool$
        \item If $p(n) \in \tco{n^k}, k \in \N$, then $p$ is a polynomial time verifier. The class of polynomial time verifiers is
              \rmvspace
              \begin{align*}
                  VP = \{ V(A) \divides A \text{ is polynomial time verifier } \}
              \end{align*}
    \end{enumerate}
\end{definition}

\inlinetheorem $VP = NP$

\subsection{NP-Completeness}
\fancydef{Polynomial Reduction} $L_1 \leq_p L_2$, if there exists polynomial TM $A$ with $x \in L_1 \Leftrightarrow A(x) \in L_2$.
$A$ is called a polynomial reduction of $L_1$ into $L_2$

\begin{definition}[]{$NP$-Hard and $NP$-Complete}
    A language $L$ is called $NP$-hard, if for all $L' \in NP$, we have $L' \leq_p L$

    A language $L$ is called $NP$-complete, if it is $NP$-hard and and $L \in NP$
\end{definition}

\inlinelemma If $L \in P$ and $L$ is $NP$-hard, then $P = NP$

\fancydef{Cook} $SAT$ is $NP$-complete

\inlinelemma If $L_1 \leq_p L_2$ and $L_1$ is $NP$-hard, then $L_2$ is $NP$-hard

A few languages commonly used to show $NP$-completeness:
\begin{itemize}
    \item $SAT = \{ \Phi \divides \Phi \text{ is a satisfiable formula in CNF} \}$
    \item $\text{CLIQUE} = \{ (G, k) \divides G \text{ is an undirected graph that contains a $k$-clique } \}$
    \item $VC = \{ (G, k) \divides G \text{ is an undirected graph with a vertex cover of size $\leq k$ } \}$
    \item $3SAT = \{ \Phi \divides \Phi \text{ is a satisfiable formula in CNF with all clauses containing \textit{at most} three literals} \}$
\end{itemize}
where a clique is \TODO Add.
and a vertex cover is any set $U \subseteq V$ where all edges $\{ u, v \} \in E$ have at least one endpoint $u, v \in U$
