polynomial time simple level-$\leq k$ networks constructed independently for each connected component of $IG(\mathcal{C})$. The actual procedure is slightly more involved but it shows in any case that a polynomial-time algorithm for constructing simple level-$\leq k$ networks can easily be extended to a polynomial-time algorithm for constructing level-$\leq k$ networks. We will make use of this fact in Section \[sec:theory\].

Unfortunately, as has been observed by several authors, the same procedure does *not* necessarily lead to networks that have reticulation number $r(\mathcal{C})$. In other words, computation of $r(\mathcal{C})$ requires something more complicated than independently optimizing each connected component of $IG(\mathcal{C})$. An important special case, however, is when ${{\mathcal C}}$ is separating; in this case any network $N$ that represents $\mathcal{C}$ is simple (or can be trivially modified to become simple) and $r(\mathcal{C}) = \ell(\mathcal{C})$. We will formalize this in due course. To conclude the preliminaries we note that, throughout the article, we often write that an algorithm is “polynomial time” without formally specifying what the input size is. Unless otherwise specified the input is a set of clusters ${{\mathcal C}}$ on taxa set ${{\mathcal X}}$. It is sufficient to take $|{{\mathcal C}}| + |{{\mathcal X}}|$ as a lower bound on 