python的瘦qpbo包装器

thinqpbo的Python项目详细描述


QPBO的薄包装

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

QPBO与最大流量

虽然qpbo算法执行类似于Maxflows-t图割,但它允许使用maxflow没有的非子模能量项。除其他外,这允许qpbo使用排除项解决优化问题,这非常有用。对于等价问题,qpbo实现所构造的图是maxflow图的两倍大。因此,qpbo使用更多的内存,并且比maxflow稍慢。

安装

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

图形类型

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

高级功能(QPBO-P和QPBO-I)

QPBO实现有一些高级扩展,称为QPBO-P和QPBO-I。目前,并不是所有高级函数都已包装。如果您需要使用未被{{CD8}}包装的QPBO C++库的特性,请通过在GITHUB上创建一个问题来告诉我。

小例子

importthinqpboastq# Create graph object.graph=tq.QPBOInt()# 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_unary_term(0,0,5)# E1(0) = 5, s     --5->   n(0)graph.add_unary_term(0,1,0)# E0(0) = 1, n(0)  --1->   tgraph.add_unary_term(1,5,0)# E0(1) = 5, n(1)  --5->   tgraph.add_pairwise_term(0,1,0,7,0,4)# E01(0,1) = 7, n(0)  --7->   n(1)# E11(0,1) = 4, Not possible with standard Maxflow# Find maxflow/cut graph.graph.solve()graph.compute_weak_persistencies()twice_energy=graph.compute_twice_energy()forninrange(nodes_to_add):segment=graph.get_label(n)print('Node %d has label %d.'%(n,segment))# Node 0 has label 0.# Node 1 has label 0.print('Twice energy/flow: %s'%twice_energy)# Twice energy/flow: 12

许可证

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

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

推荐PyPI第三方库


热门话题
java JavaFX 11可编辑组合框引发IndexOutOfBoundsException   java选择数组中的数组元素   java我从来没有找到创建2D ArrayList的正确方法   java JPA查找orderById的顶部数据,并按字符串过滤Id   使用java在ejabberd中进行xmpp外部身份验证   从ajax调用向java传递点运算符   java如何使用ReadWriteLock   使用Spring控制器和jQueryAjax的java重定向   java使JFrame中的JPanel可滚动   java如何用多个。jar库?   java EditText在RecyclerView中失去了对滚动的关注   java为什么我们必须扩展Servlet或GenericServlet或HttpServlet来创建Servlet应用程序?如果不扩展,我们可以开发Servlet应用程序吗?   使用递归java查找数组中的最大值   具有不同字段数的html表单的java域传输对象   java文本视图扩展;不支持操作异常   java如何使用iText的HTMLWorker类将多语言HTML字符串呈现为PDF