題目分析:

基于這個(gè)題目 我大概的翻譯一下:
- 魔方是由27個(gè)小的立方體的玻璃晶體組成。
2 .由于生產(chǎn)的原因 每個(gè)晶體的透明度大有不同,也有可能相同 - 現(xiàn)在求一種算法 是可以把這27個(gè)不同透明度的晶體進(jìn)行有效的排列組合,已達(dá)到
題目重讀
當(dāng)一個(gè)問題到來的時(shí)候 對問題的反復(fù)閱讀 和羅列從中理解的要點(diǎn)是很重要的。這個(gè)無論是做任何行業(yè) 都需要掌握的一項(xiàng)技能 和必備素質(zhì)。
- A. 從要求中我們能讀出什么
- 這是一個(gè)魔方問題,它是由27立方體組成
- 每一個(gè)小的立方體有著不同的透明度,但是可以分為7個(gè)等級(行5-行6獲取)
- 找到一個(gè)最優(yōu)的排列組合這樣可以有一個(gè)大致一樣的透明度
- 寫一個(gè)程序來找這個(gè)排列組合,同時(shí)打印出結(jié)果 還有執(zhí)行時(shí)間
分析
從反復(fù)閱讀題目以后,下一步我們就是進(jìn)行有效的人工智能分析了 當(dāng)然這里的人工 就是我們的大腦。
A. 說道魔方 當(dāng)然我們要把它畫出來,立體的對我們有難度 這里我就把它平面化。給沒一個(gè) 小晶體都分配一個(gè)編號

B. 什么是一個(gè)大概的透明度 overall transparency。
從我們基本的 立體幾何的理論 我們知道 三維的立體中 是分 X,Y, Z 三大坐標(biāo)系的。 既然這樣 我們就不妨 從個(gè)個(gè)坐標(biāo)系中 去闡述這個(gè)問題。

圖中我講訴了三個(gè)坐標(biāo),這里我仔細(xì)講解一下X坐標(biāo),平行于X坐標(biāo)的 晶體的組合 應(yīng)該是9個(gè)。就是我們從上圖看到的 從左到右的 三個(gè)晶體的 組合。 同理 Y 坐標(biāo) 和 Z 坐標(biāo) 一樣個(gè)有9個(gè)。
C. 那到底可以對27個(gè)晶體劃分集中等級呢?
說道這 來點(diǎn)發(fā)散思維吧 。如果我們不在乎 那就分為一個(gè)等級好了。既然一個(gè)等級了 那還用排序嗎? 不需要怎么放都可以。 單現(xiàn)實(shí)不允許啊。既然一個(gè)等級不行 我們多分點(diǎn)吧。 2個(gè)? 3個(gè)? 說道魔方 腦海里莫名的想到的是三 。那這里我們就分為三個(gè)等級吧。

當(dāng)我們把這個(gè)圖形畫出來的時(shí)候,是不是覺得這是一個(gè)有規(guī)律的樣式啊 。同樣這個(gè)排列的方式 滿足了 我們B中的要求公式 對不對?。?br> For the X : T(x3) + T(x2) + T(x1) = A+B+C
For the Y: T(y3) + T(y2) + T(y1) = A+B+C
For the Z : T(z3) + T(z2) + T(z1) = A+B+C
建模
好了 上面我們貌似 找到了一些門道。那下面我們就想辦法建模吧。把我們想的 都抽象出一個(gè)通用的東西出來。
A. 如何劃分

B. 如何衡量是不是最優(yōu)
在這里 我們用平方差來衡量。估計(jì)立方差也可以。防止就是 放大一些 求均值。機(jī)器學(xué)習(xí)的一個(gè)重要思念。 不多說了。
代碼時(shí)刻
在這里 我就直接把代碼放到了github上 想看的同學(xué)自己看吧。不多說了
測試結(jié)果:
time consume(ticks): 62
the T(average) is 1.95
the arrangement of the Cube:
— — — — — — — -
Bottom:
0.51 0.71 0.61
0.62 0.52 0.72
0.73 0.63 0.53
Middle:
0.64 0.54 0.74
0.75 0.65 0.55
0.56 0.76 0.66
Top:
0.77 0.67 0.57
0.58 0.78 0.68
0.69 0.59 0.79
— — — — — — — -
the SD : 0.0632456
Program ended with exit code: 0
寫到這里也許就可以告一段落了。但是代碼的路上 貌似缺了 優(yōu)化這個(gè)女友 會(huì)失去很多樂趣和精彩。
優(yōu)化 1
到目前為止 分三組,怎么說也比分一組 要好。但是有沒有更好的方法呢? 回到上面我們分析的 Pattern中 再去尋找規(guī)律。我們就會(huì)發(fā)現(xiàn)一個(gè)有意義的事情。是不是很像DNA的,雖然不是 X和Y 。在這應(yīng)該是 A&B&C了。那既然這樣 我們可以不可以去劃分一個(gè)二級level呢?
就是在目前我們的已經(jīng)劃分的三個(gè)level中 再進(jìn)行二次細(xì)分呢? 然后 讓有序的 翻轉(zhuǎn)下去。
For A : 內(nèi)分 大中小 三組
A (S): the smaller cubes in A group
A(L): the Larger cubes in A group
A(M): the Medium cubes in A group
For B :內(nèi)分大中小
B (S): the smaller cubes in B group
B(L): the Larger cubes in B group
B(M): the Medium cubes in B group
For C :內(nèi)分大中小
C (S): the smaller cubes in C group
C(L): the Larger cubes in C group
C(M): the Medium cubes in C group
這里來點(diǎn)英文啊 我英文差 需要多練習(xí) 見諒。所以這個(gè)圖形如下:

到現(xiàn)在,我們可以發(fā)現(xiàn) 這個(gè)規(guī)律很對稱,螺旋式的對稱
A (L-S-M-L-S-M-L-S-M)
C (M-L-S-M-L-S-M-L-S)
B (S-M-L-S-M-L-S-M-L)

酸菜繼續(xù)上代碼
測試結(jié)果
The Result:
time consume(ticks): 83
the T(average) is 1.95
the arrangement of the Cube:
— — — — — — — -
Bottom:
0.57 0.74 0.61
0.64 0.51 0.77
0.71 0.67 0.54
Middle:
0.62 0.58 0.75
0.78 0.65 0.52
0.55 0.72 0.68
Top:
0.76 0.63 0.59
0.53 0.79 0.66
0.69 0.56 0.73
— — — — — — — -
the SD : 0.02
到這里是不是很開心? 我們成功的把精度 從 0.0632456 提高到了 0.02. 這說明優(yōu)化很成功啊 。
二次優(yōu)化
try to do the improvement again
From the spiral DNA-like method(Step5):
A(L-S-M-L-S-M-L-S-M)
C(M-L-S-M-L-S-M-L-S)
B(S-M-L-S-M-L-S-M-L)
For every A, B, C, they have 3 groups of (L-S-M, M-L-S, S-M-L).
Also for X(L), Y(M), Z(S), X,Y,Z?{A,B,C} , They have three entities. Sounds there are some patterns. But need more time to learn math to catch up. I want to leave the left task to the computer. Doing(10077696) [3!3!3!][ 3!3!3!][ 3!3!3!] Times of permutation is easier than 27! Times.
代碼
結(jié)果
time consume(ticks): 10071786
time consume(sec): 10
the T(average) is 1.95
the arrangement of the Cube:
— — — — — — — -
Bottom:
0.57 0.75 0.63
0.66 0.51 0.78
0.72 0.69 0.54
Middle:
0.62 0.59 0.74
0.77 0.65 0.53
0.56 0.71 0.68
Top:
0.76 0.61 0.58
0.52 0.79 0.64
0.67 0.55 0.73
— — — — — — — -
the SD : 1.86267e-16
the best SD: 1.86267e-16
Program ended with exit code: 0
是不是很開心 我們的精度 從 0.02 降低到了1.86267e-16.
好了 寫到這里 也基本快12點(diǎn)了 要睡覺去了。
希望這個(gè)分析過程可以 給研究算法的同學(xué)一點(diǎn)點(diǎn)啟示。Good Night