美文网首页
魔方透明度算法

魔方透明度算法

作者: FrederickLei | 来源:发表于2019-08-22 18:21 被阅读0次

题目分析:

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

相关文章

  • 魔方透明度算法

    题目分析: 基于这个题目 我大概的翻译一下: 魔方是由27个小的立方体的玻璃晶体组成。2 .由于生产的原因 每个晶...

  • C语言代码输出一个“魔方阵”

    C语言代码输出一个“魔方阵” 算法实现: 本程序要输出魔方阵,魔方阵如下: 1) #include #define...

  • 魔方

    我有许多许多的魔方,如金字塔魔方、三阶镜面魔方、斜转魔方、五魔方、魔粽魔方等等。 魔方世在1974...

  • 神奇的魔方

    我们家里有许多有许多魔方,例如金字塔魔方三节镜面魔方嗯,世界么镜面魔方午间镜面魔方六节镜面魔方中式魔方等。...

  • 魔方

    今天我察了一下关与魔方类型的东西,我查到的魔方类型有,18阶魔方,二阶魔方,镜面魔方,捆绑魔方,直升机魔方,斜...

  • 我的魔方

    我有三个魔方,一个枫叶魔方,一个三阶魔方,和一个金字塔魔方。最简单的是枫叶魔方和金字塔魔方。金字塔魔方是...

  • active伪类样式

    背影色透明度 边框透明度 基本

  • 神奇的魔方

    魔方有很多种:三阶魔方、二阶魔方、镜面魔方、金字塔魔方……最常见的就是三阶魔方了,顾名思义就是每个面有3×...

  • 奇特的魔方

    我有一个魔方,它很奇特,跟那些金字塔魔方三级魔方都不一样,它是齿轮魔方。对我来说,齿轮魔方比那两种魔方都简单。...

  • 2022-08-06

    四阶魔方拼完了,五阶魔方和金字塔魔方买回来了,刚拿到金字塔魔方的时候,感觉他毫无头绪,感觉比四阶魔方和五阶魔方甚至...

网友评论

      本文标题:魔方透明度算法

      本文链接:https://www.haomeiwen.com/subject/yqeosctx.html