有向图的分割
图像分割是将一幅图像分割成有意义区域的过程。区域可以是图像的前景与背景或 图像中一些单独的对象。这些区域可以利用一些诸如颜色、边界或近邻相似性等特 征进行构建。
在图论中,图的最小切割是其在某种意义上是最小的切割(图形的顶点划分为由至少一个边连接的两个不相交的子集)。图的最小割可以分很多情况进行讨论,例如有向图、无向图,边的权重等。
from pygraph.classes.digraph import digraph
from pygraph.algorithms.minmax import maximum_flow
gr = digraph()#有向带权图
gr.add_nodes([0,1,2,3])
gr.add_edge((0,1), wt=4)
gr.add_edge((1,2), wt=3)
gr.add_edge((2,3), wt=5)
gr.add_edge((0,2), wt=3)
gr.add_edge((1,3), wt=4)
flows,cuts = maximum_flow(gr, 0, 3)#最大流方法
print ('flow is:' , flows)
print ('cut is:' , cuts)
其中wt代表每一个边的权重,这是一个有向图,根据不断更新残差图来进行最大流
首先,创建有 4 个节点的有向图,4 个节点的索引分别 0…3,然后用 add_edge() 增 添边并为每条边指定特定的权重。边的权重用来衡量边的最大流容量。以节点 0 为 源点、3 为汇点,计算最大流。
构造的有向图如下: