Fact-checked by Grok 2 weeks ago

Spanning tree

In , a spanning tree of a connected, undirected G = (V, E) is a T = (V, E' ) that is a (i.e., connected and acyclic) and includes every in V. Such a spanning tree necessarily contains exactly |V| − 1 edges, forming a minimal connected structure that spans the graph without cycles. A graph may have multiple spanning trees, and the set of all spanning trees encodes important structural properties of the graph, such as its connectivity and the number of ways to connect its vertices minimally. The concept of spanning trees emerged in the mid-19th century as part of early work in enumerative combinatorics and electrical network theory. In 1847, German physicist Gustav Kirchhoff developed the matrix tree theorem, which provides a formula for counting the number of spanning trees in a graph using the determinant of a minor of its Laplacian matrix, linking algebraic methods to graph enumeration. This theorem, originally motivated by analyzing electrical circuits, remains a cornerstone for computing spanning tree counts efficiently. A decade later, in 1857, Arthur Cayley proved that the complete graph on n vertices has exactly nn−2 spanning trees, a result known as Cayley's formula that highlights the abundance of trees in dense graphs. Spanning trees are fundamental in optimization and network design, particularly through the notion of a , which is a spanning tree of minimum total edge weight in a weighted graph. MSTs solve problems like connecting cities with minimal road length or wiring electrical grids efficiently, with algorithms such as Borůvka's method (1926), (1956), and (1957) achieving near-optimal performance. In computer networking, the spanning tree concept underpins the , standardized as in 1990, which prevents loops in Ethernet bridges by dynamically selecting a spanning tree topology; this protocol, invented by in the early at , enabled scalable, loop-free local area networks. Beyond these, spanning trees appear in algorithms for clustering, approximation schemes, and random graph generation, underscoring their versatility in theoretical and .

Definitions and Fundamentals

Basic Definition

In , a spanning tree of an undirected connected graph G = (V, E) is defined as a T = (V, E') that is a and includes all vertices of G, thereby maintaining while spanning the entire set V. This connects every pair of vertices in G through a unique , ensuring no cycles are present. A spanning tree possesses the minimal number of edges necessary to preserve the of G, specifically |E'| = |V| - 1, where |V| denotes the number of . Adding any from E \setminus E' to T creates a , as T is maximal acyclic; conversely, removing any from E' disconnects T, isolating at least one from the rest. This structure assumes familiarity with basic concepts such as , , , and . Formally, for a connected undirected G = (V, E), a spanning tree T = (V, E') satisfies |E'| = |V| - 1, T is acyclic (no ), and T is connected (every pair of vertices is linked by a ). Consider a simple C_4 with vertices labeled 1, 2, 3, 4 and edges forming a square (1-2, 2-3, 3-4, 4-1). One possible spanning tree is obtained by removing the edge between 4 and 1, yielding the 1-2-3-4, which connects all four vertices with exactly three edges and no . For disconnected graphs, the concept generalizes to a spanning forest, consisting of spanning trees for each connected component.

Spanning Forests

A spanning forest of a graph G = (V, E) is a subgraph F = (V, E_F) that is a forest (an acyclic graph whose connected components are trees) and includes every vertex in V. Equivalently, it consists of a spanning tree for each connected component of G. In a connected graph, where there is only one component, a spanning forest coincides exactly with a spanning tree. The number of edges in a spanning forest of G is |V| - c, where c is the number of connected components in G. A spanning forest is a maximal of G, meaning no edge from E \setminus E_F can be added without creating a . Every admits at least one spanning forest, obtained by selecting a spanning tree in each of its components. Consider a disconnected graph G with two components: one a on vertices \{a, b, c\} with edges \{ab, bc, ca\}, and the other a single edge on vertices \{d, e\} with edge \{de\}. A spanning forest of G includes the edge \{de\} and two edges from the triangle, such as \{ab, bc\}, forming a on \{a, b, c\}; this subgraph has five vertices and three edges, matching |V| - c = 5 - 2. The edges in E \setminus E_F form a cotree, whose structure connects the trees of the spanning forest. Adding a cotree edge whose endpoints lie in the same connected component of the spanning forest induces a fundamental cycle in that component.

Fundamental Cycles

In graph theory, for an undirected graph G = (V, E) and a spanning forest T (a spanning tree if G is connected), the fundamental cycles are defined with respect to the edges not in T. Specifically, for each chord e \in E \setminus E(T) whose endpoints lie in the same connected component of T, the fundamental cycle C_e is the unique simple cycle in the subgraph T \cup \{e\}, consisting of e and the unique path in T between the endpoints of e. The set of all such fundamental cycles, one for each such chord, forms a basis for the cycle space of G, which is the vector space over \mathbb{F}_2 (the field with two elements) generated by the edge sets of all cycles in G, where addition corresponds to symmetric difference of edge sets. This basis has dimension |E| - |V| + c(G), where c(G) is the number of connected components of G; thus, for a connected graph, the dimension is |E| - |V| + 1. The fundamental cycles are linearly independent over \mathbb{F}_2, meaning no nonempty subset sums to the zero vector (the empty edge set), and every cycle in G can be expressed as a linear combination (symmetric difference) of these fundamental cycles. Although fundamental cycles may share edges from T, their edge-incidence vectors ensure the spanning property over \mathbb{F}_2. Each fundamental cycle is simple by construction, as adding a single such to an creates exactly one without repeated vertices. For instance, consider a with vertices \{[1,2,3,4](/page/1_−_2_+_3_−_4_+_⋯)\} and a spanning tree T consisting of the $1-2-3-4; adding the e = \{1,3\} yields the fundamental C_e = 1-2-3-1. The concept of fundamental cycles was introduced by in as part of his analysis of electrical networks, where he selected a minimal of cycles to satisfy his voltage law, forming the basis for modern interpretations. Fundamental cutsets offer the dual notion in the bond space, capturing connectivity aspects.

Fundamental Cutsets

In , for a connected undirected G = (V, E) with spanning tree T, the fundamental cutset associated with a tree edge e \in T is defined as the minimal set of edges in E whose removal disconnects the two endpoints of e in the graph T - e, specifically consisting of e itself along with all chords (edges in E \setminus T) that cross the of V induced by removing e from T. This construction ensures that each fundamental cutset corresponds uniquely to one of T and captures the edges bridging the two components created by deleting that branch. The collection of all fundamental cutsets with respect to T—one for each of the |V| - 1 edges in T—forms a basis for the (also known as the bond space) of G, which is the over GF(2) generated by all even-degree subgraphs or, equivalently, the row space of the of G. The dimension of this cut space is |V| - 1, matching the number of fundamental cutsets, and any cutset in G can be expressed as a of these basis elements. This basis property arises because the fundamental cutsets are linearly independent and span the space, providing a way to represent partitions in G. To illustrate, consider a simple path spanning tree T on vertices labeled 1, 2, 3 with edges $1-2 and $2-3. Removing the tree edge $2-3 partitions the vertices into sets \{1, 2\} and \{3\}, so the fundamental cutset consists of the edge $2-3 plus any edges in G connecting \{1, 2\} to \{3\}. If G includes an additional edge $1-3, the fundamental cutset would be \{2-3, 1-3\}; removing either reconnects the components, confirming its minimality. Each fundamental cutset is minimal, meaning no proper subset disconnects G, as it includes exactly one tree branch and the necessary crossing chords. Furthermore, the fundamental cutsets exhibit to the space: the incidence of any in G has even (even number of 1s) with respect to the incidence of any cutset, ensuring their disjoint supports in the decomposition. This holds because the cut space is the of the space in the edge space over . The duality between fundamental cutsets and fundamental cycles is evident in the of G: while adding a to T generates a fundamental in the cycle space, removing a tree generates a fundamental cutset in the cut space, with their basis vectors satisfying mutual such that the inner product ( parity) is zero. This relationship underscores the complementary roles of and cutsets in decomposing the space of G.

Properties and Counting

Key Properties

A spanning tree of a connected undirected G with n vertices is a that is connected, includes all n vertices of G, and contains exactly n-1 with no . This ensures minimal connectivity while spanning the entire graph, as adding any from G to the spanning tree would create a , and removing any would disconnect it. Any connected acyclic of G—known as a on a of vertices—can be extended to a full spanning by adding edges from G without introducing cycles, preserving the acyclicity and ensuring across all vertices. Conversely, every spanning is itself a connected acyclic that cannot be reduced further without losing or spanning capability. In a that is already a , there is exactly one spanning , which is the itself, due to its unique structure with no redundant edges. For general connected s with cycles, multiple distinct spanning s exist, each corresponding to a different selection of n-1 edges that maintain and acyclicity. Within the subgraph induced by a spanning tree, every is a , meaning its removal disconnects the tree into two components, and leaves are vertices of 1 that connect only to one other . This bridge property underscores the fragility of the tree's connectivity, where no is superfluous. For example, in the K_3 on three vertices with edges between all pairs, the three possible spanning trees are each a path of two edges connecting the vertices in a line, demonstrating how different selections yield isomorphic but distinct that are connected and acyclic. A admits a spanning if and only if it is connected, as disconnected graphs lack a connected spanning , while every connected contains at least one such tree.

Cayley's Formula for Complete Graphs

asserts that the complete K_n on n labeled vertices has exactly n^{n-2} spanning trees. This result was first stated by in 1857 and proved by him in 1889; it stands as one of the earliest achievements in . An elegant bijective proof was provided by Heinz Prüfer in 1918 using what are now known as Prüfer codes, establishing a one-to-one correspondence between the set of labeled trees on n vertices and the set of all sequences of length n-2 with entries from \{1, 2, \dots, n\}. To encode a tree, repeatedly remove the leaf with the smallest label and append the label of its unique neighbor to the code, continuing until only two vertices remain connected by the last edge. The decoding process reverses this operation by iteratively selecting the smallest unused vertex label and attaching it as a leaf to the vertex indicated by the next entry in the sequence, until all vertices are incorporated. Since each of the n-2 positions in the sequence has n possible values, the bijection yields precisely n^{n-2} trees. For n=3, K_3 has $3^{1} = 3 spanning trees, each consisting of two edges forming a with one central vertex connected to the other two. For n=4, there are $4^{2} = 16 spanning trees, comprising four star graphs (one central vertex adjacent to the other three) and twelve graphs of length three. counts labeled spanning trees in complete graphs; in contrast, the number of unlabeled trees on n vertices is given by a more complex asymptotic formula due to . This specific count for complete graphs can also be obtained as a special case of Kirchhoff's tree theorem.

Kirchhoff's Matrix Tree Theorem

The Laplacian matrix L of an undirected graph G with n vertices is defined as L = D - A, where D is the n \times n diagonal matrix with the degree of each vertex on the diagonal, and A is the adjacency matrix of G. The entries of L are given by L_{ii} = \deg(i) for the diagonal and L_{ij} = -1 if vertices i and j are adjacent (and 0 otherwise), ensuring that the row sums of L are zero. Kirchhoff's matrix-tree theorem states that the number of spanning trees \kappa(G) in a connected G equals any cofactor of the L; that is, for any index k, \det(L[k \mid k]) = \kappa(G), where L[k \mid k] is the submatrix of L obtained by deleting row k and column k. This holds because all such principal minors are equal due to the structure of L. For example, consider the complete graph K_3 on three vertices, where each vertex has degree 2. The Laplacian matrix is L = \begin{pmatrix} 2 & -1 & -1 \\ -1 & 2 & -1 \\ -1 & -1 & 2 \end{pmatrix}. The cofactor deleting the first row and column is the determinant of \begin{pmatrix} 2 & -1 \\ -1 & 2 \end{pmatrix} = 4 - 1 = 3, which matches the three spanning trees of K_3 (each consisting of two edges). One proof of the theorem relies on expressing L = B B^T, where B is the incidence matrix of G with rows corresponding to vertices and columns to oriented edges. Applying the Cauchy-Binet formula to the determinant of the submatrix L[1 \mid 1] = B{{grok:render&&&type=render_inline_citation&&&citation_id=1&&&citation_type=wikipedia}} (B{{grok:render&&&type=render_inline_citation&&&citation_id=1&&&citation_type=wikipedia}})^T yields a sum over subsets of n-1 edges, where each term corresponds to the square of the determinant of a reduced incidence submatrix; this determinant is \pm 1 precisely when the subset forms a spanning tree and 0 otherwise, so the total is \kappa(G). An alternative interpretation arises from electrical networks, where G models a circuit with unit conductances on edges; the cofactors of L then count spanning trees as the basis for solving Kirchhoff's laws, relating to effective resistances between nodes without specifying flow details. The theorem enables computation of \kappa(G) by evaluating a single (n-1) \times (n-1) , which is efficient for small n using standard linear algebra methods. It also connects to the of L, as \kappa(G) equals the product of the nonzero eigenvalues of L divided by n, though the full derivation involves the .

Counting in General Graphs

One method for counting the number of spanning trees in a general G, denoted \kappa(G), relies on the deletion-contraction recurrence. For a non-bridge edge e in G, the recurrence states that \kappa(G) = \kappa(G - e) + \kappa(G / e), where G - e is the obtained by deleting e and G / e is the obtained by contracting e (merging its endpoints and removing any resulting loops or multiedges). Base cases include: \kappa(G) = 1 if G is a , \kappa(G) = 0 if G is disconnected or contains no edges with more than one vertex, and for a graph consisting of k parallel edges between two vertices, \kappa(G) = k. This recurrence can be applied recursively until base cases are reached, though the naive implementation runs in exponential time due to the . While exact counting of spanning trees is computable in polynomial time for any graph using Kirchhoff's theorem, the deletion-contraction recurrence provides a combinatorial approach that is particularly efficient for graphs with limited structure, avoiding matrix computations. In general graphs, the problem of counting spanning trees lies in P, but enumerating or approximating under certain constraints can be harder. For series-parallel graphs, which admit a recursive decomposition into series and parallel compositions, the number of spanning trees can be computed in polynomial time via dynamic programming that mirrors the decomposition tree, often achieving linear time in the number of edges. For large graphs, asymptotic approximations offer insights into the expected number of spanning trees without exact computation. These often leverage the eigenvalues of the Laplacian to estimate \kappa(G). In particular, for random regular graphs, McKay (1984) provided asymptotic bounds, with later refinements showing that the logarithm of the number per vertex approaches a constant determined by the tree entropy of the limiting infinite regular tree, specifically \lim_{n \to \infty} \frac{1}{n} \log \kappa(G) = \log k - \sum_{m=1}^\infty \frac{p_m}{m}, where p_m relates to the number of closed walks of length m in the universal cover tree. Such approximations are valuable for analyzing ensembles where exact enumeration is infeasible. A simple illustrative example is the C_n on n vertices, where \kappa(C_n) = n. Each spanning tree corresponds to removing exactly one from the cycle, yielding a that connects all vertices without cycles. This result follows directly from the deletion-contraction recurrence applied to the symmetric of the cycle. The number of spanning trees, \kappa(G), functions as a key , quantifying the "treelike " of G and distinguishing non-isomorphic graphs with identical vertex and counts but different spanning tree multiplicities. It correlates with other parameters like and has applications in reliability assessment.

Algorithms

Construction Algorithms

A spanning tree can be constructed using the (DFS) algorithm, which traverses the by exploring as far as possible along each branch before . Starting from an arbitrary , DFS classifies encountered during traversal as tree edges, which connect unvisited vertices and are retained in the spanning tree, or back edges, which connect to already visited vertices and are ignored to avoid cycles. The resulting structure formed by the tree edges and their parent pointers is a spanning tree of the . This algorithm operates in O(|V| + |E|) time, where |V| denotes the number of vertices and |E| the number of edges, as it visits each vertex and edge exactly once. Similarly, the (BFS) algorithm builds a spanning tree by exploring the level by level, starting from a source and using a to manage the frontier of unvisited neighbors. Edges connecting a to its first-discovered unvisited neighbors become tree edges, forming layers that propagate outward; any other edges to visited vertices are classified as cross edges or back edges and discarded. The parent pointers in this BFS tree define paths from the source to all other vertices, and in unweighted graphs, this yields a shortest-path spanning tree. Like DFS, BFS runs in O(|V| + |E|) time due to the single pass over the graph's structure. Another deterministic approach integrates the union-find data structure (also known as disjoint-set union) with path compression and union by rank to build a spanning tree by iteratively considering edges in an arbitrary order. For each edge, the find operation checks if its endpoints belong to different sets (components); if so, the edge is added to the tree and the sets are merged via union, ensuring connectivity without cycles; otherwise, the edge is skipped. This method detects and avoids cycles during edge addition, producing a spanning tree once all vertices are connected in a single set. The time complexity is O(|E| \alpha(|V|)), where \alpha is the slow-growing inverse , but remains nearly linear in practice. For illustration, consider constructing a spanning tree via DFS in a 3x3 grid graph, where represent cells connected horizontally and vertically to adjacent cells. Starting from the top-left corner , DFS might first traverse rightward along the first row to visit all three cells, then down to the second row's rightmost cell, leftward across the second row, down to the third row's leftmost cell, and rightward to complete the traversal, with tree edges forming the path (1,1)-(1,2)-(1,3)-(2,3)-(2,2)-(2,1)-(3,1)-(3,2)-(3,3); back edges, such as from (2,2) to (1,2), are ignored. This zigzag pattern connects all nine without cycles, demonstrating how adjacency order influences the tree shape in structured graphs like grids. The correctness of both DFS- and BFS-based constructions follows from the fact that, in a connected undirected , these traversals visit every exactly once and assign each a unique parent via a discovery edge, forming an acyclic connected that spans all vertices. Randomized variants of these algorithms exist for faster expected running times in sparse or distributed settings.

Optimization for Minimum Spanning Trees

A (MST) of a connected, undirected with weights is a spanning tree that minimizes the sum of the weights of its . This optimization problem arises in scenarios where the goal is to connect all vertices with minimal total cost, such as in network design. computes an MST by all in non-decreasing order of weight and then greedily adding the smallest that does not form a cycle with previously selected . is efficiently handled using a (union-find), which tracks connected components. With union-by-rank and path compression optimizations on the union-find structure, the algorithm runs in O(|E| \log |E|) time, dominated by the step. Prim's algorithm builds an MST by starting from an arbitrary and repeatedly adding the minimum-weight edge that connects a vertex in the growing to one outside it. It maintains a (such as a ) of fringe edges incident to the current , updating keys as the tree expands. Using a for the improves the to O(|E| + |V| \log |V|), though binary heaps yield O(|E| \log |V|). Consider a complete graph K_4 with vertices A, B, C, D and edge weights: AB=1, AC=2, AD=4, BC=3, BD=5, CD=6. Applying :
  • Sort edges: AB(1), AC(2), BC(3), AD(4), BD(5), CD(6).
  • Add AB (connects A and B).
  • Add AC (connects C to \{A,B\}).
  • Add BC (skipped, forms cycle with A-B-C).
  • Add AD (connects D to \{A,B,C\}).
  • The MST edges are AB, AC, AD with total weight 7.
This example illustrates the greedy selection avoiding cycles. If all edge weights are distinct, the MST is unique, as any other spanning tree would include a heavier that could be swapped for a lighter one without disconnecting the . The set of MSTs in a forms the bases of a , enabling greedy optimization. Another related method is , which iteratively contracts components by selecting minimum outgoing edges from each.

Randomized Algorithms

Randomized algorithms for spanning trees leverage probability to efficiently construct or sample them, offering advantages in runtime and applicability to large or dense graphs compared to deterministic approaches. These methods are particularly valuable for approximating properties of spanning trees or generating random instances for , without requiring full enumeration. A key technique involves adapting the contraction process from Karger's min-cut algorithm to generate uniform spanning trees. The procedure starts with the graph and repeatedly selects a uniform random edge from the current , contracts it by merging the endpoints into a single supernode, and removes any resulting self-loops or parallel edges that become loops. This continues until a single supernode remains, at which point the sequence of contracted edges defines a spanning tree of the original graph. This tree is uniformly distributed over all possible spanning trees, with each having equal probability. In the related min-cut variant, which stops at two supernodes, the probability of identifying the is at least \frac{1}{\binom{|V|}{2}}, motivating multiple runs for high-probability success; for uniform spanning tree generation, a single run suffices. The expected runtime for one execution is O(|V|^2) in a basic implementation, improving to O(|V|^2 \log |V|) with repetitions for applications needing reliability, such as cut that aids spanning tree . Uniform spanning tree sampling, where each spanning tree is selected with equal probability, supports methods for tasks like estimating the number of spanning trees via approximations or analyzing connectivity. For instance, in a with n vertices, there are exactly n spanning trees (each a omitting one ), and the contraction method selects each with probability \frac{1}{n}. This probabilistic approach excels in dense graphs, where contraction rapidly reduces complexity, enabling efficient approximation of global properties without exhaustive search. In addition to sampling, randomized methods construct minimum spanning trees in near-linear time. The algorithm by Karger, Klein, and Tarjan samples edges uniformly at random to produce a sparser with O(|V| \log |V|) edges while preserving the MST structure, solves recursively on this subsample, and combines results using a linear-time . This yields an expected of O(|E|), making it suitable for massive graphs. Sampling uniform spanning trees contrasts with exact enumeration by providing statistical estimates, ideal for theoretical studies or when the total number of trees is enormous.

Enumeration Algorithms

Enumeration algorithms for spanning trees aim to generate the complete list of all spanning trees in a given undirected , which is useful for exhaustive analysis in small or structured graphs. One fundamental approach is the method, which systematically builds candidate trees by adding edges while ensuring acyclicity and connectivity. Starting from an empty , edges are added in a predetermined order, such as lexicographical, and at each step, a union-find is employed to detect potential cycles by checking if the endpoints of a candidate edge belong to the same ; if they do, the edge is skipped to prune invalid branches. This process continues until a spanning tree with |V|-1 edges connecting all vertices is formed, at which point it is output, and the search backtracks to explore alternative paths. The method, analyzed for its bounds on search space, efficiently prunes redundant explorations but remains exponential in the worst case due to the potentially large number of trees. A complementary recursive leverages the deletion-contraction recurrence to enumerate all spanning trees. For a connected G with an e, the spanning trees of G are partitioned into those that exclude e (spanning trees of G \ e, the with e deleted) and those that include e (spanning trees of G / e, the with e contracted by merging its endpoints and removing self-loops). proceeds by selecting an edge and branching on deletion and contraction cases, collecting trees at base cases where the is a single or a tree; in the contraction branch, the contracted is added back to each recursive spanning tree. To enhance efficiency, can be applied by caching results for isomorphic subgraphs encountered during , reducing redundant computations in graphs with repeated structures. This approach, rooted in the classical recurrence for spanning tree counts, naturally extends to listing by accumulating the partitions along recursive paths. In general, enumeration algorithms exhibit exponential time complexity due to the output size, as the number of spanning trees κ(G) can grow rapidly (e.g., exponentially with |V| in dense graphs). However, modern methods achieve output-sensitive time bounds of O(κ(G) ⋅ poly(|V| + |E|)), where the polynomial factor accounts for operations like edge processing and structure maintenance per output tree; for instance, one such algorithm constructs a search tree in O(|V| + |E| + κ(G)) time by systematically exchanging edges while avoiding full tree reconstructions. These bounds ensure practicality when κ(G) is small, such as in sparse or planar graphs, and can be informed by upper bounds on κ(G) from counting techniques like Kirchhoff's theorem for quick feasibility checks. A illustration is the K_4 on four vertices, which has exactly 16 spanning trees, all consisting of three forming a . Systematic addition via can enumerate them by considering edges in order (e.g., labeling vertices 1-4 and edges as pairs (i,j) with i<j), starting with no edges and adding non-cycle-forming connections until spanning, yielding trees like (one central vertex connected to the other three) and paths of length three, among others. This example demonstrates how the method scales for tiny graphs but highlights the combinatorial explosion even for small complete graphs. Such finds application in tasks, including the exact of reliability polynomials for , where the sum over all spanning trees contributes to assessing under edge failures by evaluating products of reliability probabilities along each tree.

Applications

Network Design and Routing

In local area networks (LANs), particularly Ethernet environments, the (STP) plays a crucial role in preventing broadcast storms and loops by constructing a loop-free . STP, defined in IEEE Std 802.1D, operates by electing a root among network switches based on the lowest Bridge ID—a composite of bridge priority (default 32768) and —and then building a spanning tree rooted at this bridge, designating ports as root, designated, or blocked to eliminate redundant paths. This process ensures full while blocking forwarding on alternate links, with typical times ranging from 30 to 50 seconds after a topology change, including maximum age (20 seconds), listening (15 seconds), and learning (15 seconds) phases. To address STP's slow reconvergence, the Rapid Spanning Tree Protocol (RSTP), standardized as IEEE 802.1w in , introduces enhancements such as explicit handshaking for port roles (, designated, alternate, ) and faster failure detection, achieving in seconds rather than dozens. RSTP maintains with STP by treating legacy bridges as slow devices while enabling rapid reconfiguration on point-to-point links, often within 0 to 500 milliseconds for link failures. This protocol was later incorporated into IEEE 802.1D-2004, supporting high-availability Ethernet deployments in enterprise and LANs. In wide area IP routing, spanning trees underpin protocols like (OSPF), where link-state routers flood link-state advertisements to build a synchronized database and compute per-destination shortest path trees (SPTs) using , with each router as the root. These SPTs yield routing tables specifying next hops and costs for intra-area, inter-area, and external routes, prioritizing intra-area paths and supporting equal-cost multipath for load balancing. OSPF's incremental updates recompute only affected SPT branches after changes, ensuring quick adaptation in dynamic networks. For optimizing , (MST) approximations are employed in designing low-cost backbone infrastructures, such as in or networks, where construct connected subgraphs minimizing total edge weight while spanning key nodes. For instance, a 4-approximation places additional nodes along MST edges to form fault-tolerant backbones, balancing and resource use in mobile environments. These methods provide efficient heuristics for real-world deployments, avoiding the computational expense of exact solutions.

Electrical Circuits and Analysis

In electrical circuit analysis, spanning trees play a fundamental role in applying Kirchhoff's voltage and current laws to solve for currents and voltages in networks. A spanning tree of the circuit graph defines a set of independent branches (twigs) that connect all s without loops, allowing the formulation of nodal equations based on Kirchhoff's current law at each . The complement of the tree, known as the cotree or links, forms fundamental cycles with the tree branches; these cycles provide a basis for independent loop equations under Kirchhoff's voltage law, ensuring the is neither over- nor under-determined. This tree-cotree decomposition facilitates reduction by selecting tree branch currents or voltages as primary variables, reducing the complexity of solving the full system. For instance, in a linear resistive , providing a combinatorial of electrical properties without enumerating every . Such reductions are essential for analyzing conduction in branched circuits, as originally explored by in his 1847 paper on the linear distribution of galvanic currents, where the count of spanning trees emerged in deriving effective conductances from resistance configurations. In modern circuit simulation, spanning trees underpin techniques like modified (MNA), where a normal tree—excluding capacitors, inductors, voltage sources, and current sources from the cotree—helps construct the augmented nodal admittance for efficient sparse linear solves. This approach, building on graph-theoretic decompositions, enables scalable simulations of large-scale integrated circuits by identifying variables and minimizing fill-in during .

Computational and Theoretical Uses

Spanning trees play a central role in algorithms, particularly through (DFS) and (BFS). A DFS tree is constructed by exploring as far as possible along each branch before , resulting in a spanning tree that captures the connectivity structure of the while enabling checks for overall connectedness. Similarly, a BFS tree is built level by level from a starting , forming a spanning tree that preserves shortest-path distances in unweighted graphs, which is essential for computing distances between vertices or identifying connected components efficiently. In matroid theory, the graphic matroid of a has independent sets corresponding to forests (acyclic subgraphs) and bases consisting of spanning trees, providing an abstract framework for optimization problems like finding minimum-weight bases via the . This structure was introduced by Hassler Whitney in 1935, who formalized matroids through the abstract properties of linear dependence, with graphic matroids exemplifying how spanning trees generalize bases. Theoretically, spanning trees are instrumental in , where they model the emergence of connectivity thresholds in random lattices; for instance, minimal spanning trees on percolation clusters help quantify the fractal dimensions and critical probabilities at which long-range connections form. In theory, particularly Erdős–Rényi models, spanning trees aid in analyzing the giant component's formation, with the number of spanning trees in the supercritical regime growing exponentially to reflect the from disconnected fragments to a dominant connected structure. An illustrative application is the union-find data structure for , which maintains a across connected components and updates it under insertions or deletions to support near-constant-time queries on whether vertices are connected. In , while constructing a is solvable in polynomial time via algorithms like Kruskal's or Prim's, certain restricted variants—such as finding spanning trees with bounded degrees or congestion constraints—are -complete, highlighting spanning trees' role in distinguishing tractable problems from those central to P versus questions.

Variants and Generalizations

In Infinite Graphs

In infinite graphs, the concept of a spanning tree retains its core definition as a connected, acyclic that includes all of the original . However, the infinite nature introduces challenges, particularly regarding connectivity and acyclicity across unbounded vertex sets. To mitigate issues like vertices of infinite leading to potential non-standard cycles or disconnected components at infinity, spanning trees are typically studied in locally finite graphs, where each vertex has finite . This assumption ensures that paths and rays (one-way infinite paths) behave analogously to finite cases while allowing the tree to span the entire infinite vertex set without finite edge counts. A key result in is the existence of spanning trees in connected locally finite graphs. For countable such graphs, a spanning tree can be constructed explicitly via (BFS) from an arbitrary root , layering vertices by distance and selecting tree edges to parents in prior layers, with König's lemma guaranteeing the extension of branches into rays. In the general case, including uncountable locally finite graphs, existence follows from applied to the of finite ordered by inclusion, yielding a maximal tree that spans the due to connectivity. This underscores that infinitude does not preclude tree structures, provided local finiteness holds. Properties of infinite spanning trees differ markedly from their finite counterparts: they necessarily contain infinitely many edges and often include rays, reflecting the graph's unbounded extent. While the original graph's local finiteness implies finite degrees in the spanning tree, the tree as a whole may exhibit infinite branching or paths extending indefinitely in multiple directions. These structures connect to the graph's ends—equivalence classes of rays under finite separation—which a spanning tree can realize through its rays; for instance, normal spanning trees preserve the end topology in the Freudenthal compactification of the graph, providing a combinatorial encoding of connectivity without requiring full topological machinery. An illustrative example is the infinite graph \mathbb{Z}^2, with vertices at integer coordinates and edges between points at distance 1. Starting BFS from the (0,0), vertices are partitioned into layers L_k = \{(x,y) \mid |x| + |y| = k\} for k = 0,1,2,\dots, and each vertex in L_k (for k \geq 1) connects to a chosen parent in L_{k-1}, such as the one minimizing a on coordinates to ensure acyclicity. This BFS tree spans all of \mathbb{Z}^2, features rays emanating outward (e.g., along axes), and captures the 's single end, demonstrating how constructive methods yield infinite trees with controlled structure.

In Directed Graphs

In directed graphs, the analog of a spanning tree is known as a spanning arborescence, also called a branching, which is a rooted directed acyclic that includes all of the graph and provides a unique directed path from the to every other . This structure ensures that the underlying undirected graph is a , but with all edges oriented away from the , forming an out-tree. Key properties of a spanning arborescence rooted at r include having exactly |V| - 1 edges, where |V| is the number of vertices, and being both connected and acyclic in the directed sense. The r has in-degree 0, while every other has in-degree exactly 1; leaves are vertices with out-degree 0. Such an arborescence exists the is weakly connected and there is a from the r to every other . The number of spanning arborescences rooted at a specific in a can be determined using the directed matrix-tree theorem, a generalization of Kirchhoff's matrix-tree theorem that employs the (or its variants, such as the signless Laplacian for certain cases). This theorem states that the count equals the of any cofactor of the directed Laplacian, where the Laplacian's off-diagonal entries reflect the directed edge weights or adjacencies. Related results, such as the BEST theorem, connect this count to the of Eulerian circuits by factoring in arborescence numbers alongside degree-based terms. A concrete example arises in tournament graphs, which are complete directed graphs with exactly one directed edge between every pair of . In such graphs, a —starting at a vertex and directing edges sequentially to visit all vertices exactly once—forms a spanning arborescence rooted at its initial vertex, as it provides unique paths from the root to all others with no cycles. By Rédei's theorem, every contains at least one Hamiltonian path, guaranteeing the existence of such a structure. Spanning arborescences find applications in flow networks, particularly for constructing minimum-cost structures that model efficient distribution from a , such as in communication or transportation systems. Edmonds' algorithm, developed in the 1960s, solves the minimum-cost spanning arborescence problem by iteratively contracting cycles in a greedy selection of incoming edges and resolving them through weight adjustments, running in time. This approach extends to broader optimization in directed networks where directionality enforces flow constraints.

In Multigraphs

In multigraphs, which allow multiple edges between the same pair of vertices, a spanning tree is defined as a that is a and includes all vertices of the , selecting at most one edge between any pair of vertices to maintain acyclicity and . This extension from simple graphs preserves the core requirement of exactly n-1 edges for n vertices, but the presence of parallel edges increases the total number of possible spanning trees by providing multiple choices for inclusion in the tree. Kirchhoff's matrix-tree theorem applies directly to multigraphs for counting spanning trees, with the Laplacian matrix incorporating edge multiplicities: the diagonal entries reflect the sum of incident edges (counting parallels), and off-diagonal entries are the negative of the number of edges between vertices. Any cofactor of this Laplacian equals the number of spanning trees, accounting for the combinatorial choices among parallel edges without modification to the theorem's statement. Key properties of spanning trees in multigraphs include the formation of fundamental cycles, which arise by adding a non-tree to the tree; parallel edges specifically yield cycles of length 2 when one is in the tree and the other is added. of an edge in recursive preserves the , potentially introducing new parallel edges between the merged and others, which are handled by summing the spanning trees of the deleted and contracted graphs. For example, consider a with vertices u, v, w, two parallel edges between u and v, and single edges u-w and v-w. The spanning trees are: either of the two u-v edges paired with u-w (two options), either u-v edge paired with v-w (two more), or the pair u-w and v-w (one option), totaling five spanning trees. In pseudographs, which permit loops alongside multiple edges, loops are ignored in spanning trees since they connect a single and cannot contribute to inter-vertex without creating cycles.

References

  1. [1]
    [PDF] Lecture 10: Trees and spanning trees - Faculty Web Pages
    Sep 12, 2024 · A spanning tree of a graph G is a subgraph T which is a tree and satisfies V (T) = V (G): T includes all the vertices of G.
  2. [2]
    [PDF] Lecture 25 Notes Spanning Trees
    A spanning tree for a connected graph G is a tree containing all the vertices of G and a subset of the edges of G.
  3. [3]
    5.5 Trees - Graph Theory
    In general, spanning trees are not unique, that is, a graph may have many spanning trees. It is possible for some edges to be in every spanning tree even if ...
  4. [4]
    [PDF] Matrix-Tree Theorem for Directed Graphs - UChicago Math
    Aug 31, 2010 · In 1847, Kirchhoff found a way to count how many subgraphs of a connected undirected graph are trees[3], and a more modern proof can be found in ...
  5. [5]
    [PDF] The spanning tree spectrum: improved bounds ... - Math (Princeton)
    via Kirchoff's matrix tree theorem [13] from 1847. The notion has a long history dating back to 1860 and the first proof of. Cayley's formula [4]. It can ...
  6. [6]
    [PDF] On the history of the minimum spanning tree problem. - UCSD Math
    It is standard practice among authors discussing the minimum spanning tree problem to refer to the work of Kruskal (1956) and Prim (1957) as the sources of the ...
  7. [7]
    How Engineers at Digital Equipment Corp. Saved Ethernet
    Apr 7, 2024 · Radia Perlman, an architect in Tony's group, provided the clear winner: the spanning tree protocol. In Perlman's approach, the bridges ...
  8. [8]
    6. Spanning Trees and Arborescences
    It is also among the combinatorial optimization problems with the longest history; the first algorithm was given by Boruvka [1926a,1926b]; see Nešetril, Milková ...
  9. [9]
    18.1 Networks and Minimal Spanning Trees
    A spanning tree for a graph is a subgraph which is a tree and which connects every vertex of the original graph. 🔗. So, when given a graph, we will find a ...
  10. [10]
    [PDF] The Mathematics of Networks (Chapter 7) - Jeremy Martin
    In a network with N vertices, how many edges does a spanning tree have? In a network with N vertices, every spanning tree has exactly N − 1 edges. Must every ...
  11. [11]
    [PDF] Precept 8 - cs.Princeton
    1. is acyclic and connected;. 2. is maximal among all -vertex acyclic graphs (i.e., adding an edge creates a cycle);. 3. is minimal among all -vertex ...
  12. [12]
    [PDF] Lecture Notes for CSCI 311: Algorithms Set 17-Minimum Spanning ...
    Exercise: How may edges does a spanning tree have? ... Output: A minimum spanning tree (MST) of G. ... Third, removing an edge disconnects a tree, so T ...
  13. [13]
    [PDF] Counting the number of spanning trees in a graph
    Apr 29, 2010 · Given a connected undirected graph G = (V,E), a spanning tree is a subgraph. H ⊆ G such that H is a tree over the entire vertex set of G.
  14. [14]
    Minimum Spanning Trees (MST)
    Spanning tree characteristics: If a graph has n vertices, any spanning tree connects all vertices with exactly n-1 edges. A spanning tree contains no cycles; ...<|separator|>
  15. [15]
    [PDF] Tree Graphs and Orthogonal Spanning Tree Decompositions
    Then in (2) we see the four spanning trees of C4 with dashed edges. In (3), we view these four trees as four vertices in a graph with the edge exchange ...
  16. [16]
    [PDF] Lecture 11: Trees and forests 1 Counting edges in trees
    A tree is an acyclic, connected graph. A tree with n vertices has at most n-1 edges. A forest is a graph whose components are all trees.
  17. [17]
    [PDF] GRAPH THEORY WITH APPLICATIONS
    This book is intended as an introduction to graph theory. Our aim has been to present what we consider to be the basic material, together with a wide.
  18. [18]
    [PDF] Graph Theory
    Dec 21, 2022 · A maximal acyclic subgraph of a connected graph is a spanning tree, and a maximal acyclic subgraph of a graph is a spanning forest (consisting ...
  19. [19]
    Cotree -- from Wolfram MathWorld
    The cotree T^* of a spanning tree T in a connected graph G is the spacing subgraph of G containing exactly those edges of G which are not in T.Missing: forest | Show results with:forest
  20. [20]
  21. [21]
    Ueber die Auflösung der Gleichungen, auf welche man bei der ...
    Ueber die Auflösung der Gleichungen, auf welche man bei der Untersuchung der linearen Vertheilung galvanischer Ströme geführt wird. G. Kirchhoff, ... Download PDF.
  22. [22]
    [PDF] ALL CUTSETS IN A GRAPH
    Fundamental CutSets:​​ Consider a spanning tree T of a connected graph G. Take any branch b in T. Since {b} is a cut-set in T, {b} partitions all vertices of T ...
  23. [23]
  24. [24]
    [PDF] Minimum Fundamental Cut Basis Problem - kluedo
    The cut space of a graph with n vertices has dimension n − 1. As the fundamental cuts corresponding to a spanning tree of a graph form a basis of the cut ...
  25. [25]
    [PDF] GRAPH THEORY - CSE IIT KGP
    Therefore, every spanning tree defines a unique fundamental set of cut sets for G. ... spanning tree T and an associated fundamental cut set. The fundamental cut ...
  26. [26]
    [PDF] Chapter 12. The Cycle Space and Bond Space of J. A. Bondy and ...
    Dec 22, 2022 · Theorem 12.1. Let M be the incidence matrix of a digraph D. Then B is the row space of M and C is its orthogonal complement.Missing: cutsets | Show results with:cutsets
  27. [27]
    Trees - Discrete Mathematics - An Open Introduction
    A forest is a graph containing no cycles. Note that this means that a connected forest is a tree.
  28. [28]
    None
    ### Summary of Spanning Tree Properties
  29. [29]
    [PDF] Graph Theory and Cayley's Formula - UChicago Math
    Aug 10, 2006 · A complete graph on n vertices is a graph such that vi ∼ vj ∀i 6= j. In other words, every vertex is adjacent to every other vertex. Example: in ...
  30. [30]
    [PDF] Lecture 6 1 The Matrix-Tree Theorem
    Sep 8, 2016 · where the second equation follows by the Cauchy-Binet formula, and the third by. Lemma 2. D. We can now turn to the proof of the lemma. Proof of ...
  31. [31]
    [PDF] Electrical Networks - A Graph Theoretical Approach
    Apr 8, 2009 · In particular, we will use graph theoretical interpretations of resis- tance, conductance, current, voltage and view Kirchhoff's laws in light ...
  32. [32]
    The deletion-contraction method for counting the number of ...
    Oct 28, 2015 · In this paper we will be concerned with some combinatorial methods that enable us to determine the number of spanning trees of a graph.Missing: recurrence | Show results with:recurrence
  33. [33]
    [PDF] Complexity of counting - cs.Princeton
    To give an example, the number of spanning trees in a graph can be counted by means of a simple determinant computation. Results in this chapter will show ...
  34. [34]
    [PDF] SPANNING TREES--SHORT OR SMALL*
    Examples of decomposable graphs include trees, series-parallel graphs, and bounded- bandwidth graphs [8]. Let F be any class ofdecomposable graphs. The kMST ...
  35. [35]
    [PDF] Spanning Trees in Regular Graphs
    McKay, Spanning trees in random regular graphs, in Proceedings of the Third Caribbean Conference on. Combinatoricsand Computing, Barbados, 1981 (C. C. Cadogan, ...Missing: formula | Show results with:formula
  36. [36]
    [PDF] Asymptotic Enumeration of Spanning Trees - Russell Lyons
    Abstract. We give new general formulas for the asymptotics of the number of spanning trees of a large graph. A special case answers a question of. McKay ...
  37. [37]
    [PDF] Counting Spanning Trees∗
    This book provides a comprehensive introduction to the modern study of spanning trees. A span- ning tree for a graph G is a subgraph of G that is a tree and ...
  38. [38]
    DFS tree construction: Algorithms and characterizations - SpringerLink
    Every application of the DFS involves, beside traversing the graph, constructing a special structured tree, called a DFS tree.
  39. [39]
    [PDF] 4.1 Tree Growing 4.2 Depth-First and Breadth-First Search 4.3 ...
    Abstract. Several different problem-solving algorithms involve growing a spanning tree, one edge and one vertex at a time. All these techniques are ...
  40. [40]
    BFS and DFS - UC Irvine
    For BFS in directed graphs, each edge of the graph either connects two vertices at the same level, goes down exactly one level, or goes up any number of levels.
  41. [41]
    [PDF] Union-Find
    Here is another algorithm for finding minimum spanning trees called Kruskal's algorithm. It is also greedy but works in a different way. Kruskal's Algorithm:.
  42. [42]
    [PDF] CSE 250: Graphs and Depth-First Search - University at Buffalo
    Oct 16, 2023 · The DFS algorithm is like our stack-based maze solver. Mark each grid square with VISITED. Mark each path with SPANNING. Only visit each vertex ...
  43. [43]
    [PDF] CSE 101
    A spanning tree of an undirected graph G=(V,E) is a subgraph G'=(V,E') such that G' is a tree and all vertices in V are connected. An output tree of DFS or BFS ...
  44. [44]
    Near Optimal Parallel Algorithms for Dynamic DFS in Undirected ...
    Depth first search (DFS) tree is a fundamental data structure for solving various graph problems. The classical algorithm [SIAMCOMP74] for building a DFS tree ...
  45. [45]
  46. [46]
    [PDF] Shortest Connection Networks And Some Generalizations
    A shortest connection network connects terminals with the smallest possible total link length, using direct links between them.
  47. [47]
    [PDF] Minimum Spanning Trees
    Kruskal was motivated by “a typewritten translation (of obscure origin)” of Borvka's original paper that had been “floating around” the Princeton math.
  48. [48]
    [PDF] A randomized linear-time algorithm to find minimum spanning trees
    In this paper, we describe a randomized algorithm for finding a minimum spanning tree. It runs in O(m) time with high probability in the restricted random- ...
  49. [49]
    Algorithms for Enumerating All Spanning Trees of Undirected and ...
    In this paper, we present algorithms for enumeration of spanning trees in undirected graphs, with and without weights.
  50. [50]
    Understand Rapid Spanning Tree Protocol (802.1w) - Cisco
    Feb 9, 2023 · RSTP (IEEE 802.1w) natively includes most of the Cisco proprietary enhancements to the 802.1D spanning tree, such as BackboneFast, UplinkFast, and PortFast.
  51. [51]
    802.1w - Rapid Reconfiguration of Spanning Tree - IEEE 802
    Jul 26, 2006 · This supplement to ISO/IEC 15802-3:1998 (IEEE Std 802.1D-1998) defines the changes necessary to the operation of a MAC Bridge in order to provide rapid ...
  52. [52]
  53. [53]
  54. [54]
  55. [55]
    An efficient algorithm for generalized minimum spanning tree problem
    The generalized minimum spanning tree (GMST) problem occurs in telecommunications network planning, where a network of node clusters needs to be connected ...
  56. [56]
    Construction and Maintenance of Wireless Mobile Backbone Networks
    Feb 19, 2009 · In [19] a 4-approximation algorithm that places nodes along edges of the Minimum Spanning Tree (MST) which connects the Cover MBNs was proposed.
  57. [57]
    [PDF] Circuit Theory - OU School of Computer Science
    Tree: A tree is a graph that is connected and has no circuits. Spanning tree: Consider a connected graph G, A subgraph of G is a spanning tree of G if the ...
  58. [58]
    [PDF] Random walks and electric networks - Dartmouth Mathematics
    The connection between random walks and electric networks has been recognized for some time (see Kakutani [12], Kemeny, Snell, and. Knapp [14], and Kelly [13]).
  59. [59]
    [PDF] Combinatorics of Electrical Networks - University of Waterloo
    We denote by κ(G) the number of spanning trees of G, sometimes called the complexity of. G. In this section we derive an easily computable formula for κ(G), and ...<|separator|>
  60. [60]
    Augmented nodal matrices and normal trees - ScienceDirect.com
    Jan 6, 2010 · Augmented nodal matrices play an important role in the analysis of different features of electrical circuit models.
  61. [61]
    [PDF] Recent Advances in Fully Dynamic Graph Algorithms - arXiv
    Apart from connectivity or reachability, BFS and DFS trees can be used to answer a variety of problems on graphs, such as testing bipartiteness, shortest paths ...
  62. [62]
    [PDF] Briefly, what is a matroid? - LSU Math
    Abstract. Matroids were introduced in 1935 by Whitney and Nakasawa in- dependently. These notes are intended to provide a brief introduction to the.
  63. [63]
    [PDF] On the Abstract Properties of Linear Dependence - GRAAL
    Author(s): Hassler Whitney. Source: American Journal of Mathematics, Vol. 57, No. 3 (Jul., 1935), pp. 509-533. Published by: The Johns Hopkins University ...
  64. [64]
    [PDF] Percolation Thresholds for Robust Network Connectivity - arXiv
    Jun 25, 2020 · In this paper, we explore new percolation thresholds that guarantee not only spanning network connectivity, but also robustness. We define ...
  65. [65]
    Growth of the Number of Spanning Trees of the Erdös-Rényi Giant ...
    Nov 12, 2007 · Growth of the Number of Spanning Trees of the Erdös-Rényi Giant Component. Authors:Russell Lyons, Ron Peled, Oded Schramm.
  66. [66]
    [PDF] Dynamic Spanning Trees for Connectivity Queries on Fully-dynamic ...
    ABSTRACT. Answering connectivity queries is fundamental to fully dynamic graphs where edges and vertices are inserted and deleted frequently.
  67. [67]
    The complexity of restricted spanning tree problems
    On two restricted ancestors tree problems​​ We consider rooted minimum spanning tree problems subject to allowed ancestor relations which follow from network ...
  68. [68]
    [PDF] Infinite Graphs
    Proposition 8.1.1. Every connected graph contains a spanning tree. First proof (by Zorn's lemma). Given a connected graph G, consider the ...
  69. [69]
    [PDF] On End-faithful Spanning Trees in Infinite Graphs
    For example, the 2-way infinite ladder has two ends, the infinite grid. Z×Z and every infinite complete graph have one end, and the dyadic tree has 2ℵ0 ends.Missing: BFS | Show results with:BFS
  70. [70]
    6. Spanning Trees and Arborescences
    Task: Find a minimum weight spanning arborescence rooted at r in G or decide that none exists. As for the undirected case, these three problems are equivalent:.
  71. [71]
    [PDF] 2 Arborescences: Directed Spanning Trees
    Our approach will be to give a linear program that models min-weight arborescences, use the algorithm above to write a feasible solution to the primal, and then ...
  72. [72]
    An Elementary Proof of a Matrix Tree Theorem for Directed Graphs
    We present an elementary proof of a generalization of Kirchhoff's matrix tree theorem to directed, weighted graphs.Missing: original | Show results with:original
  73. [73]
    [PDF] BEST Theorem - Graduate School of Mathematics, Nagoya University
    Jun 5, 2024 · We can construct d Eulerian tours 𝜏 ∈ TT from an anti-arborescence T, and different anti-arborescences cannot generate the same Eulerian tour.
  74. [74]
    [PDF] Fixing a Tournament
    However, binomial spanning arborescences are also similar to Hamiltonian paths, in that both structures always exist in a tournament graph. A Hamiltonian path ...
  75. [75]
    [PDF] The Tournament Theorem of Rédei revisited - arXiv
    Oct 12, 2025 · Abstract. In 1934 L. Rédei published his famous theorem that the number of Hamiltonian paths in a tournament is odd.Missing: original | Show results with:original
  76. [76]
    [PDF] Optimum branchings
    An arborescence T is a tree whose edges are directed so that each is directed toward a different node. Exactly one node of T, called the root, ...
  77. [77]
    [PDF] Definition. A tree is a connected graph with no cycles. Examples.
    Note that rows and columns sum to 0, and hence det A=0. Theorem (Kirchhoff's Matrix Tree Theorem). Let be a multigraph, let L be its Laplacian matrix, let H ∈.<|control11|><|separator|>
  78. [78]
    Fundamental Cycle -- from Wolfram MathWorld
    A fundamental cycle is a cycle consisting of one edge of a graph minus its spanning tree, plus the unique path in the tree. There is one for each non-spanning ...