Definice Matice je řídká, pokud obsahuje málo nenulových prvků. Mluvíme-li o nějaké třídě matic, slovem „málo“ se většinou myslí .Definicealternativní Matice je řídká, pokud jsme schopni využít znalosti struktury nenulových prvků k účinnému řešení soustavy.
Soustavy s řídkými maticemi často vznikají z řešení parciálních diferenciálních rovnic metodou sítí, konečných objemů nebo konečných prvků.
Příklad Mějme metodu konečných diferencí pro dvourozměrnou Poissonovu rovnici:Zvolíme mřížku a aproximujemeSoustavu potom můžeme zapsat jako matici, která má v každém řádku nanejvýš pět nenulových prvků. (Detaily viz NM2.)
Kdybychom měli jemnost třeba a chtěli to řešit naivně, na matici bychom potřebovali 8 TB paměti. Ovšem pokud ji uložíme jako řídkou, potřebujeme jen několik MB. A jelikož dokonce známe její přesný tvar, můžeme ji uložit jako implicitní a to nezabere téměř žádnou paměť.
Reprezentace řídkých matic v počítači
Chceme řídkou matici uložit tak, aby zabrala co nejméně paměti a efektivně se s ní počítalo.
Souřadnicový formát
Jedno pole reálných řísel obsahující hodnoty všech nenulových prvků;
dvě celočíselná pole délky obsahující jejich indexy.
Příklad Maticiuložíme jako
Nevýhoda je, že v takové reprezentaci je těžké například najít prvek na dané pozici.
Komprimované řídké řádky (CSR)
Jedno pole reálných řísel obsahující hodnoty všech nenulových prvků seřazené po řádcích;
jedno celočíselné pole délky obsahující jejich sloupcové indexy;
jedno celočíselné pole délky , kde -tý prvek obsahuje index začátku -tého řádku v předchozích dvou polích. Ten jeden navíc ukazuje za konec pole (tím se zjednoduší algoritmy iterující přes daný řádek).
Příklad Maticiuložíme jako
Oproti souřadnicovému formátu to šetří paměť. Nevýhodou ovšem je, že je obtížné přidávat nové nenulové prvky, což může být důležité třeba u metod založených na Gaussově eliminaci.
Analogicky můžeme mít komprimované řídké sloupce (CSC).
Modifikované komprimované řídké řádky (MSR)
Motivací je, že často potřebujeme efektivnější přístup k prvkům na hlavní diagonále.
Jedno pole reálných řísel obsahující hodnoty všech nenulových prvků počínaje diagonálními, poté zarážku a zbylé prvky po řádcích;
jedno celočíselné pole délky obsahující nejprve indexy začátků řádků a poté sloupcové indexy nediagonálních prvků.
Příklad Maticiuložíme jako
Kromě efektivního přístupu k diagonále má stejné výhody a nevýhody jako CSR.
Ellpack
Tento formát je populární na vektorových počítačích.
Využívá se pro matice, kde počet nenulových prvků v jednom řádku je omezený nějakou konstantou .
Jedno pole reálných čísel velikosti obsahující hodnoty nenulových prvků v jednotlivých řádcích;
jedno celočíselné pole velikosti obsahující jejich indexy.
Příklad Matici (jinou než v předchozích příkladech)uložíme jako
Formát je jednoduchý a většinou se s ním dobře pracuje, akorát nejde použít, když má matice nějaké husté řádky.
Diagonální uložení
Vhodné pro matice, které mají nenulové prvky pouze podél několika málo diagonál (například ty vzniklé z metody konečných diferencí).
Prostě uložíme hodnoty těchto diagonál a k tomu si poznamenáme, kolikáté jsou.
Příklad Maticiuložíme jako
Přímé metody řešení soustav
Mějme soustavu , kde . Z NMA víme, že řešením soustavy řádkovými úpravami pro silně regulární matici vznikne rozklad , kde je dolní trojúhelníková a je horní trojúhelníková. Získáme-li tento rozklad, můžeme snadno řešit jakoukoli soustavu s tou samou maticí: stačí spočítat podle a podle .
Je-li pozitivně definitní, potom , takže jde o Choleského rozklad: .
TBD
Popis struktury řídkých matic
Definice Graf matice je graf , kde aPříkladPříklad Je-li matice strukturálně symetrická, můžeme uvažovat neorientovaný graf:
Vznik zaplnění
Mějme matici , na kterou aplikujeme první krok podmaticového algoritmu. Tím se změní její zaplnění:
Obecně to funguje tak, že v -tém kroku se všechny sousední vrcholy propojí do kliky. To je formálně vyjádřeno v následujícím lemmatu:
Lemmao zaplnění Nechť je pozitivně definitní, . PotomDůkaz Triviálně plyne z podmaticového algoritmu.Větao zaplnění Nechť je pozitivně definitní, . Potom , právě když v existuje cesta taková, že pro všechna je . (Jinými slovy, cesta musí ležet v podgrafu indukovaném vrchholy .)Důkaz Indukcí podle předchozího lemmatu. TBD
Eliminační strom
Definice Eliminační strom matice s Choleského rozkladem je strom , kde aJinými slovy, předkem -tého vrcholu je vrchol s indexem odpovídajícím řádku, v němž je první nenulový prvek pod diagonálou v -tém sloupci .PříkladPozorování Kořen eliminačního stromu je prvek s nejvyšším indexem, tedy .Věta Je-li pro , potom je předek v .Důkaz Pokud je nejmenší splňující , potom je z definice stromu přímý předek. TBDPoznámka Implikaci nelze obrátit. V předchozím příkladě je předkem , ale .Důsledek Jsou-li a disjunktní podstromy s kořeny , potom pro všechny je .Věta Nechť je pozitivně definitní, . Potom , právě když je předkem nějakého takového, že .DůkazTBDDefinice Struktura -tého sloupce matice jeVěta Pro matici v Choleského rozkladu platí
Přeuspořádání matic
Příklad Mějme matici ve tvaruJiž po jednom kroku eliminace se zaplní všechny prvky pod diagonálou:Co kdybychom ale nejdřív permutovali řádky a sloupce? Vezměme permutační maticiPotom budeme pracovat s maticíV té se v žádném kroku nic nezaplní. Permutací jsme tedy výrazně zvýšili efektivitu. Všimněme si také, že
se liší jen označením vrcholů od :
Pozorování Je-li symetrická matice a permutační matice odpovídající permutaci , potom je symetrická a platí
;
;
.
Grafy a se tedy liší jen označením vrcholů.
Je otázkou, jakou permutaci zvolit, abychom si usnadnili práci co nejvíce. K tomu je několik různých přístupů.
Algoritmy pro vytvoření pásu/profilu
Definice Pro danou matici a označmeŠířka profilu -tého řádku je . Profil matice jeŠířka pásu je . Pás matice jePříklad
Přeuspořádáme pro vytvoření lepšího profilu a pásu:
AlgoritmusCathill–McKee [CMK]
Zvol libovolný vrchol , přidej ho do permutace a nastav .
Dokud :
.
Přidej do permutace všechny vrcholy .
.
Příklad
Všimněme si, že tato matice má oproti jiným možným permutacím hodně hezký profil a pás.
Aby vznikl úzký pás, chceme mít hodně malých úrovní. Jako počáteční vrchol je tedy vhodné zvolit jeden z periferních vrcholů – těch, u kterých se nabývá maximální vzdálenosti mezi dvěma vrcholy (tedy průměru grafu). Ovšem hledání takových vrcholů je moc náročné (), takže se většinou hledá aproximace – pseudoperiferní vrcholy.
Pro hledání pseudoperiferních vrcholů můžeme využít GPS algoritmus. Zvolíme libovolný počáteční vrchol a pomocí CMK algoritmu k němu najdeme nějaký koncový vrchol (vrchol z poslední vrstvy). Ten si zvolíme jako nový počáteční vrchol a opakujeme. Zjevně se v žádném kroku nesníží vzdálenost, takže můžeme opakovat, až se ustálí.
Nápříklad v obdélníkové síti, začneme-li někde uprostřed, již v prvním kroku se dostaneme do rohu a v druhém kroku do opačného grafu, což nám dá periferní vrcholy.
Někdy se taky v CMK vyplatí číslovat opačně, čímž vznikne RCM (Reverse Cathill-McKee).
Uspořádání minimalizující zaplněnost
Chceme najít permutační matici takovou, že je minimální.
Není známý efektivní algoritmus, který by vždy nalezl optimální řešení.
Algoritmusminimálního stupně
.
Pro každé :
V najdi vrchol s nejmenším stupněm a očísluj ho .
Odeliminuj z , čímž vznikne .
Myšlenka je, že vrchol s nejmenším stupněm většinou způsobí nejmenší zaplnění.Příklad Mějme matici s následujícím grafem:
Vrcholy budeme eliminovat například v tomto pořadí, čímž vznikne jen jedna nová hrana:
Poznámka Existuje varianta zvaná aproximovaný minimální stupeň, která nepočítá stupně vrcholů, ale pouze je odhaduje.
Uspořádání přizpůsobující matici počítačové architektuře
Máme paralelní počítač a chceme vrcholy eliminovat v takovém pořadí, aby se to dalo dobře paralelizovat.
Mějme graf, který se po odstranění nějaké malé podmnožiny vrcholů (separátoru ) rozdělí na dvě podobně velké komponenty a . Potom coloki, co budeme dělat s jednou z komponent, ovlivní jen tuto komponentu a separátor. Pro paralelizaci se tedy vyplatí očíslovat vrcholy v pořadí , takže a potom můžeme eliminovat paralelně.
Rozdělování můžeme rekurzivně opakovat, dokud jsou komponenty dostatečně velké, aby se to vyplatilo. Tomu se říká metoda vnořených řezů (nested dissection method).
Frontální metoda
Místo abychom uspořádání stanovili předem, budeme ho hledat dynamicky za běhu eliminace.
V každém kroku přehodíme řádky a sloupce tak, aby nenulové prvky šly co nejblíž k diagonále.
Často tím vzniknou malé husté podmatice, které můžeme řešit standardními metodami.
Nevýhoda je, že permutování za běhu může být náročné.
Výhoda je, že můžeme konstruovat Choleského rozklad matice, i když ji ještě nemáme celou spočtenou. To se může vyplatit například u metody konečných prvků, kde počítání matice je náročné.
Poznámky k obecnějším systémům
Zatím jsme se zabývali metodami pro pozitivně definitní matice. Jak se tyto poznatky dají zobecnit na jiné třídy matic?
Indefinitní symetrické matice
Příklad Mějme symetrickou indefinitní matici . Kdybychom se pokoušeli spočítat Choleského rozklad, narazili bychom na to, že máme dělit nulou. Ani žádná symetrická permutace nám s tím nepomůže. Mohli bychom použít asymetrickou permutaci, ale tím bychom obecně ztratili symetrii matice.
Symetrické indefinitní matice v praxi vznikají při použití smíšené formulace metody konečných prvků na eliptickou úlohu druhého řádu nebo také při hledání vázaných extrémů metodou Lagrangeových multiplikátorů. V obou těchto případech vznikne matice tvaru , kde je pozitivně definitní, . Soustava je tedy ve tvaru
Jelikož je pozitivně definitní, můžeme najít její Choleského rozklad . Podle první rovnice je . Dosazením do druhé rovnice máme
kde je Schurův doplněk. Dokážeme, že je pozitivně definitní. Pro je
Soustavu s maticí tedy můžeme řešit Choleského rozkladem. Akorát je problém v tom, že může být hustá, i když je řídká. Vyplatí se to tedy, jenom když je malá. V opačném případě je možné to nějak prokletě zkombinovat s iterační metodou (typicky konjugované gradienty). Potom nemusíme explicitně sestavovat, ale stačí s ní umět násobit vektory. K tomu nám stačí na vektor postupně aplikovat .
Obecné regulární matice
U matice, která není symetrická, nemáme Choleského rozklad, ale jen LU rozklad. Ten navíc nnexistuje, když matice není silně regulární; v takovém případě ještě navíc potřebujeme pivotaci. Pivotace by ideálně neměla způsobit velké zaplnění, což je ale často v rozporu s požadavky výše uvedených metod. Navíc výběr pivota obvyklým způsobem závisí na numerických hodnotách, takže není možné analyzovat strukturu předem.
Místo pivotace za běhu můžeme zkusit najít takovou permutaci, která přesune absolutně velké prvky na diagonálu.
Příklad Mějme matici ve tvaruVytvoříme k ní bipartitní graf, kde budeme mít zvlášť vrcholy pro řádky a pro sloupce.
Přesunutí nenulových prvků na diagonálu odpovídá maximálnímu párování v tomto grafu. Přitom hrany budou ohodnocené prvky matice a váhu párování budeme počítat jako součin vah hran. Problém je, že to může způsobit velké zaplnění.