python的瘦maxflow包装器

thinmaxflow的Python项目详细描述


maxflow的薄包装

由yuri boykov和vladimir kolmogorov改进的maxflow算法的瘦python包装器。弗拉基米尔·科尔莫戈罗夫的原始源代码可以在http://pub.ist.ac.at/~vnk/software.html找到。这个包装器使用了一个经过修改的版本,它支持更大的图形和稍低的内存使用。有关详细信息,请参见submodule repository

最大流量与QPBO之比

maxflow算法的一个更高级的替代方案是(二次伪布尔优化)QPBO,它还使用s-t图割。与maxflow不同,它允许使用非子模能量项,而maxflow不允许这样做(除非您以特定的方式构造图,这就是qpbo所做的)。除此之外,这使得qpbo可以用排除项来解决优化问题,这非常有用。QPBO使用更多内存,比MaxFlow稍慢。

安装

使用pip install thinmaxflow安装包或克隆此存储库(包括submodule)。构建包需要cython。

图形类型

目前,有四种不同类型的图:GraphIntGraphShortGraphFloatGraphDouble。唯一的区别是用于图中边缘容量的底层数据类型。为了保持稳定性,建议整数容量使用GraphInt,浮点容量使用GraphDouble。然而,在某些情况下,使用GraphShortGraphFloat来减少内存消耗可能是有利的。

小例子

importthinmaxflowastf# Create graph object.graph=tf.GraphInt()# Number of nodes to add.nodes_to_add=2# Add two nodes.first_node_id=graph.add_node(nodes_to_add)# Add edges.graph.add_tweights(0,5,0)# s     --5->   n(0)graph.add_tweights(0,0,1)# n(0)  --1->   tgraph.add_tweights(1,0,3)# n(1)  --3->   tgraph.add_edge(0,1,2,1)# n(0)  --2->   n(1)# n(1)  --1->   n(0)# Find maxflow/cut graph.flow=graph.maxflow()forninrange(nodes_to_add):segment=graph.what_segment(n)print('Node %d belongs to segment %d.'%(n,segment))# Node 0 belongs to segment 0.# Node 1 belongs to segment 1.print('Maximum flow: %s'%flow)# Maximum flow: 3

许可证

由于maxflow实现是在gplv3许可下分发的,所以这个包也是。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Glassfish服务器应用程序中重新启动后,java类不能转换为同一个类   Android API 23 java。网UnknownHostException:无法解析主机“URL”:没有与主机名关联的地址   Netty客户端中配置的java密码列表未发送到服务器   java如何从非活动类中检索上下文?   json如何在java中用整型键反序列化映射   java从外部类到其他内部类的子类划分   java无法从文件中读取字符串   swing如何使用Locale属性在java的Jtextfield中编写Unicode字符串。   java在应用程序启动时创建SQLlite数据库   Java中的重置按钮   javascript无法从服务器访问自定义CSS和JS文件   jquery需要对基于AJAX的具有REST功能的javaweb应用程序提出建议   继承Java中如何使用子对象调用父类的方法   排除子目录的java筛选器映射URL模式