主要内容

具有拉普拉斯矩阵的划分图

这个例子展示了如何使用图的拉普拉斯矩阵来计算Fiedler向量。Fiedler向量可以用来将图划分为两个子图。

加载数据

加载数据集杠铃垫,它包含barbell图的稀疏邻接矩阵和节点坐标。

负载杠铃垫

绘图图

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

G=图(A,“省略自循环”); p=曲线图(G,“扩展数据”,xy(:,1),“伊达塔”,xy(:,2),“标记”,'.'); 轴相同的

Figure包含axes对象。axes对象包含graphplot类型的对象。

计算拉普拉斯矩阵和费德勒向量

计算出图的拉普拉斯矩阵,然后利用该矩阵计算出两个最小的幅值特征值和相应的特征向量EIG

L=拉普拉斯(G);[V,D]=EIG(L,2,“小庄园”);

Fiedler向量是对应于图的第二小特征值的特征向量最小的特征值为零,表示图中有一个连接的组件v对应于第二个最小的特征值D(2,2)

D
D=2×210-3× 0.0000 0 0 0.2873
w=V(:,2);

使用EIG由于只计算特征值和特征向量的子集,因此可扩展到较大的图,但对于较小的图,将拉普拉斯矩阵转换为完全存储和使用也是同样可行的eig(全(L))

分区图

使用Fiedler向量将图划分为两个子图W.如果子图A中的某个节点具有正值,则将该节点分配给该子图AW。否则,该节点将分配给子图B。这种做法称为a标志切割零阈值切割符号割最小化割的权重,受图中任何非平凡割权重的上下界的约束。

使用符号切割对图形进行分区。突出显示具有w> =0以红色显示,并且具有w<0黑色的。

突出显示(p,查找(w>=0),“NodeColor”,“r”)%子图A突出显示(p,查找(w<0),“NodeColor”,“k”)%子图B

Figure包含axes对象。axes对象包含graphplot类型的对象。

对于bar-bell图,此分区将图很好地平分为两组相等的节点。但是,符号割并不总是产生平衡割。

通过计算图的中位数,总是可以将图平分W并将其用作阈值。这个分区称为中央切口,并保证每个子图中的节点数相等。

可以通过首先移动中的值来使用中间切割W按中位数计算:

w_med=w-中值(w);

然后,通过登录对图进行分区w_med.对于条形图,中位数W接近于零,因此两个切割产生相似的对分。

另见

|||

相关的话题