亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于三元組表表示的稀疏矩陣的快速轉(zhuǎn)置算法及其改進(jìn)

        2008-04-12 00:00:00
        現(xiàn)代電子技術(shù) 2008年22期

        摘 要:介紹基于三元組表表示的稀疏矩陣的快速轉(zhuǎn)置算法,此算法在轉(zhuǎn)置前需要先確定原矩陣中各列第一個(gè)非零元在轉(zhuǎn)置矩陣中的位置,在此使用2個(gè)數(shù)組作為輔助空間,為了減少算法所需的輔助空間,通過(guò)引入2個(gè)簡(jiǎn)單變量提出一種改進(jìn)算法。該改進(jìn)算法在時(shí)間復(fù)雜度保持不變的情況下,空間復(fù)雜度比原算法節(jié)省一半。

        關(guān)鍵詞:稀疏矩陣;壓縮存儲(chǔ);三元組表;快速轉(zhuǎn)置;時(shí)間復(fù)雜度;空間復(fù)雜度

        中圖分類號(hào):TP311.12文獻(xiàn)標(biāo)識(shí)碼:B

        文章編號(hào):1004-373X(2008)22-078-02

        Improvement on Fast Transposition Algorithm to Sparse Matrix Expressed by Triple List

        WANG Rong1,2

        (1.Xidian University,Xi′an,710071,China;2.Weinan Teachers University,Weinan,714000,China)

        Abstract:The fast transposition algorithm to sparse matrix expressed by triple list is introduced.This algorithm needs to determine the position in the transposed matrix position of the first element which is not equal to zero in the original matrix each row,it uses two arrays as auxiliary space.In order to reduce the auxiliary space which the algorithm needed,an improvement is made through introducing two simple variables.The improved algorithm saves a half auxiliary space compared to the original algorithm at the same time complexity.

        Keywords:sparse matrix;compression memory;triple list;fast transposition;time complexity;space complexity

        矩陣作為許多科學(xué)與工程計(jì)算的數(shù)據(jù)對(duì)象,必然是計(jì)算機(jī)處理的數(shù)據(jù)對(duì)象之一。在實(shí)際應(yīng)用中,常會(huì)遇到一些階數(shù)很高,同時(shí)又有許多值相同的元素或零元素的矩陣,在這類矩陣中,如果值相同的元素或零元素在矩陣中的分配沒(méi)有規(guī)律,則稱之為稀疏矩陣。

        為了節(jié)省存儲(chǔ)空間,常對(duì)稀疏矩陣進(jìn)行壓縮存儲(chǔ)。壓縮存儲(chǔ)的基本思想就是:對(duì)多個(gè)值相同的元素只分配1個(gè)存儲(chǔ)空間,對(duì)零元素不分配存儲(chǔ)空間。換句話說(shuō),就是只存儲(chǔ)稀疏矩陣中的非零元素。

        稀疏矩陣可以采取不同的壓縮存儲(chǔ)方法,對(duì)于不同的壓縮存儲(chǔ)方法,矩陣運(yùn)算的實(shí)現(xiàn)也就不同。

        1稀疏矩陣的三元組表表示法

        根據(jù)壓縮存儲(chǔ)的基本思想,這里只存儲(chǔ)稀疏矩陣中的非零元素,因此,除了存儲(chǔ)非零元的值以外,還必須同時(shí)記下它所在行和列的位置(i,j),即矩陣中的1個(gè)非零元aij由1個(gè)三元組(i,j,aij)惟一確定。由此可知,稀疏矩陣可由表示非零元的三元組表及其行列數(shù)惟一確定。

        對(duì)于稀疏矩陣的三元組表采取不同的組織方法即可得到稀疏矩陣的不同壓縮存儲(chǔ)方法,用三元組數(shù)組(三元組順序表)來(lái)表示稀疏矩陣即為稀疏矩陣的三元組表表示法。三元組數(shù)組中的元素按照三元組對(duì)應(yīng)的矩陣元素在原矩陣中的位置,以行優(yōu)先的順序依次存放。

        三元組表的類型說(shuō)明如下:

        #define MAXSIZE 1000/*非零元素的個(gè)數(shù)最多為1000*/

        typedef struct

        {

        introw,col; /*該非零元素的行下標(biāo)和列下標(biāo)*/

        ElementType e;/*該非零元素的值*/

        }Triple;

        typedef struct

        {

        Tripledata[MAXSIZE+1];/* 非零元素的三元組表,data[0]未用*/

        int m,n,len;/*矩陣的行數(shù)、 列數(shù)和非零元素的個(gè)數(shù)*/

        }TSMatrix;

        2 稀疏矩陣的快速轉(zhuǎn)置算法

        待轉(zhuǎn)置矩陣source和轉(zhuǎn)置后矩陣dest分別用三元組表A和B表示,依次按三元組表A中三元組的次序進(jìn)行轉(zhuǎn)置,轉(zhuǎn)置后直接放到三元組表B的正確位置上。這種轉(zhuǎn)置算法稱為快速轉(zhuǎn)置算法。

        為了能將待轉(zhuǎn)置三元組表A中元素一次定位到三元組表B的正確位置上,需要預(yù)先計(jì)算以下數(shù)據(jù):

        (1)待轉(zhuǎn)置矩陣source每一列中非零元素的個(gè)數(shù)(即轉(zhuǎn)置后矩陣dest每一行中非零元素的個(gè)數(shù))。

        (2)待轉(zhuǎn)置矩陣source每一列中第一個(gè)非零元素在三元組表B中的正確位置(即轉(zhuǎn)置后矩陣dest每一行中第一個(gè)非零元素在三元組表B中的正確位置)。

        為此,需要設(shè)2個(gè)數(shù)組num[]和position[],其中num[col]用來(lái)存放矩陣source中第col列中非零元素個(gè)數(shù)(轉(zhuǎn)置后矩陣dest中第col行非零元素的個(gè)數(shù));position[col]用來(lái)存放轉(zhuǎn)置矩陣source中第col列(轉(zhuǎn)置后矩陣dest中第col行)中第一個(gè)非零元素在三元組表B中的正確位置。

        num[col]的計(jì)算方法:將三元組表A掃描一遍,對(duì)于其中列號(hào)為k的元素,給相應(yīng)的num[k]加1。

        position[col]的計(jì)算方法:

        position[1]=1

        position[col]=position[col-1]+num[col-1] (其中2≤col≤A.n)

        將三元組表A中所有的非零元素直接放到三元組表B中正確位置上的方法是:position[col]的初值為三元組表A中列號(hào)為col(三元組表B的行號(hào)為col)的第1個(gè)非零元素的正確位置,當(dāng)三元組表A中列號(hào)為col的1個(gè)元素加入到三元組表B時(shí),則position[col]=position[col]+1,即:使position[col]始終指向三元組表A中列號(hào)為col的下一個(gè)非零元素在三元組表B中的正確位置。

        稀疏矩陣的快速轉(zhuǎn)置算法如下:

        (1)初始化num[ ]數(shù)組;

        (2)求num[ ]數(shù)組各元素的值;

        (3)求position[ ]數(shù)組各元素的值;

        (4)將三元組表A中所有的非零元素直接放到三元組表B中正確位置上。

        快速轉(zhuǎn)置算法的時(shí)間主要耗費(fèi)在4個(gè)并列的單循環(huán)上,這4個(gè)并列的單循環(huán)分別執(zhí)行了A.n,A.len,A.n-1,A.len次,因而總的時(shí)間復(fù)雜度為O(A.n)+O(A.len)+O(A.n)+O(A.len),即為O(A.n+A.len)。當(dāng)待轉(zhuǎn)置矩陣source中非零元素個(gè)數(shù)接近于A.m×A.n時(shí),其時(shí)間復(fù)雜度接近于經(jīng)典算法的時(shí)間復(fù)雜度O(A.m×A.n)。

        快速轉(zhuǎn)置算法在空間耗費(fèi)上除三元組表所占用的空間外,還需2個(gè)輔助向量空間,即num[1..A.n],position[1..A.n]??梢?jiàn),算法在時(shí)間上的節(jié)省,是以更多的存儲(chǔ)空間為代價(jià)的。

        可見(jiàn),稀疏矩陣的三元組表表示法雖然節(jié)約了存儲(chǔ)空間, 但比起矩陣的正常存儲(chǔ)方式來(lái)講,其實(shí)現(xiàn)相同操作要耗費(fèi)較多的時(shí)間,同時(shí)也增加了算法的難度,即以耗費(fèi)更多時(shí)間為代價(jià)來(lái)?yè)Q取空間的節(jié)省。

        3 稀疏矩陣的快速轉(zhuǎn)置算法的改進(jìn)

        在稀疏矩陣的快速轉(zhuǎn)置算法中引入2個(gè)輔助向量空間num[]和position[],在下面的改進(jìn)算法中只保留num[],另外引入2個(gè)變量k1和k2。num[col]起初用來(lái)存放矩陣source中第col列中非零元素個(gè)數(shù)(轉(zhuǎn)置后矩陣dest中第col行非零元素的個(gè)數(shù)),然后通過(guò)修改num[col]中各元素的值,用num[col] 存放轉(zhuǎn)置矩陣source中第col列(轉(zhuǎn)置后矩陣dest中第col行)中第一個(gè)非零元素在三元組表B中的正確位置。修改num[col]中各元素的值的操作實(shí)現(xiàn)如下:

        (1)令k1=num[1];num[1]=1;

        (2)對(duì)于col=2…A.n依次做:

        k2= num[col]

        num[col]=k1+num[col-1];

        k1=k2;

        在轉(zhuǎn)置過(guò)程中,當(dāng)三元組表A中列號(hào)為col的1個(gè)元素加入到三元組表B時(shí),則num[col]=num[col]+1,即:使num[col]始終指向三元組表A中列號(hào)為col的下一個(gè)非零元素在三元組表B中的正確位置。

        改進(jìn)的快速轉(zhuǎn)置算法如下:初始化num[ ]數(shù)組;求num[ ]數(shù)組各元素的值;修改num[ ]數(shù)組各元素的值;將三元組表A中所有的非零元素直接放到三元組表B中正確位置上。

        顯然,上述改進(jìn)算法的時(shí)間復(fù)雜度與原算法相同,在空間復(fù)雜度上除了三元組表所占用的空間外,只需要1個(gè)輔助向量空間num[1..A.n]和2個(gè)簡(jiǎn)單變量,而算法的空間復(fù)雜度僅考慮算法所需的輔助空間,因此,改進(jìn)算法的空間復(fù)雜度比原算法節(jié)約一半。

        參考文獻(xiàn)

        [1]耿國(guó)華.數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言描述[M].西安:西安電子科技大學(xué)出版社,2002.

        [2]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].北京:清華大學(xué)出版社,1997.

        [3]殷人昆,陶永雷,謝若陽(yáng),等.數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++描述).北京:清華大學(xué)出版社,1999.

        [4] 朱戰(zhàn)立.數(shù)據(jù)結(jié)構(gòu)使用C++語(yǔ)言.西安:西安電子科技大學(xué)出版社,2001.

        [5]謝應(yīng)科,張濤,韓承德.實(shí)時(shí)SAR成像中矩陣轉(zhuǎn)置的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)研究與發(fā)展,2003,40(1):6-11.

        [6]江帆,劉光平,周志敏.多計(jì)算機(jī)上分布式矩陣轉(zhuǎn)置.微處理機(jī),2002(2):34-37.

        作者簡(jiǎn)介 王 榮 女,1972年出生,陜西華陰人,渭南師范學(xué)院計(jì)算機(jī)科學(xué)系講師,西安電子科技大學(xué)碩士研究生。

        国产精品久久久| 99久久精品免费看国产一区二区三区| 精品国产亚洲亚洲国产| 亚洲中文字幕无码爆乳app| 真实国产老熟女无套中出| 女人和拘做受全程看视频| 久久99热久久99精品| 白嫩少妇激情无码| 亚洲国产99精品国自产拍| 国产suv精品一区二人妻| 国产又滑又嫩又白| 99热成人精品国产免| 亚洲天堂免费av在线观看| 青青草成人免费播放视频| 日韩人妻免费视频一专区| 国产精品情侣呻吟对白视频| 中文字幕无码毛片免费看| 亚洲国产精品成人无码区| 亚洲色在线视频| 97精品国产高清自在线看超| 一区二区亚洲 av免费| 日韩不卡一区二区三区色图| 日本一区二区在线免费视频 | 色妺妺视频网| 国产一级片内射在线视频| 在线观看女同一区二区| 日本av天堂一区二区三区| 九九在线中文字幕无码| 国产一区二区三区在线观看免费| 欧美深夜福利网站在线观看| АⅤ天堂中文在线网| 性色av一区二区三区密臀av| 午夜久久久久久禁播电影| 精品久久久久久成人av| 9999毛片免费看| 亚洲国产精品久久久久婷婷软件| 久久久人妻一区精品久久久| 国产视频激情视频在线观看| 亚洲三级视频一区二区三区| 久久久www成人免费毛片| 曝光无码有码视频专区|