Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Spanning tree
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Tree which includes all vertices of a graph}} {{About||the network protocol|Spanning Tree Protocol|other uses|}} {{CS1 config|mode=cs2}} [[File:4x4 grid spanning tree.svg|thumb|A spanning tree (blue heavy edges) of a [[grid graph]]]] In the [[mathematics|mathematical]] field of [[graph theory]], a '''spanning tree''' ''T'' of an [[undirected graph]] ''G'' is a subgraph that is a [[tree (graph theory)|tree]] which includes all of the [[Vertex (graph theory)|vertices]] of ''G''.<ref name="NetworkX 2.6.2 documentation">{{citation | title=Tree | website=NetworkX 2.6.2 documentation | url=https://networkx.org/documentation/stable/reference/algorithms/tree.html | access-date=2021-12-10 | quote=For trees and arborescence, the adjective “spanning” may be added to designate that the graph, when considered as a forest/branching, consists of a single tree/arborescence that includes all nodes in the graph. }}</ref> In general, a graph may have several spanning trees, but a graph that is not [[connected graph|connected]] will not contain a spanning tree (see about [[#Spanning forests|spanning forests]] below). If all of the [[edge (graph theory)|edges]] of ''G'' are also edges of a spanning tree ''T'' of ''G'', then ''G'' is a tree and is identical to ''T'' (that is, a tree has a unique spanning tree and it is itself). ==Applications== Several [[pathfinding]] algorithms, including [[Dijkstra's algorithm]] and the [[A* search algorithm]], internally build a spanning tree as an intermediate step in solving the problem. In order to minimize the cost of power networks, wiring connections, piping, automatic speech recognition, etc., people often use algorithms that gradually build a spanning tree (or many such trees) as intermediate steps in the process of finding the [[minimum spanning tree]].<ref>{{citation|first1=R. L.|last1=Graham|first2=Pavol|last2=Hell|url=http://www.math.ucsd.edu/~ronspubs/85_07_minimum_spanning_tree.pdf|title=On the History of the Minimum Spanning Tree Problem|date=1985}}</ref> The Internet and many other [[telecommunications network]]s have transmission links that connect nodes together in a [[mesh topology]] that includes some loops. In order to avoid [[bridge loop]]s and [[routing loop]]s, many routing protocols designed for such networks—including the [[Spanning Tree Protocol]], [[Open Shortest Path First]], [[Link-state routing protocol]], [[Augmented tree-based routing]], etc.—require each router to remember a spanning tree.<ref name="https://en.wikipedia.org/w/index.php?title=Spanning_tree&action=edit#">{{citation|last1=Borg |first1=Anita |title=Folklore of Network Protocol Design |url=https://www.youtube.com/watch?v=CcmfS8Ue7G4 |website=YouTube |date=5 September 2016 |publisher=Microsoft Research |access-date=13 May 2022}}</ref> A special kind of spanning tree, the [[Xuong tree]], is used in [[topological graph theory]] to find [[graph embedding]]s with maximum [[genus (mathematics)|genus]]. A Xuong tree is a spanning tree such that, in the remaining graph, the number of connected components with an odd number of edges is as small as possible. A Xuong tree and an associated maximum-genus embedding can be found in [[polynomial time]].<ref>{{citation | last1 = Beineke | first1 = Lowell W. | author1-link = L. W. Beineke | last2 = Wilson | first2 = Robin J. | author2-link = Robin Wilson (mathematician) | doi = 10.1017/CBO9781139087223 | isbn = 978-0-521-80230-7 | mr = 2581536 | page = 36 | publisher = Cambridge University Press, Cambridge | series = Encyclopedia of Mathematics and its Applications | title = Topics in topological graph theory | volume = 128 | year = 2009}}</ref> ==Definitions== A tree is a [[connected graph|connected]] [[undirected graph]] with no [[cycle (graph theory)|cycles]]. It is a spanning tree of a graph ''G'' if it spans ''G'' (that is, it includes every vertex of ''G'') and is a subgraph of ''G'' (every edge in the tree belongs to ''G''). A spanning tree of a connected graph ''G'' can also be defined as a maximal set of edges of ''G'' that contains no cycle, or as a minimal set of edges that connect all vertices. ===Fundamental cycles=== Adding just one edge to a spanning tree will create a cycle; such a cycle is called a '''fundamental cycle''' with respect to that tree. There is a distinct fundamental cycle for each edge not in the spanning tree; thus, there is a one-to-one correspondence between fundamental cycles and edges not in the spanning tree. For a connected graph with ''V'' vertices, any spanning tree will have ''V'' − 1 edges, and thus, a graph of ''E'' edges and one of its spanning trees will have ''E'' − ''V'' + 1 fundamental cycles (The number of edges subtracted by number of edges included in a spanning tree; giving the number of edges not included in the spanning tree). For any given spanning tree the set of all ''E'' − ''V'' + 1 fundamental cycles forms a [[cycle basis]], i.e., a basis for the [[cycle space]].<ref>{{harvtxt|Kocay|Kreher|2004}}, pp. 65–67.</ref> ===Fundamental cutsets=== Dual to the notion of a fundamental cycle is the notion of a '''fundamental cutset''' with respect to a given spanning tree. By deleting just one edge of the spanning tree, the vertices are partitioned into two disjoint sets. The fundamental cutset is defined as the set of edges that must be removed from the graph ''G'' to accomplish the same partition. Thus, each spanning tree defines a set of ''V'' − 1 fundamental cutsets, one for each edge of the spanning tree.<ref>{{harvtxt|Kocay|Kreher|2004}}, pp. 67–69.</ref> The duality between fundamental cutsets and fundamental cycles is established by noting that cycle edges not in the spanning tree can only appear in the cutsets of the other edges in the cycle; and ''vice versa'': edges in a cutset can only appear in those cycles containing the edge corresponding to the cutset. This duality can also be expressed using the theory of [[matroid]]s, according to which a spanning tree is a base of the [[graphic matroid]], a fundamental cycle is the unique circuit within the set formed by adding one element to the base, and fundamental cutsets are defined in the same way from the [[dual matroid]].<ref>{{citation |title=Matroid Theory |volume=3 |series=Oxford [[Graduate Texts in Mathematics]] |first=J. G. |last=Oxley |author-link=James Oxley |publisher=Oxford University Press |year=2006 |isbn=978-0-19-920250-8 |page=141 |url=https://books.google.com/books?id=puKta1Hdz-8C&pg=PA141}}.</ref> ===Spanning forests=== A collection of disjoint (unconnected) trees is described as a ''[[Forest (graph theory) | forest]]''. A ''spanning forest'' in a graph is a subgraph that is a forest with an additional requirement. There are two incompatible requirements in use, of which one is relatively rare. * Almost all graph theory books and articles define a spanning forest as a forest that spans all of the vertices, meaning only that each vertex of the graph is a vertex in the forest. A connected graph may have a disconnected spanning forest, such as the forest with no edges, in which each vertex forms a single-vertex tree.<ref name="pearls">{{citation |title=Pearls in Graph Theory: A Comprehensive Introduction|title-link= Pearls in Graph Theory |last1=Hartsfield |first1=Nora |last2=Ringel |first2=Gerhard |author2-link=Gerhard Ringel |publisher=Courier Dover Publications |year=2003 |isbn=978-0-486-43232-8 |at=[https://books.google.com/books?id=R6pq0fbQG0QC&pg=PA100 p. 100]}}.</ref><ref>{{citation |title=Combinatorics: Topics, Techniques, Algorithms |first=Peter J. |last=Cameron |author-link=Peter Cameron (mathematician) |publisher=Cambridge University Press |year=1994 |isbn=978-0-521-45761-3 |page=163 |url=https://books.google.com/books?id=_aJIKWcifDwC&pg=PA163}}.</ref> * A few graph theory authors define a spanning forest to be a maximal acyclic subgraph of the given graph, or equivalently a subgraph consisting of a spanning tree in each [[Connected component (graph theory)|connected component]] of the graph.<ref>{{citation |title=Modern Graph Theory |volume=184 |series=Graduate Texts in Mathematics |first=Béla |last=Bollobás |author-link=Béla Bollobás |publisher=Springer |year=1998 |isbn=978-0-387-98488-9 |page=350 |url=https://books.google.com/books?id=SbZKSZ-1qrwC&pg=PA350}}; {{citation |title=LEDA: A Platform for Combinatorial and Geometric Computing |first=Kurt |last=Mehlhorn |author-link=Kurt Mehlhorn |publisher=Cambridge University Press |year=1999 |isbn=978-0-521-56329-1 |page=260 |url=https://books.google.com/books?id=Q2aXZl3fgvMC&pg=PA260}}.</ref> To avoid confusion between these two definitions, {{harvtxt|Gross|Yellen|2005}} suggest the term "full spanning forest" for a spanning forest with the same number of components as the given graph (i.e., a maximal forest), while {{harvtxt|Bondy|Murty|2008}} instead call this kind of forest a "maximal spanning forest" (which is redundant, as a maximal forest necessarily contains every vertex).<ref>{{citation |title=Graph Theory and Its Applications |edition=2nd |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |publisher=CRC Press |year=2005 |isbn=978-1-58488-505-4 |page=168 |url=https://books.google.com/books?id=-7Q_POGh-2cC&pg=PA168}}; {{citation |title=Graph Theory |volume=244 |series=Graduate Texts in Mathematics |first1=J. A. |last1=Bondy |first2=U. S. R. |last2=Murty |publisher=Springer |year=2008 |isbn=978-1-84628-970-5 |page=578 |url=https://books.google.com/books?id=V0gUTxkOSboC&pg=PA578}}.</ref> ==Counting spanning trees== [[File:Cayley's formula 2-4.svg|thumb|[[Cayley's formula]] counts the number of spanning trees on a complete graph. There are <math>2^{2-2}=1</math> trees in <math>K_2</math>, <math>3^{3-2}=3</math> trees in <math>K_3</math>, and <math>4^{4-2}=16</math> trees in <math>K_4</math>.]] The number ''t''(''G'') of spanning trees of a connected graph is a well-studied [[invariant (mathematics)|invariant]]. ===In specific graphs=== In some cases, it is easy to calculate ''t''(''G'') directly: * If ''G'' is itself a tree, then {{math|1=''t''(''G'') = 1}}. * When ''G'' is the [[cycle graph]] ''C<sub>n</sub>'' with ''n'' vertices, then {{math|1=''t''(''G'') = ''n''}}. * For a [[complete graph]] with ''n'' vertices, [[Cayley's formula]]<ref>{{citation | last1 = Aigner | first1 = Martin | author1-link = Martin Aigner | last2 = Ziegler | first2 = Günter M. | author2-link = Günter M. Ziegler | pages = 141–146 | publisher = [[Springer-Verlag]] | title = Proofs from THE BOOK | year = 1998| title-link = Proofs from THE BOOK }}.</ref> gives the number of spanning trees as {{math|1=''n''<sup>''n'' − 2</sup>}}. * If ''G'' is the [[complete bipartite graph]] <math>K_{p,q}</math>,then <math>t(G)=p^{q-1}q^{p-1}</math>.<ref name="pearls" /> * For the ''n''-dimensional [[hypercube graph]] <math>Q_n</math>,<ref>{{citation | last1 = Harary | first1 = Frank | author1-link = Frank Harary | last2 = Hayes | first2 = John P. | last3 = Wu | first3 = Horng-Jyh | doi = 10.1016/0898-1221(88)90213-1 | issue = 4 | journal = Computers & Mathematics with Applications | mr = 949280 | pages = 277–289 | title = A survey of the theory of hypercube graphs | volume = 15 | year = 1988| hdl = 2027.42/27522 | hdl-access = free }}.</ref> the number of spanning trees is <math>t(G)=2^{2^n-n-1}\prod_{k=2}^n k^{{n\choose k}}</math>. ===In arbitrary graphs=== {{main|Kirchhoff's theorem}} More generally, for any graph ''G'', the number ''t''(''G'') can be calculated in [[polynomial time]] as the [[determinant]] of a [[matrix (mathematics)|matrix]] derived from the graph, using [[Kirchhoff's theorem|Kirchhoff's matrix-tree theorem]].<ref>{{citation |title=Graphs, Algorithms, and Optimization |series=Discrete Mathematics and Its Applications |first1=William |last1=Kocay |first2=Donald L. |last2=Kreher |publisher=CRC Press |year=2004 |isbn=978-0-203-48905-5 |pages=111–116 |contribution=5.8 The matrix-tree theorem |url=https://books.google.com/books?id=zxSmHAoMiRUC&pg=PA111}}.</ref> Specifically, to compute ''t''(''G''), one constructs the [[Laplacian matrix]] of the graph, a square matrix in which the rows and columns are both indexed by the vertices of ''G''. The entry in row ''i'' and column ''j'' is one of three values: * The degree of vertex ''i'', if ''i'' = ''j'', * −1, if vertices ''i'' and ''j'' are adjacent, or * 0, if vertices ''i'' and ''j'' are different from each other but not adjacent. The resulting matrix is [[singular matrix|singular]], so its determinant is zero. However, deleting the row and column for an arbitrarily chosen vertex leads to a smaller matrix whose determinant is exactly ''t''(''G''). ===Deletion-contraction=== If ''G'' is a graph or [[multigraph]] and ''e'' is an arbitrary edge of ''G'', then the number ''t''(''G'') of spanning trees of ''G'' satisfies the ''deletion-contraction recurrence'' ''t''(''G'') = ''t''(''G'' − ''e'') + ''t''(''G''/''e''), where ''G'' − ''e'' is the multigraph obtained by deleting ''e'' and ''G''/''e'' is the [[Edge contraction|contraction]] of ''G'' by ''e''.<ref>{{harvtxt|Kocay|Kreher|2004}}, p. 109.</ref> The term ''t''(''G'' − ''e'') in this formula counts the spanning trees of ''G'' that do not use edge ''e'', and the term ''t''(''G''/''e'') counts the spanning trees of ''G'' that use ''e''. In this formula, if the given graph ''G'' is a [[multigraph]], or if a contraction causes two vertices to be connected to each other by multiple edges, then the redundant edges should not be removed, as that would lead to the wrong total. For instance a [[bond graph]] connecting two vertices by ''k'' edges has ''k'' different spanning trees, each consisting of a single one of these edges. ===Tutte polynomial=== {{main|Tutte polynomial}} The [[Tutte polynomial]] of a graph can be defined as a sum, over the spanning trees of the graph, of terms computed from the "internal activity" and "external activity" of the tree. Its value at the arguments (1,1) is the number of spanning trees or, in a disconnected graph, the number of maximal spanning forests.<ref>{{harvtxt|Bollobás|1998}}, p. 351.</ref> The Tutte polynomial can also be computed using a deletion-contraction recurrence, but its [[Computational complexity theory|computational complexity]] is high: for many values of its arguments, computing it exactly is [[Sharp-P-complete|#P-complete]], and it is also hard to approximate with a guaranteed [[approximation ratio]]. The point (1,1), at which it can be evaluated using Kirchhoff's theorem, is one of the few exceptions.<ref>{{Citation |last1=Goldberg | first1= L.A. | author1-link = Leslie Ann Goldberg |last2=Jerrum | first2= M. |author2-link=Mark Jerrum |title= Inapproximability of the Tutte polynomial |journal=Information and Computation | doi=10.1016/j.ic.2008.04.003 |year=2008 |volume=206 |pages=908–929 |issue=7 |arxiv=cs/0605140 }}; {{Citation | last1= Jaeger |first1= F. |last2= Vertigan | first2= D. L. |last3= Welsh | first3 =D. J. A.|author-link3=Dominic Welsh | title= On the computational complexity of the Jones and Tutte polynomials |journal=Mathematical Proceedings of the Cambridge Philosophical Society | volume= 108|pages = 35–53 | doi= 10.1017/S0305004100068936 | year= 1990 |issue= 1 |bibcode= 1990MPCPS.108...35J }}.</ref> ==Algorithms== ===Construction=== A single spanning tree of a graph can be found in [[linear time]] by either [[depth-first search]] or [[breadth-first search]]. Both of these algorithms explore the given graph, starting from an arbitrary vertex ''v'', by looping through the neighbors of the vertices they discover and adding each unexplored neighbor to a data structure to be explored later. They differ in whether this data structure is a [[Stack (abstract data type)|stack]] (in the case of depth-first search) or a [[Queue (abstract data type)|queue]] (in the case of breadth-first search). In either case, one can form a spanning tree by connecting each vertex, other than the root vertex ''v'', to the vertex from which it was discovered. This tree is known as a depth-first search tree or a breadth-first search tree according to the graph exploration algorithm used to construct it.<ref>{{citation |title=The Design and Analysis of Algorithms|series=Monographs in Computer Science |first=Dexter |last=Kozen |author-link=Dexter Kozen |publisher=Springer |year=1992 |isbn=978-0-387-97687-7 |page=19 |url=https://books.google.com/books?id=L_AMnf9UF9QC&pg=PA19}}.</ref> Depth-first search trees are a special case of a class of spanning trees called [[Trémaux tree]]s, named after the 19th-century discoverer of depth-first search.<ref>{{citation | last1 = de Fraysseix | first1 = Hubert | last2 = Rosenstiehl | first2 = Pierre | author2-link = Pierre Rosenstiehl | contribution = A depth-first-search characterization of planarity | location = Amsterdam | mr = 671906 | pages = 75–80 | publisher = North-Holland | series = Ann. Discrete Math. | title = Graph theory (Cambridge, 1981) | volume = 13 | year = 1982}}.</ref> Spanning trees are important in parallel and distributed computing, as a way of maintaining communications between a set of processors; see for instance the [[Spanning Tree Protocol]] used by [[Data link layer|OSI link layer]] devices or the Shout (protocol) for distributed computing. However, the depth-first and breadth-first methods for constructing spanning trees on sequential computers are not well suited for parallel and distributed computers.<ref>{{citation | last = Reif | first = John H. | author-link = John Reif | doi = 10.1016/0020-0190(85)90024-9 | issue = 5 | journal = Information Processing Letters | mr = 801987 | pages = 229–234 | title = Depth-first search is inherently sequential | volume = 20 | year = 1985}}.</ref> Instead, researchers have devised several more specialized algorithms for finding spanning trees in these models of computation.<ref>{{citation | last1 = Gallager | first1 = R. G. | last2 = Humblet | first2 = P. A. | last3 = Spira | first3 = P. M. | doi = 10.1145/357195.357200 | issue = 1 | journal = ACM Transactions on Programming Languages and Systems | pages = 66–77 | title = A distributed algorithm for minimum-weight spanning trees | volume = 5 | year = 1983| doi-access = free }}; {{citation | last = Gazit | first = Hillel | doi = 10.1137/0220066 | issue = 6 | journal = SIAM Journal on Computing | mr = 1135748 | pages = 1046–1067 | title = An optimal randomized parallel algorithm for finding connected components in a graph | volume = 20 | year = 1991}}; {{citation | last1 = Bader | first1 = David A. | last2 = Cong | first2 = Guojing | doi = 10.1016/j.jpdc.2005.03.011 | issue = 9 | journal = Journal of Parallel and Distributed Computing | pages = 994–1006 | title = A fast, parallel spanning tree algorithm for symmetric multiprocessors (SMPs) | url = http://www.cc.gatech.edu/fac/bader/papers/SpanningTree-JPDC2005.pdf | volume = 65 | year = 2005 | hdl = 1853/14355 |url-status=dead |archive-url=https://web.archive.org/web/20150923201604/http://www.cc.gatech.edu/fac/bader/papers/SpanningTree-JPDC2005.pdf |archive-date= Sep 23, 2015 }}.</ref> ===Optimization=== In certain fields of graph theory it is often useful to find a [[minimum spanning tree]] of a [[weighted graph]]. Other optimization problems on spanning trees have also been studied, including the maximum spanning tree, the minimum tree that spans at least k vertices, the [[Minimum degree spanning tree|spanning tree with the fewest edges per vertex]], the [[maximum leaf spanning tree|spanning tree with the largest number of leaves]], the spanning tree with the fewest leaves (closely related to the [[Hamiltonian path problem]]), the [[minimum-diameter spanning tree]], and the minimum dilation spanning tree.<ref name="sts">{{citation |last=Eppstein |first=David |author-link=David Eppstein |contribution=Spanning trees and spanners |title=Handbook of Computational Geometry|editor1-first=J.-R.|editor1-last=Sack|editor1-link=Jörg-Rüdiger Sack|editor2-first=J.|editor2-last=Urrutia|editor2-link=Jorge Urrutia Galicia |publisher=Elsevier |year=1999 |pages=425–461 |contribution-url=http://www.ics.uci.edu/~eppstein/pubs/Epp-TR-96-16.pdf |url-status=live |archive-url=https://web.archive.org/web/20230802121548/https://www.ics.uci.edu/~eppstein/pubs/Epp-TR-96-16.pdf |archive-date= Aug 2, 2023 }}.</ref><ref>{{citation |last1=Wu |first1=Bang Ye |last2=Chao |first2=Kun-Mao |title=Spanning Trees and Optimization Problems |year=2004 |publisher=CRC Press |isbn=1-58488-436-3}}.</ref> Optimal spanning tree problems have also been studied for finite sets of points in a geometric space such as the [[Euclidean plane]]. For such an input, a spanning tree is again a tree that has as its vertices the given points. The quality of the tree is measured in the same way as in a graph, using the Euclidean distance between pairs of points as the weight for each edge. Thus, for instance, a [[Euclidean minimum spanning tree]] is the same as a graph minimum spanning tree in a [[complete graph]] with Euclidean edge weights. However, it is not necessary to construct this graph in order to solve the optimization problem; the Euclidean minimum spanning tree problem, for instance, can be solved more efficiently in ''O''(''n'' log ''n'') time by constructing the [[Delaunay triangulation]] and then applying a linear time [[planar graph]] minimum spanning tree algorithm to the resulting triangulation.<ref name="sts" /> ===Randomization=== A spanning tree chosen [[random]]ly from among all the spanning trees with equal probability is called a [[uniform spanning tree]]. Wilson's algorithm can be used to generate uniform spanning trees in polynomial time by a process of taking a random walk on the given graph and erasing the cycles created by this walk.<ref>{{citation | last = Wilson | first = David Bruce | contribution = Generating random spanning trees more quickly than the cover time | doi = 10.1145/237814.237880 | mr = 1427525 | pages = 296–303 | title = Proceedings of the Twenty-Eighth Annual ACM Symposium on the Theory of Computing (STOC 1996) | year = 1996| title-link = Symposium on Theory of Computing | isbn = 0-89791-785-5 }}.</ref> An alternative model for generating spanning trees randomly but not uniformly is the [[random minimal spanning tree]]. In this model, the edges of the graph are assigned random weights and then the [[minimum spanning tree]] of the weighted graph is constructed.<ref>{{citation | last1 = McDiarmid | first1 = Colin | last2 = Johnson | first2 = Theodore | last3 = Stone | first3 = Harold S. | doi = 10.1002/(SICI)1098-2418(199701/03)10:1/2<187::AID-RSA10>3.3.CO;2-Y | issue = 1–2 | journal = Random Structures & Algorithms | mr = 1611522 | pages = 187–204 | title = On finding a minimum spanning tree in a network with random weights | url = http://www.stats.ox.ac.uk/~cstone/mst.pdf | volume = 10 | year = 1997}}.</ref> ===Enumeration=== Because a graph may have exponentially many spanning trees, it is not possible to list them all in [[polynomial time]]. However, algorithms are known for listing all spanning trees in polynomial time per tree.<ref>{{citation | last1 = Gabow | first1 = Harold N. | author1-link = Harold N. Gabow | last2 = Myers | first2 = Eugene W. | author2-link = Eugene Myers | doi = 10.1137/0207024 | issue = 3 | journal = [[SIAM Journal on Computing]] | mr = 0495152 | pages = 280–287 | title = Finding all spanning trees of directed and undirected graphs | volume = 7 | year = 1978}}</ref> ==In infinite graphs== Every finite connected graph has a spanning tree. However, for infinite connected graphs, the existence of spanning trees is equivalent to the [[axiom of choice]]. An infinite graph is connected if each pair of its vertices forms the pair of endpoints of a finite path. As with finite graphs, a tree is a connected graph with no finite cycles, and a spanning tree can be defined either as a maximal acyclic set of edges or as a tree that contains every vertex.<ref name="serre" /> The trees within a graph may be partially ordered by their subgraph relation, and any infinite chain in this partial order has an upper bound (the union of the trees in the chain). [[Zorn's lemma]], one of many equivalent statements to the axiom of choice, requires that a partial order in which all chains are upper bounded have a maximal element; in the partial order on the trees of the graph, this maximal element must be a spanning tree. Therefore, if Zorn's lemma is assumed, every infinite connected graph has a spanning tree.<ref name="serre">{{citation|title=Trees|first=Jean-Pierre|last=Serre|author-link=Jean-Pierre Serre|page=23|publisher=Springer|series=Springer Monographs in Mathematics|year=2003}}.</ref> In the other direction, given a [[family of sets]], it is possible to construct an infinite connected graph such that every spanning tree of the graph corresponds to a [[choice function]] of the family of sets. Therefore, if every infinite connected graph has a spanning tree, then the axiom of choice is true.<ref>{{citation | last = Soukup | first = Lajos | contribution = Infinite combinatorics: from finite to infinite | doi = 10.1007/978-3-540-77200-2_10 | location = Berlin | mr = 2432534 | pages = 189–213 | publisher = Springer | series = Bolyai Soc. Math. Stud. | title = Horizons of combinatorics | volume = 17 | year = 2008| isbn = 978-3-540-77199-9 }}. See in particular Theorem 2.1, [https://books.google.com/books?id=kIKW18ENfUMC&pg=PA192 pp. 192–193].</ref> ==In directed multigraphs== The idea of a spanning tree can be generalized to directed multigraphs.<ref name="Levine09">{{citation | title = Sandpile groups and spanning trees of directed line graphs | journal = Journal of Combinatorial Theory, Series A | volume = 118 | number = 2 | pages = 350–364 | year = 2011 | issn = 0097-3165 | doi = 10.1016/j.jcta.2010.04.001 |doi-access=free | first = Lionel | last = Levine | arxiv = 0906.2809 }}</ref> Given a vertex ''v'' on a directed multigraph ''G'', an ''oriented spanning tree'' ''T'' rooted at ''v'' is an acyclic subgraph of ''G'' in which every vertex other than ''v'' has outdegree 1. This definition is only satisfied when the "branches" of ''T'' point towards ''v''. ==See also== * [[Flooding algorithm]] * [[Good spanning tree]] – Spanning tree for embedded planar graph ==References== {{Reflist}} {{Authority control}} [[Category:Spanning tree| ]] [[Category:Axiom of choice]] [[Category:Computational problems in graph theory]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:Authority control
(
edit
)
Template:CS1 config
(
edit
)
Template:Citation
(
edit
)
Template:Harvtxt
(
edit
)
Template:Main
(
edit
)
Template:Math
(
edit
)
Template:N\choose k
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)