Questions tagged «graph-isomorphism»

4
枚举一定大小的所有非同构图
我想枚举所有大小为无向图,但是我只需要每个同构类的一个实例。换句话说,我想枚举个顶点上的所有非同构(无向)图。我怎样才能做到这一点?nnnnnn 更准确地说,我想要一种算法,该算法将生成具有以下特性的无向图的序列:对于个顶点上的每个无向图,都存在一个索引,使得与同构。我希望该算法尽可能高效。换句话说,我关心的指标是生成和迭代此图列表的运行时间。第二个目标是,如果算法不太复杂而无法实现,那就太好了。G1,G2,…,GkG1,G2,…,GkG_1,G_2,\dots,G_kGGGnnniiiGGGGiGiG_i 请注意,每个同构类至少需要有一个图,但是如果该算法产生多个实例,则可以。特别是,如果输出序列包含两个同构图,则可以,只要这可以帮助您更轻松地找到这样的算法或启用更有效的算法,只要它覆盖所有可能的图即可。 我的应用程序如下:我有一个程序要在大小为所有图形上进行测试。我知道如果两个图是同构的,则我的程序将在两个同构上表现相同(对两个图都正确,或者对两个图都不正确),因此足以枚举每个同构类的至少一个代表,然后对其进行测试。对这些输入进行编程。在我的应用程序中,很小。nnnnnn 我考虑过一些候选算法: 我可以列举所有可能的邻接矩阵,即所有对称的 0或1矩阵,对角线都为0。但是,这需要枚举矩阵。这些矩阵中有许多将表示同构图,因此这似乎在浪费大量精力。n×nn×nn\times n2n(n−1)/22n(n−1)/22^{n(n-1)/2} 我可以列举所有可能的邻接矩阵,并针对每个矩阵测试它与我先前输出的任何图是否同构;如果它与之前输出的内容不是同构的,则将其输出。这将大大缩短输出列表,但是仍然需要至少个计算步骤(即使我们假设图形同构检查是超快的),因此通过我的指标。2n(n−1)/22n(n−1)/22^{n(n-1)/2} 可以枚举邻接矩阵的子集。特别是,如果是个顶点,则可以不失一般性地假设顶点的排列方式为。换句话说,每个图都是同构的,其中顶点以非降序排列。因此,仅枚举具有此属性的邻接矩阵就足够了。我不知道这样的邻接到底有多少矩阵也有,但它是许多不到他们可以用比少很多被列举GGGnnnV={v1,…,vn}V={v1,…,vn}V=\{v_1,\dots,v_n\}degv1≤degv2≤⋯≤degvndeg⁡v1≤deg⁡v2≤⋯≤deg⁡vn\deg v_1 \le \deg v_2 \le \cdots \le \deg v_n2n(n−1)/22n(n−1)/22^{n(n-1)/2}2n(n−1)/22n(n−1)/22^{n(n-1)/2}计算步骤。但是,这仍然留下了很多冗余:许多同构类仍然会被覆盖很多次,因此我怀疑这是最优的。 我们可以做得更好吗?如果我理解正确,大约是非同构图的等价类。我们能否找到一种运行时间比上述算法更好的算法?我们可以接近下界?我主要关心小(例如或左右;足够小以至于可以合理地运行这样的算法来完成),而不是大的渐近性。2n(n−1)/2/n!2n(n−1)/2/n!2^{n(n-1)/2}/n!∼2n(n−1)/2/n!∼2n(n−1)/2/n!\sim 2^{n(n-1)/2}/n!nnnn=5n=5n=5n=8n=8n=8nnn 相关:构建不等价的二元矩阵(尽管不幸的是,似乎没有收到有效的答案)。

4
图形同构问题是否已解决?
维基百科的图形同构问题页面似乎表明,不,它尚未解决。但是,我的一个朋友指出了一种用于图同构的多项式时间算法。我没有足够的经验去理解本文的推理。 我确实在没有多项证明的情况下尝试了多项式时间算法,但是我想知道在继续之前是否已经成功解决了这个问题。 那么,图的同构问题解决了吗?

2
组同构到图同构
在阅读一些有关计算复杂性的博客时(例如,在此处),我吸收了这样一种观念,即确定两组是否同构比测试两个图的同构容易。例如,在所述页面上说图形同构是比组同构更普遍的问题。 因此,我提出以下内容 给定一个组,有人可以给出|的大小多项式图Γ (G )的构造。 G | 使得Γ (G ^ )≅ Γ (ħ )GGGΓ (G )Γ(G)\Gamma(G)| G ||G||G|团体 g ^和 ^ h ?Γ (G )≅Γ (ħ)⟺摹≅HΓ(G)≅Γ(H)⟺G≅H\Gamma(G) \cong \Gamma(H) \iff G \cong HGGGH?H?H?

2
标记图的图同构问题
在未标记图的情况下,可以通过许多在实践中表现出色的算法来解决图同构问题。也就是说,尽管最坏情况下的运行时间是指数的,但通常具有多项式运行时间。 我希望在标记图的情况下情况类似。但是,我很难找到任何提出“实用高效”算法的参考。 备注:在这里,我们要求同构保留标签。也就是说,两个有限自动机/过程代数项之间的同构将暗示自动机/项实质上“等于节点重命名”。 我发现的唯一参考是Wikipedia中的参考,该参考指出标注图的同构问题可以在多项式上简化为普通图。然而,基础论文更多地是关于复杂性理论,而不是实用算法。 我错过了一些东西,或者确实是没有有效的“启发式”算法来确定两个标记图是否同构的情况? 任何提示或参考都很好。

1
有关通过检查邻接矩阵多项式来图同构的朴素方法的文献
我描述了一种可能有假阳性的图同构方法,并且我很好奇是否有文献表明它不起作用。 给定两个邻接矩阵,检查同构的一个公认的幼稚方法是检查是否对每行的,有一个行的其是行的置换,记为。稍微更严格的是问题,是否有一个“本地同构”为其中对于所有的行。可以通过建立一个具有的矩阵来在多项式时间内完成局部同构。然后是和G,HG,HG, HuuuGGGvvvGGGuuuG[u]∼H[v]G[u]∼H[v]G[u] \sim H[v]ππ\piG[u]∼H[π(u)]G[u]∼H[π(u)]G[u] \sim H[\pi(u)]n×nn×nn\times nAAAA[u,v]=(G[u]∼H[v])A[u,v]=(G[u]∼H[v])A[u,v] = (G[u]\sim H[v])GGGHHH如果具有循环覆盖,并且每个循环覆盖都是局部同构,则它们是局部同构的。AAA 显然,所有正则图都愚弄了此方法,因此,天真的方法要稍微少一点点,就是计算幂并检查它们的局部同构性,可以通过在发现任何使幂时设置来设置多个矩阵,并仅在最后检查循环覆盖。甚至更少幼稚的方法是找到一组多项式,确实一组算术电路,并且设置A [U,V] = 0时,我们发现任何多项式p与P(G)[U] \不\ SIM P( H)[v]。G2,H2,G3,H3,…G2,H2,G3,H3,…G^2, H^2, G^3, H^3,\ldotsA[u,v]=0A[u,v]=0A[u,v] = 0Gk[u]≁Hk[v]Gk[u]≁Hk[v]G^k[u]\not\sim H^k[v]A[u,v]=0A[u,v]=0A[u,v]=0pppp(G)[u]≁p(H)[v]p(G)[u]≁p(H)[v]p(G)[u]\not\sim p(H)[v] 在我看来,这似乎是一种非常幼稚的图同构方法,因此我确信有人已经对其进行了研究并证明了一个定理,例如 Thm对于无限多个nnn存在非同构n \ x n个n×nn×nn\times n矩阵G,HG,HG, H和一个置换ππ\pi,使得对于每个多项式ppp,p(G)p(G)p(G)和p(H)p(H)p(H)通过置换进行局部同构:p(G)∼πp(H)p(G)∼πp(H)p(G)\overset{\pi}{\sim}p(H)。 问题:有这样一个定理吗?我看过文献,找不到。 如果有一个键合上的程度即在多项式使得对于每两个非同构矩阵,本地同构是通过计算反驳,或者如果存在一个易于计算的多项式族,每个都有多项式边界长度,但可能是指数级,那么我们就有一个P算法用于图同构。如果这样的多项式(或算术电路)很容易猜到,那么我们有一个coRP算法。如果总是存在一个(家族)算术电路来见证非局部同构,那么就给出了一个coNP算法。kkknnnG1,H1,…,Gpoly(n),Hpoly(n)G1,H1,…,Gpoly(n),Hpoly(n)G^1, H^1, \ldots, G^{poly(n)}, H^{poly(n)}p1,…,pkp1,…,pkp_1, \ldots ,p_k 注意,我们可以通过在小场上计算多项式,例如通过对小素数进行模运算来避免高功率矩阵的项变得太大的问题。在coNP算法中,证明者可以提供这些素数。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.