Cuthill–McKee-algoritmus
A lineáris algebrában használják a Cuthill–McKee-algoritmust (CM), amely Elizabeth Cuthill és James McKee után kapta a nevét.[1] Ez az algoritmus egy szimmetrikus mintával rendelkező ritka mátrixot egy kis sávszélességű sávmátrixba permutál. Az Alan George-nak köszönhető fordított Cuthill–McKee-algoritmus (RCM) ugyanez az algoritmus, de eredményül fordítva adja vissza az indexszámokat.[2] A gyakorlatban ez általában kevesebb kitöltést eredményez, mint a CM rendezés, amikor is Gauss-eliminációt alkalmaznak.[3]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Can_73_cm.svg/220px-Can_73_cm.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Can_73_rcm.svg/220px-Can_73_rcm.svg.png)
A Cuthill–McKee-algoritmus a gráfkereső algoritmusok között használt standard szélességi keresés algoritmusának egy változata. Perifériás csomóponttal kezdődik, majd szinteket generál -re, amíg az összes csomópont bejárásra nem kerül. Az halmaz az halmazból jön létre, méghozzá az összes -beli csomópont szomszédságában lévő csúcsok növekvő sorrendben történő felsorolásával. Ez a részlet az egyetlen különbség a CM és a szélességi keresés algoritmusa között.
Algoritmus
Adott egy szimmetrikus mátrix, amit a gráf szomszédsági mátrixaként jelenítünk meg. A Cuthill–McKee-algoritmus a gráf csúcsainak újracímkézése a szomszédsági mátrix sávszélességének csökkentése érdekében.
Az algoritmus rendezett n-es csúcsok halmazát állítja elő, ami a csúcsok egy új rendezése.
Először kiválasztunk egy perifériás csúcsot ( ), ami tulajdonképpen a legalacsonyabb fokú csúcs és beállítjuk
.
Majd -vel az alábbi lépéseket megismételjük, amíg
.
- Készítsük el
szomszédsági halmazát (
az
i-edik komponense) és zárjuk ki azokat a csúcsokat, amelyek már szerepelnek
-ben.
- Rendezzük csúcsait növekvő sorrendbe (csúcsfok).
- Majd fűzzük azt az eredményhalmazhoz.
Más szóval, számozzuk a csúcsokat egy konkrét szélességi gráfbejárás szerint, ahol a szomszédos csúcsokat növekvő sorrendben járjuk be.
Jegyzetek
Irodalom
- Cuthill – McKee dokumentáció a Boost C ++ könyvtárakhoz .
- A Cuthill – McKee algoritmus részletes leírása .
- symrcm a MATLAB RCM megvalósítása.
- reverse_cuthill_mckee RCM rutin SciPyból Cythonban megírva.
Fordítás
Ez a szócikk részben vagy egészben a Cuthill–McKee algorithm című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.