Cuthill-Mackey Algoritm

Cuthill - McKee - är en  algoritm för reduktion av bandbredd för symmetriska matriser Uppkallad efter utvecklarna - Elizabeth Cuthill och James McKee.

Omvänd Cuthill-McKee ( RCM , omvänd Cuthill-McKee ) är samma algoritm med omvänd indexnumrering.

Algoritm

Den ursprungliga symmetriska matrisen behandlas som grafens närliggande matris . Cuthill-McKee-algoritmen numrerar om grafens hörn på ett sådant sätt att, som ett resultat av motsvarande permutation av kolumnerna och raderna i den ursprungliga matrisen, bredden på dess tejp reduceras .

Algoritmen bygger en ordnad uppsättning av hörn som representerar den nya vertexuppräkningen. För en ansluten graf ser algoritmen ut så här:

  1. välj en perifer vertex (eller pseudo-perifer vertex ) för tupelns initiala värde ;
  2. för , medan villkoret är uppfyllt , utför steg 3-5:
  3. bygga en närliggande uppsättning för , där  är den -:e komponenten av , och exkludera hörn som redan finns i , det vill säga: ;
  4. sortera i stigande ordning av vertexgrader ;
  5. lägg till resultatet tupel .

Algoritmen räknar med andra ord upp hörnen i en bredd-först-sökning , där intilliggande hörn korsas i ökande ordning efter deras styrkor .

För en frånkopplad graf kan algoritmen tillämpas separat på varje ansluten komponent [1] .

Tidsberäkningskomplexiteten för RCM-algoritmen förutsatt att insättningssortering används för att beställa , , där  är den maximala graden av en vertex,  är antalet grafkanter [2] .

Val av startpunkt

För att få bra resultat måste du hitta grafens perifera vertex . Denna uppgift är generellt sett ganska svår, därför letar de i stället för det vanligtvis efter ett pseudo-perifert vertex med hjälp av en av modifieringarna av den heuristiska algoritmen av Gibbs et al.

För att beskriva algoritmen introduceras konceptet med en rotad nivåstruktur .  För en given vertex kommer nivåstrukturen som är rotad till att vara en partition av uppsättningen av hörn :

där delmängder definieras enligt följande:

och

Algoritm för att hitta en pseudo-perifer vertex [3] :

  1. välj en godtycklig vertex från ;
  2. bygga en nivåstruktur för roten : ;
  3. välj vertex med minsta grad från ;
  4. bygga en nivåstruktur för roten : ;
  5. om , tilldela sedan och gå till steg 3;
  6. vertexet är det önskade pseudo-perifera vertexet.

Anteckningar

  1. George, Liu, 1984 , s. 65-66.
  2. George, Liu, 1984 , sid. 68.
  3. George, Liu, 1984 , s. 70-72.

Litteratur

Länkar