# 01. StrongP vs StrongNC

Summary

1. P vs NC.
2. Problems with numerical parameters. The MaxFlow problem.
3. StrongP.
1. To each input-length $n$, corresponds a program $P$, which is a list of $n^{O(1)}$ instructions.
2. Each instruction of $P$ is one of:
1. $w := u \circ v$, where $w$ denotes a memory location, $u$ and $v$ denote either memory locations or constants, and $\circ \in \{+, -, \times\}$.
2. goto $\ell$, where $\ell$ is some line in the program.
3. if $u : 0$ goto $\ell$, where $u$ is a memory location, $:$ is one of $<, \le$, or $=$.
4. $u := \uparrow v$: treats the value of memory location $v$ as a pointer, and sets memory location $u$ to the value of the memory location pointed to by $v$. We ensure that the value of $v$ does not depend on any numerical coordinate, by propagation of an invalid-pointer tag via instruction (i).
5. stop. The output value is the value of the first memory location.
4. Edmonds-Karp is a StrongP algorithm for MaxFlow.
5. Ketan’s Class $\mathrm{KC}(p, t)$.
6. StrongP is $\mathrm{KC}(\mathit{poly}(n),\mathit{poly}(n))$.
7. StrongNC would be defined analogously as $\mathrm{KC}(\mathit{poly}(n),\mathit{polylog}(n))$.
8. Mulmuley’s paper shows that MaxFlow is not in $\mathrm{KC}(2^{o(\sqrt n)}, o(\sqrt n))$ – Even if you only require the algorithm to be correct for capacities of bit-length $n^2$.
9. In my opinion, this is the most interesting computational-complexity lower-bound that currently exists. I have truly lost all hope of coming up with a parallel algorithm for MaxFlow.
10. In this class, we will show the same result for the restriction $\mathrm{KC}$ to linear operations (still interesting, Edmonds-Karp only uses linear operations).
11. I.e., if we define linStrongP and linKC.
12. We will show that MaxFlow is in linStrongP, but not in $\mathrm{linKC}(2^{o(\sqrt n)}, o(\sqrt n))$.
13. Let us start by showing that weighted shortest st-path is in $\mathrm{linKC}(\mathit{poly}(n), O(\log n))$.
1. Let $\ell_k(a, b)$ denote the length of the shortest path between $a$ and $b$, among all paths of length at most $k$ (so $\ell_k(a, b) = \infty$ if no such path exists).
2. The trick is to notice that $\ell_{2 k}(a, b) = \min_m \ell_k(a, m) + \ell_k(m, b)$.

Potential project for those who need grading