我嘗試過一種算法,但無法做到這一點。這裏是問題:使用旋轉和交換對二維環形陣列進行排序
有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