子图同构和子图单态之间有什么区别?

时间:2009-01-20 00:53:24

标签: subgraph isomorphism monomorphism

在我参与的其中一个项目中,isomorphism versus monomorphism came up的主题。

一点背景:我不是图论的专家,也没有正式的培训。但是这个主题在化学中非常重要,化学家期望在他们使用的结构搜索系统中进行特定类型的子图匹配。

如果目标图A具有n个节点和m个边,则化学家将接受子图匹配,其中查询图B具有n个节点和m-1个边。唯一的要求是B中的每个边都应该出现在A中。例如,6个节点的线性链应该匹配6个节点的周期。

这种匹配是同构还是单态?也许还有别的东西?

4 个答案:

答案 0 :(得分:10)

让G1,G2分别是由顶点和边缘V1,V2和E1,E2组成的图。

如果V2的每个顶点与V1中的顶点之间存在一对一映射,并且在E2中的每个边缘与E1中的某个边缘之间存在一对一映射,则G2与G1的子图同构。因此,要进行同构,您需要具有完全匹配,包括图形是否在节点之间包含多个边缘。

如果在顶点之间存在这样的映射,则

G2是单态,并且在V2中的所有顶点之间存在边缘,其中V1中存在对应的边缘。但只要存在至少一个边缘,那就足够了。

这是来自comp.lang.python的精美包描述。

答案 1 :(得分:3)

单态。

从一个图(“B”)到另一个图(“A”)的单态等同于从B到A的子图的同构。

该示例表示任何n个顶点路径(“链”)与n个顶点循环是单形的。对于n + 1个顶点周期,它也是单形的,对于任何k,它也是n + k。

答案 2 :(得分:2)

无向图同态h:H - >当顶点上的h是内射函数时,G被认为是单态。由于图形同态h当然将边缘映射到边缘,但不要求边缘h(v0)-h(v1)反映在H中。

有向图的情况类似。

答案 3 :(得分:1)

此处数学和CS术语之间存在差异。 从数学上你可以得到两个术语:

  1. 子图同构: 设H =(VH,EH),G =(V,E)为图。 f:VH→V是子图同构,如果(u,v)∈EH,则(f(u),f(v))∈E。 H与G

  2. 的子图同构
  3. 诱导子图同构: 设H =(VH,EH),G =(V,E)为图。 f:VH→V是诱导子图同构,如果(u,v)∈EH,则(f(u),f(v))∈E。如果(u,v)不是EH的元素,那么( f(u),f(v))不是E的元素。 H对于G

    的诱导子图是同形的

    来自http://theory.stanford.edu/~virgi/cs267/lecture1.pdf的定义。 它们与我在“图论中的第一道课程”中找到的相同。

    请注意,这两者都是图之间的单射同态,也就是图单态。

    转向CS,特别是子图同构问题。据我所知,子图同构算法确定是否存在满足上述(2)的函数。

    图单态匹配(1)。

    CS定义来自VF2算法,我不知道这种用法有多广泛。在为项目搜索正确的算法时,似乎仍然存在一些歧义,并非所有项目都使用相同的定义。

    用一粒盐http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.101.5342&rep=rep1&type=pdf来回答这个问题 在引言中将单态从图 - 子图同构中单独列出,但在第2节中定义了图 - 子图同构在概念上与(1)相同,表明我遗漏了某些东西。