日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 关联矩阵,(案例)利用Matlab实践关联矩阵与邻接矩阵的转换

發(fā)布時(shí)間:2023/12/20 循环神经网络 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 关联矩阵,(案例)利用Matlab实践关联矩阵与邻接矩阵的转换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

“利用Matlab實(shí)踐關(guān)聯(lián)矩陣與鄰接矩陣的轉(zhuǎn)換”

假設(shè)網(wǎng)絡(luò)圖G=(V,E)的頂點(diǎn)集為V={v1,v2,…,vn},邊集為E={e1,e2,…,em},則該網(wǎng)絡(luò)圖的關(guān)聯(lián)矩陣L就是一個(gè)n×m矩陣,其中元素gij表示頂點(diǎn)vi與邊ej相關(guān)聯(lián),而鄰接矩陣A是一個(gè)n階方陣,其中元素aij表示連接頂點(diǎn)vi與vj的邊。從關(guān)聯(lián)矩陣和鄰接矩陣的定義來(lái)看,二者均是以矩陣形式表示網(wǎng)絡(luò)圖結(jié)構(gòu),同一網(wǎng)絡(luò)圖可以有關(guān)聯(lián)矩陣和鄰接矩陣的兩種表達(dá)方式,即可依據(jù)其各自定義進(jìn)行關(guān)聯(lián)矩陣和鄰接矩陣的相互轉(zhuǎn)換。通過(guò)Matlab進(jìn)行腳本編碼實(shí)現(xiàn)無(wú)向圖與有向圖中的關(guān)聯(lián)矩陣和鄰接矩陣的轉(zhuǎn)換,進(jìn)一步熟悉二者矩陣的定義與含義,并掌握用計(jì)算機(jī)語(yǔ)言操作矩陣運(yùn)算的編碼方法。

首先在無(wú)向圖中實(shí)現(xiàn)關(guān)聯(lián)矩陣和鄰接矩陣的轉(zhuǎn)換,定義一個(gè)轉(zhuǎn)換函數(shù),通過(guò)控制參數(shù)實(shí)現(xiàn)“關(guān)聯(lián)矩陣->鄰接矩陣”與“鄰接矩陣->關(guān)聯(lián)矩陣”的轉(zhuǎn)換功能。然后考慮連接邊的方向問(wèn)題,在有向圖中同樣定義一個(gè)轉(zhuǎn)換參數(shù),實(shí)現(xiàn)“關(guān)聯(lián)矩陣->鄰接矩陣”與“鄰接矩陣->關(guān)聯(lián)矩陣”的轉(zhuǎn)換功能。

01

無(wú)向圖中關(guān)聯(lián)矩陣和鄰接矩陣的轉(zhuǎn)換函數(shù)

在無(wú)向圖中,由于連接邊的無(wú)向性,因而對(duì)于頂點(diǎn)連接關(guān)系與頂點(diǎn)/邊關(guān)聯(lián)關(guān)系的轉(zhuǎn)換相對(duì)較為容易。

“鄰接矩陣->關(guān)聯(lián)矩陣”:先由鄰接矩陣得出網(wǎng)絡(luò)圖中所有連接邊的數(shù)量與頂點(diǎn)的數(shù)量,然后在鄰接矩陣中搜索不為0的元素,即對(duì)應(yīng)某一條連接邊,鄰接矩陣不為0的某元素aij,對(duì)應(yīng)某條邊k的行向量中第i個(gè)與第j個(gè)元素分別為1。

“關(guān)聯(lián)矩陣->鄰接矩陣”:先有關(guān)聯(lián)矩陣獲取連接邊和頂點(diǎn)的數(shù)量,然后依次搜索每一條連接邊,如某條邊k的行向量中第i個(gè)與第j個(gè)元素分別為1,說(shuō)明頂點(diǎn)i與j存在鄰接關(guān)系,即鄰接矩陣的元素aij值為1。代碼:function W=incandadf(F,f) %無(wú)向圖中關(guān)聯(lián)與鄰接矩陣的轉(zhuǎn)換if f==0 % 鄰接-關(guān)聯(lián)m=sum(sum(F))/2; %在鄰接矩陣中計(jì)算邊的數(shù)量n=size(F,1); %節(jié)點(diǎn)數(shù)量W=zeros(n,m);k=1;for i=1:nfor j=i:nif F(i,j)~=0 %鄰接矩陣中元素不為0說(shuō)明有連接邊W(i,k)=1; %給邊的起點(diǎn)賦值為1W(j,k)=1; %給邊的終點(diǎn)賦值為1k=k+1; %依次定義每一條邊endendendelseif f==1 % 關(guān)聯(lián)->鄰接m=size(F,2); %在關(guān)聯(lián)矩陣中獲取邊的數(shù)量n=size(F,1); %在關(guān)聯(lián)矩陣中獲取頂點(diǎn)的數(shù)量W=zeros(n,n);for i=1:ma=find(F(:,i)~=0);%尋找每一條邊即每一列對(duì)應(yīng)不為0的兩個(gè)元素W(a(1),a(2))=1; %存在邊,即鄰接矩陣對(duì)應(yīng)值為1W(a(2),a(1))=1; %存在邊,即鄰接矩陣對(duì)應(yīng)值為1endelsedisp("please input the right value of f");endW;

02

有向圖中關(guān)聯(lián)矩陣和鄰接矩陣的轉(zhuǎn)換函數(shù)

類似定義一個(gè)轉(zhuǎn)換函數(shù)mattransf(F,f),其中,F為輸入矩陣,f=0表示F是鄰接矩陣,f=1表示F是關(guān)聯(lián)矩陣。

矩陣轉(zhuǎn)換方法基本與無(wú)向圖中類似,但是在有向圖網(wǎng)絡(luò)中,有以下幾個(gè)注意問(wèn)題:

1)有向圖的關(guān)聯(lián)矩陣中,列向量代表有向邊,值為1 表示起點(diǎn),值為-1表示終點(diǎn);

2)無(wú)向圖的關(guān)聯(lián)矩陣直接對(duì)應(yīng)有向圖,則需要用多一倍的列來(lái)表示雙向邊;

3)在實(shí)現(xiàn)鄰接至關(guān)聯(lián)矩陣轉(zhuǎn)換時(shí),Aij與Aji不一定相等,對(duì)應(yīng)的有向邊i->j和j->i需要分別計(jì)算和定義;

4)在實(shí)現(xiàn)關(guān)聯(lián)至鄰接矩陣轉(zhuǎn)換時(shí),需要根據(jù)元素值為1或-1判定起點(diǎn)和終點(diǎn),從而決定是給Aij或Aji賦值為1。代碼:function W=mattransf(F,f)%有向圖的關(guān)聯(lián)與鄰接矩陣的轉(zhuǎn)換if f==0 % 鄰接-關(guān)聯(lián)m=sum(sum(F)); %在有向圖中計(jì)算邊的數(shù)量,此時(shí)Wij!=Wjin=size(F,1); %頂點(diǎn)數(shù)量W=zeros(n,m);k=1;for i=1:nfor j=1:nif F(i,j)~=0 %由i出發(fā)的有向邊,起點(diǎn)W(i,k)=1; %起點(diǎn)賦值為1W(j,k)=-1; %終點(diǎn)賦值為-1k=k+1;endendendelseif f==1 % 關(guān)聯(lián)-鄰接m=size(F,2); %邊數(shù)n=size(F,1); %頂點(diǎn)數(shù)W=zeros(n,n);for i=1:ma=find(F(:,i)~=0); %找到有向邊的兩個(gè)頂點(diǎn)if F(a(1),i)==1W(a(1),a(2))=1; %值為1,為起點(diǎn),a(1)->a(2)elseW(a(2),a(1))=1; %值為-1,為終點(diǎn),a(2)->a(1)endendelsedisp("please input the right value of f");endW;

03

算例無(wú)向圖中關(guān)聯(lián)矩陣和鄰接矩陣的轉(zhuǎn)換

代碼:%無(wú)向圖中鄰接矩陣與關(guān)聯(lián)矩陣的轉(zhuǎn)換A=[0 1 1 0 1;1 0 1 0 0;1 1 0 1 1;0 0 1 0 1;1 0 1 1 0];fprintf("原無(wú)向圖的鄰接矩陣為:\n")AW=incandadf(A,0);fprintf("由鄰接矩陣轉(zhuǎn)換成關(guān)聯(lián)矩陣為:\n")WL=[1 1 1 0 0 0 0;1 0 0 1 0 0 0;0 1 0 1 1 1 0;0 0 0 0 1 0 1;0 0 1 0 0 1 1];fprintf("原無(wú)向圖的關(guān)聯(lián)矩陣為:\n")LW=incandadf(L,1);fprintf("由關(guān)聯(lián)矩陣轉(zhuǎn)換成鄰接矩陣為:\n")W結(jié)果:原無(wú)向圖的鄰接矩陣為:A?=0?????1?????1?????0?????11 0 1 0 01 1 0 1 10 0 1 0 11 0 1 1 0由鄰接矩陣轉(zhuǎn)換成關(guān)聯(lián)矩陣為:W?=1?????1?????1?????0?????0?????0?????01 0 0 1 0 0 00 1 0 1 1 1 00 0 0 0 1 0 10 0 1 0 0 1 1原無(wú)向圖的關(guān)聯(lián)矩陣為:L?=1?????1?????1?????0?????0?????0?????01 0 0 1 0 0 00 1 0 1 1 1 00 0 0 0 1 0 10 0 1 0 0 1 1由關(guān)聯(lián)矩陣轉(zhuǎn)換成鄰接矩陣為:W?=0?????1?????1?????0?????11 0 1 0 01 1 0 1 10 0 1 0 11 0 1 1 0有向圖中關(guān)聯(lián)矩陣和鄰接矩陣的轉(zhuǎn)換

代碼:A=[0 0 0 0 0;1 0 0 0 0;1 1 0 0 0;0 0 1 0 0;1 0 1 1 0];fprintf("原有向圖的鄰接矩陣為:\n")AW= mattransf (A,0);fprintf("由鄰接矩陣轉(zhuǎn)換成關(guān)聯(lián)矩陣為:\n")WL=[-1 -1 0 0 -1 0 0;1 0 -1 0 0 0 0;0 1 1 -1 0 -1 0;0 0 0 1 0 0 -1;0 0 0 0 1 1 1];fprintf("原有向圖的關(guān)聯(lián)矩陣為:\n")LW=mattransf(L,1);fprintf("由關(guān)聯(lián)矩陣轉(zhuǎn)換成鄰接矩陣為:\n")W結(jié)果:原有向圖的鄰接矩陣為:A?=0?????0?????0?????0?????01 0 0 0 01 1 0 0 00 0 1 0 01 0 1 1 0由鄰接矩陣轉(zhuǎn)換成關(guān)聯(lián)矩陣為:W?=-1????-1?????0?????0????-1?????0?????01 0 -1 0 0 0 00 1 1 -1 0 -1 00 0 0 1 0 0 -10 0 0 0 1 1 1原有向圖的關(guān)聯(lián)矩陣為:L?=-1????-1?????0?????0????-1?????0?????01 0 -1 0 0 0 00 1 1 -1 0 -1 00 0 0 1 0 0 -10 0 0 0 1 1 1由關(guān)聯(lián)矩陣轉(zhuǎn)換成鄰接矩陣為:W?=0?????0?????0?????0?????01 0 0 0 01 1 0 0 00 0 1 0 01 0 1 1 0

總結(jié)

以上是生活随笔為你收集整理的matlab 关联矩阵,(案例)利用Matlab实践关联矩阵与邻接矩阵的转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。