魔方透明度算法

題目分析:

1_-i8eklTEIG-ibfG1douNVw.jpeg

基于這個(gè)題目 我大概的翻譯一下:

  1. 魔方是由27個(gè)小的立方體的玻璃晶體組成。
    2 .由于生產(chǎn)的原因 每個(gè)晶體的透明度大有不同,也有可能相同
  2. 現(xiàn)在求一種算法 是可以把這27個(gè)不同透明度的晶體進(jìn)行有效的排列組合,已達(dá)到

題目重讀

當(dāng)一個(gè)問題到來的時(shí)候 對問題的反復(fù)閱讀 和羅列從中理解的要點(diǎn)是很重要的。這個(gè)無論是做任何行業(yè) 都需要掌握的一項(xiàng)技能 和必備素質(zhì)。

  • A. 從要求中我們能讀出什么
  1. 這是一個(gè)魔方問題,它是由27立方體組成
  2. 每一個(gè)小的立方體有著不同的透明度,但是可以分為7個(gè)等級(行5-行6獲取)
  3. 找到一個(gè)最優(yōu)的排列組合這樣可以有一個(gè)大致一樣的透明度
  4. 寫一個(gè)程序來找這個(gè)排列組合,同時(shí)打印出結(jié)果 還有執(zhí)行時(shí)間

分析

從反復(fù)閱讀題目以后,下一步我們就是進(jìn)行有效的人工智能分析了 當(dāng)然這里的人工 就是我們的大腦。
A. 說道魔方 當(dāng)然我們要把它畫出來,立體的對我們有難度 這里我就把它平面化。給沒一個(gè) 小晶體都分配一個(gè)編號


image.png

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


image.png

圖中我講訴了三個(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è)等級吧。

image.png

當(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. 如何劃分


image.png

B. 如何衡量是不是最優(yōu)
在這里 我們用平方差來衡量。估計(jì)立方差也可以。防止就是 放大一些 求均值。機(jī)器學(xué)習(xí)的一個(gè)重要思念。 不多說了。

代碼時(shí)刻

在這里 我就直接把代碼放到了github上 想看的同學(xué)自己看吧。不多說了

https://github.com/suntearinheart/27-cube-codes/blob/master/steps4code.c?source=post_page-----842c437b765b----------------------

測試結(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è)圖形如下:

image.png

到現(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)

image.png

酸菜繼續(xù)上代碼

https://github.com/suntearinheart/27-cube-codes/blob/master/step6improvedcode.c?source=post_page-----842c437b765b----------------------

測試結(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.

代碼

https://github.com/suntearinheart/27-cube-codes/blob/master/step8improvedcodes.c?source=post_page-----842c437b765b----------------------

結(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容