Skip to content

Commit

Permalink
Update multilinear-extensions.md
Browse files Browse the repository at this point in the history
Small clarifications and corrections. The math is displaying funny in Preview mode, but I think/hope that's just an issue with my browser.
  • Loading branch information
GUJustin authored and moodlezoup committed Apr 18, 2024
1 parent fa03b66 commit bf46614
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions book/src/background/multilinear-extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ For any $v$-variate polynomial $g(x_1, ... x_v)$ polynomial, it's multilinear ex
For more precise details please read **Section 3.5 of [Proofs and Args ZK](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf)**.

## Engineering
In practice, MLE's are stored as the vector of evaluations over the $v$-variate boolean hypercube $\{0,1\}^v$. There are two important algorithms over multilinear extensions: single variable binding, evaluation.
In practice, MLE's are stored as the vector of evaluations over the $v$-variate boolean hypercube $\{0,1\}^v$. There are two important algorithms over multilinear extensions: single variable binding, and evaluation.

### Single Variable Binding
With a single streaming pass over all $n$ evaluations we can "bind" a single variable of the $v$-variate multilinear extension to a point $r$. This is a critical sub-algorithm in sumcheck. During the binding the number of evaluation points used to represent the MLE gets reduced by a factor of 2:
- **Before:** $\tilde{f}(x_1, ... x_v): \{0,1\}^v \to \mathbb{F}$
- **After:** $\tilde{f}(x_1, ... x_{v-1}): \{0,1\}^{v-1} \to \mathbb{F}$
- **After:** $\tilde{f'}(x_1, ... x_{v-1})=\tilde{f}(r, x_1, ... x_{v-1}): \{0,1\}^{v-1} \to \mathbb{F}$

Assuming your MLE is represented as a 1-D vector of $2^v$ evaluations $E$ over the $v$-variate boolean hypercube $\{0,1\}^v$, indexed little-endian
- $E[1] = \tilde{f}(0,0,0,1)$
Expand All @@ -29,4 +29,4 @@ for i in 0..half {
```

### Multi Variable Binding
Another common algorithm is to take the MLE $\tilde{f}(x_1, ... x_v)$ and compute its evaluation at a single $v$-variate point outside the boolean hypercube $x \in \mathbb{F}^v$. This algorithm can be performed in $O(n \log(n))$ time by preforming the single variable binding algorithm $\log(n)$ times.
Another common algorithm is to take the MLE $\tilde{f}(x_1, ... x_v)$ and compute its evaluation at a single $v$-variate point outside the boolean hypercube $x \in \mathbb{F}^v$. This algorithm can be performed in $O(n)$ time by preforming the single variable binding algorithm $\log(n)$ times. The time spent on $i$'th variable binding is $O(n/2^i)$, so the total time across all $\log n$ bindings is proportional to $\sum_{i=1}^{\log n} n/2^i = O(n)$.

0 comments on commit bf46614

Please sign in to comment.