亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法

文檔序號:6618139閱讀:4444來源:國知局
專利名稱:對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法
技術(shù)領(lǐng)域
本發(fā)明屬于軟件設(shè)計技術(shù)領(lǐng)域,具體涉及一種對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法。
背景技術(shù)
圖作為一種非線性的數(shù)據(jù)結(jié)構(gòu),被廣泛應(yīng)用于諸如系統(tǒng)工程、控制學(xué)、遺傳學(xué)、網(wǎng)絡(luò)技術(shù)、人工智能、編譯系統(tǒng)、軟件工程等多個技術(shù)領(lǐng)域。圖常用的存儲方法有鄰接矩陣表示法、鄰接表表示法、鄰接多重表表示法以及十字鏈表表示法,每一種存儲方法都各有利弊,在實際應(yīng)用中需要根據(jù)具體問題來選擇合適的存儲方法。鄰接矩陣表示法是圖的順序存儲方式,采用兩個數(shù)組來表示圖,一個一維數(shù)組用于存儲圖中的頂點信息,一個二維數(shù)組用于存儲圖中的頂點之間的關(guān)系,該二維數(shù)組被稱為鄰接矩陣。使用鄰接矩陣來表示圖,易于求出圖中各個頂點的度和頂點的鄰接點。但是鄰接矩陣表示法需要的存儲空間比較大,有向圖需要η2個存儲空間,而無向圖采用壓縮存
儲,只存儲下三角陣,也需要
權(quán)利要求
1.對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于利用三元組表對稀疏有向圖的鄰接矩陣進行壓縮存儲,并記錄鄰接矩陣中每一行第一個有效數(shù)據(jù)在三元組表中的位置,進而實現(xiàn)部分有關(guān)圖的應(yīng)用算法; 該方法的具體步驟如下 步驟I,生成稀疏有向圖的鄰接矩陣; 步驟2,利用三元組表對該鄰接矩陣進行壓縮存儲; 步驟3,按照實際應(yīng)用進行有關(guān)圖的應(yīng)用算法。
2.根據(jù)權(quán)利要求I所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于所述三元組表只存儲鄰接矩陣中的有效數(shù)據(jù)及其在鄰接矩陣中的行號和列號等信息。鄰接矩陣中的有效數(shù)據(jù)(即圖中的弧信息)用三元組元素的成員arc表示,其行號用三元組元素的成員row表示,列號用三元組元素的成員col表示。
3.根據(jù)權(quán)利要求2所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于采用三元組表壓縮存儲鄰接矩陣的具體步驟如下 (1)輸入圖的頂點數(shù)及弧的數(shù)目; (2)輸入圖中各頂點的信息,存放于一維數(shù)組中; (3)按以下步驟將每一條弧的信息存儲于三元組表中 a.輸入一條弧的兩個頂點和權(quán)值; b.在存放頂點信息的一維數(shù)組中分別查找兩個頂點的序號; c.將弧的相關(guān)信息存放于三元組表中,其中三元組元素的成員row為弧尾頂點的序號,成員col為弧頭頂點的序號,成員arc為有向圖的弧信息,包括arj和info,其中arj為弧的權(quán)值,info為弧的其他信息; 具體算法如下int CreateDN(Aclj Matrix *G) { int i,j,k,weight;VertexData VI ,v2;scanfTn%d,%d",&G->arcnum,&G->vexnuni); /*輸入圖的頂點數(shù)和弧數(shù)*/ for( i=0;i<G->vexnum;i++) scanf("%c",&G->vexs[i]); /*輸入圖的頂點,創(chuàng)建用于存放頂點信息的一維數(shù)組*/ for(k=0;k<G->arcnum;k++){ scan f( "%c od" ,&VI ,&v2,& weight);/*輸入一條弧的兩個頂點及權(quán)值*/i=LocateVextex (G,vl); J=LocateVextex (G,v2); G->arcs[k].row=i; G->arcs[k].col=j;G->arcs[k].arc.adj=weight; /*述、、/·.弧*/ }returni I); } int LocaleVeitex( Adj Matrix VertexData v) /*求頂點序號的函數(shù)*/ {int j=0,k;for(k=0;k<G->vexnurn;k-H)if(G->vexs[k]==v) I j=k; break; } return(j);} °
4.根據(jù)權(quán)利要求I或2所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于所述步驟3中應(yīng)用算法包括計算頂點的入度、計算頂點的出度、拓撲排序算法和最短路徑算法。
5.根據(jù)權(quán)利要求4所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于所述計算頂點的入度的具體步驟如下 (1)將各頂點的入度初始化為O; (2)在三元組表中,按每個元素的成員col來統(tǒng)計計算各頂點的入度; 具體算法如下for(i=0;i<G. vexnum;i++)indegree [i] = 0;for(i=0;i<G. arcnum;i++)indegree[G. arcs[i]. col]++。
6.根據(jù)權(quán)利要求4所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于所述計算頂點的出度的具體步驟如下 (1)將各頂點的出度初始化為O; (2)在三元組表中,按每個元素的成員row來統(tǒng)計計算各頂點的出度; 具體算法如下for(i=0;i<G. vexnum;i++)outdegree[i] = 0;for(i=0;i<G. arcnum;i++)outdegree[G. arcs[i]. row]++。
7.根據(jù)權(quán)利要求4所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于所述拓撲排序算法的基本思想是(I)先從有向圖中選擇一個入度為O的頂點輸出,并將此頂點及以它為弧尾的所有弧刪除,相對應(yīng)的弧頭入度減I ;(2)重復(fù)執(zhí)行步驟(1),直到不存在入度為O的頂點;為了避免重復(fù)檢測,可以設(shè)置一個輔助棧用于存儲入度為O的頂點; 具體步驟如下 (O計算position □,求各頂點的入度,并初始化輔助棧,計數(shù)器設(shè)初值O ; (2)將入度為O的頂點序號入棧; (3)若???,轉(zhuǎn)向(5);否則,棧頂元素出棧并輸出,計數(shù)器加I; (4)將以該頂點為弧尾的所有弧刪除,相對應(yīng)的弧頭入度減I;若弧頭入度為0,則入棧,轉(zhuǎn)向(3); (5)若計數(shù)器值小于頂點數(shù),說明圖中有回路,非正常結(jié)束;否則正常結(jié)束; 具體算法如下
8.根據(jù)權(quán)利要求4所述的對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,其特征在于所述最短路徑算法是基于有向圖的鄰接矩陣的壓縮存儲方法,對Di jkstra算法進行實現(xiàn),該算法用于計算某頂點到其它頂點的最短路徑,s表示已求出的最短路徑的終點集合,按最短路徑長度遞增的順序逐個將其余頂點添加到S中,具體步驟如下 (1)將VO到頂點i(i取值從O到η-1,η為頂點數(shù))的路徑path[i]初始化為空,將其路徑長度dist[i]初始化為00 ; (2)計算鄰接矩陣中每一行第一個有效元素(非⑴)在三元組表中的下標,存儲于數(shù)組position[]中; (3)求v0到鄰接自v0的頂點i的初始路徑; (4)將v0加入到s中; (5)求vO到其它η-l個頂點的最短路徑 a.設(shè)置循環(huán)控制變量t=l; b.如果t>n-l,轉(zhuǎn)向g; c.求出vO到不屬于s的其他頂點的最短路徑的dist[k],且貪¢51; d.將頂點k加入到集合s中; e.若頂點k到不屬于s的其他頂點j之間存在一條弧,則修正dist[j]及path[j],其中/茫J ;f.t++,轉(zhuǎn)向 b ; g.結(jié)束; 具體算法如下
全文摘要
本發(fā)明公開了一種對稀疏有向圖的鄰接矩陣進行壓縮存儲的方法,主要是利用三元組表對稀疏有向圖的鄰接矩陣進行壓縮存儲,并記錄鄰接矩陣中每一行第一個有效數(shù)據(jù)在三元組表中的位置,進而實現(xiàn)部分有關(guān)圖的應(yīng)用算法。本發(fā)明對圖的鄰接矩陣的壓縮存儲只存儲鄰接矩陣中每一個有效元素的行號、列號及元素值,在某些算法中,還需要少量的空間來存儲鄰接矩陣中每一行有效元素個數(shù)及每一行第一個有效元素在三元組表中的下標。本發(fā)明一方面保持了圖的鄰接矩陣表示法的優(yōu)點,另一方面又解決了用鄰接矩陣表示稀疏圖時的空間浪費問題,同時在某些算法中還簡化了操作,降低了基于鄰接矩陣的算法的時間復(fù)雜度,有效地改善了軟件的性能。
文檔編號G06T9/00GK102968804SQ20121048415
公開日2013年3月13日 申請日期2012年11月23日 優(yōu)先權(quán)日2012年11月23日
發(fā)明者高曉娟 申請人:西安工程大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1