(完整word版)图论算法及matlab程序的三个案例.docx

(完整word版)图论算法及matlab程序的三个案例.docx
(完整word版)图论算法及matlab程序的三个案例.docx

图论实验三个案例

单源最短路径问题

1.1 Dijkstra算法

Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合 S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合 S 当且

仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记l (v) 为顶点

v 到源点 v1的最短距离,v

i

,v

j

V

,若

(v

i

, v

j

) E

,记

v

i到

v

j的权

w

ij。

Dijkstra算法:

①S{ v

1

}

,

l (v

1

) 0

v V { v

1

}

,

l (v)

, i 1,S V { v1};

②S

,停止,否则转③;

③l (v) min{ l (v), d (v j , v)} , v j S ,v S ;

④存在v i 1,使l (v i 1) min{ l (v)},v S;

⑤S S U { v

i 1

}

S S { v

i 1

}

,i i 1,转②;

实际上,Dijkstra算法也是最优化原理的应用:如果v

1

v

2

L v

n 1

v

n是从

v

1 到

v

n的最

短路径,则v

1

v

2

L v

n 1也必然是从

v

1 到

v

n 1的最优路径。

实现代码中,我们用到了距离矩阵,矩阵第i 行第 j 行元

在下面的 MATLAB

素表示顶点v

i 到

v

j的权

w

ij,若

v

i 到

v

j无边,则

w

ij

realmax

,其中 realmax 是

MATLAB常量,表示最大的实数 (1.7977e+308) 。

function re=Dijkstra(ma)

%用 Dijkstra算法求单源最短路径

%输入参量 ma是距离矩阵

%输出参量是一个三行n 列矩阵,每列表示顶点号及顶点到源的最短距离和前顶点

n=size(ma,1);% 得到距离矩阵的维数

s=ones(1,n);s(1)=0;% 标记集合 S 和 S 的补

r=zeros(3,n);r(1,:)=1:n;r(2,2:end)=realmax;%初始化

for i=2:n;%控制循环次数

mm=realmax;

for j=find(s==0);%集合S中的顶点

for k=find(s==1);%集合S补中的顶点

if(r(2,j)+ma(j,k)

r(2,k)=r(2,j)+ma(j,k);r(3,k)=j;

end

if(mm>r(2,k))

mm=r(2,k);t=k;

end

end

end

s(1,t)=0;% 找到最小的顶点加入集合 S

end re=r;

1.2 动态规划求解最短路径

动态规划是美国数学家 Richard Bellman 在 1951 年提出来的分析一类多阶段决策过程的最优化方法,在工程技术、工业生产、经济管理、军事及现代化控制工程等方面均有着广泛的应用。 动态规划应用了最佳原理: 假设为了解决某一

优化问题,需要依次作出

n 个决策

D 1, D 2

,L , D n

,如若这个决策是最优的,对于

任何一个整数 k ,1

于由前面决策所确定的当前状态,即

D k 1 , D k 2 ,L , D n

也是最优的。

如图 1,从 A 1 点要铺设一条管道到 A 16 点,中间必须要经过 5 个中间站,第

一站可以在 { A 2,A 3} 中任选一个,第二、三、四、五站可供选择的地点分别是:

{ A 4,A 5,A 6,A 7 } ,{ A 8,A 9,A 10} , { A 11, A 12,A 13} ,{ A 14,A 15} 。连接两地管道的距离用连线上的数字表示, 要求选一条从 A 1 到 A 16 的铺管线路,使总距离最短。

1

A 4 6

2

3

8

8 A 11

3

2

A

14

A

A

3 2 5

A

5

5

6 5

5

4

1

A 1

8

3

A 9

A 12

2

A 16

3

6 2

7 A

3

6

3

A

3

A

3

6

8

6

15

A 10

3

A 13

A 7 4

图 1 可选择的管道图

解决此问题可以用穷举法,从A1到 A16有 48 条路径,只须比较47 次,就可得到最短路径为: A1→A2→A5→ A8→A12→ A15→A16,最短距离为 18。

也可以使用 Dijkstra算法。这里,我们动态规划解决此问题。注意到最短

路径有这样一个特性,即如果最短路径的第k 站通过k ,则这一最短路径在由

P

P k出发到达终点的那一部分路径,对于始点为P k到终点的所有可能的路径来说,

必定也是距离最短的。根据最短路径这一特性,启发我们计算时从最后一段开始,从后向前逐步递推的方法,求出各点到 A16的最短路径。

在算法中,我们用数组六元数组ss 表示中间车站的个数 ( A1也作为中间车

站) ,用距离矩阵 path 表示该图。为简便起见,把该图看作有向图,各边的方向均为从左到右,则 path 不是对称矩阵,如 path(12,14)=5 ,而 path(14,12)=0( 用

0 表示不通道路 ) 。用 3′16矩阵 spath 表示算法结果,第一行表示结点序号,第二行表示该结点到终点的最短距离,第三行表示该结点到终点的最短路径上的下

一结点序号。下面给出MATLAB实现算法。

function [scheme] = ShortestPath(path,ss)

%利用动态规划求最短路径

%path 是距离矩阵 ,ss 是车站个数

n=size(path,1);%结点个数

scheme=zeros(3,n);% 构造结果矩阵

scheme(1,:)=1:n;% 设置结点序号

scheme(2,1:n-1)=realmax;%预设距离值

k=n-1;%记录第一阶段结点最大序号

for i=size(ss,2):-1:1;%控制循环阶段数

for j=k:-1:(k-ss(i)+1);%当前阶段结点循环

for t=find(path(j,:)>0);%当前结点邻接结点

if path(j,t)+scheme(2,t)

scheme(2,j)=path(j,t)+scheme(2,t);

scheme(3,j)=t;

end

end

end

k=k-ss(i);移入下一阶段

end

先在 MATLAB命令窗口中构造距离矩阵path ,再输入:

>> ShortestPath(path,ss)

得到以下结果:

12345678910111213141516 1813161310912768759430 2568891012121214151516160

将该结果表示为图,即为图 1 粗线所示。

棋盘覆盖问题

1.1问题的提出

在一个 2k2k个方格组成的棋盘中,若恰有一个方格与其他方格不同,则称

该方格为一特殊方格,且称该棋盘为一特殊的棋盘。如图 1 就是当k

3 时的特

殊棋盘。棋盘覆盖问题中,我们要用图 2 所示 4 种不同形态的 L 形骨牌覆盖一个特殊棋盘,且任何 2 个 L 型不得重叠覆盖。

图 1 当 k=3 时的特殊棋盘

(a)(b)(c)(d)

图 2 4 种不同形态的L 型骨牌

1.2问题的分析

易知,用到的 L 型骨牌个数恰为(4

k

1) / 3

。利用分治策略,我们可以设计

出解棋盘覆盖问题的一个简捷的算法。

当 k>0 时,我们将2k2k棋盘分割为4个 2k 12k 1子棋盘如图3两粗实线所示。

1

2

3

图 4 关键结点

图 3 棋盘分割

特殊方格必位于 4 个较小子棋盘之一中,其余 3 个子棋盘中无特殊方格。为了将这 3 个无特殊方格的子棋盘转化为特殊棋盘,我们可以用一个 L 型骨牌覆盖

这3 个较小棋盘的会合处,如图 4 中央 L 型骨牌所示,这 3 个子棋盘上被 L 型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将原问题转化为4 个较小规模的棋盘覆盖问题。递归地使用这种分割,直至棋盘简化为 1 1 棋盘。

1.3算法的MATLAB实现

首先特殊方格在棋盘中的位置可以用一个 1 2 的数组sp表示;对于图2所示的4 种 L 型骨牌,可用数字 1,2,3,4 表示;对于特殊棋盘的骨牌覆盖表示,只

须注意到图 4 所示的关键点,对每个关键点,给定一种 L 型骨牌,就能覆盖整个棋盘,所以对于 2k 2k的特殊棋盘的骨牌覆盖,可用一个(2 k1) (2 k 1) 的矩阵表示。按照这种思想,图 4 的矩阵表示为:

1040102

0400020

4030203

0003000

1040302

0400030

k ,特殊方格位置为:

[1,4],覆盖矩阵为:4030403

=4

下面是在 MATLAB中的棋盘覆盖实现程序。

function re = chesscover(k,sp)

%解决棋盘的覆盖问题

%棋盘为 2^k*2^k , sp 为特殊方格的棋盘位置

global covermatrix

covermatrix=zeros(2^k-1,2^k-1);

even1=floor(sp(1,1)/2)*2==sp(1,1);%判断水平位置是否是偶数even2=floor(sp(1,2)/2)*2==sp(1,2);%判断竖直位置是否是偶数if even1==1&&even2==0%找出找出特殊方格相对关键结点的位置i=4;

else

i=even1+even2+1;

end

tempfun(1,1,k,[sp(1,1)-even1,sp(1,2)-even2,i]);

re=covermatrix;

function tempfun(top,left,k,tp)%子函数,tp为转换后特殊方格在棋盘网络的相对位置

global covermatrix

if k==1

switch tp(1,3)

case 1

covermatrix(tp(1,1),tp(1,2))=3;

case 2

covermatrix(tp(1,1),tp(1,2))=4;

case 3

covermatrix(tp(1,1),tp(1,2))=1;

case 4

covermatrix(tp(1,1),tp(1,2))=2;

end

else

half=2^(k-1);i=top+half-1;j=left+half-1;

if tp(1,1)

if tp(1,2)

covermatrix(i,j)=3;%添加类型为 3 的 L 型骨牌

tempfun(top,left,k-1,tp);

tempfun(top,left+half,k-1,[i-1,j+1,4]);

tempfun(top+half,left+half,k-1,[i+1,j+1,1]

);

tempfun(top+half,left,k-1,[i+1,j-1,2]);

else % 特殊方格在右上

covermatrix(i,j)=4;%添加类型为 4 的 L 型骨牌

tempfun(top,left,k-1,[i-1,j-1,3]);

tempfun(top,left+half,k-1,tp);

tempfun(top+half,left+half,k-1,[i+1,j+1,1]

);

tempfun(top+half,left,k-1,[i+1,j-1,2]);

end

else

if tp(1,2)>j%特殊方格在右下

covermatrix(i,j)=1;%添加类型为 3 的 L 型骨牌

tempfun(top,left,k-1,[i-1,j-1,3]);

tempfun(top,left+half,k-1,[i-1,j+1,4]);

tempfun(top+half,left+half,k-1,tp);

tempfun(top+half,left,k-1,[i+1,j-1,2]);

else % 特殊方格在左下

covermatrix(i,j)=2;%添加类型为 4 的 L 型骨牌

tempfun(top,left,k-1,[i-1,j-1,3]);

tempfun(top,left+half,k-1,[i-1,j+1,4]);

tempfun(top+half,left+half,k-1,[i+1,j+1,1]

);

tempfun(top+half,left,k-1,tp);

end

end

end

在MATLAB命令窗口中输入指

令 chesscover(3,[1,4])

将会得到如上面矩阵一样的结果。

结合 VC++,利用 MATLAB引擎库函数,可以给出了棋盘覆盖的图形

最优树的应用实例

1.1问题的提出

已知某通信系统在通信联络中只可能出现8 种字符,其概率分别为0.05 ,0.29 ,0.07 ,0.08 ,0.14 ,0.23 ,0.03 ,0.11 ,试设计一种编码,使得信息包长

度达到最小。

1.2问题的分析

ASCII 码是用 8 位( 一个字节 ) 表示一个字符,这种表示方法方便,易于理解,

是计算机系统中常用的字符表示方法。在信息传输领域,可能有些字符出现的频率

非常高,而有些字符出现的频率很低,若依然用此方法表示数据,则显得过于庞大,如果用不定长编码表示字符,频率出现高的字符用较短的编码表示,频率出现低的

字符用较长的编码表示,则可以使得数据量大大减少。比如AAAABBBAAABBBBCCCCCCBBB,用ASCII 码表示占用 184 位,若用 00 表示 C,01表示 A,1 表示 B,则该字串占用位数为 36,压缩率达到 19.6%,这种编码称为

哈夫曼编码。当然也可用其它方式压缩数据,例如上面字符串写成

4A3B3A4B6C3B,而达到压缩数据的目的。

1.3哈夫曼树的构造

要构造哈夫曼编码,需要构造哈夫曼树(即最优树)。哈夫曼最早给出了一

个带有一般规律的算法,俗称哈夫曼算法。现叙述如下:

①根据给定的 n 个概率(或频率)构造一个集合F{ f

1

, f 2 ,L , f n }

,同时这

n 个值对应树 T 的 n 个结点,置 i n 1 。

②在集合 F 中选择两个最小的值求和作为f

i加入集合 F 中;在树 T 中构造一

结点,使得该结点是两最小值对应结点的父结点。

③在集合 F 中删除两最小值,并置i i

1。

④重复②和③,直到i 2n 1

或集合 F 只有一个元素为止。这样形成的一棵

树就是哈夫曼树(最优树)。

上面所提到的字符串和题目给出的概率所形成的哈夫曼树分别如图 1 和图2( 为方便起见,每个概率值乘上了 100) 。

100

01

23

4258

010101

131023192929

1 01B010

11

081415

67101 C A5378

图1

图2

1.4用MATLAB哈夫曼算法

在MATLAB中哈夫曼算法,可用一个5 (2 n 1)

的矩来表示哈夫曼,矩的

含如表 6-3-3 所示。

表1 哈夫曼算法数据构

字符

12345??? 2n-1序号

概率

父点序号

左右子0 表示1表示

志左子右子

是否在 1 在集0不在

集合 F合 F集合 F

下面出哈夫曼的生成算法:

function htree = HuffmanTree(pro)

%构造哈夫曼

%pro 一概率向量

n=size(pro,2);%得到字符个数

tree=ones(6,2*n-1);%构造数据构

tree(1,:)=1:(2*n-1);%填充点序号

tree(5,(n+1):end)=0;%置点是否在集合

tree(2,1:n)=pro;%设置概率

tree(6,1:end)=0;%记录查找的结点对顺序

for i=(n+1):(2*n-1);%循环控制

[l,r]=findminval(tree);%找到集合中两个最小的值的序号

tree(2,i)=tree(2,l)+tree(2,r);%得到父结点概率值

tree(5,i)=1;%设置新构造结点在集合中

tree(3,l)=i;tree(3,r)=i;%设置父结点序号

tree(4,l)=0;tree(4,r)=1;%设置左右标志

tree(5,l)=0;tree(5,r)=0;%设置不在集合中

tree(6,l)=i-n;tree(6,r)=i-n;%记录该次删除的结点对顺序end

htree=tree;

function [l,r]=findminval(tree)

s=find(tree(5,:)==1);

if size(s,2)<2

error('Error input!');

end

firval=realmax;secval=realmax;

for i=s;

if firval>tree(2,i)

if secval>firval

second=first;secval=firval;

end

first=i;firval=tree(2,i);

elseif secval>tree(2,i)

second=i;secval=tree(2,i);

end

end

l=min([first,second]);r=max([first,second]);

该算法还显示了删除结点对的先后顺序。

在 MATLAB命令窗口输入以下指令:

>>a=[5 29 7 8 14 23 3 11];

>>HuffmanTree(a)

将会显示如表 6-3-4 所示结果。

表 2 哈夫曼树

123456789101112131415

52978142331181519294258100

914101012139111112131415151

000100101111011

000000000000001

162245133456770

把该表画成一张图,就是图2。若约定左子树表示0,右子树表示1,从根结点走到叶子结点,则可得到各叶子结点的哈夫曼编码( 见图2) 。本例各字符的哈夫曼编码分别为:

字符 1( 概率值 0.05): 0110字符 2( 概率值 0.29): 10

字符 3( 概率值 0.07): 1110字符 4( 概率值 0.08): 1111

字符 5( 概率值 0.14): 110字符 6( 概率值 0.23): 00

字符 7( 概率值 0.03): 0111字符 8( 概率值 0.11): 010

由于表 2 只记录了父结点序号,没有记录子结点序号,要得到各字符的哈夫曼编码,应反过来从叶子结点走到根结点,把得到的编码反过来,就是该字符的哈夫曼编码。

对一经过哈夫曼编码的文件进行解码,应先构造相应的哈夫曼树,然后按位从文件读入数据流,查找哈夫曼树,即可得到相应编码所对应的字符,从而解码文件。

图论算法及其MATLAB程序代码

图论算法及其MATLAB 程序代码 求赋权图G =(V ,E ,F )中任意两点间的最短路的Warshall-Floyd 算法: 设A =(a ij )n ×n 为赋权图G =(V ,E ,F )的矩阵,当v i v j ∈E 时a ij =F (v i v j ),否则取a ii =0,a ij =+∞(i ≠j ),d ij 表示从v i 到v j 点的距离,r ij 表示从v i 到v j 点的最短路中一个点的编号. ①赋初值.对所有i ,j ,d ij =a ij ,r ij =j .k =1.转向② ②更新d ij ,r ij .对所有i ,j ,若d ik +d k j <d ij ,则令d ij =d ik +d k j ,r ij =k ,转向③. ③终止判断.若d ii <0,则存在一条含有顶点v i 的负回路,终止;或者k =n 终止;否则令k =k +1,转向②. 最短路线可由r ij 得到. 例1求图6-4中任意两点间的最短路. 解:用Warshall-Floyd 算法,MATLAB 程序代码如下: n=8;A=[0281Inf Inf Inf Inf 206Inf 1Inf Inf Inf 8607512Inf 1Inf 70Inf Inf 9Inf Inf 15Inf 03Inf 8 Inf Inf 1Inf 3046 Inf Inf 29Inf 403 Inf Inf Inf Inf 8630];%MATLAB 中,Inf 表示∞ D=A;%赋初值 for (i=1:n)for (j=1:n)R(i,j)=j;end ;end %赋路径初值 for (k=1:n)for (i=1:n)for (j=1:n)if (D(i,k)+D(k,j)

(图论)matlab模板程序

(图论)matlab模板程序

第一讲:图论模型 程序一:可达矩阵算法 %根据邻接矩阵A(有向图)求可达矩阵P(有向图) function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; %将不为0的元素变为1 P; 程序二:无向图关联矩阵和邻接矩阵互换算法F表示所给出的图的相应矩阵 W表示程序运行结束后的结果 f=0表示把邻接矩阵转换为关联矩阵 f=1表示把关联矩阵转换为邻接矩阵 %无向图的关联矩阵和邻接矩阵的相互转换 function W=incandadf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F))/2; %计算图的边数 n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; %给边的始点赋值为1 W(j,k)=1; %给边的终点赋值为1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; %存在边,则邻接矩阵的对应值为1 W(a(2),a(1))=1;

end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 %有向图的关联矩阵和邻接矩阵的转换 function W=mattransf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 %由i发出的边,有向边的始点 W(i,k)=1; %关联矩阵始点值为1 W(j,k)=-1; %关联矩阵终点值为-1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); %有向边的两个顶点 if F(a(1),i)==1 W(a(1),a(2))=1; %有向边由a(1)指向a(2) else W(a(2),a(1))=1; %有向边由a(2)指向a(1) end end else fprint('Please imput the right value of f'); end W;

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在 1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=, 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果12 1n n v v v v -是从1v 到 n v 的最短路径,则 12 1 n v v v -也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元 素表示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma)

图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计 四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 摘要:网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。通过运用Matlab软件和NodeXL网络分析软件,计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 关键字:最近邻耦合网络;ER随机网络;WS小世界网络;BA无标度网络;Matlab;NodeXL。

四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 1.概述 1.网络科学的概述 网络科学(Network Science)是专门研究复杂网络系统的定性和定量规律的一门崭新的交叉科学,研究涉及到复杂网络的各种拓扑结构及其性质,与动力学特性(或功能)之间相互关系,包括时空斑图的涌现、动力学同步及其产生机制,网络上各种动力学行为和信息的传播、预测(搜索)与控制,以及工程实际所需的网络设计原理及其应用研究,其交叉研究内容十分广泛而丰富。网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 2.最近邻耦合网络的概述 如果在一个网络中,每一个节点只和它周围的邻居节点相连,那么就称该网络为最近邻耦合网络。这是一个得到大量研究的稀疏的规则网络模型。 常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每K个邻居节点相连,这里K是一个偶数。这类网络的一个重要特征个节点都与它左右各/2 就是网络的拓扑结构是由节点之间的相对位置决定的,随着节点位置的变化网络拓扑结构也可能发生切换。 NCN的Matlab实现: %function b = ncn(N,K) %此函数生成一个有N个节点,每个节点与它左右各K/2个节点都相连的最近邻耦合网络 %返回结果b为该最近邻耦合网络对应的邻接矩阵 function b = ncn(N,K) b=zeros(N); for i = 1:N for j = (i+1):(i+K/2) if j<=N b(i,j)=1; b(j,i)=1; else b(i,j-N)=1;

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

多目标优化实例和matlab程序

NSGA-II 算法实例 目前的多目标优化算法有很多, Kalyanmoy Deb 的带精英策略的快速非支配排序遗传算法(NSGA-II) 无疑是其中应用最为广泛也是最为成功的一种。本文用的算法是MATLAB 自带的函数gamultiobj ,该函数是基于NSGA-II 改进的一种多目标优化算法。 一、 数值例子 多目标优化问题 424221********* 4224212212112 12min (,)10min (,)55..55 f x x x x x x x x x f x x x x x x x x x s t x =-++-=-++-≤≤??-≤≤? 二、 Matlab 文件 1. 适应值函数m 文件: function y=f(x) y(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-x(1)^2*x(2)^2; y(2)=x(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2); 2. 调用gamultiobj 函数,及参数设置: clear clc fitnessfcn=@f; %适应度函数句柄 nvars=2; %变量个数 lb=[-5,-5]; %下限 ub=[5,5]; %上限 A=[];b=[]; %线性不等式约束 Aeq=[];beq=[]; %线性等式约束 options=gaoptimset('paretoFraction',0.3,'populationsize',100,'generations',200,'stallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto); % 最优个体系数paretoFraction 为0.3;种群大小populationsize 为100,最大进化代数generations 为200, % 停止代数stallGenLimit 为200, 适应度函数偏差TolFun 设为1e-100,函数gaplotpareto :绘制Pareto 前端 [x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)

matlab图论程序算法大全

精心整理 图论算法matlab实现 求最小费用最大流算法的 MATLAB 程序代码如下: n=5;C=[0 15 16 0 0 0 0 0 13 14 for while for for(i=1:n)for(j=1:n)if(C(i,j)>0&f(i,j)==0)a(i,j)=b(i,j); elseif(C(i,j)>0&f(i,j)==C(i,j))a(j,i)=-b(i,j); elseif(C(i,j)>0)a(i,j)=b(i,j);a(j,i)=-b(i,j);end;end;end for(i=2:n)p(i)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值 for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路

for(i=2:n)for(j=1:n)if(p(i)>p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)=j;pd=0;end ;end;end if(pd)break;end;end %求最短路的Ford 算法结束 if(p(n)==Inf)break;end %不存在vs 到vt 的最短路, 算法终止. 注意在求最小费用最大流时构造有 while if elseif if if pd=0; 值 t=n; if elseif if(s(t)==1)break;end %当t 的标号为vs 时, 终止调整过程 t=s(t);end if(pd)break;end%如果最大流量达到预定的流量值 wf=0; for(j=1:n)wf=wf+f(1,j);end;end %计算最大流量 zwf=0;for(i=1:n)for(j=1:n)zwf=zwf+b(i,j)*f(i,j);end;end%计算最小费用

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 1.1 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到 j v 的权 ij w =∞ 。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在1i v +,使1()min{()}i l v l v +=,v S ∈; ⑤ 1{}i S S v += ,1{}i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果121n n v v v v - 是从1v 到n v 的最短路径,则121n v v v - 也必然是从1v 到1n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元素表示顶点i v 到 j v 的权 ij w ,若i v 到 j v 无边,则 realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数(1.7977e+308)。 function re=Dijkstra(ma)

图论算法及其MATLAB程序代码

图论算法及其MATLAB程序代码 求赋权图G = (V, E , F )中任意两点间的最短路的Warshall-Floyd算法: 设A = (a ij )n×n为赋权图G = (V, E , F )的矩阵, 当v i v j∈E时a ij= F (v i v j), 否则取a ii=0, a ij = +∞(i≠j ), d ij表示从v i到v j点的距离, r ij表示从v i到v j点的最短路中一个点的编号. ①赋初值. 对所有i, j, d ij = a ij, r ij = j. k = 1. 转向② ②更新d ij, r ij . 对所有i, j, 若d ik + d k j<d ij, 则令d ij = d ik + d k j, r ij = k, 转向③. ③终止判断. 若d ii<0, 则存在一条含有顶点v i的负回路, 终止; 或者k = n终止; 否则令k = k + 1, 转向②. 最短路线可由r ij得到. 例1求图6-4中任意两点间的最短路. 图6-4 解:用Warshall-Floyd算法, MA TLAB程序代码如下: n=8;A=[0 2 8 1 Inf Inf Inf Inf 2 0 6 Inf 1 Inf Inf Inf 8 6 0 7 5 1 2 Inf 1 Inf 7 0 Inf Inf 9 Inf Inf 1 5 Inf 0 3 Inf 8 Inf Inf 1 Inf 3 0 4 6 Inf Inf 2 9 Inf 4 0 3 Inf Inf Inf Inf 8 6 3 0]; % MATLAB中, Inf表示∞ D=A; %赋初值 for(i=1:n)for(j=1:n)R(i,j)=j;end;end%赋路径初值 for(k=1:n)for(i=1:n)for(j=1:n)if(D(i,k)+D(k,j)

图论举例MATLAB

例1 某公司在六个城市621,,,c c c 中有分公司,从i c 到j c 的直接航程票价记在下述矩阵的),(j i 位置上。(∞表示无直接航路),请帮助该公司设计一张城市1c 到其它城市间的票价最便宜的路线图。 ? ? ??? ? ? ? ? ?????????∞∞∞∞∞∞ 055252510550102025251001020402010015252015050102540500 用矩阵n n a ?(n 为顶点个数)存放各边权的邻接矩阵,行向量pb 、1index 、2index 、 d 分别用来存放P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量 ?? ?=顶点未标号 当第顶点已标号 当第i i i pb 01)(; )(2i index 存放始点到第i 点最短通路中第i 顶点前一顶点的序号; )(i d 存放由始点到第i 点最短通路的值。 求第一个城市到其它城市的最短路径的Matlab 程序如下: clear; clc; M=10000; a(1,:)=[0,50,M,40,25,10]; a(2,:)=[zeros(1,2),15,20,M,25]; a(3,:)=[zeros(1,3),10,20,M]; a(4,:)=[zeros(1,4),10,25]; a(5,:)=[zeros(1,5),55]; a(6,:)=zeros(1,6); a=a+a'; pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a)); d(1:length(a))=M;d(1)=0;temp=1; while sum(pb)=2

图论matlab程序

第一讲:图论模型 程序一:可达矩阵算法 function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; P; 程序二:关联矩阵和邻接矩阵互换算法 function W=incandadf(F,f) if f==0 m=sum(sum(F))/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; W(a(2),a(1))=1; end else fprint('Please imput the right value of f'); end W;

程序三:有向图关联矩阵和邻接矩阵互换算法 function W=mattransf(F,f) if f==0 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=-1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); if F(a(1),i)==1 W(a(1),a(2))=1; else W(a(2),a(1))=1; end end else fprint('Please imput the right value of f'); end W;

超全图论matlab程序

超全的图论程序 关注微信公众号“超级数学建模”,教你做有料、有趣的数模人 程序一:可达矩阵算法 function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; P; 程序二:关联矩阵和邻接矩阵互换算法 function W=incandadf(F,f) if f==0 m=sum(sum(F))/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; W(a(2),a(1))=1; end else fprint('Please imput the right value of f'); end W;

程序三:有向图关联矩阵和邻接矩阵互换算法 function W=mattransf(F,f) if f==0 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=-1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); if F(a(1),i)==1 W(a(1),a(2))=1; else W(a(2),a(1))=1; end end else fprint('Please imput the right value of f'); end W;

图论最短路MATLAB程序

最短路法MATLAB 程序 例1: 某公司在六个城市621,,,c c c 中有分公司,从i c 到j c 的直接航程票价记在下述矩阵的),(j i 位置上。(∞表示无直接航路),请帮助该公司设计一张城市1c 到其它城市间的票价最便宜的路线图。 ??????????????????∞∞∞∞∞∞ 05525251055010202525100102040 2010015252015050102540500 用矩阵n n a ?(n 为顶点个数)存放各边权的邻接矩阵,行向量pb 、1index 、 2index 、d 分别用来存放P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量 ? ??=顶点未标号当第顶点已标号当第i i i pb 01)(; )(2i index 存放始点到第i 点最短通路中第i 顶点前一顶点的序号; )(i d 存放由始点到第i 点最短通路的值。 求第一个城市到其它城市的最短路径的Matlab 程序如下: 程序一: clc,clear

a=zeros(6); %邻接矩阵初始化 a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10; a(2,3)=15;a(2,4)=20;a(2,6)=25; a(3,4)=10;a(3,5)=20; a(4,5)=10;a(4,6)=25; a(5,6)=55; a=a+a'; %将矩阵数据对称赋予矩阵 a(find(a==0))=inf; %找到0值并赋值为inf pb(1:length(a))=0;pb(1)=1;index1=1;index2=ones(1,length(a)); d(1:length(a))=inf;d(1)=0; temp=1; %最新的P标号的顶点 while sum(pb)

图论matlab程序大全

图论程序大全 程序一:可达矩阵算法 function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; P; 程序二:关联矩阵和邻接矩阵互换算法function W=incandadf(F,f) if f==0 m=sum(sum(F))/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=1;

k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; W(a(2),a(1))=1; end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 function W=mattransf(F,f) if f==0

m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; W(j,k)=-1; k=k+1; end end end elseif f==1 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); if F(a(1),i)==1 W(a(1),a(2))=1; else

(完整word版)图论算法及matlab程序的三个案例.docx

图论实验三个案例 单源最短路径问题 1.1 Dijkstra算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合 S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合 S 当且 仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记l (v) 为顶点 v 到源点 v1的最短距离,v i ,v j V ,若 (v i , v j ) E ,记 v i到 v j的权 w ij。 Dijkstra算法: ①S{ v 1 } , l (v 1 ) 0 ; v V { v 1 } , l (v) , i 1,S V { v1}; ②S ,停止,否则转③; ③l (v) min{ l (v), d (v j , v)} , v j S ,v S ; ④存在v i 1,使l (v i 1) min{ l (v)},v S; ⑤S S U { v i 1 } , S S { v i 1 } ,i i 1,转②; 实际上,Dijkstra算法也是最优化原理的应用:如果v 1 v 2 L v n 1 v n是从 v 1 到 v n的最 短路径,则v 1 v 2 L v n 1也必然是从 v 1 到 v n 1的最优路径。 实现代码中,我们用到了距离矩阵,矩阵第i 行第 j 行元 在下面的 MATLAB 素表示顶点v i 到 v j的权 w ij,若 v i 到 v j无边,则 w ij realmax ,其中 realmax 是 MATLAB常量,表示最大的实数 (1.7977e+308) 。 function re=Dijkstra(ma)

图论程序算法大全

图论算法matlab实现求最小费用最大流算法的 MATLAB 程序代码如下: n=5;C=[0 15 16 0 0 0 0 0 13 14 0 11 0 17 0 0 0 0 0 8 0 0 0 0 0]; %弧容量 b=[0 4 1 0 0 0 0 0 6 1 0 2 0 3 0 0 0 0 0 2 0 0 0 0 0]; %弧上单位流量的费用 wf=0;wf0=Inf; %wf 表示最大流量, wf0 表示预定的流量值 for(i=1:n)for(j=1:n)f(i,j)=0;end;end %取初始可行流f 为零流 while(1) for(i=1:n)for(j=1:n)if(j~=i)a(i,j)=Inf;end;end;end%构造有向赋权图 for(i=1:n)for(j=1:n)if(C(i,j)>0&f(i,j)==0)a(i,j)=b(i,j); elseif(C(i,j)>0&f(i,j)==C(i,j))a(j,i)=-b(i,j); elseif(C(i,j)>0)a(i,j)=b(i,j);a(j,i)=-b(i,j);end;end;end for(i=2:n)p(i)=Inf;s(i)=i;end %用Ford 算法求最短路, 赋初值 for(k=1:n)pd=1; %求有向赋权图中vs 到vt 的最短路 for(i=2:n)for(j=1:n)if(p(i)>p(j)+a(j,i))p(i)=p(j)+a(j,i);s(i)=j;pd=0;end;end;en d if(pd)break;end;end %求最短路的Ford 算法结束 if(p(n)==Inf)break;end %不存在vs 到vt 的最短路, 算法终止. 注意在求最小费用最大流时构造有 向赋权图中不会含负权回路, 所以不会出现k=n dvt=Inf;t=n; %进入调整过程, dvt 表示调整量 while(1) %计算调整量 if(a(s(t),t)>0)dvtt=C(s(t),t)-f(s(t),t); %前向弧调整量 elseif(a(s(t),t)<0)dvtt=f(t,s(t));end %后向弧调整量 if(dvt>dvtt)dvt=dvtt;end if(s(t)==1)break;end %当t 的标号为vs 时, 终止计算调整量 t=s(t);end %继续调整前一段弧上的流f pd=0;if(wf+dvt>=wf0)dvt=wf0-wf;pd=1;end%如果最大流量大于或等于预定的流量值 t=n;while(1) %调整过程 if(a(s(t),t)>0)f(s(t),t)=f(s(t),t)+dvt; %前向弧调整 elseif(a(s(t),t)<0)f(t,s(t))=f(t,s(t))-dvt;end %后向弧调整 if(s(t)==1)break;end %当t 的标号为vs 时, 终止调整过程

图论算法及其Matlab程序

求单源最短路径的Dijkstra算法的Matlab程序 function [d index1 index2]=Dijkf(a) M=max(max(a)); pb(1:length(a))=0; pb(1)=1; index1=1; index2=ones(1,length(a)); d(1:length(a))=M;d(1)=0;temp=1; while sum(pb)=2 index=index(1); end index2(temp)=index; end d; index1; index2; 求任意两点间最短路的Floyd算法的Matlab程序 function [D,R]=floyd(a) n=size(a,1); D=a; for i=1:n for j=1:n R(i,j)=j; end end for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)

end end end D;R ; 求Euler回路的Fleury算法的Matlab程序function [eu,cEu]=arEuler(E) eu=0; cEu=[]; ncV=arComp(E); if max(ncV)>1 return end n=max(max(E(:,1:2))); m=size(E,1); for i=1:n b(i)=0; for j=1:m if E(j,1)==i|E(j,2)==i b(i)=b(i)+1; end end end rp=rem(b,2); srp=sum(rp); switch srp case 0, eu=1; case 2, eu=0.5; otherwise, return end if srp==0 v1=1; else v1=find(rp); v1=v1(1); end vc=v1; m=size(E,1); E1=[E(:,1:2),[1:m]'];

常用离散信号MATLAB程序及波形

常用离散信号MATLAB 表示 单位抽样序列 n=-10:10; x=[n==0]; stem(n,x); title('单位抽样信号'); xlabel('n');ylabel('x');grid on ; -10 -8 -6 -4 -2 02 4 6 8 10 00.10.20.30.40.50.60.70.80.91单位抽样信号 n x 延迟k=4个单位后的图像为: -10 -8 -6 -4 -2 02 4 6 8 10 00.10.20.30.40.50.60.70.80.91单位抽样信号 n x

单位阶跃信号 n=-5:10; x=[zeros(1,5),ones(1,11)]; stem(n,x,'m','p'); axis([-5,10,-0.5,1.5]); title('单位阶跃信号'); xlabel('n');ylabel('幅度') grid on ; -5 510 -0.50 0.5 1 1.5 单位阶跃信号 n 幅度 矩形序列 n=-5:15; x=[zeros(1,5),ones(1,11),zeros(1,5)]; stem(n,x,'r','h') axis([-5,15,-0.5,1.5]); title('矩形序列'); xlabel('时间');ylabel('幅度') grid on ;

-5 51015 -0.50 0.5 1 1.5 矩形序列 时间 幅度 正弦序列 n=-5:0.1:5; xn=2*sin(0.5*pi*n+pi/3); stem(n,xn) axis([-5,5,-3,3]); title('正弦序列'); xlabel('时间');ylabel('幅度'); grid on ; -5 -4-3-2-1 012345 -3-2 -1 1 2 3 正弦序列 时间 幅度

用matlab实现寻找最短路

用matlab寻找赋权图中的最短路中的应用 1引言 图论是应用数学的一个分支,它的概念和结果来源都非常广泛,最早起源于一些数学游戏的难题研究,如欧拉所解决的格尼斯堡七桥问题,以及在民间广泛流传的一些游戏的难题,如迷宫问题,博弈问题等。这些古老的难题,吸引了很多学者的注意。 1847年,图论应用于分析电路网络,这是它最早应用于工程科学,以后随着科学的发展,图论在解决运筹学,网络理论,信息论,控制论,博弈论以及计算机科学等各个领域的问题时,发挥出很大的作用。在实践中,图论已成为解决自然科学,工程技术,社会科学,军事等领域中许多问题的有力工具之一。 最短路问题是图论理论中的经典问题,寻找最短路径就是在指定网络中两节点间找一条距离最小的路。 2 最短路 2.1 最短路的定义(short-path problem) 对最短路问题的研究早在上个世纪60年代以前就卓有成效了,其中对赋权图()0 w≥的有效算法是由荷兰著名计算机专家E.W.Dijkstra在1959年首次提出的,该算法能ij 够解决两指定点间的最短路,也可以求解图G中一特定点到其它各顶点的最短路。后来海斯在Dijkstra算法的基础之上提出了海斯算法。但这两种算法都不能解决含有负权的图的最短路问题。因此由Ford提出了Ford算法,它能有效地解决含有负权的最短路问题。但在现实生 w≥的情况下选择Dijkstra算法。活中,我们所遇到的问题大都不含负权,所以我们在()0 ij 若网络中的每条边都有一个数值(长度、成本、时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路问题。最短路问题是网络理论解决的典型问题之一,它不仅可以直接应用于解决生产实际的许多问题,如管路铺设、线路安装、厂区布局和设备更新等,而且经常被作为一个基本的工具,用于解决其他的做优化问题。 定义1:若图G=G(V,E)中个边[v i,v j]都赋有一个实数w ij ,则称这样的图G为

相关文档
最新文档