主要内容

带有拉普拉斯矩阵的分区图

此示例显示了如何使用图形的拉普拉斯矩阵来计算Fiedler载体。Fiedler矢量可用于将图表分为两个子图。

加载数据

加载数据集Barbellgraph.mat,其中包含杠铃图的稀疏邻接矩阵和节点坐标。

加载Barbellgraph.mat

绘图图

使用自定义节点坐标绘制图形xy

g =图(a,“省略自助”);p =图(g,'xdata',xy(:,1),'ydata',xy(:,2),“标记”,,,,'。');轴平等的

图包含一个轴对象。轴对象包含类型图形图的对象。

计算Laplacian矩阵和Fiedler载体

计算图的拉普拉斯矩阵。然后,使用使用的两个最小特征值和相应的特征向量计算特征

l = laplacian(g);[v,d] = eigs(l,2,“ Smallestabs”);

Fiedler载体是对应于图的第二小特征值的特征向量。这最小特征值为零,表明该图具有一个连接的组件。在这种情况下,第二列在v对应于第二小的特征值D(2,2)

d
d =2×210-3×0.0000 0 0 0.2873
w = v(:,2);

使用特征由于仅计算出特征值和特征向量的一个子集,因此可以扩展到较大的图形,但是对于较小的图,将Laplacian矩阵转换为完整存储并使用,同样可行eig(full(l))

分区图

使用fiedler矢量将图表分为两个子图w。如果节点在子图中分配给A子图A。w。否则,将节点分配给子图B。此练习称为签名或者零阈值削减。符号切割可以最大程度地减少切割的重量,但要受图表的任何非平凡切割的重量的上限和下限。

使用符号切割对图进行分区。突出显示节点的子图W> = 0红色,节点与W <0黑色。

突出显示(p,查找(w> = 0),'nodeColor',,,,'r'%子图突出显示(p,查找(w <0),'nodeColor',,,,'K'%子图b

图包含一个轴对象。轴对象包含类型图形图的对象。

对于Bar Bell图,此分区将图形分为两个相等的节点集。但是,剪切并不总是会产生平衡的切割。

始终可以通过计算中位数来划分图w并将其用作阈值。此分区称为中间剪裁,并且保证每个子图中的节点数量相等。

您可以首先将值转换为中位数w由中位数:

w_med = w-中值(w);

然后,通过登录划分图表w_med。对于Bar Bell图,中位数w接近零,因此两个切割产生了相似的两种序列。

也可以看看

|||

相关话题