繁体   English   中英

C++ Boost 图形库:具有边属性的同构

[英]C++ Boost graph library: Isomorphism with edge property

升压图库有一个同构 function 一个非常小的例子:

https://www.boost.org/doc/libs/1_68_0/libs/graph/example/isomorphism.cpp

我需要找到两个图之间具有最小扩展的同构,每条线都有两个属性,可以用 integer 值表示。 我想这相当于一个重量。

我一生都无法理解属性图的作用或如何合并它们。 有人可以指出一个相关的例子,这样我就可以看到它是如何工作的?

Boost.Graph 使用“属性图”将数据与不同的图元素(即顶点、边或整个图)相关联。 属性 map 只是一个容器,可以将图形的内部描述符类型与其他一些数据相关联。 可以在此处此处找到一些示例。

我假设您已经看过有关isomorphism function 的文档 因此,在您的情况下,您的每个图表都将具有一个属性 map 用于边权重,然后您可以选择在调用isomorphism function 以控制行为和/或获取额外数据时提供更多属性映射。 但是,我看不到任何方法可以提供谓词来验证边缘权重是否匹配。 您可能必须自己处理(例如,首先运行 function 以检查“纯”同构,然后遍历一个图的边缘并使用 output isomorphism_map在第二个图中找到相应的边并检查相等性)

据我所知,该算法不允许您指定边缘等效标准。 不过,也许您可以应用vf2_sub_graph_iso ,它需要一个可选的EdgeEquivalencePredicate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM