Elimination Ordering#

Many algorithms for NP-hard problems are exponential in treewidth. However, finding a lower bound on treewidth is in itself NP-complete. [GD] describes a branch-and-bound algorithm for computing the treewidth of an undirected graph by searching in the space of perfect elimination ordering of vertices of the graph.

A clique of a graph is a fully-connected subset of vertices; that is, every pair of vertices in the clique share an edge. A simplicial vertex is one whose neighborhood induces a clique. A perfect elimination ordering is an ordering of vertices \(1..n\) such that any vertex \(i\) is simplicial for the subset of vertices \(i..n\).

chimera_elimination_order(m[, n, t, coordinates])

Provides a variable elimination order for a Chimera graph.

elimination_order_width(G, order)

Calculates the width of the tree decomposition induced by a variable elimination order.

is_almost_simplicial(G, n)

Determines whether a node n in G is almost simplicial.

is_simplicial(G, n)

Determines whether a node n in G is simplicial.

max_cardinality_heuristic(G)

Computes an upper bound on the treewidth of graph G based on the max-cardinality heuristic for the elimination ordering.

minor_min_width(G)

Computes a lower bound for the treewidth of graph G.

min_fill_heuristic(G)

Computes an upper bound on the treewidth of graph G based on the min-fill heuristic for the elimination ordering.

min_width_heuristic(G)

Computes an upper bound on the treewidth of graph G based on the min-width heuristic for the elimination ordering.

pegasus_elimination_order(n[, coordinates])

Provides a variable elimination order for the Pegasus graph.

treewidth_branch_and_bound(G[, ...])

Computes the treewidth of graph G and a corresponding perfect elimination ordering.