Algoritmul Cuthill-Mackey

Algoritmul Cuthill- McKee este un  algoritm de reducere a lățimii benzii matrici simetrice Numit după dezvoltatori - Elizabeth Cuthill și James McKee.

Reverse Cuthill-McKee ( RCM , reverse Cuthill-McKee ) este același algoritm cu numerotare inversă a indexului.

Algoritm

Matricea simetrică originală este tratată ca matricea de adiacență a graficului . Algoritmul Cuthill-McKee renumerotează vârfurile graficului în așa fel încât, ca urmare a permutării corespunzătoare a coloanelor și rândurilor matricei originale, lățimea benzii sale este redusă .

Algoritmul construiește un set ordonat de vârfuri reprezentând noua enumerare a vârfurilor. Pentru un graf conectat , algoritmul arată astfel:

  1. selectați un vârf periferic (sau un vârf pseudo-periferic ) pentru valoarea inițială a tuplului ;
  2. pentru , cât timp condiția este îndeplinită , efectuați pașii 3-5:
  3. construiți un set de adiacență pentru , unde  este a --a componentă a lui și excludeți vârfurile care sunt deja conținute în , adică: ;
  4. sortați în ordine crescătoare a gradelor de vârf ;
  5. adăugați la rezultat tuplu .

Cu alte cuvinte, algoritmul enumeră nodurile într-o căutare pe lățimea întâi , în care vârfurile adiacente sunt parcurse în ordinea crescătoare a puterilor lor .

Pentru un graf deconectat, algoritmul poate fi aplicat separat fiecărei componente conectate [1] .

Complexitatea de calcul în timp a algoritmului RCM cu condiția ca sortarea prin inserție să fie utilizată pentru ordonare , , unde  este gradul maxim al unui vârf,  este numărul de muchii ale graficului [2] .

Alegerea vârfului de pornire

Pentru a obține rezultate bune, trebuie să găsiți vârful periferic al graficului . Această sarcină este în general destul de dificilă, prin urmare, în loc de ea, de obicei caută un vârf pseudo-periferic folosind una dintre modificările algoritmului euristic al lui Gibbs și colab.

Pentru a descrie algoritmul, este introdus conceptul unei structuri de nivel înrădăcinat .  Pentru un punct dat , structura de nivel înrădăcinată la va fi o partiție a setului de vârfuri :

unde subseturile sunt definite după cum urmează:

și

Algoritm pentru găsirea unui vârf pseudo-periferic [3] :

  1. selectați un vârf arbitrar din ;
  2. construiți o structură de nivel pentru rădăcină : ;
  3. selectați vârful cu gradul minim din ;
  4. construiți o structură de nivel pentru rădăcină : ;
  5. dacă , atunci atribuiți și treceți la pasul 3;
  6. vârful este vârful pseudo-periferic dorit.

Note

  1. George, Liu, 1984 , pp. 65-66.
  2. George, Liu, 1984 , p. 68.
  3. George, Liu, 1984 , pp. 70-72.

Literatură

Link -uri