Treewidth

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description Template:Use mdy dates Template:CS1 config In graph theory, the treewidth of an undirected graph is an integer number which specifies, informally, how far the graph is from being a tree. The smallest treewidth is 1; the graphs with treewidth 1 are exactly the trees and the forests. An example of graphs with treewidth at most 2 are the series–parallel graphs. The maximal graphs with treewidth exactly Template:Mvar are called kScript error: No such module "Check for unknown parameters".-trees, and the graphs with treewidth at most Template:Mvar are called partial kScript error: No such module "Check for unknown parameters".-trees.Template:Sfnp Many other well-studied graph families also have bounded treewidth.

Treewidth may be formally defined in several equivalent ways: in terms of the size of the largest vertex set in a tree decomposition of the graph, in terms of the size of the largest clique in a chordal completion of the graph, in terms of the maximum order of a haven describing a strategy for a pursuit–evasion game on the graph, or in terms of the maximum order of a bramble, a collection of connected subgraphs that all touch each other.

Treewidth is commonly used as a parameter in the parameterized complexity analysis of graph algorithms. Many algorithms that are NP-hard for general graphs, become easier when the treewidth is bounded by a constant.

The concept of treewidth was originally introduced by Umberto Bertelè and Francesco Brioschi (1972) under the name of dimension. It was later rediscovered by Rudolf Halin (1976), based on properties that it shares with a different graph parameter, the Hadwiger number. Later it was again rediscovered by Neil Robertson and Paul Seymour (1984) and has since been studied by many other authors.[1]

Definition

File:Tree decomposition.svg
A graph with eight vertices, and a tree decomposition of it onto a tree with six nodes. Each graph edge connects two vertices that are listed together at some tree node, and each graph vertex is listed at the nodes of a contiguous subtree of the tree. Each tree node lists at most three vertices, so the width of this decomposition is two.

A tree decomposition of a graph Template:Mvar = (V, E)Script error: No such module "Check for unknown parameters". is a tree Template:Mvar with nodes X1, …, XnScript error: No such module "Check for unknown parameters"., where each Template:Mvar is a subset of Template:Mvar, satisfying the following properties[2] (the term node is used to refer to a vertex of Template:Mvar to avoid confusion with vertices of Template:Mvar):

  1. The union of all sets Template:Mvar equals Template:Mvar. That is, each graph vertex is contained in at least one tree node.
  2. If Template:Mvar and Template:Mvar both contain a vertex Template:Mvar, then all nodes Template:Mvar of Template:Mvar in the (unique) path between Template:Mvar and Template:Mvar contain Template:Mvar as well. Equivalently, the tree nodes containing vertex Template:Mvar form a connected subtree of Template:Mvar.
  3. For every edge (v, w)Script error: No such module "Check for unknown parameters". in the graph, there is a subset Template:Mvar that contains both Template:Mvar and Template:Mvar. That is, vertices are adjacent in the graph only when the corresponding subtrees have a node in common.

The width of a tree decomposition is the size of its largest set Template:Mvar minus one. The treewidth tw(G)Script error: No such module "Check for unknown parameters". of a graph Template:Mvar is the minimum width among all possible tree decompositions of Template:Mvar. In this definition, the size of the largest set is diminished by one in order to make the treewidth of a tree equal to one.

Equivalently, the treewidth of Template:Mvar is one less than the size of the largest clique in the chordal graph containing Template:Mvar with the smallest clique number. A chordal graph with this clique size may be obtained by adding to Template:Mvar an edge between every two vertices that both belong to at least one of the sets Template:Mvar.

Treewidth may also be characterized in terms of havens, functions describing an evasion strategy for a certain pursuit–evasion game defined on a graph. A graph Template:Mvar has treewidth Template:Mvar if and only if it has a haven of order k + 1Script error: No such module "Check for unknown parameters". but of no higher order, where a haven of order k + 1Script error: No such module "Check for unknown parameters". is a function Template:Mvar that maps each set Template:Mvar of at most Template:Mvar vertices in Template:Mvar into one of the connected components of Template:Mvar \ XScript error: No such module "Check for unknown parameters". and that obeys the monotonicity property that β(Y) ⊆ β(X)Script error: No such module "Check for unknown parameters". whenever XYScript error: No such module "Check for unknown parameters"..

File:3x3 grid graph haven.svg
A bramble of order four in a 3×3 grid graph, the existence of which shows that the graph has treewidth at least 3

A similar characterization can also be made using brambles, families of connected subgraphs that all touch each other (meaning either that they share a vertex or are connected by an edge).[3] The order of a bramble is the smallest hitting set for the family of subgraphs, and the treewidth of a graph is one less than the maximum order of a bramble.

Examples

Every complete graph Template:Mvar has treewidth n – 1Script error: No such module "Check for unknown parameters".. This is most easily seen using the definition of treewidth in terms of chordal graphs: the complete graph is already chordal, and adding more edges cannot reduce the size of its largest clique.

A connected graph with at least two vertices has treewidth 1 if and only if it is a tree. A tree has treewidth one by the same reasoning as for complete graphs (namely, it is chordal, and has maximum clique size two). Conversely, if a graph has a cycle, then every chordal completion of the graph includes at least one triangle consisting of three consecutive vertices of the cycle, from which it follows that its treewidth is at least two.

Bounded treewidth

Graph families with bounded treewidth

For any fixed constant Template:Mvar, the graphs of treewidth at most Template:Mvar are called the [[partial k-tree|partial Template:Mvar-trees]]. Other families of graphs with bounded treewidth include the cactus graphs, pseudoforests, series–parallel graphs, outerplanar graphs, Halin graphs, and Apollonian networks.[4] The control-flow graphs arising in the compilation of structured programs also have bounded treewidth, which allows certain tasks such as register allocation to be performed efficiently on them.[5]

The planar graphs do not have bounded treewidth, because the n × nScript error: No such module "Check for unknown parameters". grid graph is a planar graph with treewidth exactly Template:Mvar. Therefore, if Template:Mvar is a minor-closed graph family with bounded treewidth, it cannot include all planar graphs. Conversely, if some planar graph cannot occur as a minor for graphs in family Template:Mvar, then there is a constant Template:Mvar such that all graphs in Template:Mvar have treewidth at most Template:Mvar. That is, the following three conditions are equivalent to each other:[6]

  1. Template:Mvar is a minor-closed family of bounded-treewidth graphs;
  2. One of the finitely many forbidden minors characterizing Template:Mvar is planar;
  3. Template:Mvar is a minor-closed graph family that does not include all planar graphs.

Forbidden minors

File:Partial 3-tree forbidden minors.svg
The four forbidden minors for treewidth 3: K5Script error: No such module "Check for unknown parameters". (top-left), the graph of the octahedron (bottom-left), the Wagner graph (top-right), and the graph of the pentagonal prism (bottom-right)

For every finite value of Template:Mvar, the graphs of treewidth at most Template:Mvar may be characterized by a finite set of forbidden minors. (That is, any graph of treewidth > kScript error: No such module "Check for unknown parameters". includes one of the graphs in the set as a minor.) Each of these sets of forbidden minors includes at least one planar graph.

  • For k = 1Script error: No such module "Check for unknown parameters"., the unique forbidden minor is a 3-vertex cycle graph.[4]
  • For k = 2Script error: No such module "Check for unknown parameters"., the unique forbidden minor is the 4-vertex complete graph K4Script error: No such module "Check for unknown parameters"..[4]
  • For k = 3Script error: No such module "Check for unknown parameters"., there are four forbidden minors: K5Script error: No such module "Check for unknown parameters"., the graph of the octahedron, the pentagonal prism graph, and the Wagner graph. Of these, the two polyhedral graphs are planar.[7]

For larger values of Template:Mvar, the number of forbidden minors grows at least as quickly as the exponential of the square root of Template:Mvar.Template:Sfnp However, known upper bounds on the size and number of forbidden minors are much higher than this lower bound.Template:Sfnp

Algorithms

Computing the treewidth

It is NP-complete to determine whether a given graph Template:Mvar has treewidth at most a given variable Template:Mvar.Template:Sfnp However, when Template:Mvar is any fixed constant, the graphs with treewidth Template:Mvar can be recognized, and a width Template:Mvar tree decomposition constructed for them, in linear time.[8] The time dependence of this algorithm on Template:Mvar is exponential.

Due to the roles the treewidth plays in an enormous number of fields, different practical and theoretical algorithms computing the treewidth of a graph were developed. Depending on the application on hand, one can prefer better approximation ratio, or better dependence in the running time from the size of the input or the treewidth. The table below provides an overview of some of the treewidth algorithms. Here Template:Mvar is the treewidth and Template:Mvar is the number of vertices of an input graph Template:Mvar. Each of the algorithms outputs in time f(k) ⋅ g(n)Script error: No such module "Check for unknown parameters". a decomposition of width given in the Approximation column. For example, the algorithm of Script error: No such module "Footnotes". in time 2O(k3)nScript error: No such module "Check for unknown parameters". either constructs a tree decomposition of the input graph Template:Mvar of width at most Template:Mvar or reports that the treewidth of Template:Mvar is more than Template:Mvar. Similarly, the algorithm of Script error: No such module "Footnotes". in time 2O(k)nScript error: No such module "Check for unknown parameters". either constructs a tree decomposition of the input graph Template:Mvar of width at most 5k + 4Script error: No such module "Check for unknown parameters". or reports that the treewidth of Template:Mvar is more than Template:Mvar. Script error: No such module "Footnotes". improved this to 2k + 1Script error: No such module "Check for unknown parameters". in the same running time.

Approximation f(k)Script error: No such module "Check for unknown parameters". g(n)Script error: No such module "Check for unknown parameters". reference
exact O(1)Script error: No such module "Check for unknown parameters". O(nk+2)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
4k + 3Script error: No such module "Check for unknown parameters". O(33k)Script error: No such module "Check for unknown parameters". O(n2)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
8k + 7Script error: No such module "Check for unknown parameters". 2O(k log k)Script error: No such module "Check for unknown parameters". n log2 nScript error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
5k + 4Script error: No such module "Check for unknown parameters". (or 7k + 6Script error: No such module "Check for unknown parameters".) 2O(k log k)Script error: No such module "Check for unknown parameters". n log nScript error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
exact 2O(k3)Script error: No such module "Check for unknown parameters". O(n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
O(klogk) O(1)Script error: No such module "Check for unknown parameters". nO(1)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
4.5k + 4Script error: No such module "Check for unknown parameters". 23kScript error: No such module "Check for unknown parameters". n2Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
Template:Sfrack + 4Script error: No such module "Check for unknown parameters". 23.6982kScript error: No such module "Check for unknown parameters". n3 log4nScript error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
exact O(1)Script error: No such module "Check for unknown parameters". O(1.7347n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
3k + 2Script error: No such module "Check for unknown parameters". 2O(k)Script error: No such module "Check for unknown parameters". O(n log n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
5k + 4Script error: No such module "Check for unknown parameters". 2O(k)Script error: No such module "Check for unknown parameters". O(n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
k2Script error: No such module "Check for unknown parameters". O(k7)Script error: No such module "Check for unknown parameters". O(n log n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
5k + 4Script error: No such module "Check for unknown parameters". 28.765kScript error: No such module "Check for unknown parameters". O(n log n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
2k + 1Script error: No such module "Check for unknown parameters". 2O(k)Script error: No such module "Check for unknown parameters". O(n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
5k + 4Script error: No such module "Check for unknown parameters". 26.755kScript error: No such module "Check for unknown parameters". O(n log n)Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
exact 2O(k2)Script error: No such module "Check for unknown parameters". n4Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".
(1+ε)kScript error: No such module "Check for unknown parameters". kO(k/ε)Script error: No such module "Check for unknown parameters". n4Script error: No such module "Check for unknown parameters". Script error: No such module "Footnotes".

<templatestyles src="Unsolved/styles.css" />

Unsolved problem in mathematics
Can the treewidth of planar graphs be computed in polynomial time?

It is not known whether determining the treewidth of planar graphs is NP-complete, or whether their treewidth can be computed in polynomial time.Template:Sfnp

In practice, an algorithm of Script error: No such module "Footnotes". can determine the treewidth of graphs with up to 100 vertices and treewidth up to 11, finding a chordal completion of these graphs with the optimal treewidth.

For larger graphs, one can use search-based techniques such as branch and bound search to compute the treewidth. These algorithms are anytime in that when stopped early, they will output an upper bound on the treewidth. An algorithm of this type was proposed in 2004 by Vibhav Gogate and Rina Dechter. To provide a lower bound on treewidth for the branches of this search, they construct a graph minor by repeatedly contracting an edge between a minimum degree vertex and one of its neighbors, until just one vertex remains. The maximum of the minimum degree over these constructed minors is guaranteed to be a lower bound on the treewidth of the graph.Template:Sfnp Alex Dow and Rich Korf further improved this algorithm using best-first search.Template:Sfnp

Solving other problems on graphs of small treewidth

At the beginning of the 1970s, it was observed that a large class of combinatorial optimization problems defined on graphs could be efficiently solved by non serial dynamic programming as long as the graph had a bounded dimension,Template:Sfnp a parameter shown to be equivalent to treewidth by Script error: No such module "Footnotes".. Later, several authors independently observed at the end of the 1980s[9] that many algorithmic problems that are NP-complete for arbitrary graphs may be solved efficiently by dynamic programming for graphs of bounded treewidth, using the tree-decompositions of these graphs.

As an example, the problem of coloring a graph of treewidth Template:Mvar may be solved by using a dynamic programming algorithm on a tree decomposition of the graph. For each set Template:Mvar of the tree decomposition, and each partition of the vertices of Template:Mvar into color classes, the algorithm determines whether that coloring is valid and can be extended to all descendant nodes in the tree decomposition, by combining information of a similar type computed and stored at those nodes. The resulting algorithm finds an optimal coloring of an Template:Mvar-vertex graph in time O(kk+O(1)n)Script error: No such module "Check for unknown parameters"., a time bound that makes this problem fixed-parameter tractable.

Courcelle's theorem

Script error: No such module "Labelled list hatnote". For a large class of problems, there is a linear time algorithm to solve a problem from the class if a tree-decomposition with constant bounded treewidth is provided. Specifically, Courcelle's theorem[10] states that if a graph problem can be expressed in the logic of graphs using monadic second order logic, then it can be solved in linear time on graphs with bounded treewidth. Monadic second order logic is a language to describe graph properties that uses the following constructions:

  • Logic operations, such as ,,¬,
  • Membership tests, such as eEScript error: No such module "Check for unknown parameters"., vVScript error: No such module "Check for unknown parameters".
  • Quantifications over vertices, edges, sets of vertices, and/or sets of edges, such as vVScript error: No such module "Check for unknown parameters"., eEScript error: No such module "Check for unknown parameters"., IVScript error: No such module "Check for unknown parameters"., FEScript error: No such module "Check for unknown parameters".
  • Adjacency tests (Template:Mvar is an endpoint of Template:Mvar), and some extensions that allow for things such as optimization.

Consider for example the 3-coloring problem for graphs. For a graph G = (V, E)Script error: No such module "Check for unknown parameters"., this problem asks if it is possible to assign each vertex vVScript error: No such module "Check for unknown parameters". one of the 3 colors such that no two adjacent vertices are assigned the same color. This problem can be expressed in monadic second order logic as follows:

W1V:W2V:W3V:vV:(vW1vW2vW3)
vV:wV:(v,w)E(¬(vW1wW1)¬(vW2wW2)¬(vW3wW3)),

where W1Script error: No such module "Check for unknown parameters"., W2Script error: No such module "Check for unknown parameters"., W3Script error: No such module "Check for unknown parameters". represent the subsets of vertices having each of the 3 colors. Therefore, by Courcelle's results, the 3-coloring problem can be solved in linear time for a graph given a tree-decomposition of bounded constant treewidth.

Related parameters

Pathwidth

The pathwidth of a graph has a very similar definition to treewidth via tree decompositions, but is restricted to tree decompositions in which the underlying tree of the decomposition is a path graph. Alternatively, the pathwidth may be defined from interval graphs analogously to the definition of treewidth from chordal graphs. As a consequence, the pathwidth of a graph is always at least as large as its treewidth, but it can only be larger by a logarithmic factor.[4] Another parameter, the graph bandwidth, has an analogous definition from proper interval graphs, and is at least as large as the pathwidth. Other related parameters include the tree-depth, a number that is bounded for a minor-closed graph family if and only if the family excludes a path, and the degeneracy, a measure of the sparsity of a graph that is at most equal to its treewidth.

Grid minor size

Because the treewidth of an n × nScript error: No such module "Check for unknown parameters". grid graph is Template:Mvar, the treewidth of a graph Template:Mvar is always greater than or equal to the size of the largest square grid minor of Template:Mvar. In the other direction, the grid minor theorem by Robertson and Seymour shows that there exists an unbounded function Template:Mvar such that the largest square grid minor has size at least f(r)Script error: No such module "Check for unknown parameters". where Template:Mvar is the treewidth.Template:Sfnp The best bounds known on Template:Mvar are that Template:Mvar must be at least Ω(rd)Script error: No such module "Check for unknown parameters". for some fixed constant d > 0Script error: No such module "Check for unknown parameters"., and at most[11]

O(r/logr).

For the ΩScript error: No such module "Check for unknown parameters". notation in the lower bound, see big O notation. Tighter bounds are known for restricted graph families, leading to efficient algorithms for many graph optimization problems on those families through the theory of bidimensionality.Template:Sfnp Halin's grid theorem provides an analogue of the relation between treewidth and grid minor size for infinite graphs.Template:Sfnp

Diameter and local treewidth

A family Template:Mvar of graphs closed under taking subgraphs is said to have bounded local treewidth, or the diameter-treewidth property, if the treewidth of the graphs in the family is upper bounded by a function of their diameter. If the class is also assumed to be closed under taking minors, then Template:Mvar has bounded local treewidth if and only if one of the forbidden minors for Template:Mvar is an apex graph.Template:Sfnp The original proofs of this result showed that treewidth in an apex-minor-free graph family grows at most doubly exponentially as a function of diameter;[12] later this was reduced to singly exponentialTemplate:Sfnp and finally to a linear bound.Template:Sfnp Bounded local treewidth is closely related to the algorithmic theory of bidimensionality,[13] and every graph property definable in first order logic can be decided for an apex-minor-free graph family in an amount of time that is only slightly superlinear.Template:Sfnp

It is also possible for a class of graphs that is not closed under minors to have bounded local treewidth. In particular this is trivially true for a class of bounded degree graphs, as bounded diameter subgraphs have bounded size. Another example is given by 1-planar graphs, graphs that can be drawn in the plane with one crossing per edge, and more generally for the graphs that can be drawn on a surface of bounded genus with a bounded number of crossings per edge. As with minor-closed graph families of bounded local treewidth, this property has pointed the way to efficient approximation algorithms for these graphs.Template:Sfnp

Hadwiger number and S-functions

Script error: No such module "Footnotes". defines a class of graph parameters that he calls Template:Mvar-functions, which include the treewidth. These functions from graphs to integers are required to be zero on graphs with no edges, to be minor-monotone (a function Template:Mvar is referred to as "minor-monotone" if, whenever Template:Mvar is a minor of Template:Mvar, one has f(H) ≤ f(G)Script error: No such module "Check for unknown parameters".), to increase by one when a new vertex is added that is adjacent to all previous vertices, and to take the larger value from the two subgraphs on either side of a clique separator. The set of all such functions forms a complete lattice under the operations of elementwise minimization and maximization. The top element in this lattice is the treewidth, and the bottom element is the Hadwiger number, the size of the largest complete minor in the given graph.

Notes

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "Footnotes". pp.354–355
  2. Script error: No such module "Footnotes". section 12.3
  3. Script error: No such module "Footnotes"..
  4. a b c d Script error: No such module "Footnotes"..
  5. Script error: No such module "Footnotes"..
  6. Script error: No such module "Footnotes"..
  7. Script error: No such module "Footnotes".; Script error: No such module "Footnotes"..
  8. Script error: No such module "Footnotes"..
  9. Script error: No such module "Footnotes".; Script error: No such module "Footnotes".; Script error: No such module "Footnotes"..
  10. Script error: No such module "Footnotes".; Script error: No such module "Footnotes".
  11. Script error: No such module "Footnotes".
  12. Script error: No such module "Footnotes".; Script error: No such module "Footnotes"..
  13. Script error: No such module "Footnotes".; Script error: No such module "Footnotes"..

Script error: No such module "Check for unknown parameters".

References

<templatestyles src="Refbegin/styles.css" />

  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1"..
  • Script error: No such module "citation/CS1".