假设我们获得了彩色图表。设G是它的自同构群。我们如何测试G中是否存在置换p,使得给定的一组(x_i,y_i)的p(x_i)= y_i?具体地说,G是超过6个元素的置换组。然后我希望能够做的一个示例测试是G是否包含发送2到2和3到5的任何排列,我不关心1,4,5,6最终的位置。
您可以假设像saucy这样的程序可以有效地为G组计算一组生成器。
答案 0 :(得分:1)
如果连接了G并且你可以在另一个图上运行,那么准备一个彩色图形H,它由G与其自身的不相交联合组成,对于每个i,重新着色顶点x i G的第二个副本中的G和y i 的第一个副本是颜色i,与G中的现有颜色不同。当且仅当存在Aut的生成器时才存在合适的G自同构( H)将第一个副本中的顶点映射到第二个副本中的顶点。
也许有一种基于Schreier-Sims的更直接的方法。
编辑:这是基于SS的方法的一种方式。设p对x 1 ,y 1 ,...,x p ,y p 。如果p = 0,答案当然是是。否则,确定是否存在将x p 带到y p 的置换g,即x p g = y p 。如果不是这样,答案是否。如果是这样,当且仅当它可以以h g(g后跟h)的形式写入时,你正在寻找的排列存在,其中h属于y p 的稳定器。使用SS机制计算稳定器的生成器并返回递归计算的答案x 1 g ,y 1 ,...,x p-1 g ,y p-1 。
答案 1 :(得分:0)
我不知道您定义了哪种方法或对象,但在伪代码中,您正在查看类似的内容:
foreach (permutation p in G) {
if p.permute(2) == 2 && p.permute(3) == 5:
return true
}
return false
假设p是具有permute方法的对象。