Main Content

Nested dissection permutation

specifies additional options using one or more name-value pair arguments. For
example, `p`

= dissect(`A`

,`Name,Value`

)`dissect(A,'NumIterations',15)`

uses 15 refinement
iterations in the nested dissection algorithm instead of 10.

The nested dissection ordering algorithm described in [1] is a multilevel graph partitioning algorithm that is used to produce fill-reducing orderings of sparse matrices. The input matrix is treated as the adjacency matrix of a graph. The algorithm coarsens the graph by collapsing vertices and edges, reorders the smaller graph, and then uses refinement steps to uncoarsen the small graph and produce a reordering of the original graph.

The name-value pairs for `dissect`

enable you to control various
stages of the algorithm:

**Coarsening**In this phase, the algorithm creates successively smaller graphs from the original graph by collapsing together adjacent pairs of vertices.

`'MaxDegreeThreshold'`

enables you to filter out highly connected graph vertices (which are dense columns in the matrix) by ordering them last.**Partitioning**After the graph is coarsened, the algorithm completely reorders the smaller graph. At each partitioning step, the algorithm attempts to partition the graph into equal parts:

`'NumSeparators'`

specifies how many parts to partition the graph into,`'VertexWeights'`

optionally assigns weights to the vertices, and`'MaxImbalance'`

specifies the threshold for the difference in weight between the different partitions.**Refinement**After the smallest graph is reordered, the algorithm makes projections to enlarge the graph back to the original size by expanding the vertices that were previously combined. After each projection step, a refinement step is performed that moves vertices between partitions to improve the quality of the solution.

`'NumIterations'`

controls how many refinement steps are used during this uncoarsening phase.

[1] Karypis, George and Vipin
Kumar. "A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs."
*SIAM Journal on Scientific Computing*. Vol. 20, Number 1,
1999, pp. 359–392.