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如何按顺序显示父节点属性值和关联的子节点属性值?   java Zip 2在Spring Webfux中的不同Mono   java Twitter oauth_签名创建   SpringBoot中未标识java自定义依赖项   如何使用Java访问netbeans中的json Post方法值   在Java中查找数字的位数之和   java Hibernate使用date where子句过滤单列数据   java Spring@ExceptionHandler未捕获AccessDeniedException   java如何知道bean是否有一些值   javavaadin谷歌描述   javafx如何修复“java未命名模块从y和z读取程序包x”   Java generictyped方法返回错误的类型   java Android从应用程序发送电子邮件崩溃电子邮件强制关闭   Java与C版本的相同算法   Java编程异常   java动态生成收据   java使用ACRCloud将音频记录保存在文件中   java在注册到web应用程序后激活帐户   Java数组删除最后存储的元素