two algorithms that are based on ADMM, like ours. Both of them are based on different reformulations of , yielding two different algorithms. The first algorithm is [@Zhu09-DistributedInNetworkChannelCoding] (it also appears in [@Bazerque10-DistributedSpectrumSensing; @Kim11-CooperativeSpectrumSensingKrigedKalmanFiltering; @Forero10-ConsensusBasedDistributedSVMs; @Erseghe11-FastConsensusByADMM]), described in Algorithm \[Alg:Giannakis\].

\[Alg:Giannakis\]

for all $p \in \mathcal{V}$, set $\gamma_{p}^{1} = x_p^{1} = 0$ and $k=1$

set $
                v_p^{k} = \gamma_p^{k}-
                \rho \sum_{j \in \mathcal{N}_p \cup \{p\}} x_j^{k}
            $ and find $$x_p^{k+1} = \begin{array}[t]{cl}
                            \textrm{argmin} & f_p(x_p) + {v_p^{k}}^\top x_p + \rho D_p\|x_p\|^2\\
                            \textrm{s.t.} & x_p \in X_p
                          \end{array}$$ \[SubAlg:Giannakis-Optm\]

Send $x_p^{k+1}$ to $\mathcal{N}_p$, and receive $x_j^{k+1}$, $j \in \mathcal{N}_p$

$
            \gamma_p^{k+1} = \gamma_p^{k} + \rho \sum_{j \in \mathcal{N}_p} (x_p^{k+1} -  x_j^{k+1})
        $ \[SubAlg:ADMMGenDualVarUp\] $k \gets k+1$

Although derived from a different reformulation of , Algorithm \[Alg:Giannakis\] algorithm is very similar to D-ADMM. The three main differences are:

1.  Algorithm \[Alg:Giannakis\] is synchronous, i.e., all the nodes can perform the same tasks at the same time;

2.  while in Algorithm \[Alg:Giannakis\] node $p$ uses $x_p^k$ to construct the vector $v_p^k$ (see step \[SubAlg:Giannakis-Optm\]), D-ADMM does not;

3.  Algorithm \[Alg:Giannakis\] is proven to converge for any connected network, and D-ADMM is only proven to converge in bipartite networks (although in practice it converges 