19得票6回答
从图的集合中排除同构

我有一个包含1500万(百万)个DAG(有向无环图 - 实际上是有向超立方体)的集合,我想从中删除同构。针对此问题,有哪些常见算法?每个图形都相当小,是N维的超立方体,其中N为3到6(目前为止),因此对于N = 6情况,每个图形有64个节点。 使用networkx和python,我像这样实现...

11得票2回答
在Java中查找与给定子树匹配的树中所有子树

我正在使用Java编写代码,该代码使用无序的根树,每个节点可能有任意数量的子节点。给定树T和子树S,我希望能够找到所有与S匹配的T中的子树(即与S同构的T中的所有子树)。 如果T的一个子树与S同构,则S的节点可以映射到T的节点,使得S的边映射到T中的边。 关于如何查找树是否包含另一个子树,...

10得票1回答
使用镜头实现三种或多种类型之间的同态映射

受有关ADT之间多态函数的问题启发,我正在尝试创建多个(不止两个)类型之间的同构,以便每当我需要同构但不是相同类型时,我可以在我的代码中添加一些convert。 假设我有3个ADT:data AB = A | B deriving (Show) data CD = C | D derivin...

13得票4回答
子图同构和子图单同态之间的区别是什么?

在我曾经工作的一个项目中,出现了同构与单态的主题 。 一些背景:我不是图论方面的专家,也没有正式的培训。但这个主题在化学中非常重要,在那里化学家期望他们使用的结构搜索系统发生特定类型的子图匹配。 如果目标图A具有n个节点和m条边,则化学家将接受查询图B具有n个节点和m-1条边的子图匹配。唯...

8得票2回答
如何理解类型a和forall r. (a -> r) -> r是同构的

在书籍《Thinking with Types》中,6.4 Continuation Monad指出类型a和forall r. (a -> r) -> r是同构的,这可以通过以下函数证明: cont :: a -> (forall r. (a -> r) -> ...

79得票3回答
同构函数的重要性

简短问题:编程中(特别是函数式编程),同构函数的重要性是什么? 详细问题:我试图在范畴论的概念和函数式编程之间进行一些类比,基于我从时间到时间听到的术语。本质上,我正在尝试将这种术语 "拆包 "为具体的内容,然后再扩展。然后,我将能够使用术语,并理解自己在说些啥。这总是不错的。 其中一个我...

12得票2回答
VF2算法步骤及示例

有人能用简单的话解释一下VF2算法在图同构中的步骤吗?我正在学习这个算法,但没有工作示例很困难。有人能给我指点方向吗?谢谢。

7得票1回答
使用同构比较而非默认的地址比较来比较NetworkX图对象

我希望能够将 NetworkX Graph 对象用作 Python dict 中的键。但是,我不想使用默认的比较行为(即通过对象的地址进行比较)。相反,我希望同构图引用相同元素在 dict 中。 这种行为已经在某个地方实现了吗?我没有找到任何相关信息。 如果我必须自己实现它,以下评估是否合...

13得票2回答
C++图论库列表

我即将开始一项有关自动机和图论的科学项目,正在寻找一个支持以下功能的图形库: 有向/无向图 图同构测试(即图g1与g2同构吗?) 子图同构测试(即图g1与g2的子图同构吗?) 图搜索、访问等 可能需要快速计算 我知道Boost Graph Library,但从文档中理解,它缺少子图测试...

9得票2回答
NetworkX:通过边和节点属性进行子图同构

假设我有2个图A和B,我想知道A是否是B的子图。节点包含属性,例如“尺寸”和“材料”。 当我运行: GM = networkx.algorithms.isomorphism.GraphMatcher(B,A) print networkx.algorithms.isomorphism.su...