Algoritmo de Cuthill-Mackey

El Cuthill -McKee es un  algoritmo de reducción de ancho de cinta para matrices simétricas El nombre de los desarrolladores - Elizabeth Cuthill y James McKee.

Reverse Cuthill-McKee ( RCM , reverse Cuthill-McKee ) es el mismo algoritmo con numeración de índice inversa.

Algoritmo

La matriz simétrica original se trata como la matriz de adyacencia del gráfico . El algoritmo Cuthill-McKee renumera los vértices del gráfico de tal forma que, como resultado de la correspondiente permutación de las columnas y filas de la matriz original, se reduce el ancho de su cinta .

El algoritmo crea un conjunto ordenado de vértices que representan la nueva enumeración de vértices. Para un gráfico conectado , el algoritmo se ve así:

  1. seleccione un vértice periférico (o vértice pseudo-periférico ) para el valor inicial de la tupla ;
  2. para , mientras se cumpla la condición , realice los pasos 3-5:
  3. construye un conjunto de adyacencia para , donde  es el -ésimo componente de , y excluye los vértices que ya están contenidos en , es decir: ;
  4. ordenar en orden ascendente de grados de vértice ;
  5. añadir a la tupla de resultados .

En otras palabras, el algoritmo enumera los vértices en una búsqueda en anchura , en la que los vértices adyacentes se recorren en orden creciente de sus potencias .

Para un gráfico desconectado, el algoritmo se puede aplicar por separado a cada componente conectado [1] .

La complejidad computacional del tiempo del algoritmo RCM siempre que se utilice la ordenación por inserción para ordenar , , donde  es el grado máximo de un vértice,  es el número de aristas del gráfico [2] .

Elección del vértice inicial

Para obtener buenos resultados, necesitas encontrar el vértice periférico del gráfico . Esta tarea es generalmente bastante difícil, por lo que, en lugar de ella, suelen buscar un vértice pseudoperiférico utilizando alguna de las modificaciones del algoritmo heurístico de Gibbs et al.

Para describir el algoritmo, se introduce el concepto de una estructura de nivel raíz .  Para un vértice dado , la estructura de nivel arraigada será una partición del conjunto de vértices :

donde los subconjuntos se definen de la siguiente manera:

y

Algoritmo para encontrar un vértice pseudoperiférico [3] :

  1. seleccione un vértice arbitrario de ;
  2. construye una estructura de niveles para la raíz : ;
  3. seleccione el vértice con el grado mínimo de ;
  4. construye una estructura de niveles para la raíz : ;
  5. si , entonces asigne y vaya al paso 3;
  6. el vértice es el vértice pseudoperiférico deseado.

Notas

  1. George, Liu, 1984 , págs. 65-66.
  2. George, Liu, 1984 , pág. 68.
  3. George, Liu, 1984 , págs. 70-72.

Literatura

Enlaces