| Graphs: | directed |
|---|---|
| Properties: | out degree |
template <class AdjacencyGraph, class OutDegreeMap,
class InversePermutationMap,
class PermutationMap, class SuperNodeSizeMap, class VertexIndexMap>
void minimum_degree_ordering
(AdjacencyGraph& G,
OutDegreeMap outdegree,
InversePermutationMap inverse_perm,
PermutationMap perm,
SuperNodeSizeMap supernode_size, int delta, VertexIndexMap id)
The minimum degree ordering algorithm [21, 35] is a fill-in
reduction reordering algorithm. It chooses the vertex with minimum
degree in the graph at each step of simulating Gaussian elimination
process. This implementation provided a number of enhancements
including mass elimination, incomplete degree update, multiple
elimination, and external degree. See [35] for a historical
survey of the minimum degree algorithm.
The graph G corresponding to a symmetric matrix A should be directed one instead of a undirected graph in this implementation. Therefore, nonzero entry A(i, j) corresponds two directed edges (e(i,j) and e(j,i)) in G.
The output of the algorithm are the vertices in the new ordering.
inverse_perm[new_index[u]] == old_index[u]
and the permutation from the old index to the new index.
perm[old_index[u]] == new_index[u]
The following equations are always held.
for (size_type i = 0; i != inverse_perm.size(); ++i)
perm[inverse_perm[i]] == i;
| Copyright © 2001 |
Lie-Quan Lee, Univ.of Notre Dame (llee1@lsc.nd.edu) Jeremy Siek, Univ.of Notre Dame (jsiek@lsc.nd.edu) |