En álgebra lineal numérica , el algoritmo Cuthill–McKee ( CM ), llamado así por Elizabeth Cuthill y James McKee, [1] es un algoritmo para permutar una matriz dispersa que tiene un patrón de escasez simétrico en una forma de matriz de bandas con un ancho de banda pequeño . El algoritmo Cuthill–McKee inverso ( RCM ) debido a Alan George y Joseph Liu es el mismo algoritmo pero con los números de índice resultantes invertidos. [2] En la práctica, esto generalmente da como resultado menos relleno que el ordenamiento CM cuando se aplica la eliminación gaussiana. [3]
El algoritmo Cuthill McKee es una variante del algoritmo estándar de búsqueda en amplitud
que se utiliza en algoritmos de grafos. Comienza con un nodo periférico y luego genera niveles hasta que se agotan todos los nodos. El conjunto se crea a partir de un conjunto
enumerando todos los vértices adyacentes a todos los nodos en . Estos nodos se ordenan según predecesores y grado.
Algoritmo
Dada una matriz simétrica , la visualizamos como la matriz de adyacencia de un grafo . El algoritmo Cuthill-McKee consiste entonces en reetiquetar los vértices del grafo para reducir el ancho de banda de la matriz de adyacencia.
El algoritmo produce una n -tupla ordenada de vértices que es el nuevo orden de los vértices.
Construya el conjunto de adyacencia de (con el componente i -ésimo de ) y excluya los vértices que ya tenemos en
Ordenar de forma ascendente por predecesor mínimo (el vecino ya visitado con la posición más temprana en R), y como desempate de forma ascendente por grado de vértice . [4]
Añadir al conjunto de resultados .
En otras palabras, numere los vértices de acuerdo con una estructura de nivel particular (calculada mediante una búsqueda en amplitud ) donde los vértices en cada nivel se visitan en orden de numeración de sus predecesores, del más bajo al más alto. Cuando los predecesores son los mismos, los vértices se distinguen por grado (nuevamente ordenados del más bajo al más alto).