for each one of these problems. Finally, in section \[Sec:Experiments\], we describe and show the results of our simulations. In Appendix \[App:ADMMProof\] we provide a proof of convergence of the particular version of ADMM we use, making this paper self-contained.

Algorithm Derivation {#Sec:AlgDerivation}
====================

In this section, we propose a distributed algorithm for solving . We begin by introducing some graph theory concepts and notation. Next, we address the scenario of a bipartite network, where a proof of convergence is given and the exposition is simpler; then, we generalize the algorithm for arbitrary networks. In this case, although we do not provide a proof of convergence, the algorithm always converges in practice, as shown in section \[Sec:Experiments\].

[[**Network notation.**]{}]{} We represent a network as an undirected graph $\mathcal{G}=(\mathcal{V},\mathcal{E})$, where $\mathcal{V} = \{1,2,\ldots,P\}$ is the set of nodes and $\mathcal{E} \subset \mathcal{V} \times \mathcal{V}$ is the set of edges. The cardinality of these sets is represented respectively by $P$, the number of nodes, and $E$, the number of edges. An edge is represented by $\{i,j\} = \{j,i\}$, and $\{i,j\} \in \mathcal{E}$ means that nodes $i$ and $j$ can exchange data with each other. We define the neighborhood $\mathcal{N}_p$ of a node 