Yousef Saad (fordítás angolról Dyachenko t

Az iteratív módszerek ritkás lineáris rendszerek: Storage rendszerekről alapműveleteket ritka mátrixok

tárolni ritka mátrixok rendszer

A fő cél az, hogy tárolja csak zérus eleme a mátrix és a képességet, hogy a lány egyszerű mátrix műveletekkel.

Legyen NZ - száma nem nulla mátrix elemei A. Nézzük a leggyakoribb tárolási rendszer, részletesebb információt is [4].

A legegyszerűbb tárolási ritkamáirix áramkör az úgynevezett „koordináta” formátumban. A szerkezet az eredeti mátrix jelenik meg a háromdimenziós tömb: (1) - tartalmazó tömb az értékek nem nulla a mátrix elemei egy véletlenszerű sorrendben; (2) egész tömb tartalmazó húrok indexek; és (3) egy egész szám tartalmazó tömb az index az oszlop. Mindhárom vektorok Nz hosszúságú.

1. példa Mátrix


Ez lehet ábrázolni:

Ebben a példában a tétel szerepel, nem fontossági sorrendben, de általában azok szerepelnek a sorok vagy oszlopok. Ha a tétel szerepel a sorban, a vektor JC, ami redundáns információt tartalmaznak, hogy lehet cserélni tömb mutatókat a minden sor elején. Ez biztosítja jelentős megtakarítást tárolására. Az új adatstruktúra lesz három tömböt, amely a következő feladatokat:

- AA tömb tartalmaz nem nulla értékeket aij, által tárolt sor, a sorban 1-től n. A hossza a tömb AA van Nz.

- JA egész tömb oszlop index elemeket tartalmaz aij A mátrix a tömb hossza JA Nz.

Így, mátrix fentebb bemutatott tárolható, mint:

Ez a formátum a legnépszerűbb tárolására ritka mátrixok általános formája. Ezt hívják ritkás sorban méret vagy sűrített Gyér Row (CSR). Ez a rendszer sokkal előnyösebb, mint egy koordináta, ami gyakran sokkal kényelmesebb több fontos ope¬ratsy a ritka mátrixok: összeadás, szorzás, permutáció sorok és oszlopok, az átültetés megoldások lineáris rendszerek gyér együttható mátrixok közvetlen és iteratív módszerekkel. Másrészt, a koordináta diagram egy egyszerű, világos és rugalmas, gyakran használják az „input” méret számítási könyvtárak szánt dolgozni ritka mátrixok.

Számos módosítást a tárolási rendszer, a legnyilvánvalóbb a ritkás vagy egy oszlop diagram Sűrített Gyér oszlop (CSC).

Egy másik gyakori rendszer figyelembe veszi azt a tényt, hogy a diagonális elemei a legtöbb nem-nulla mátrixok, és / vagy használják gyakrabban, mint mások. Módosított kisbetűs áramkör (Modified Ritka Row, MSR) használ csak két tömbök: egy sor érték AA és egész tömb JA. Az első N-pozíciók AA tartalmazza az átlós elemeket a kezdeti mátrix sorrendben. Elem AA (n + 1) van töltve (vagy hordoz további érdekes információt a mátrix). Kezdve a helyzetben n + 2 rögzítik a nem zéró elemeit a kezdeti mátrix sorok, kivéve az átlós. Minden olyan elem, AA (k) elem JA (k) azt mutatja, az oszlop index az eredeti mátrixban. Az n + 1-helyzetben található JA mátrix belépési mutatók az egyes mátrix sor AA és JA.

Ezért, a mátrix a fenti példában, a két tömb lesz:

A csillag egy használaton kívüli elemet. Megjegyezzük, hogy JA (n) = JA (n + 1) = 14, jelezve, hogy az utolsó sor nulla, mivel a diagonális elem fent már bemutattuk.

Átlósan strukturált mátrix - olyan mátrix, amelynek nem nulla elemek mentén vannak elrendezve egy kis átmérők száma. Ezen átlós tárolható egy téglalap alakú tömb DIAG (1: n, 1: Nd), ahol a Nd - száma átlók. Az elmozdulás mindkét átlója viszonyítva számítjuk ki, hogy a fő diagonális, amelyet meg kell ismert. Offsets tárolja a tömb IOFF (1: Nd). Így, egy elem ai, i + ioff (j) az eredeti mátrix kerül tárolásra a helyzetben (i, j) a DIAG tömbben. A sorrend, amelyben tárolják az átlós, általában nem fontos, különösen, ha a legtöbb művelet körül koncentrálódik főátlójában érdemes tárolni az első oszlopban. Azt is meg kell jegyezni, hogy valamennyi az átlós, más, mint a fő, kevesebb, mint n elem úgy, hogy nem az összes mátrix elemei a DIAG fogják használni.

2. példa tridiagonális mátrix

Ez lehet tárolni két tömb szerinti a fenti sémát:
DIAG =

Egy általános rendszer a népszerű vektor gépeket az úgynevezett formátumban. Ez a rendszer azt feltételezi, hogy az átmérők száma Nd kicsi. A tárolási szükséges két téglalap alakú tömb mérete n * Nd egyes.

Az első, COEF, mint DIAG, tárolt nem nulla a mátrix elemei A. A nem nulla elemeinek minden sorban tárolható egy sorban a tömb COEF (1: n, 1: Nd), kiegészítve a nulla vonal, ha szükséges. Együtt COEF, egész tömb JCOEF (1: n, 1: Nd) kell tárolni az index az egyes oszlopok COEF elemet.

A mátrix 2. példa A., tárolási Ellpack-Itpack rendszer formájában
COEF =

Alapvető műveletek ritka mátrix

Mátrix és egy vektor - fontos művelet, amely szükséges a legtöbb iteratív algoritmusok megoldására ritkás lineáris rendszerek. Ez a fejezet bemutatja, hogyan lehet megvalósítani, hogy tárolja a rendszer fent látható.

A következő példa mutatja be Fortran 90 fő hurok mátrix és egy vektor egy ritka mátrix tárolt oszlop formátumban:

Figyeljük meg, hogy minden egyes iteráció kiszámítja a különböző komponensei a kapott vektort. Ez előnyös, mivel minden egyes ilyen komponensek függetlenül is kiszámítható. Nyilvánvaló, hogy ha a mátrix tárolása az oszlopok, a következő kódot kell használni:

Minden iterációban a termék a j-edik oszlop adunk az eredmény, amely állítólag már kezdetben nulla. Megjegyzendő, hogy a külső hurok már nem alkalmas a párhuzamosság. Azt is megteheti, próbálja osztani párhuzamosan vektor működését a belső hurok. A belső hurok csak néhány lépést, így nem valószínű, hogy jelentős javulást a teljesítmény. Ez az összehasonlítás azt mutatja, hogy az adatok szerkezetek meg kell változtatni a teljesítmény javítása érdekében végzett munka során nagy teljesítményű számítógépek. Tekintsük most usnozhenie matritsі vektort a mátrix alatt egy átlós formátumban.

Itt, az egyes átlók megszorozzuk x vektor. és az eredmény adunk az y vektor. Ismét azt feltételezzük, hogy az y vektor nullákkal töltjük fel az elején a ciklus. Ami a párhuzamosság és / vagy vektorizációs jobban használni a fenti kódot, valószínűleg. Másrészt, ez nem eléggé általános.

Megoldás alsó vagy felső háromszögű rendszer egy másik fontos „core” a ritka mátrix számítások. A következő kódot ábra egy hagyományos blokk alsó háromszög rendszer megoldások Lx = y CSR tárolási formátum.

Minden egyes szakaszában, a jelenlegi szorzás eredménye számított x i-edik sorban, és kivontuk az y (i). Ez megadja az x (i). Dotproduct függvény a dot termék két tetszőleges vektor U (K1: K2) és V (k1: k2). Vektor AL (K1: K2) van a i-edik sorának az L mátrix egy ritka formátum, és X (JAL (K1: K2)) egy olyan komponens, X vektort összegyűjtjük rövid vektorba, ami megfelel az oszlop indexek elemeinek AL vonal (K1: k2).

Kapcsolódó cikkek