In the parametric minimum spanning tree problem , the input is a graph whose edges are labeled with linear functions of a parameter . For any value of , one can obtain a spanning tree as the minimum spanning tree of the weight functions, evaluated at . Varying continuously from to produces in this way a discrete sequence of trees, each of which is minimum within some range of values of . How many different spanning trees can belong to this sequence, for a worst case graph, and how can we construct them all efficiently? Known bounds are that the number of trees in a graph with vertices and edges can be (where is the inverse Ackermann function)  and is always ; both bounds date from the 1990s and, although far apart, have not been improved since. The sequence of trees can be constructed in time  or in time per tree ; faster algorithms are also known for planar graphs  or for related optimization problems that construct only a single tree in the parametric sequence [19, 6]. In this paper we improve the 25-year-old lower bound on the number of parametric minimum spanning trees from to .
A broad class of applications of this problem involves bicriterion optimization, where each edge of a graph has two real weights of different types (say, investment cost and eventual profit) and one wishes to find a tree optimizing a nonlinear combination of the sums of these two weights (such as the ratio of total profit to total investment cost, the return on the investment). Each spanning tree of may be represented by a planar point whose Cartesian coordinates are the sums of its two kinds of weights, giving an exponentially large cloud of points, one per tree. The convex hull of this point cloud has as its vertices the parametric minimum spanning trees (and maximum spanning trees) for linear weight functions obtained from the pair of weight values on each edge by using these values as coefficients. (Essentially, this construction of weight functions from pairs of weights is a form of projective duality transforming points into lines, and the equivalence between the convex hull of the points representing trees into the lower envelope of lines representing their total weight is a standard reflection of that projective duality.) Any bicriterion optimization problem that can be expressed as maximizing a quasiconvex function (or minimizing a quasiconcave function) of the two kinds of total weight automatically has its optimum at a convex hull vertex, and can be solved by constructing the sequence of parametric minimum spanning trees and evaluating the combination of weights for each one 
. Other combinatorial optimization problems that have been considered from the same parametric and bicriterion point of view include shortest paths[3, 11, 5, 4], optimal subtrees of rooted trees , minimum-weight bases of matroids , minimum-weight closures of directed graphs , and the knapsack problem [8, 15, 17].
The main idea behind our new lower bound is a recursive construction of a family of graphs (more specifically, 2-trees), formed by repeated replacement of edges by triangles (Figure 1). We also determine the parametric weight functions of these graphs by a separate recursive construction (Figure 3). However, this only produces an lower bound, because for a graph constructed in this way with vertices, the number of edges is , only a constant factor larger than the number of vertices. To obtain our claimed lower bound we use an additional packing argument, in which we find a dense graph containing many copies of our sparse lower bound construction, each contributing its own subsequence of parametric minimum spanning trees to the total.
2 Background and preliminaries
The minimum spanning tree of a connected undirected graph with real-valued edge weights is a tree formed as a subgraph of the given graph, having the minimum possible total edge weight. As outlined by Tarjan , standard methods for constructing minimum spanning trees are based on two rules, stated most simply for the case when all edge weights are distinct. The cut rule concerns cuts in the graph, partitions of the vertices into two subsets; an edge spans a cut when its two endpoints are in different subsets. The cut rule states that (for distinct edge weights) the minimum-weight edge spanning any given cut in a graph belongs to its unique minimum spanning tree. The cycle rule, on the other hand, states that (again for distinct edge weights) the maximum-weight edge in any cycle of the graph does not belong to its unique spanning tree. One consequence of these rules is that the minimum spanning tree depends only on the sorted ordering of the edge weights, rather than on more detailed properties of their numeric values.
An input to the parametric minimum spanning tree problem consists of an undirected connected graph whose edges are labeled with linear functions of a parameter rather than with real numbers. For any value of , plugging into these functions produces a system of real weights for the edges, and therefore a minimum spanning tree . Different values of may produce different trees, and the task is either to obtain a complete description of which tree is minimum for each possible value of or, in some versions of the problem, to find a value and its tree optimizing another objective function.
If we plot the graphs of the linear functions of a parametric minimum spanning tree instance, as lines in the plane, then the geometric properties of this arrangement of lines are closely related to the combinatorial properties of the parametric minimum spanning tree problem. If no two edges have the same weight function, then all edge weights will be distinct except at a finite set of values of , the -coordinates of points where two lines in the arrangement cross. As varies continuously, the sorted ordering of the weights will remain unchanged except when passes through one of these crossing points, where the set of lines involved in any crossing will reverse their weight order. It follows from these considerations that the sequence of parametric minimum spanning trees is finite, and that these trees change only at certain breakpoints which are necessarily the -coordinates of crossings of lines. In particular, lines have crossings and there can be only distinct trees in the sequence of parametric minimum spanning trees. However, a stronger bound, , is known .
The worst-case instances of the parametric minimum spanning tree problem, the ones with the most trees for their numbers of edges and vertices, have distinct edge weight functions whose arrangement of lines has only simple crossings, crossings of exactly two lines. For, in any other instance, perturbing the edge weight functions by a small amount will preserve the ordering of weights away from the crossings of its lines, and therefore will preserve its sequence of trees away from these crossings, while only possibly increasing the number of breakpoints near perturbed crossings of multiple lines, which become multiple simple crossings. For an instance in which the lines have only simple crossings, the only possible change to the minimum spanning tree at a breakpoint is a swap, a change to the tree in which one edge (corresponding to one of the two crossing lines at a simple crossing) is removed, and the other edge (corresponding to the other of the two crossing lines) is added in its place. For details on this correspondence between the geometry of line arrangements and the sequence of parametric minimum spanning trees, and generalizations of this correspondence to other matroids than the matroid of spanning trees, see our previous paper on this topic .
3 Replacing edges by triangles
A 2-tree is a graph obtained from the two-vertex one-edge graph by repeatedly adding new degree-two vertices, adjacent to pairs of adjacent earlier vertices. Equivalently, they are obtained by repeatedly replacing edges by triangles. These graphs are planar and include the maximal outerplanar graphs ; their subgraphs are the partial 2-trees, graphs of treewidth . The graphs we use in our lower bound are a special case of this construction where we apply this edge replacement process simultaneously to all edges in a smaller graph of the same type. We define the first graph in our sequence of graphs to be the graph , and then for all we define to be the graph obtained by replacing all edges of by triangles. It seems natural to call these complete 2-trees, by analogy to complete trees (whose leaves are repeatedly replaced by stars for a given number of levels) but we have been unable to find this usage in the literature. The graphs for are depicted in Figure 1.
has edges and vertices.
The bound on the number of edges follows from the fact that each replacement of edges by triangles triples the number of edges. The bound on the number of vertices follows easily by induction on , using the observations that each edge of leads to a newly added vertex in and that .
What happens when we replace an edge by a triangle in a parametric spanning tree problem? For a non-parametric minimum spanning tree, the answer is given by the following lemma.
Let graph contain edge , and replace this edge by a triangle to form a larger graph . Suppose that the edges in have distinct edge weights, and use these weights to assign weights to the edges in , with the following exception: in , give edge the weight of the bottleneck edge in triangle (the maximum-weight edge on path from to in the minimum spanning tree of the graph of the triangle) instead of the weight of . Then, the minimum spanning tree of has the same set of edge weights as the minimum spanning tree of , together with the minimum weight of a non-bottleneck edge in triangle .
If is the heaviest edge in then the path from to in the minimum spanning tree of passes through , the bottleneck edge is the heavier of the two edges on this path, and the minimum non-bottleneck edge is the lighter of its two edges. Otherwise, is the bottleneck edge and again the minimum non-bottleneck edge is the lighter of the two remaining edges incident to . Applying the cut rule to the cut separating from the rest of the graph shows that the minimum non-bottleneck edge is an edge of the minimum spanning tree of . Since we did not include its edge weight in the weights for , its weight is not included in the set of edge weights of the minimum spanning tree for .
Contracting this minimum non-bottleneck edge in produces a multigraph with two copies of edge , the lighter of which is the bottleneck edge. Therefore, if we keep only the lighter of the two edges, we obtain the weighting on as a contraction of a minimum spanning tree edge in . This contraction preserves the set of remaining minimum spanning tree weights, as the lemma states.
It follows that in the parametric case, replacing an edge by a triangle , with linear parametric weights on each triangle edge, causes that edge to behave as if it has a nonlinear piecewise linear weight function attached to it, the function mapping the parameter to the bottleneck weight from to in triangle . Figure 2 shows an example of three parametric weights on a triangle and this bottleneck weight function, with the weights chosen so that the function has three breakpoints. Clearly, we can perturb these three weight functions within small neighborhoods of their coefficients, and obtain a qualitatively similar bottleneck weight function.
4 Weighted 2-trees
We now describe how to assign parametric weights to the edges of to obtain our lower bound. As a base case, we may use any linear function as the weight of the single edge of ; it can have only one spanning tree, regardless of this choice. For , with , we perform the following steps to assign its weights:
Construct the weight functions for the edges of , recursively.
Apply a linear transformation to the parameter of these weight functions (the same transformation for each edge) so that, in the arrangement of lines representing the graphs of these weight functions, all crossings occur in the intervalof -coordinates. Additionally, scale these weight functions by a sufficiently small factor so that, within this interval, they are close enough to the -axis, for a meaning of “close enough” to be specified below.
Construct by replacing each edge in by a triangle , with a new vertex for each triangle. Color the three edges of each triangle red, blue, and green, as in Figure 2(left), with colored green and the other two edges colored red and blue (choosing arbitrarily which one to color red and which one to color blue).
Give each edge of a transformed copy of the weight function of the corresponding edge of , transformed as follows:
For a green edge , corresponding to an edge of with weight function , give the weight function . This transformation shifts the part of the weight function where the crossings with other green edges occur to be close to the right green segment of Figure 2(right).
For a red edge , corresponding to an edge of with weight function , give the weight function . This transformation shifts the part of the weight function where the crossings with other red edges occur to be close to the red segment of Figure 2(right), and (by negating in the argument to ) reverses the ordering of the crossings within that region.
For a blue edge , corresponding to an edge of with weight function , give the weight function . This transformation shifts the part of the weight function where the crossings with other red edges occur to be close to the blue segment of Figure 2(right).
Perturb all of the weight functions, if necessary, so that all crossings of two weight functions have different -coordinates, without changing the left-to-right ordering of the crossings between any one weight function and the rest of them.
This construction is depicted schematically, in the plane, in Figure 3. We are now ready to define what it means for the weight scaling factor to be small enough, so that the scaled weight functions are “close enough” to the axis: as shown in the figure, the left-to-right ordering of the crossings of the lines graphing the weight functions should be:
All crossings of blue with green lines
All crossings of two blue lines, in one copy of the recursive construction
All crossings of blue with red lines
All crossings of two red lines, in a second (reversed) copy of the recursive construction
All crossings of red with green lines
All crossings of two green lines, in the third copy of the recursive construction
Our construction automatically places all monochromatic crossings into disjoint unit-length intervals with these orderings. The bichromatic crossings of Figure 2 are separated from these unit-length intervals by a horizontal distance of at least , and sufficiently small values of will cause the bichromatic crossings of to be close to the positions of the crossings with the same color in Figure 2. Therefore, by choosing small enough, we can ensure that the crossing ordering described above is obtained. Figure 4 depicts this construction for .
We observe that, within each of the unit-length intervals containing a copy of the recursive construction, the bottleneck edges for each triangle in the construction of are exactly the ones of the color for that copy of the recursive construction, and that within these intervals, the minimum non-bottleneck edge in each triangle does not change. Therefore, by 2, the changes in the sequence of parametric minimum spanning trees within these intervals exactly correspond to the changes in the trees of from the recursive construction.
For weights constructed as above, the number of distinct parametric minimum spanning trees for is at least as large as
We prove by induction on that the number of trees is at least as large as the solution to the recurrence
To prove this, it is easier to count the number of breakpoints, values of at which the tree structure changes; the number of trees is the number of breakpoints plus one. In each copy of the recursive construction, this number of breakpoints is exactly , so the total number of breakpoints appearing in these three copies is .
Additional breakpoints happen within the ranges of values for at which (in the plane) pairs of lines of two different colors cross. Because of the reversal of the red copy of the recursive construction, the minimum spanning trees immediately to the left and right of these regions of bichromatic crossings correspond to the same trees in : the bottleneck edges that are included in these minimum spanning trees come from the same triangles, but with different colors. In the regions where the green lines cross lines of other colors, the minimum non-bottleneck edge in each triangle does not change, so each green bottleneck edge in the minimum spanning tree must be exchanged for a red or blue one. Each change to a tree within this crossing region removes a single edge from the minimum spanning tree and replaces it with another single edge, the two edges whose two lines cross at the -coordinate of that change. Therefore, no matter what sequence of changes is performed, to exchange all green bottleneck edges for all red or blue ones requires a number of crossings equal to the number of edges in the minimum spanning tree of , which is by 1. We get this number of breakpoints at the region where the green and blue lines cross, and the same number at the region where the red and green lines cross.
The analysis of the number of breakpoints at the region where the blue and red lines cross is similar, but slightly different. Immediately to the left and right of this region, the the bottleneck edge in each triangle and the minimum non-bottleneck edge in the triangle are red and blue, but in a different order to the left and to the right. Therefore, in triangles where the bottleneck edge is part of the minimum spanning tree (as is always the minimum non-bottleneck edge), nothing changes. However, in triangles where the bottleneck edge is not part of the minimum spanning tree, there is a change, to the minimum non-bottleneck edge, from before this crossing region to after it. These triangles correspond to edges of which do not belong to the minimum spanning tree (for the parameter values in this range), of which there are by 1. By the same argument as before, the crossing region must contain at least this many breakpoints.
Adding together the breakpoints from the recursive copies, the breakpoints for the green–red and green–blue crossing regions, the breakpoints for the red–blue crossing region, and to convert numbers of breakpoints to numbers of distinct trees, and simplifying, gives the right hand side of the recurrence. A straightforward induction shows that the solution to the recurrence is the formula given in the statement of the lemma.
For the number of trees given by this formula is
For instance, has three trees with the weighting given in Figure 2: the bottleneck function shown in the figure has four linear pieces, but the red and blue pieces both correspond to the same tree, with a different edge on the path as the bottleneck edge. Figure 4 shows the 12 trees for .
5 Packing into dense graphs
The lower bound obtained from 3 applies only to sparse graphs, where the numbers of vertices and edges are within constant factors of each other. However, we want a bound that applies more generally, for graphs with significantly more edges than vertices. The other direction, for graphs with significantly fewer edges than vertices, is less interesting. To achieve many fewer edges than vertices, it is necessary to allow disconnected graphs, and consider minimum spanning forests instead of minimum spanning trees; but with these modifications one can obtain a lower bound simply by adding isolated vertices to the construction of 3.
To achieve many more edges than vertices, we use the following construction for packing many instances of a sparse lower bound graph into a single denser graph. It does not require any detailed knowledge of the structure of the sparse graph.
Let be a parametrically weighted graph with vertices and edges, whose sequence of parametric minimum spanning trees has length , and let be a positive integer satisfying . Then there is a parametrically weighted graph with vertices and edges whose sequence of parametric minimum spanning trees has length at least .
We construct from in the following steps, illustrated in Figure 5.
Number the edges of as arbitrarily.
Subdivide each edge of , connecting two vertices and , into a four-edge path ––––. (It is arbitrary which vertex of this path we call and which we call .)
Add additional edges from to and , for each and each .
Given this construction, we define subgraphs as follows:
consists of all edges connecting vertices of to new vertices or .
consists of all edges from to or , for all , with indexes taken modulo .
Then, for , the graph is isomorphic to a subdivision of , with being the subdivision we used to construct and the others obtained in the same way but with permuted connections.
As in 3, we flatten the arrangement of lines for the weighting of so that its crossings all lie within a small neighborhood of the unit interval of the -axis, without changing its sequence of parametric minimum spanning trees. We then apply linear transformations to the system of weights for the edges in each copy with , as detailed below, while using small-enough weights for all edges in so that these edges belong to all minimum spanning trees for parameters in the range covered by the transformed unit intervals. shown in Figure 6. More specifically, for each we use one transformed copy of the weights in for the – edges in , and a second transformed copy for the – edges, arranged so that the transformed unit intervals containing the crossings within each copy project to disjoint intervals of the -axis, and so that all crossings of the – edges appear above all lines for the – edges and vice versa. Therefore, in the graph , the parametric trees in the parameter range where the – edges cross each other consist of all – edges (because those have smaller weight than the – edges in each path) together with a subset of the – edges corresponding to a spanning tree of . Because we copied and transformed the weights of for the – edges in this parameter range, we obtain distinct trees of this type. To arrange the – and – parameter weights for in this fashion, we transform them so that the – weights lie near the line , with crossings in the range , and so that the – weights lie near the line , with crossings in the range . Then, we transform and flatten these combined weights of , so that they again lie near the -axis with all crossings of edges of either type in the range .
We arrange the sets of lines associated with , , etc., so that the lines from each pass above the crossings for each other , , and so that the range of parameters within which has the lowest lines contains the two subranges where its – lines cross and where its – lines cross, again as shown in the figure. We may do this by finding a convex-downward polygonal chain with sides (for instance the upper part of a regular -gon), in which all sides project to a range of -coordinates of more than unit length, and by transforming the weights of each so that the unit interval of the -axis, near which all crossings of these weights occur, is transformed to the interior of one of the sides of this polygonal chain. Figure 6 shows the weights for three subgraphs , , and , transformed in this way so that they are near the upper three sides of a hexagon. The weights for can be chosen to be near a horizontal line, below all crossings of the other weight functions, as also shown in the figure.
Therefore, within these subranges, the parametric minimum spanning trees for all of will be the same as the trees for , because spans and has lower edge weights than any of the remaining edges. With this arrangement, we get distinct parametric minimum spanning trees, for each with , as well as additional trees that are not counted in the lemma.
With this, we are ready to prove our main result:
There exists a constant such that the following is true. Let and be integers with and . Then there exists a parametrically weighted graph with vertices and edges, with at least parametric minimum spanning trees.
Let , , and , with chosen as large as possible so that and , and choose as large as possible so that ; then and . Apply 3 to give weights to so that it has parametric minimum spanning trees, and apply 4 to construct a parametrically weighted graph with vertices and edges that has parametric minimum spanning trees. If necessary, add leaf vertices to to increase its number of vertices to , and then add high-weight edges to increase its number of edges to without affecting this sequence of parametric spanning trees.
We have shown that the number of parametric minimum spanning trees can be in the worst case, improving a 25-year-old lower bound. Because of the structure of the graphs used in our lower bound construction, the new lower bound applies as well to the special cases of planar graphs and of bounded-treewidth graphs, both of which can have parametric minimum spanning trees. However, our new lower bound is still far from the upper bound, so there is plenty of room for additional improvement.
Another related question concerns the parametric bottleneck shortest path problem, a parametric version of the problem of finding a path between two specified vertices that minimizes the maximum edge weight on the path. In the non-parametric version of the problem, a minimum spanning tree path is an optimal path, although faster algorithms are possible and the problem is also of interest in the case of directed graphs . The same problem is also known in the equivalent maximin form as the widest path problem, where an optimal solution can be found as a maximum spanning tree path . The parametric versions of these problems differ somewhat: a breakpoint in the piecewise linear parametric minimum spanning tree function (the function mapping the parameter value to the weight of its minimum spanning tree) might not be a breakpoint in the bottleneck shortest path problem (the maximum weight of an edge on the bottleneck shortest path problem) or vice versa. However, the bottleneck breakpoints that look locally like the minimum of two linear functions do correspond to breakpoints of the minimum spanning tree problem. For this reason, any asymptotic lower bound on the parametric bottleneck shortest path problem would also be a lower bound for parametric minimum spanning trees, and any asymptotic upper bound on the parametric minimum spanning tree problem (including the known bound) is also an upper bound on parametric bottleneck shortest paths. In fact, our previous lower bound also applies to parametric bottleneck shortest paths, but our new bound does not. Can we strengthen the bound for this problem?
-  Pankaj K. Agarwal, David Eppstein, Leonidas J. Guibas, and Monika R. Henzinger. Parametric and kinetic minimum spanning trees. In Proc. 39th IEEE Symp. Foundations of Computer Science (FOCS ’98), pages 596–605, 1998. doi:10.1109/SFCS.1998.743510.
-  Josiah Carlson and David Eppstein. The weighted maximum-mean subtree and other bicriterion subtree problems. In Proc. 10th Scand. Worksh. Algorithm Theory (SWAT 2006), volume 4059 of Lect. Notes Comput. Sci., pages 397–408. Springer, 2006. doi:10.1007/11785293_37.
-  Patricia J. Carstensen. Parametric cost shortest path problems. Unpublished memo, Bellcore, 1984.
-  Lorenzo Castelli, Martine Labbé, and Alessia Violin. Network pricing problem with unit toll. Networks, 69(1):83–93, 2017. doi:10.1002/net.21701.
-  Sourav Chakraborty, Eldar Fischer, Oded Lachish, and Raphael Yuster. Two-phase algorithms for the parametric shortest path problem. In Jean-Yves Marion and Thomas Schwentick, editors, Proc. 27th International Symposium on Theoretical Aspects of Computer Science (STACS 2010), volume 5 of LIPIcs, pages 167–178. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 2010. doi:10.4230/LIPIcs.STACS.2010.2452.
-  Timothy M. Chan. Finding the shortest bottleneck edge in a parametric minimum spanning tree. In Proc. 16th ACM-SIAM Symposium on Discrete Algorithms (SODA 2005), pages 917–918. SIAM, 2005. URL: https://dl.acm.org/citation.cfm?id=1070432.1070561.
-  Tamal K. Dey. Improved bounds for planar -sets and related problems. Discrete Comput. Geom., 19(3):373–382, 1998. doi:10.1007/PL00009354.
-  Moshe Eben-Chaime. Parametric solution for linear bicriteria knapsack models. Manag. Sci., 42(11):1565–1575, 1996. doi:10.1287/mnsc.42.11.1565.
-  David Eppstein. Geometric lower bounds for parametric matroid optimization. Discrete Comput. Geom., 20(4):463–476, 1998. doi:10.1007/PL00009396.
-  David Eppstein. The parametric closure problem. ACM Trans. Algorithms, 14(1):A2:1–A2:22, 2018. doi:10.1145/3147212.
-  Jeff Erickson. Maximum flows and parametric shortest paths in planar graphs. In Moses Charikar, editor, Proc. 21st ACM-SIAM Symposium on Discrete Algorithms (SODA 2010), pages 794–804. SIAM, 2010. doi:10.1137/1.9781611973075.65.
-  David Fernández-Baca and Giora Slutzki. Linear-time algorithms for parametric minimum spanning tree problems on planar graphs. Theoret. Comput. Sci., 181(1):57–74, 1997. doi:10.1016/S0304-3975(96)00262-9.
-  David Fernández-Baca, Giora Slutzki, and David Eppstein. Using sparsification for parametric minimum spanning tree problems. Nordic J. Comput., 3(4):352–366, 1996.
-  Harold N. Gabow and Robert E. Tarjan. Algorithms for two bottleneck optimization problems. J. Algorithms, 9(3):411–417, 1988. doi:10.1016/0196-6774(88)90031-4.
-  Alberto Giudici, Pascal Halffmann, Stefan Ruzika, and Clemens Thielen. Approximation schemes for the parametric knapsack problem. Inform. Process. Lett., 120:11–15, 2017. doi:10.1016/j.ipl.2016.12.003.
-  Dan Gusfield. Bounds for the parametric minimum spanning tree problem. In Proceedings of the West Coast Conference on Combinatorics, Graph Theory and Computing (Humboldt State Univ., Arcata, Calif., 1979), volume 26 of Congress. Numer., pages 173–181, Winnipeg, Manitoba, 1980. Utilitas Math.
-  Michael Holzhauser and Sven O. Krumke. An FPTAS for the parametric knapsack problem. Inform. Process. Lett., 126:43–47, 2017. doi:10.1016/j.ipl.2017.06.006.
-  Naoki Katoh. Bicriteria network optimization problems. IEICE Trans. Fundamentals of Electronics, Communications and Computer Sciences, E75-A:321–329, 1992.
-  Naoki Katoh and Takeshi Tokuyama. Notes on computing peaks in -levels and parametric spanning trees. In Diane L. Souvaine, editor, Proc. 17th Symposium on Computational Geometry (SoCG 2001), pages 241–248. ACM, 2001. doi:10.1145/378583.378675.
-  Sandra L. Mitchell. Linear algorithms to recognize outerplanar and maximal outerplanar graphs. Inform. Process. Lett., 9(5):229–232, 1979. doi:10.1016/0020-0190(79)90075-9.
-  Maurice Pollack. The maximum capacity route through a network. Operations Res., 8:733–736, 1960. doi:10.1287/opre.8.5.733.
-  Robert E. Tarjan. Data Structures and Network Algorithms, volume 44 of CBMS-NSF Regional Conference Series in Applied Mathematics. Society for Industrial and Applied Mathematics, 1983. doi:10.1137/1.9781611970265.
-  Joseph A. Wald and Charles J. Colbourn. Steiner trees, partial 2-trees, and minimum IFI networks. Networks, 13(2):159–167, 1983. doi:10.1002/net.3230130202.