拉普拉斯矩阵划分图
这个例子展示了如何使用图的拉普拉斯矩阵来计算费德勒向量。费德勒向量可以用来将图划分为两个子图。
加载数据
加载数据集barbellgraph.mat
,其中包含杠铃图的稀疏邻接矩阵和节点坐标。
负载barbellgraph.mat
图
使用自定义节点坐标绘制图形xy
.
图G = (,“omitselfloops”);p =情节(G,“XData”xy (: 1),“YData”xy (: 2),“标记”,“。”);轴平等的
计算拉普拉斯矩阵和费德勒向量
计算图的拉普拉斯矩阵。然后,计算最小的两个幅值特征值和对应的特征向量eigs
.
L =拉普拉斯算子(G);[V D] = eigs (L 2“smallestabs”);
费德勒向量是特征向量对应于图的第二最小特征值。的最小的特征值为零,表示图有一个连通分量。在这种情况下,第二列V
对应于第二最小的特征值D (2, 2)
.
D
D =2×2103× 0.0000 00 0.2873
w = V (:, 2);
求费德勒向量eigs
是可扩展到较大的图,因为只计算特征值和特征向量的子集,但对于较小的图,它是同样可行的,将拉普拉斯矩阵转换为完全存储和使用eig(全(L))
.
分区图
使用费德勒向量将图划分为两个子图w
.如果子图A的值为正,则该节点被分配给该子图Aw
.否则,节点被分配给子图b。这种做法称为a切迹象或零阈值降低.符号切割使切割的权重最小化,受制于图的任何非平凡切割的权重的上界和下界。
使用符号切割对图进行分割。突出显示节点的子图w > = 0
红色的,节点w < 0
在黑色的。
突出(p,找到(w > = 0),“NodeColor”,“r”)%子图突出(p,发现(w < 0),“NodeColor”,“k”)% B子图
对于条形钟形图,这种划分将图很好地分成两个相等的节点集。然而,标志切割并不总是产生一个平衡的切割。
的中位数总是可以将图等分w
把它作为一个阈值。这个分区叫做中值减少,保证每个子图中节点数量相等。
您可以通过首先移动值来使用中值切割w
中位数:
W_med = w - median(w);
然后,通过登录对图进行分区w_med
.对于柱形钟形图,中位数w
的值接近于零,所以这两个切面产生了相似的等分。