當前位置:首頁 » 存儲配置 » 對稱矩陣的存儲壓縮方法

對稱矩陣的存儲壓縮方法

發布時間: 2023-03-27 22:58:38

❶ 設有一個 10 × 10的對稱矩陣 A採用壓縮方式進行存儲,存儲時以按行優先的順序

對稱矩陣且存儲的是下三角,那你首先得看a65是在下三角還是上三角,因為上三角的值是由下三角對稱的值來存儲的。6>5,a65在下三角。按行存儲下三角,從第一行開始分別存儲1,2,3,...個元素,a65表示第7行的第6個元素,那他前面的數據占的位元組就是(1+2+3+4+5+6+5)*2=52,所以a65的地址是下一個53

❷ 設有10階對稱矩陣a,採用壓縮存儲方式(以行序為主序存儲,則a11的地址為1),則a85的地址為。

首先,壓縮存儲對於對稱矩陣來說,等於是存對角線的右上半加對角線的元素,或者是左下半加對角線的元素,其他位置不存儲。

這題是使用行優先存儲,即先存a11,再a12,再a22,再a13,再a23,再a33,以此類推,一直到a85,所以a85的位置計算為:(1+2+3+4+5+6+7)+5=33,選擇答案B。

對稱矩陣(Symmetric Matrices)是指元素以主對角線為對稱軸對應相等的矩陣。在線性代數中,對稱矩陣是一個方形矩陣,其轉置矩陣和自身相等。

(2)對稱矩陣的存儲壓縮方法擴展閱讀

LAPACK是由美國國家科學基金等資助開發的著名公開軟體。LAPACK包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等。

LAPACK提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的最小平方解、計算特徵向量、用於計算矩陣QR分解的Householder轉換、以及奇異值分解等問題。 在NetLib亦提供了API經簡化的Fortran 95版本的LAPACK95。LAPACK以BSD授權的方法釋出。

❸ 什麼是對稱矩陣有哪些特性

對稱矩陣是元素以主對角線為對稱軸對應相等的矩陣。那麼你對對稱矩陣了解多少呢?以下是由我整理關於什麼是對稱矩陣的內容,希望大家喜歡!

什麼是對稱矩陣
元素以主對角線為對稱軸對應相等的矩陣。1855年,埃米特(C.Hermite,1822-1901年)證明了別的數學家發現的一些矩陣類的特徵根的特殊性質,如現在稱為埃米特矩陣的特徵根性質等。後來,克萊伯施(A.Clebsch,1831-1872年)、布克海姆(A.Buchheim)等證明了對稱矩陣的特徵根性質。泰伯(H.Taber)引入矩陣的跡的概念並給出了一些有關的結論。
對稱矩銷閉陣的特性
1.對於任何方形矩陣X,X+XT是對稱矩陣。

2.A為方形矩陣是A為對稱矩陣的必要條件。

3.對角矩陣都是對稱矩陣。

兩個對稱矩陣的積是對稱矩陣棗謹,當且僅當兩者的乘法可交換。兩個實對稱矩陣乘法可交換當且僅當兩者的特徵空間相同。

用<,>表示上的內積。n×n的實矩陣A是對稱的,當且僅當對於所有X, Y∈ ,( A(x) , Y )=( X, A(Y))。 【1】凳斗基

任何方形矩陣X,如果它的元素屬於一個特徵值不為2的域(例如實數),可以用剛好一種 方法 寫成一個對稱矩陣和一個斜對稱矩陣之和:X=1/2(X+XT)+1/2(X-XT)

每個實方形矩陣都可寫作兩個實對稱矩陣的積,每個復方形矩陣都可寫作兩個復對稱矩陣的積。

若對稱矩陣A的每個元素均為實數,A是Hermite矩陣。

一個矩陣同時為對稱矩陣及斜對稱矩陣當且僅當所有元素都是零。

如果X是對稱矩陣,那麼AXAT也是對稱矩陣.

n階實對稱矩陣,是n維歐式空間V(R)的對稱變換在單位正交基下所對應的矩陣。

所謂對稱變換,即對任意α、 β∈V,都有(σ(α),β)=(α,σ(β))。投影變換和鏡像變換都是對稱變換。
數據結構中的對稱矩陣
1.對稱矩陣

(1)對稱矩陣

在一個n階方陣A中,若元素滿足下述性質:

aij=aji0≤i,j≤n-1

則稱A為對稱矩陣。

(2)對稱矩陣的壓縮存儲

對稱矩陣中的元素關於主對角線對稱,故只要存儲矩陣中上三角或下三角中的元素,讓每兩個對稱的元素共享一個存儲空間。這樣,能節約近一半的存儲空間。

①按"行優先順序"存儲主對角線(包括對角線)以下的元素

即按a00,a10,a11,……,an-1,0,an-1,1…,an-1,n-1次序存放在一個向量sa[0..n(n+1)/2-1]中(下三角矩陣中,元素總數為n(n+1)/2)。

其中:

sa[0]=a00,

sa[1]=a10,

……,

sa[n(n+1)/2-1]=an-1,n-1

②元素aij的存放位置

aij元素前有i行(從第0行到第i-1行),一共有:

1+2+…+i=i×(i+1)/2個元素;

在第i行上,aij之前恰有j個元素(即ai0,ai1,…,ai,j-1),因此有:

sa[i×(i+1)/2+j]=aij

③aij和sa[k]之間的對應關系:

若i≥j,k=i×(i+1)/2+j0≤k<n(n+1)/2

若i<j,k=j×(j+1)/2+i0≤k<n(n+1)/2

令I=max(i,j),J=min(i,j),則k和i,j的對應關系可統一為:

k=i×(i+1)/2+j0≤k<n(n+1)/2

(3)對稱矩陣的地址計算公式

LOC(aij)=LOC(sa[k])

=LOC(sa[0])+k×d=LOC(sa[0])+[I×(I+1)/2+J]×d

通過下標變換公式,能立即找到矩陣元素aij在其壓縮存儲表示sa中的對應位置k。因此是隨機存取結構。

【例】a21和a12均存儲在sa[4]中,這是因為

❹ 1個10×10的對稱矩陣採用壓縮存儲方式以行優先方式第一行存儲一個元素

選D.
因為你用的存貯方式之存下三角部分,所慎銀以實際滲早上存貯的是第8行第5列.前7行一共7*8/2=28個元寬喊宴素,所以這個元素在第33個單元.

❺ 多維數組之壓縮對稱矩陣

接近4M數據,壓縮到2M左右即可滿足不超過4M內存保存。


因為是對稱矩陣,只需要保存左下這個三角形中的數據即可。

也就缺姿是說對於n*n的矩陣需要的數組大小是(1+n)*n/2


索引的時候位置(i, j)的數保存在a[(1+i)*i/2 + j]裡面(i >= j)。


程序如下:

#include<iostream>
usingnamespacestd;

intmain()
{
intn;
cin>>n;
int*a=newint[(1+n)*n/2];
for(inti=0;i<n;i++)
{
for(intj=0;j<=i;j++)cin猜扮粗>>a[(1+i)*i/2+j];
intt;
for(intj=i+1;j<n;j++)cin>>t;
}

intm;
cin>>m;
for(inti=0;i<m;i++)
{
intx,y;
cin>穗鎮>x>>y;
x=x-1;
y=y-1;
if(x<y)
{
intt=x;
x=y;
y=t;
}
cout<<a[(1+x)*x/2+y]<<endl;
}

deletea;
return0;
}

❻ 特殊矩陣的壓縮存儲

數組是一組偶對(下標值,數據元素值)的集合。在數組中,對於一組有意義的下標,都存在一個與其對應的值。一維數組對應著一個下標值,二維數組對應著兩個下標值,如此類推。
數組是由 n(n>1)個具有相同數據類型的數據元素 組成的有序序列,且該序列必須存儲在一塊地址連續的存儲單元中。
數組中的數據元素具有相同數據類型。閉凱敏
數組是一種隨機存取結構,給定一組下標,就可以訪問與其對應的數據元素。
數組中的數據元素個數是固定的。

計算機的內存結構是一維(線性)地址結構,對於多維數組,將其存放(映射)到內存一維結構時,有個次序約定問題。即必須按某種次序將數組元素排成一列序列,然後將這個線性序列存放到內存中。
二維數組是最簡單的多維數組,以此為例說明多維數組存放(映射)到內存一維結構時的次序約定問題。

對於 ,通常有兩種順序存儲方式
(1) 行優先順序(Row Major Order) :將數組元素按行排列,第 i+1個行向量緊接在第 i 個行向量後面。對二維數組,按行優先順序存儲的線性序列為:
PASCAL、C 是按行優先順序存儲的。
(2) 列優先順序(Column Major Order) :將數組元素按列向量排列,第 j+1 個列向量緊接在第 j 個列向量之後,對二維數組,按列優先順序存儲的線性序列為:

FORTRAN 是按列優先順序存儲的。

設有二維數組 ,若每個元素佔用的存儲單元數為L個, 表示元素 的首地址,即數組的首地址
(1)以「行優先順序」存儲
第 1 行中的每個元素對應的(首)地址是:
第 m 行中的每個元素對應的(首)地址是:
(2)以「列優先順序」存儲
(1) 第 1 列中的每個元素對應的(首)地址是:

(3) 第 n 列中的每個元素對應的(首)地址是:

特殊矩陣(對稱矩陣,對角矩陣,三角矩陣)壓縮存儲:
多個相同的非零元素只分配一個元素值的存儲空間;
零元素不分配空間。
(1)對稱矩陣
對稱矩陣的特點是:在一個 n 階方陣中,有 ,其中 1≤i,j≤n,對稱矩陣關於主對角線對稱,因此只需存儲上三角或下三角部分即可。
設有對稱矩陣A[i][j]如下圖示:

(2)三角矩陣
①下三角矩陣:
設有下三角矩陣 A[i][j]如下圖所示:

在下三角矩陣中,主對角線以上的元素是一個常量。存完下三角中的元素之後,緊接著存儲對角線上方的常量,因為是同一個常數,所以存一個即可,其壓縮存儲後如下圖所示:

②上三角矩陣
設有上三角矩陣 A[i][j]如下圖所示:

在上三角矩陣中, K 與 i,j 的對應關系為:

(3)對轎枝角矩陣
對角矩陣也稱為帶狀矩陣,如下圖所示:

在這種三對角矩陣中,所有非零元素都集中在以主對角線為中心的對角區域中,即除了主對角線和它的上下方若干條對角線的元素外,所有其他元素都為零(或同一個常數 C)。
對角矩陣 A 也可以採用壓縮存儲,將三對角矩陣壓縮到向量 SA[k]中去,按以行為主序,順序的存儲其非零元素,按其壓縮規律,孫橋找到相應的映象函數。k與i,j的對應關系為:

稀疏矩陣:設矩陣 A 是一個 n*m 的矩陣中有 s 個非零元素,設 δ=s/(n m),稱δ為稀疏因子,如果某一矩陣的稀疏因子δ滿足δ≦0.05 時稱為稀疏矩陣。對於稀疏矩陣,採用壓縮存儲方法時,只存儲非 0 元素。必須存儲非 0 元素的行下標值、列下標值、元素值。

(1)三元組順序表
若以行序為主序,稀疏矩陣中所有非 0 元素的三元組,就可以得構成該稀疏矩陣的一個三元組順序表。相應的數據結構定義如下:

(2)十字鏈表
對於稀疏矩陣,當非 0 元素的個數和位置在操作過程中變化較大時,採用鏈式存儲結構表示比三元組的線性表更方便。
矩陣中非 0 元素的結點所含的域有:行、列、值、行指針(指向同一行的下一個非 0 元)、 列指針(指向同一列的下一個非 0 元)。其次,十字交叉鏈表還有一個頭結點,結點的結構如圖所示。

由定義知,稀疏矩陣中同一行的非 0 元素的由 right 指針域鏈接成一個行鏈表,由 down指針域鏈接成一個列鏈表。則每個非 0 元素既是某個行鏈表中的一個結點,同時又是某個列鏈表中的一個結點,所有的非 0 元素構成一個十字交叉的鏈表。稱為十字鏈表。
此外,還可用兩個一維數組分別存儲行鏈表的頭指針和列鏈表的頭指針。

廣義表是線性表的推廣和擴充,在人工智慧領域中應用十分廣泛。
把線性表定義為 n(n≧0 )個元素 a1, a2 ,..., an 的有窮序列,該序列中的所有元素具有相 同的數據類型且只能是原子項(Atom)。所謂原子項可以是一個數或一個結構,是指結構上不 可再分的。若放鬆對元素的這種限制,容許它們具有其自身結構,就產生了廣義表的概念。
廣義表(Lists,又稱為列表 ):是由 n(n ≧0)個元素組成的有窮序列: LS= 其中 或者是原子項,或者是一個廣義表。LS是廣義表的名字,n 為它的長度。若 是廣義表,則稱為 LS 的子表。習慣上:原子用小寫字母,子表用大寫字母。

若廣義表 LS 非空時:
(表中第一個元素)稱為表頭; 其餘元素組成的子表稱為表尾; 。 廣義表中所包含的元素(包括原子和子表)的個數稱為表的長度。
廣義表中括弧的最大層數稱為表深 (度)。
兩個基本操作 GetHead() GetTail()。

廣義表的重要結論:
(1) 廣義表的元素可以是原子,也可以是子表,子表的元素又可以是子表, ...。即廣義 表是一個多層次的結構。
(2) 廣義表可以被其它廣義表所共享,也可以共享其它廣義表。廣義表共享其它廣義表 時通過表名引用。
(3) 廣義表本身可以是一個遞歸表。
(4) 根據對表頭、表尾的定義,任何一個非空廣義表的表頭可以是原子,也可以是子表, 而表尾必定是廣義表。

❼ 請問一下數據結構中對稱矩陣的壓縮存儲的一 一對應關系怎麼算的呀。

其實書本上說的已經夠了,我就不再贅述了,下面說說不明白的地方吧!

書本上說了 1<=i,j<=n,所以矩陣下標ij是以1開始的,但書本上的k是從0開始的

則下三角區和主對角線下標ij和一維向量下標k的關系式為i(i-1)/2+j-1如果k從1開始,則關系式為i(i-1)/2+j。

好,進入正題思路:

第1行一個,第2行兩個,。。。,第i-1行i-1個;第i行元素位置在第j,也就是說,第i行截止到它有j個。

所以要分開思考,1到i-1行的元素之和+本行截止到它的元素之和=它在一維數組的位置。

第i行前面i-1行的總和為i(i-1)/2,本行第i行截止到所求元素總數為j,所以加起來為i(i-1)/2+j。然後-1,代表k從0開始。

比如想取第3行第2列矩陣元素隱射到一維數組的位置

本行第3行之前2行的元素總數為3*2/2=3 對應 [i(i-1)/2]

然後j是在本行的位置是2 對應[+j]

總的等於5

這個第3行第2列的元素應該在一維數組的第五個位置,但是一維是從零開始的,所以5-1,得到對應一維數組的下標為4.

王道書上和樓上的答案都是正確的,只不過思路和我的有點不同,我的是處的位置,他們是要求元素之前位置,區別也就+-1

❽ 矩陣的壓縮存儲是什麼

二維數組在形式上是矩陣,因此一般用二維數組來存儲矩陣。在不壓縮存儲的情況下,矩陣採用按行優先或按列優先方式存儲,佔用的存儲單元數等於矩陣的元素個數。在實際應用中,經常出現一些階數很高的矩陣,同時在矩陣中非零元素呈某種規律分布或者矩陣中有大量的零元素,若仍然用常規方法存儲,可能存儲重復的非零元素或零元素,這將造成存儲空間的大量浪費。因此對這類矩陣進行壓縮存儲,從而合理地利用存儲空間。

為了節省存儲空間,可以利用特殊矩陣的規律,對它們進行壓縮存儲,也就是說為多個值相同的元素只分配一個存儲單元,對零元素不分配空間。適合壓縮存儲的矩陣一般是值相同的元素或者零元素在矩陣中分布有一定規律的特殊矩陣和稀疏矩陣。常見的特殊矩陣有對稱矩陣、三角矩陣和對角矩陣。

❾ 對稱矩陣的壓縮存儲

#include<iostream>
using namespace std;

int main()
{
int temp[1000];
int t[500][500];
int arry1[1000],arry2[1000];
int n;
scanf("%d",&n);
int i;
int m;
m=n*n+n;
m=m/2;
for(i=1;i<=m;i++)
{
scanf("%d",&arry1[i]);
}
for(i=1;i<=m;i++)
{
scanf("%d",&arry2[i]);
}
for(i=1;i<=m;i++)
{
temp[i]=arry1[i]+arry2[i];
}
int j;
int k;
for(i=1,k=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{ t[i][j]=temp[k];
k++;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j>i)
printf("%d",t[j][i]);
else
printf("%d",t[i][j]);
if(j!=n)
printf(" ");
}
printf("\n");
}

return 0;
}

❿ 對於n階對稱矩陣A,請寫出計算任一矩陣元素的壓縮存儲地址

算i<=j的情形
aij先算如果不壓縮的地址(i-1)n+j,再算壓縮後,壓縮後相當於少了一個下三角矩陣,大小是1+2+。。。+j-1=(j-1)j/2;所以地址是(i-1)n-(j-3)j/2;
i>j的情形轉換為i<j的地址,也就是算aji。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:331
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:371
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:606
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:27
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:101
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:935
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:730
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:798
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:506
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:368