Content deleted Content added
m Bot: Migrating 3 interwiki links, now provided by Wikidata on d:q1146458 |
m →References: HTTP to HTTPS for Blogspot |
||
(38 intermediate revisions by 26 users not shown) | |||
Line 1:
[[File:
[[File:
In [[numerical linear algebra]], the '''Cuthill–McKee algorithm''' ('''CM'''), named after [[Elizabeth Cuthill]] and James McKee,<ref name="cm">
▲<ref name="cm"> E. Cuthill and J. McKee. [http://portal.acm.org/citation.cfm?id=805928''Reducing the bandwidth of sparse symmetric matrices''] In Proc. 24th Nat. Conf. [[Association for Computing Machinery|ACM]], pages 157–172, 1969.</ref> is an [[algorithm]] to permute a [[sparse matrix]] that has a [[symmetric matrix|symmetric]] sparsity pattern into a [[band matrix]] form with a small [[bandwidth (matrix theory)|bandwidth]]. The '''reverse Cuthill–McKee algorithm''' ('''RCM''') due to Alan George is the same algorithm but with the resulting index numbers reversed. In practice this generally results in less [[Sparse_matrix#Reducing_fill-in|fill-in]] than the CM ordering when Gaussian elimination is applied.<ref name="gl"> J. A. George and J. W-H. Liu, Computer Solution of Large Sparse Positive Definite Systems, Prentice-Hall, 1981 </ref>
The Cuthill McKee algorithm is a variant of the standard [[breadth-first search]]
Line 11 ⟶ 10:
are exhausted. The set <math> R_{i+1} </math> is created from set <math> R_i</math>
by listing all vertices adjacent to all nodes in <math> R_i </math>. These
nodes are
==Algorithm==
Given a symmetric <math>n\times n</math> matrix we visualize the matrix as the [[adjacency matrix]] of a [[
The algorithm produces an ordered [[n-tuple|''n''-tuple]]
First we choose a [[peripheral vertex]] (the vertex with the lowest [[Degree (graph theory)|degree]])
Then for <math>i = 1,2,\dots</math> we iterate the following steps while <math>|
*Construct the adjacency set <math>A_i</math> of <math>R_i</math> (with <math>R_i</math> the ''i''-th component of
:<math>A_i := \operatorname{Adj}(R_i) \setminus R</math>
*Sort <math>A_i</math>
*Append <math>A_i</math> to the Result set
In other words, number the vertices according to a particular [[
==See also==
Line 37 ⟶ 35:
==References==
<references />
* [http://www.boost.org/doc/libs/1_37_0/libs/graph/doc/cuthill_mckee_ordering.html Cuthill–McKee documentation] for the [[Boost C++ Libraries]].
* [
* [http://www.mathworks.com/help/matlab/ref/symrcm.html symrcm] MATLAB's implementation of RCM.
* [http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csgraph.reverse_cuthill_mckee.html reverse_cuthill_mckee] RCM routine from [[SciPy]] written in [[Cython]].
{{DEFAULTSORT:Cuthill-McKee algorithm}}
[[Category:Matrix theory]]
[[Category:Graph algorithms]]
|