A method for determining a spanning subset of service links configured to satisfy a demand for a communications network, comprising: obtaining a set of permissible service link decompositions for the communications network and a set of basic service links for the communications network, wherein a permissible service link decomposition corresponds to a service link decomposition that satisfies the demand, and wherein the set of basic service links lack a non-trivial decomposition; and generating the spanning subset, the generating including: selecting a decomposition of a first service link from the set of permissible service link decompositions randomly or iteratively, the first service link satisfying a first service demand; updating the set of permissible service link decompositions based on the selected decomposition, the updating comprising: removing from the set of permissible service link decompositions, decompositions of the first service link or including the first service link; updating demands associated with service links included in the selected decomposition using the first service demand; and removing decompositions that, based on the updated demands, violate a capacity constraint; and updating the set of basic service links using the updated set of permissible service link decompositions, the updating comprising: determining that the updated set of permissible service link decompositions lacks a non-trivial decomposition of a second service link; and adding the second service link to the set of basic service links in response to the determination. obtaining a set of permissible service link decompositions for the communications network and a set of basic service links for the communications network, wherein a permissible service link decomposition corresponds to a service link decomposition that satisfies the demand, and wherein the set of basic service links lack a non-trivial decomposition; and generating the spanning subset, the generating including: selecting a decomposition of a first service link from the set of permissible service link decompositions randomly or iteratively, the first service link satisfying a first service demand; updating the set of permissible service link decompositions based on the selected decomposition, the updating comprising: removing from the set of permissible service link decompositions, decompositions of the first service link or including the first service link; updating demands associated with service links included in the selected decomposition using the first service demand; and removing decompositions that, based on the updated demands, violate a capacity constraint; and updating the set of basic service links using the updated set of permissible service link decompositions, the updating comprising: determining that the updated set of permissible service link decompositions lacks a non-trivial decomposition of a second service link; and adding the second service link to the set of basic service links in response to the determination. selecting a decomposition of a first service link from the set of permissible service link decompositions randomly or iteratively, the first service link satisfying a first service demand; updating the set of permissible service link decompositions based on the selected decomposition, the updating comprising: removing from the set of permissible service link decompositions, decompositions of the first service link or including the first service link; updating demands associated with service links included in the selected decomposition using the first service demand; and removing decompositions that, based on the updated demands, violate a capacity constraint; and removing from the set of permissible service link decompositions, decompositions of the first service link or including the first service link; updating demands associated with service links included in the selected decomposition using the first service demand; and removing decompositions that, based on the updated demands, violate a capacity constraint; and updating the set of basic service links using the updated set of permissible service link decompositions, the updating comprising: determining that the updated set of permissible service link decompositions lacks a non-trivial decomposition of a second service link; and adding the second service link to the set of basic service links in response to the determination. determining that the updated set of permissible service link decompositions lacks a non-trivial decomposition of a second service link; and adding the second service link to the set of basic service links in response to the determination.