###### tags: `Assignment`, `Parallel Programming` # 1. Parallel Prefix Algor. Proof Given $n$ numbers $a_1, a_2, ..., a_{n}$, denote the $i_{th}$ number at the $k_{th}$ stage by $a_i^k$. We will prove by induction that, for all $k \in [1,\ \log{n}]$ $(1)\\ a_i^k = a_{i} + a_{i-1} + ... + a_{i-2^k+1}\ \ \forall{i= 2^k+1, ...n}$ $a_j^k = a_j + a_{j-1} + ... + a_1\ \ \forall{j=1, ...2^k}$ Base case: When $k = 1$, by the algorithm, $a_1^1 = a_1$, and specified by the algorithm, $a_i^1 = a_i + a_{i-1} = a_i + a_{i-2^1+1},\ \forall{i = 3...n}$, hence $(1)$ is true for $k = 1$. Induction step: Let $q \in [1,\ \log{n}]$ be given and suppose $(1)$ is true for $k = q$, Then when $k = q+1$: specified by the algorithm, $\forall{i=2^{q+1}+1, ...n}$, $a_i^{q+1} = a_i^q + a_{i-2^{q}}^q$ Since it's true at the $q$ stage, i.e. $a_i^q = a_i + a_{i-1} + ...+a_{i-2^q+1}$ $a_{i-2^{q}}^q = a_{i-2^{q}} + a_{i-2^{q}-1} + ... + a_1$ We can derive: $a_i^{q+1} = a_i + a_{i-1} + ...+a_{i-2^q+1} + a_{i-2^{q}} + a_{i-2^{q}-1} + ... + a_1$ Thus, $(1)$ holds for $k = q+1$, and the proof of the induction step is completed. # 2. Asymptotically Optimality We can model the prefix sum problem by building up a binary tree in a certain bottom-up manner, where its root is the prefix sum of the $n_{th}$ leaf. Let $l$ be the actual nodes in a binary tree. Suppose such binary tree's height is $h$, so it can at most have $2^h$ nodes. Since we have $n$ leaves, the nodes of the binary tree are limited by: $n \le l \le 2^h$ then derive, $h \ge \log{n} = \Omega{(\log{n})}$ The aymptotical lower bound of the parallel prefix sum problem is $\Omega{(\log{n})}$, hence the algorithm is asymptotically optimal. # 3. Work Optimality The work is not optimal, as it doesn't have the same work as a sequential algorithm: $w_p = pT_p = nT_p$ (we have $n$ processors) $= O(n\log{n}) > O(n) = w_s$