这个例子展示了稀疏矩阵的一个应用,并解释了图和矩阵之间的关系。
图是节点之间具有指定连接或边的集合。图表有多种形状和大小。其中一个例子是巴克敏斯特富勒圆顶的连通性图,它也是一个足球或碳60分子的形状。
在MATLAB®中,您可以使用巴基
函数生成圆顶的图形。
[B、V] =巴基;图G = (B);p =情节(G);轴平等的
您还可以为节点指定坐标,以更改图形的显示。
p.XData = V (: 1);p.YData = V (:, 2);
的巴基
函数可用于创建图,因为它返回邻接矩阵。邻接矩阵是表示图中节点和边的一种方法。
为了构造图的邻接矩阵,节点编号为1到n。如果节点i连接到节点j,则n × n矩阵的每个元素(i,j)设为1,否则设为0。因此,对于无向图邻接矩阵是对称的,但对于有向图不一定是这样。
例如,这是一个简单的图和它的邻接矩阵。
定义一个矩阵a。A = [0 1 1 0;1 0 0 1;1 0 0 1;0 1 1 0];画一幅图显示连接的节点。cla次要情节(1、2、1);gplot(A,[0 1;1 1;0 0]),“。”);Text([-0.2, 1.2 -0.2, 1.2],[1.2, 1.2, -。2。2)(“1234”)”,...“HorizontalAlignment”,“中心”)轴([-1 2 -1 2],“关闭”)画出邻接矩阵的图。子图(1,2,2);XTEMP = REPMAT(1:4,1,4);YTEMP = REPAPE(REPMAT(1:4,4,1),16,1)';文本(XTEMP-.5,YTEMP-.5,CHAR(' 0 '+ (:)),“HorizontalAlignment”,“中心”);线([。25 0 0.25 NaN 3.75 4 4 3.75],[0 0 4 4 NaN 0 0 4 4])轴从紧
稀疏矩阵对于表示非常大的图特别有用。这是因为每个节点通常只与其他几个节点相连。因此,对于较大的图,邻接矩阵中非零项的密度通常相对较小。bucky球邻接矩阵就是一个很好的例子,因为它是一个60 × 60的对称稀疏矩阵,只有180个非零元素。这个矩阵的密度只有5%。
由于邻接矩阵定义了曲线图,因此可以通过使用邻接矩阵中的条目的子集来绘制抗皱球的一部分。
使用邻接
函数创建图的新邻接矩阵。通过索引到邻接矩阵来创建一个新的、更小的图来显示bucky球的一个半球的节点。
图A =邻接(G);H =图((1:30,1:30));h =情节(h);
为了形象化这个半球的邻接矩阵,使用间谍
函数绘制邻接矩阵中非零元素的轮廓。
注意,矩阵是对称的,因为如果节点I连接到节点j,则节点j连接到节点i。
间谍((1:30,1:30)标题(“耻骨邻接矩阵的左上角”)
最后,这是一个间谍
绘制整个巴克球邻接矩阵。
间谍(A)标题(“巴克球邻接矩阵”)