boost图库有一个同构函数,有一个非常小的例子:
https://www.boost.org/doc/libs/1_68_0/libs/graph/example/isomorphism.cpp
我需要找到两个具有极小扩展的图之间的同构,即每条线有两个性质,可以用整数值表示。 我猜这相当于一个砝码。
我一生都无法理解属性地图的作用,也无法理解如何将它们结合起来。 有人可以给我一个相关的例子,这样我就可以看到这是如何工作的?
boost.graph使用“属性映射”将数据与不同的图元素(即顶点,边或整个图)关联起来。 属性映射只是一个容器,它可以将图的内部描述符类型与一些其他数据相关联。 这里和这里可以找到几个例子。
我假设您已经看到了同构
函数的文档。 因此,在您的示例中,每个图都有一个用于边权重的属性映射,然后在调用同构
函数以控制行为和/或获取额外数据时,您可以选择提供更多的属性映射。 但是,我看不出有任何方法可以提供一个谓词来验证边缘权重是否匹配; 您可能必须自己处理(例如,首先运行函数检查“纯”同构,然后遍历一个图的边,并使用输出isomorphism_map
在第二个图中找到相应的边并检查相等性)