pengw 发表于 2008-8-16 07:20:09

基于层先法的纯色三阶编程算法

<P>层先法最容易实现编程,20多年前,我就是用这种方法交了毕业论文</P>
<P><BR><STRONG>原理描述</STRONG></P>
<P>------------</P>
<P>1。一个块一个块地依序复原</P>
<P>2。复原每一个块的公式只考虑不破坏已复原的块,只它不管。</P>
<P>3。第一个棱块可能存在于是12个位置共有24个状态,第一个棱块复位后,第二个棱块只可能在另外11个可能的位置,共有22个状态,以此类推。</P>
<P>4。复原顺序是,第一层四个棱块,第一层四个角块,第二层四个棱块,第三层四个棱块,第四层四个角块,在这个原则下,自已决定所有块一个固定复原顺序,注意每一个块的复原顺序是固定的,直接决定公式库的顺序。</P>
<P>41。每一块复原后,得到一个当前状态,再在当前状态中找出下一个要复位的块实施复原,以此类推,至到全部块复位。</P>
<P>5。依照块的复原顺序,找出每一个块的每个状态复原所须的一个公式,例如,第一层的第一个角块有24状态可能的状态,对应24-1个公式,复原状态无须公式。每一个块的复位公式组的集合构成一个公式库</P>
<P>6。由于扰动原因,倒数第二个棱块可能有4种状态,对应三个公式。最后一个棱块显然只有一种状态。</P>
<P>7。棱块复位后,角块不可能有扰动,所以倒数第二个角块有三种状态对应二个公式,最后个角块显然只有一种状态</P>
<P>8。每一个块复位后,记录它的复位公式,所有块的复位公式依照块的复位顺序窜在一起,就是我们所求的解。</P>
<P>&nbsp;</P>
<P><STRONG></STRONG>&nbsp;</P>
<P><STRONG>建立魔方转动模型</STRONG><BR>-----------------------<BR>建一个魔方转动模型程序,只能用公式来调用,调用完成后保持当前状态</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P><STRONG>建立魔方公式库<BR></STRONG>---------------------<BR>2。第一层,四个棱块可能的状态分布是:24,22,20,18。找出对应的84-4个公式<BR>3。第一层,四个角块可能的状态分布是:24,21,18,15。找出对应的78-4个公式<BR>5。第二层,四个棱块可能的状态分布是:16,14,12,10。找出对应的52-4个公式<BR>6。第三层,四个棱块可能的状态分布是:8,6,4,0。找出对应的18-3个公式<BR>7。第三层,四个角块可能的状态分布是:12,9,3,0。找出对应的24-3个公式</P>
<P><STRONG></STRONG>&nbsp;</P>
<P><STRONG>调用公式库</STRONG><BR>---------------<BR>1。分别用第一层四个棱块的状态调用公式库中的对应公式,完成四个棱块复位<BR>2。分别用第一层四个角块的状态调用公式库中的对应公式,完成四个角块复位<BR>3。分别用第二层四个棱块的状态调用公式库中的对应公式,完成四个棱块复位<BR>4。分别用第三层四个棱块的状态调用公式库中的对应公式,完成四个棱块复位<BR>5。分别用第三层四个角块的状态调用公式库中的对应公式,完成四个角块复位</P>
<P>&nbsp;</P>
<P><STRONG>记录复原公式</STRONG></P>
<P>------------------</P>
<P>将每次调用的公式按调用顺序全部拼接在一起就是求解步骤,并且可以对获得的解进行适当优化,当然这些事情都由计算机自动完成</P>
<P><STRONG></STRONG>&nbsp;</P>
<P><STRONG></STRONG>&nbsp;</P>
<P><STRONG>说明<BR></STRONG>------<BR>以上方法最简单,最麻烦的事情就是编写238个独立公式及这些公式的校验,仅仅只是麻烦,绝对不复杂,对于记忆上千公式的快手来说,完全是不在话下。但要特别注意,公式编写与调用顺序密切相关,每一个公式将不得影响已复原的块。</P>
<P>&nbsp;</P>
<P>本质上,只要掌握了N阶定律,可以毫不困难地随意编写复原程序,自然无须劳驾“中华民族的爱因斯坦”,植物人是无法理解这些“贫下中农”思维,哈哈哈</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P><STRONG>引深意义</STRONG></P>
<P>-----------</P>
<P>1。以上方法可以轻易给出任意二个合法状态的解,加入一些条件可以轻易识别错误安装</P>
<P>2。这种算法可以推广到二阶,四阶,五阶,六阶,七阶。</P>
<P>3。须说明的是,四阶及四阶以上,有边棱扰动问题,复原一半转层后,在复位某个块时要识别和消除边棱扰动,否则边棱扰动会出现在最后层,而最后一层是无法解决边棱扰动</P>
<P>4。阶数越大,公式库越大,所以这种方法只适合于低阶</P>

[ 本帖最后由 pengw 于 2008-8-17 09:43 编辑 ]

三叶虫 发表于 2008-8-16 07:36:12

顶啊!好帖,支持楼主最后留下的观点!

junior_sky 发表于 2008-8-16 07:48:00

我怎么就看不懂呢:L

pengw 发表于 2008-8-16 08:07:45

你只要会层先法,明白层先法是一块一块地在复原魔方,你就会明白楼主的方法

[ 本帖最后由 pengw 于 2008-8-16 08:12 编辑 ]

失群孤雁 发表于 2008-8-16 08:22:33

谢谢楼主..长见识了........

lqp18_31 发表于 2008-8-16 08:24:13

厉害,不错啊~~~~~

乌木 发表于 2008-8-16 08:57:43

<P>1楼说“3。第一层,四个角块可能的状态分布是:24,21,16,15。找出对应的76-4个公式”,其中“16”是否笔误?是否应为18?</P>
<P>&nbsp;</P>
<P>此外,1楼说“每一个公式将不得影响已复原的块”,这可以理解,但一定会影响别的还未复原的块(至少是另两块,只要恰当地充分运用相似变换),看来,每调用、执行一次公式后,要对魔方的还未复原的块的状态做一次修正,才可以调下一个公式,这些是具体的重要“细节”,对吗?不懂编程,只是猜想。</P>
<P>&nbsp;</P>
<P>&nbsp;</P>

[ 本帖最后由 乌木 于 2008-8-16 09:27 编辑 ]

知Shmily足 发表于 2008-8-16 09:01:22

<P>好像挺容易的,就是没有看明白啊,LZ解释一下吧</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>已补充了算法原理</P>

[ 本帖最后由 pengw 于 2008-8-18 09:02 编辑 ]

junior_sky 发表于 2008-8-16 09:06:45

层先我忘了啊:L .是不是用层先法复原高阶魔方

乌木 发表于 2008-8-16 09:41:08

回复 9# 的帖子

本帖说的是纯色三阶。
页: [1] 2
查看完整版本: 基于层先法的纯色三阶编程算法