魔方透明度算法

题目分析:

1_-i8eklTEIG-ibfG1douNVw.jpeg

基于这个题目 我大概的翻译一下:

  1. 魔方是由27个小的立方体的玻璃晶体组成。
    2 .由于生产的原因 每个晶体的透明度大有不同,也有可能相同
  2. 现在求一种算法 是可以把这27个不同透明度的晶体进行有效的排列组合,已达到

题目重读

当一个问题到来的时候 对问题的反复阅读 和罗列从中理解的要点是很重要的。这个无论是做任何行业 都需要掌握的一项技能 和必备素质。

  • A. 从要求中我们能读出什么
  1. 这是一个魔方问题,它是由27立方体组成
  2. 每一个小的立方体有着不同的透明度,但是可以分为7个等级(行5-行6获取)
  3. 找到一个最优的排列组合这样可以有一个大致一样的透明度
  4. 写一个程序来找这个排列组合,同时打印出结果 还有执行时间

分析

从反复阅读题目以后,下一步我们就是进行有效的人工智能分析了 当然这里的人工 就是我们的大脑。
A. 说道魔方 当然我们要把它画出来,立体的对我们有难度 这里我就把它平面化。给没一个 小晶体都分配一个编号


image.png

B. 什么是一个大概的透明度 overall transparency。
从我们基本的 立体几何的理论 我们知道 三维的立体中 是分 X,Y, Z 三大坐标系的。 既然这样 我们就不妨 从个个坐标系中 去阐述这个问题。


image.png

图中我讲诉了三个坐标,这里我仔细讲解一下X坐标,平行于X坐标的 晶体的组合 应该是9个。就是我们从上图看到的 从左到右的 三个晶体的 组合。 同理 Y 坐标 和 Z 坐标 一样个有9个。

C. 那到底可以对27个晶体划分集中等级呢?
说道这 来点发散思维吧 。如果我们不在乎 那就分为一个等级好了。既然一个等级了 那还用排序吗? 不需要怎么放都可以。 单现实不允许啊。既然一个等级不行 我们多分点吧。 2个? 3个? 说道魔方 脑海里莫名的想到的是三 。那这里我们就分为三个等级吧。

image.png

当我们把这个图形画出来的时候,是不是觉得这是一个有规律的样式啊 。同样这个排列的方式 满足了 我们B中的要求公式 对不对啊?
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

建模

好了 上面我们貌似 找到了一些门道。那下面我们就想办法建模吧。把我们想的 都抽象出一个通用的东西出来。
A. 如何划分


image.png

B. 如何衡量是不是最优
在这里 我们用平方差来衡量。估计立方差也可以。防止就是 放大一些 求均值。机器学习的一个重要思念。 不多说了。

代码时刻

在这里 我就直接把代码放到了github上 想看的同学自己看吧。不多说了

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

测试结果:

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

写到这里也许就可以告一段落了。但是代码的路上 貌似缺了 优化这个女友 会失去很多乐趣和精彩。

优化 1

到目前为止 分三组,怎么说也比分一组 要好。但是有没有更好的方法呢? 回到上面我们分析的 Pattern中 再去寻找规律。我们就会发现一个有意义的事情。是不是很像DNA的,虽然不是 X和Y 。在这应该是 A&B&C了。那既然这样 我们可以不可以去划分一个二级level呢?
就是在目前我们的已经划分的三个level中 再进行二次细分呢? 然后 让有序的 翻转下去。
For A : 内分 大中小 三组
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 :内分大中小
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 :内分大中小
C (S): the smaller cubes in C group
C(L): the Larger cubes in C group
C(M): the Medium cubes in C group
这里来点英文啊 我英文差 需要多练习 见谅。所以这个图形如下:

image.png

到现在,我们可以发现 这个规律很对称,螺旋式的对称
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

酸菜继续上代码

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

测试结果

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. 这说明优化很成功啊 。

二次优化

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

结果

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点了 要睡觉去了。

希望这个分析过程可以 给研究算法的同学一点点启示。Good Night

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容