Algoritmus Cuthill – McKee - Cuthill–McKee algorithm


v numerická lineární algebra, Algoritmus Cuthill – McKee (CM), pojmenovaný pro Elizabeth Cuthill a James[1] McKee,[2] je algoritmus permutovat a řídká matice který má symetrický řídký vzor do a pásmová matice formulář s malým šířka pásma. The obrácený algoritmus Cuthill – McKee (RCM) kvůli Alanu Georgovi je stejný algoritmus, ale výsledná čísla indexů jsou obrácená.[3] V praxi to obvykle vede k méně vyplnit než uspořádání CM, když je použita Gaussova eliminace.[4]
Algoritmus Cuthill McKee je variantou standardu vyhledávání na šířku algoritmus používaný v grafových algoritmech. Začíná to periferním uzlem a poté se generuje úrovně pro dokud nejsou vyčerpány všechny uzly. Sada je vytvořen ze sady vypsáním všech vrcholů sousedících se všemi uzly v . Tyto uzly jsou seřazeny podle předchůdců a stupně.
Algoritmus
Vzhledem k tomu, symetrický matici vizualizujeme matici jako matice sousedství a graf. Algoritmus Cuthill – McKee je potom přetvářením vrcholy grafu ke snížení šířky pásma matice sousedství.
Algoritmus vytváří uspořádaný n-tuple vrcholů, což je nové pořadí vrcholů.
Nejprve zvolíme a periferní vrchol (vrchol s nejnižším stupeň ) a nastavit .
Pak pro následující kroky opakujeme
- Vytvořte sadu sousedství z (s the i-tá složka ) a vyloučit vrcholy, které již máme v
- Třídit vzestupně minimálním předchůdcem (již navštívený soused s nejčasnější pozicí v R) a jako tiebreak vzestupně stupeň vrcholu.[5]
- Připojit do sady výsledků .
Jinými slovy, číslujte vrcholy podle konkrétního struktura úrovně (vypočítá vyhledávání na šířku ) kde jsou vrcholy v každé úrovni navštěvovány v pořadí podle číslování jejich předchůdců od nejnižší po nejvyšší. Pokud jsou předchůdci stejní, vrcholy se rozlišují podle stupně (opět seřazené od nejnižšího po nejvyšší).
Viz také
Reference
- ^ Doporučení pro znázornění povrchu trupu lodi, strana 6
- ^ E. Cuthill a J. McKee. Snížení šířky pásma řídkých symetrických matic V Proc. 24. nat. Konf. ACM, strany 157–172, 1969.
- ^ http://ciprian-zavoianu.blogspot.ch/2009/01/project-bandwidth-reduction.html
- ^ J. A. George a J. W-H. Liu, Počítačové řešení velkých řídkých pozitivních konečných systémů, Prentice-Hall, 1981
- ^ Algoritmus reverzní Cuthill-McKee v distribuované paměti [1], snímek 8, 2016
- Dokumentace Cuthill – McKee pro Zvyšte knihovny C ++.
- Podrobný popis algoritmu Cuthill – McKee.
- symrcm Implementace RCM ze strany MATLABu.
- reverse_cuthill_mckee RCM rutina z SciPy napsáno v Cython.