二阶魔方复原算法推算-Part2
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
接上个文章继续往后讨论,梳理一个顶层逆序的算法公式推算。
1. 基础变换影响分析
先来再深入分析RUR‘,RU2R‘,RU’R’基础算法的影响。
先把顶部的角点设为ABCD,底部角点设为XYZW。AB->DC->XY->WZ连接在一起。
顶面 | 底面 | 前面 | 右面 | 左面 | 后面 |
---|---|---|---|---|---|
A-B D-C |
X-Y W-Z |
D-C X-Y |
C-B Y-Z |
A-D W-X |
B-A Z-W |
这三个方法都是对底部的-右前下角进行换离,从顶部选取顶部的-除右后上角外的三个角点种的一个进行替换
RUR‘,选取的右前上角换到底面,顶点C
RU2R‘,选取左后上角,顶点A
RU’R‘,选取左前上角,顶点D
添加顶部归位U‘/U2/U后,算法的影响可以直观的表示出来:
变换 | 置换前 | 置换后 |
---|---|---|
RUR‘U‘ |
A-B D-C X-Y W-Z |
B-A D-Y X-C |
RU2R’U2 |
A-B D-C X-Y W-Z |
Y-B C-D X-A |
RU‘R‘U |
A-B D-C X-Y W-Z |
A-C Y-B X-D |
2. 顶层逆序实现
从上面的详细分析种,我们可以看出形如RUR’U’基础变换的详细影响,它可以把顶面的三个角点和底面的一个角点联动起来,进行变换:
RUR‘U’实现了变换:A-B互换,C-Y互换,其它不影响,那么如果我们把C-Y的位置通过对前面的顺时针旋转,把D-C换到该位置来,就可以该算法下的D-C互换,再把前面旋转回来,就实现了A-B互换,C-D互换,从而实现了顶层逆序。
置换前 | F | RUR’U‘ | F’ |
---|---|---|---|
A-B D-C X-Y W-Z |
A-B X-D Y-C W-Z |
B-A X-C Y-D W-Z |
B-A C-D X-Y W-Z |
RUR’U’变换前后各附加F与F‘,相当于把变换角点修改为前面上的另外角点,利用了该变换不修改左前上D点位置的优势,把底面角点放过去,变换完再放回来,相当于多使用了底面的一个空位,实现了顶面的两两换位,从而顺时针变逆时针排序。
新公式FRUR‘U’F’,实现了在不影响底面基础上,顶面四个角点两两互换----顺时针变逆时针排序,同时原节点BC朝上颜色未变换,AD朝上颜色换位左侧颜色。
对于还原它们的话,可以再执行一次时针变换,另外为了调朝上颜色,把BC放回BC位置后再变换,可以一次把朝上颜色也调对。
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
二阶魔方复原算法推算-Part2相关推荐
- 二阶魔方复原算法推算-Part1
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 1. 二阶魔方 对于魔方来说,二阶魔方算是比较简单的,共有8个顶角块,上面四个块,下面四个块:可以分为 ...
- DBFS解二阶魔方——一次c++学习之旅
目录 前言 构思解法 优化方案 代码及详细注释 1.定义魔方的一个状态 2.状态初始化 3.转动 4.查重 5.双向广搜 6.输出 7.输入 8.主函数 几段实用代码 前言 本人是c++初学者,对魔方 ...
- 【NOJ1325】【算法实验三】【分支限界法】特殊的二阶魔方
1325.特殊的二阶魔方 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 魔方大家应该都玩过.现在有一个特殊的二阶魔方,它只有一面是白色,其余五个面全是黑色.玩这个魔方当然也 ...
- python解魔方程序_写一个解二阶魔方的程序
本文需要读者有一定的魔方基础, 最起码也要达到十秒内还原二阶魔方的水平, 并且手上最好有一个二阶魔方, 否则文中的很多东西理解不了. 另外, 这里使用的算法是我自己写着玩的, 如果你需要更成熟和专业的 ...
- 利用BFS广度优先搜索还原二阶魔方
利用BFS广度优先搜索还原二阶魔方 采用BFS深度优先搜索算法进行了对于魔方求解问题的建模,并且利用C++代码进行了算法实现,能够实现输入魔方状态,自动输出解法的效果. BFS是图论中一种基本的搜索算 ...
- 【二阶魔方还原】第十次OJ的总结
问题描述 二阶魔方是 2x2x2 的立方体结构魔方,它共有 8 块,如下图所示: 图1 二阶魔方示意图 我们可以定义魔方作为一个正六面体的六个面为 F(ront), B(ack), U(p), D( ...
- 二阶魔方还原 Rubik’s Cube 双向广度优先搜索
1. 算法简介 使用搜索算法完成二阶魔方从任意初始状态向目标状态的操作转换. 根据已有的研究,二阶魔方的上帝之数为11(进行FTM计数)或14(进行QTM计数),本算法采用QTM计数对 ...
- 【项目实践】二阶魔方搜索算法
前言 课程<智能控制基础>课后作业要求编写一个二阶魔方搜素求解的算法,由于本人的代码水平真的不行,只能"面向互联网编程",前前后后找了不少资料,也确实学习到一点东西 ...
- 魔方(4)二阶魔方、六阶魔方、七阶魔方
目录 二阶魔方 1,二阶魔方与三阶魔方的关系 2,二阶魔方的定位 3,二阶魔方的盲拧 六阶魔方 七阶魔方 二阶魔方 1,二阶魔方与三阶魔方的关系 可以理解为,二阶魔方就是三阶魔方的八个角块. ...
最新文章
- vue移动端下拉切换页面_Vue实现移动端页面切换效果
- 我看Chrome超越IE的意义
- ES6 - 字符串模板与新增字符串方法
- linux 备份数据,LINUX下备份数据
- LQ训练营(C++)学习笔记_常见动态规划模型
- Arthas-MathGame
- JDBC初学者的basedao工具类
- Spring学习之旅(二):Bean的高级装配之解决装配歧义性
- mysql 拼音首字母_Mysql:拼音首字母查询(超高性能)
- python画logistic拟合曲线_Logistic回归python实现
- python中文文本处理_python简单文本处理的方法
- SQL Tuning 基础概述05 - Oracle 索引类型及介绍
- protobuf 2.5.0问题
- robocode java_IBM Robocode Java学习利器(1)Robocode 入门
- WPF 入门教程打印控件
- html前端毕业设计项目,web前端毕业设计论文..doc
- 仿《91创业网》网站源码 招商加盟致富商机网站 帝国cms模版+采集
- 安全secuerity证券
- HTML概述+HTML核心(HTML知识点总结)
- java如何使用指针_如何在Java中使用指针?