able to transmit messages at the same time. [[**Gradient/Subgradient method.**]{}]{} The classical approach for solving  is to use a subgradient method combined with an averaging consensus algorithm. This approach was taken in [@Lobel10-DistributedMultiAgentOptimization], and consists of iterating in $k$ $$\label{Eq:OASubgradAlg}
        x_p^{k+1} = \Bigl[a_{pp}^{k} x_p^{k} + \sum_{j \in \mathcal{N}_p} a_{pj}^{k} x_j^{k} - \alpha^{k} g_p^{k}\Bigr]_{X_p}^+\,,$$ for each node $p$. In , $[s]_S$ represents the projection of the point $s$ onto the (convex) set $S$, $x_p^k$ the estimate of node $p$ at iteration $k$, $g_p^k$ the gradient (or a subgradient, in case the objective is not differentiable) of $f_p$ at the point $a_{pp}^{k} x_p^{k} + \sum_{j \in \mathcal{N}_p} a_{pj}^{k} x_j^{k}$, and $a_{ij}^k$ represents the influence node $j$ exerts on node $i$ at iteration $k$. There are some conditions the weights $a_{ij}^k$ have to satisfy [@Lobel10-DistributedMultiAgentOptimization], for example, for each $k$, the matrix with entries $a_{ij}^k$ should be doubly stochastic. In each iteration, node $p$ receives the estimates $x_{j}^k$ from its neighbors, computes , and then broadcasts $x_p^{k+1}$ to its neighbors. It is thus a (synchronous) single-looped algorithm. Although this algorithm is provably robust to noise, it is known to perform very slowly, requiring lots of iterations to converge.

[[**ADMM-based algorithms.**]{}]{} We now describe 