【问题标题】:Fuzzy graph automorphism group membership testing模糊图自同构组成员资格测试
【发布时间】:2012-03-15 07:53:39
【问题描述】:

假设我们得到一个彩色图表。令 G 为其自同构群。对于给定的 (x_i,y_i) 集合,我们如何测试 G 中是否存在使得 p(x_i) = y_i 的排列 p?具体假设G是6个元素的置换群。然后我想做的一个示例测试是 G 是否包含发送 2 到 2 和 3 到 5 的任何排列,我不在乎 1,4,5,6 最终在哪里。

您可以假设像 saucy 这样的程序可以有效地计算组 G 的一组生成器。

【问题讨论】:

  • 我对群论生疏了,但这可能行得通:对称群可以通过转置生成(即生成器是仅转置相邻元素的排列)。您可以形成一个图,其中节点是元素,边是生成集的转置。那么如果两个元素之间有路径,那么它们会相互映射吗?
  • 对于多个映射,可能要求每个映射的路径不相交?
  • 我不认为任何对称群都可以通过转置生成。以 3 个元素的循环群为例。
  • proofwiki.org/wiki/Generators_for_Symmetric_Group 的证明。在三个元素的情况下,可以生成组为:id、(12)、(23)、(12)(23)=(231)、(23)(12)=(132)、(12) (23)(12)=(13)。 [(xy) 表示 x 映射到 y 和 y 映射到 x;假定未显示的事物映射到它们自身。]
  • 但是 3 个元素的循环组实际上并不包含排列 (12),所以你生成的太多了。确实可以用转置生成对称群,但是图对称(即自同构)群不一定是对称群!事实上,我认为只有完全图或没有边的图才有 S_n 作为它们的自同构群。

标签: algorithm graph computer-science


【解决方案1】:

如果 G 是连通的并且您可以在不同的图上运行 saucy,则准备一个由 G 与其自身的不相交并集组成的彩色图 H,并为每个 i 重新着色顶点 xi G 的第一个副本和 G 的第二个副本中的 yi 的颜色 i 与 G 中的现有颜色不同。当且仅当存在 Aut( H) 将第一个副本中的顶点映射到第二个副本中的顶点。

或许还有基于Schreier-Sims的更直接的方法。

编辑:这是基于 SS 的方法可以采用的一种方式。假设有 p 对 x1, y1, ..., xp, yp。如果 p = 0,答案当然是。否则,判断是否存在xp到yp的置换g,即xpg = yp。如果不是这样,答案是。如果是这样,当且仅当它可以写成 h g(g 后跟 h)的形式时,您正在寻找的排列存在,其中 h 属于 yp 的稳定器。使用 SS 机器计算稳定器的生成器并返回递归计算的答案 x1g, y1, ..., xp-1g, yp-1.

【讨论】:

    【解决方案2】:

    我不知道您定义了什么样的方法或对象,但在伪代码中您正在查看类似以下内容:

    foreach (permutation p in G) {
        if p.permute(2) == 2 && p.permute(3) == 5:
             return true
    }
    return false
    

    假设 p 是一个具有置换方法的对象。

    【讨论】:

    • 对,这就是我想要实现的。我忘了提到效率;)这种蛮力算法实际上需要 O(n!) 时间,甚至不包括枚举自同构组元素的成本。因为我的图可以有 1000 多个顶点,所以这是不切实际的。
    • 你如何存储排列?如果您将它们存储为关联数组或其他东西,它应该不会太昂贵 - p.permute(2) 应该就像在非常快的哈希图中调用 p[2] 一样。
    • 我没有存储排列。该组隐式表示为彩色图的自同构组。由于这些图可能具有非常多的对称性,因此组 G 可能非常大(例如 100 个元素)。
    • 我认为您将不得不为此使用数学,而不是软件优化。
    • 我同意,只是优化蛮力算法并不能解决问题;需要不同的算法。
    猜你喜欢
    • 2012-03-02
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2020-05-05
    相关资源
    最近更新 更多