我尝试过一种算法,但无法做到这一点。这里是问题:使用旋转和交换对二维环形阵列进行排序
有16个元素,按四种类型(a,b,c和d)分组。我们也有四组,A,B,C和D.
在初始状态下,四组各有4个随机元件,例如:
A: c, c, a, d
B: b, b, a, a
C: b, b, c, c
D: d, d, d, a
元素组成的组中的顺序重大。
有允许两个操作:
1)旋转所述组的()交换的基团中两个相邻元件与相应的元素在两个方向上),例如:
c, c, a, d -> d, c, c, a
2在相邻的组的元素,考虑到第一个和最后组和元件也相邻,所以:
A: (c, c), a, d
B: (b, b), a, a
->
A: (b, b), a, d
B: (c, c), a, a
或
A: c), c, a, (d
D: d), d, d, (a
->
A: d), c, a, (a
D: c), d, d, (d
该算法的目标是将元素放入其相应的组(A: a, a, a, a
等)。该算法不必在时间和解决方案方面达到最优,但它的平均速度应该相当快(即没有蛮力)。
任何人都可以帮忙吗?这个算法是多项式吗?
试图解决这样的事情:http://en.wikipedia.org/wiki/Pocket_Cube? :-) – ThinkJet 2010-08-10 12:16:41
你可以用一系列步骤进行单个换位吗?即如果第一行是baaa,第二行是abbb,是否有可能得到解决方案?我怀疑有一个平等的论点说你不能,但我看不到它。所述奇偶论可能阐明了可解案例中的解决方案。 – deinst 2010-08-10 14:48:47
当然有:baaa - > abaa,abaa - > aaba,交换第一对,我们得到abba&aabb,从那里很简单。 – GhassanPL 2010-08-10 15:03:58