RCMalgorithm
RCMalgorithm
http://people.sc.fsu.edu/~burkardt/f_src/rcm/rcm.html
which has a disastrous bandwidth of 17 (lower and upper bandwidths of 8, and 1 for the diagonal.) If we keep the same connectivity graph, but relabel the nodes, we could get a picture like this:
7--8--9 | | / 3--5--6 | | | 1--2--4
1 de 4
06/03/2010 16:34
http://people.sc.fsu.edu/~burkardt/f_src/rcm/rcm.html
* 1 1 . . . . . .
1 * . 1 1 . . . .
1 . * . 1 . . . .
. 1 . * . 1 . . .
. 1 1 . * 1 1 . .
. . . 1 1 * . 1 1
. . . . 1 . * 1 .
. . . . . 1 1 * 1
. . . . . 1 . 1 *
which has a bandwidth of 7 (lower and upper bandwidths of 3, and 1 for the diagonal.)
Licensing:
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
Reference:
1. HL Crane, Norman Gibbs, William Poole, Paul Stockmeyer, Algorithm 508: Matrix Bandwidth and Profile Reduction, ACM Transactions on Mathematical Software, Volume 2, Number 4, December 1976, pages 375-377. 2. Alan George, Joseph Liu, Computer Solution of Large Sparse Positive Definite Matrices, Prentice Hall, 1981, ISBN: 0131652745,
2 de 4 06/03/2010 16:34
http://people.sc.fsu.edu/~burkardt/f_src/rcm/rcm.html
LC: QA188.G46 3. Norman Gibbs, Algorithm 509: A Hybrid Profile Reduction Algorithm, ACM Transactions on Mathematical Software, Volume 2, Number 4, December 1976, pages 378-387. 4. Norman Gibbs, William Poole, Paul Stockmeyer, An Algorithm for Reducing the Bandwidth and Profile of a Sparse Matrix, SIAM Journal on Numerical Analysis, Volume 13, Number 2, April 1976, pages 236-250. 5. John Lewis, Algorithm 582: The Gibbs-Poole-Stockmeyer and Gibbs-King Algorithms for Reordering Sparse Matrices, ACM Transactions on Mathematical Software, Volume 8, Number 2, June 1982, pages 190-194.
Source Code:
rcm.f90, the source code. rcm.csh, commands to compile the source code.
List of Routines:
ADJ_BANDWIDTH computes the bandwidth of an adjacency matrix. ADJ_CONTAINS_IJ determines if (I,J) is in an adjacency structure. ADJ_INSERT_IJ inserts (I,J) into an adjacency structure. ADJ_PERM_BANDWIDTH computes the bandwidth of a permuted adjacency matrix. ADJ_PERM_SHOW displays a symbolic picture of a permuted adjacency matrix. ADJ_PRINT prints adjacency information. ADJ_PRINT_SOME prints some adjacency information. ADJ_SET sets up the adjacency information. ADJ_SHOW displays a symbolic picture of an adjacency matrix. DEGREE computes the degrees of the nodes in the connected component. GENRCM finds the reverse Cuthill-Mckee ordering for a general graph. GRAPH_01_ADJ returns the adjacency vector for graph 1. GRAPH_01_ADJ_NUM returns the number of adjacencies for graph 1. GRAPH_01_LABEL returns the labels for graph 1. I4_SWAP swaps two I4's. I4_UNIFORM returns a scaled pseudorandom I4. I4MAT_PRINT_SOME prints some of an I4MAT. I4MAT_TRANSPOSE_PRINT prints an I4MAT, transposed. I4MAT_TRANSPOSE_PRINT_SOME prints some of the transpose of an I4MAT. I4ROW_COMPARE compares two rows of an I4ROW. I4ROW_SORT_A ascending sorts an I4ROW. I4ROW_SWAP swaps two rows of an I4ROW. I4VEC_HEAP_D reorders an I4VEC into an descending heap. I4VEC_INDICATOR sets an I4VEC to the vector A(I)=I. I4VEC_PRINT prints an I4VEC. I4VEC_REVERSE reverses the elements of an I4VEC.
3 de 4
06/03/2010 16:34
http://people.sc.fsu.edu/~burkardt/f_src/rcm/rcm.html
I4VEC_SORT_HEAP_A ascending sorts an I4VEC using heap sort. LEVEL_SET generates the connected level structure rooted at a given node. LEVEL_SET_PRINT prints level set information. PERM_CHECK checks that a vector represents a permutation. PERM_INVERSE produces the inverse of a given permutation. PERM_UNIFORM selects a random permutation of N objects. R82VEC_PERMUTE permutes an R82VEC in place. R8MAT_PRINT_SOME prints some of an R8MAT. R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed. RCM renumbers a connected component by the reverse Cuthill McKee algorithm. ROOT_FIND finds a pseudo-peripheral node. SORT_HEAP_EXTERNAL externally sorts a list of items into ascending order. TIMESTAMP prints the current YMDHMS date as a time stamp. TRIANGULATION_ORDER3_ADJ_COUNT counts adjacencies in a triangulation. TRIANGULATION_ORDER3_ADJ_SET sets adjacencies in a triangulation. TRIANGULATION_ORDER3_EXAMPLE2 returns an example triangulation. TRIANGULATION_ORDER3_EXAMPLE2_SIZE returns the size of an example. TRIANGULATION_ORDER3_NEIGHBOR_TRIANGLES determines triangle neighbors. TRIANGULATION_ORDER6_ADJ_COUNT counts adjacencies in a triangulation. TRIANGULATION_ORDER6_ADJ_SET sets adjacencies in a triangulation. TRIANGULATION_ORDER6_EXAMPLE2 returns an example triangulation. TRIANGULATION_ORDER6_EXAMPLE2_SIZE returns the size of an example. TRIANGULATION_ORDER6_NEIGHBOR_TRIANGLES determines triangle neighbors. You can go up one level to the FORTRAN90 source codes. Last revised on 03 January 2007.
4 de 4
06/03/2010 16:34