您的位置:首页 > 其它

关系表示:被动与主动、连环关系合并

2016-01-22 04:14 162 查看
看训练指南的时候,对LA 3401中,说的正方体状态表示不是很理解,详细推敲了一下,明白了一些,此处做个记录,名为:主动关系和被动关系以及连续的关系表示

正方体有六面,其面和颜色的标号如下图



下面再用3行文字表示,以便对应后面的讲解

用这样表示6面:
上
左前右后
下
这里给出3种姿态,也是书中讲到的,标准、标准左旋一次,标准上旋一次
这里和书中同样,只是color1写成1,以此类推
标准
3
5126
4
左旋一次
3
1265
4
上旋一次
1
5423
6


下面再看这3种姿态对应的数组表示

标准{1,2,3,4,5,6}左旋一次{5,1,3,4,6,2}上旋一次{3,2,6,1,5,4}

书中写的以我的理解是主动的表示

因为其表示的是:array[i] = k代表i颜色占据了(标准面)k面的位置,简单说叫i占据了k的位置

看看上面左旋一次1占据的是标准面5的位置,上旋一次1占据的是标准面3的位置,所以其数组第一位置分别是5和3

只是为什么叫这个主动关系的表示呢?那是因为数组array[i] = k,以下标的角度出发(以下讲到的都是这样),i对于k是一种主动的关系,i主动占据了k

那么还有被动的表示,xx占据了yy,是不是可以表示成yy被xx占据了呢?(这不是废话吗?)

确实,被动表示上面的数组,文字表示为:(标准面)i被k颜色占据了,array[i] = k,此时下标i对于k是一种被动的关系,i被k占据了

此时数组表示如下

标准{1,2,3,4,5,6}左旋一次{2,6,3,4,1,5}上旋一次{4,2,1,6,5,3}

解释同上,左旋一次标准面5被1占据了,上旋一次标准面3被1占据了,所以其数组第5位置和第3位置是1

标准状态就没什么好解释的了,1占据1面,1面也被1占据,怎样表示都是123456

那么还有一个合并左旋再上旋

重新把主动和被动的数组再写一遍,没有标准,加入左旋再上旋的状态

主动

左旋一次{5,1,3,4,6,2}上旋一次{3,2,6,1,5,4}左旋再上旋{5,3,6,1,4,2}

被动

左旋一次{2,6,3,4,1,5}上旋一次{4,2,1,6,5,3}左旋再上旋{4,6,2,5,1,3}

用3行表示一下左旋再上旋

2
1463
5


先看看主动513462+326154 = 536142是怎么来的

array[i] = k; 这里用i->k表示

说个题外话,这里和矩阵的变化很是相似,PT = A,P经过T变换为A,矩阵本身含有很多变化的意义,具体的还有很多等我们去了解,我后面用P表示初始,T表示中间变换,A表示变换后的状态

当我们要知道A的i->k分别是什么指向了什么,有初始的P:i->j,还有T:j->k,最后就会有A:i->k,整个过程类似链表

我们用文字来表示,P状态下i占据了j的位置,而T变换中使得j又占据了k的位置,最终使得A状态下i是占据了k的位置

所以A[i] = T[P[i]],其表示P中i占据的位置在T中又占据了的位置

主动的表示时,如果把PTA分别从上往下写i->k这样的链式表示,最终结果是一个从上往下链接的过程,似乎又废话了

验证一下,左旋一次1占据5的位置,而上旋一次5又占据了5的位置,所以1最终占据了5的位置,左旋再上旋array[1]=5

主动关系的表示到此为止

再来看看被动,略写吧,跟上面差不多的,只是变成了array[i] = k用i<-k表示

A[i] = P[T[i]],其表示T中被占据的位置在P中又被谁占据了

验证一下,上旋一次1被4占据了位置,而左旋一次4的位置被4占据了,所以1的位置最终被4占据了,左旋再上旋array[1]=4,注意这次是先看上选再看左旋

其它的不多说了,如果不是很清楚请在纸上写下左旋、上旋、左旋再上旋的数组,还有链表形式的表示,像写小学加法那样竖排着写,主动和被动在合并时的区别就是,主动是从上往下找答案,被动则是从下往上找答案

其实差不多讲完了,只是上面的都是最后生成了一个状态(或者说生成了数组,表示了一个关系 ),原书中也是用这样的方式来生成dice数组,当然用的是主动的表示,理解了上面的,我用被动表示同样也没有任何问题

但是还有一点要看的,当我们知道本来的状态和变换后的状态,如何改变方块的颜色标识呢?毕竟数组表示的不是很直接

代码如下,当然,没有做过此题的可能不是很懂

//color表示变换后的,dice表示本来的,dice24表示对应哪种变换方式
color[i][dice24[r[i]][j]] = dice[i][j];//主动
color[i][j] = dice[i][dice24[r[i]][j]];//被动


仅仅对下标做个解释,i只是对应第几个方块而已,重点是j表示的是哪个面

主动:颜色还是本来的颜色,只是考虑占了哪个面而已

被动:被占领的位置还是和原来一样,只是考虑被谁占了而已

当然,我们知道,变量赋值都是a=b表示a<-b,b赋值给a这样,所以b是主动的,a是被动的

上面的主动和被动,变成了这样的表示

主动:原来的dice同样的[j]位置,填入到变换后的[dice24变换]的位置

被动:变换后的color[j]还是本来的[j]位置,只是被变换后的[dice24变换]原来的颜色dice给占据了

这2条解释随意个人如何解释,基本的还是上面的纯粹文字的表示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息