^第13届智能车竞赛总决赛颁奖舞台 | 姚祖婵供图^

智能车竞赛

是八皇后问题,参赛车模作品在8×8的棋格内将原本随机分布的八个棋子进行搬移,最终使其满足“八皇后”约束-即在同一行、同一列、同一正反斜对角线上只有一个棋子。比赛胜负是以参赛车模启动进入场地,直至完成任务退出场地位置的时间来衡量,用时少者胜出。

^随机分布八个棋子的初始位置 | 比赛软件^

规则没有限制车模进入场地的位置,在比赛棋子分布后,参赛队伍 有两分钟的出发前的准备时间。

在百度百科的“八皇后问题”词条中记录了该问题是由国际象棋手马克思.贝瑟尔与1848年(欧洲发生革命)提出的,后经使用图论方法和计算机回溯算法可以寻找出92中满足八皇后约束的结果。

^八皇后的92种结果 | 比赛软件显示^

如果棋子在棋盘格中的起始位置为随机分布,所有可能的初始棋局数量为:

如果限制起始时每一行,每一列只有一个棋子,那么可能的初始棋局数量为:

这些棋局移动到最接近92种满足八皇后位置约束的搬移棋子距离是各不相同的。

从随机起始位置使用最少步数满足八皇后约束

对于起始位置满足每一行、每一列只有一个棋子的初始位置,可以统计出全部40320个情形所需最少移动步数分布。

起始位置满足每行每列只有一个棋子的起始位置移动的最小步数统计

移动步数最少为0布,即初始位置就满足八皇后约束条件。最大步数为20步,没有奇数移动步数。频次最高的是移动六步。

由于完全随机(但限制每一棋格内只有一个棋子)的初始位置非常多,至少使用我的计算机还无法短期内统计完,所以就随机抽取了10万次起始位置,统计最少移动步数的分布,如下图所示:

初始位置完全随机情况下的移动步数概率分布

从上图可以看出,移动步数的最高概率由原来的6步,增加到了12步,这是由于起始位置已经不再限制每行每列只有一个棋子的原因。

因此,为了保证创意比赛预赛阶段,八皇后问题比赛的公平性,每一支队伍的初始位置需要各不相同,但距离八皇后结果所需要移动的最少步数应该相同。比如,都需要12(或者其他的数字)。

在实际棋子搬运过程中,车模需要平移,转弯。对于某些类型的车模,完成转弯动作所需要的时间比平移要慢,因此在比赛中,除了考虑到移动棋子的距离(步数)之外,还需要考虑转弯的次数。

对于前面所有需要移动12步的初始情况,统计其中需要转弯的次数,分布如下:

需要移动12次情况下所需要转弯的次数统计

可以看出,大部分的初始情况需要车模完成04转弯,及少数情况则需要移动56次的转弯。

综合考虑以上情形,在选择八皇后初始位置的时候,需要同时指定所需要的移动最少步数和转弯次数。下图显示了三次计算机通过随机抽样,获得移动步数为15次,转弯次数为3次的八皇后初始化位置。

计算机选择八皇后初始化位置

当然了,对于创意比赛中,最为激烈和有趣的过程,还当属双方斗智斗勇的Quoridor对弈阶段。上面的八皇后问题还可以通过计算机软件完成最优移动搜索,但对于对弈阶段则需要双方参赛队伍依靠自己的智慧和车模的力量完成对抗比赛。

Quoridor对抗计时软件界面

创意比赛的软件可以在公众号中输入以下五个字母可以直接跳转至下载链接:

?eqiv也可以在下面百度网盘进行下载:

https://pan.baidu.com/s/13BgAqUkmQwCcGn-rH149mQ

对于创意比赛大家还有什么意见和建议,欢迎在“留言”中给出。

后宫佳丽三千,皇后只有一个相关推荐

  1. 后宫佳丽三千,假如古代皇帝也懂负载均衡算法...

    古代皇帝,后宫佳丽三千,没法做到雨露均沾,但为了繁衍后代,子嗣繁盛,弱水三千,只取一瓢饮显然是不行的.不同的朝代有不同的宠幸妃子的方法,著名的有羊车望幸.掷筛侍寝.翻牌悬灯等等.如果皇帝懂得负载均衡算 ...

  2. python将后宫佳丽三千做成照片墙

    上一篇文字用python爬取后宫佳丽三千,我们爬取了很多小姐姐,太多了怎么办,没事,直接做成照片墙,我全都要 效果图: 项目结构: 完整代码: from PIL import Image, Image ...

  3. 一碗潮汕白糜,后宫佳丽三千

    以前潮汕人穷,所以在能充饥下饭的同时,会穷中求变.于是,潮汕人一日三餐都离不开粥,他们把白粥叫做"糜",而在广州却称之为"三滚粥".这种潮汕白粥,就是把米搁在锅 ...

  4. 八皇后的一个回溯递归解法

    解法来自严蔚敏的数据结构与算法. 代码如下: #include <iostream> using namespace std; const int N = 8;//皇后数 int coun ...

  5. sql server 2014 判断一个列某个字段是否相同_Select * from user的千层套路——一个sql是如何执行的...

    Select * from user的千层套路 作为一个程序员,可以说是无时无刻不与sql语句进行打交道,可是你真的了解MySQl的基本框架吗?以及你所写的每一条SQL是如何运行的吗?就比如下面这条平 ...

  6. 同样诞生于顶尖大学,一个市值千亿,一个曾经仅次腾讯百度,如今却。。。...

    成猿之路 学习编程技术,关注这个公众号足够了   一个热爱技术的程序猿 最近,一篇名为<13年后重新登陆人人网,你会看到你青春的截止日期>的文章在朋友圈刷屏,引发大量人人网老用户的怀旧之情 ...

  7. 【C#工具】后宫佳丽三千

    选择文件 private void BtnSelect_Click(object sender, EventArgs e) {txtfilePath.Text = getFilePath();}pri ...

  8. 一个程序员给产品经理的话

    ok. 一个标准的产品经理有这么几个技能点,那么作为一个程序员,只能给一些工程技术方面的建议了. 从大体环境上来讲,有操作系统(OS), 数据库,服务器,编程语言.   我的工作大致就是使用编程语言, ...

  9. 程序员七夕如何表白:朕只爱一个皇后!(单例模式)

    0x00 前言 朕虽花心,却深明事理.一山不容二虎,一国不容二母!因此不论朕有多少爱妃(我是逗逼啊,怎么可能还有爱妃,一个皇后就够了!),但是朕的皇后只有一个,这点毋庸置疑. 那么如何来体现朕的皇后的 ...

最新文章

  1. Nginx+Tomcat 负载均衡集群方案
  2. CYQ.Data 轻量数据层之路 使用篇-辅助工具枚举生成器 视频 C (二十)
  3. Coolite Toolkit入门指南
  4. 只读ViewObject和声明性SQL模式
  5. 数据库---T-SQL语句(一)
  6. mybatis学习(7):Windows下安装MySQL详细教程
  7. CVE-2017-7529Nginx越界读取缓存漏洞POC
  8. Linux 命令解压缩
  9. CAP定理(CAP theorem)
  10. requestmapping注解作用_Java高级架构师-Spring 注解编程之注解属性别名与覆盖
  11. 实战JavaScript:实现像素鸟小游戏
  12. IP 协议报文格式 【IPv4】
  13. 小米禁止android系统联网,解决MIUI下新安装应用无法联网的问题
  14. 一些 差分线的 线距 和 线宽
  15. app爬虫抓包不能抓到对应的http网络请求解决办法,以某团app为例
  16. 工作6年,谈谈我对“算法岗”的理解
  17. 推荐系统笔记(MAB问题)
  18. scratch学习_和 Vicky 一起学习 Scratch 系列之十三 — 作曲
  19. 学了mysql用户权限我直接把管理员禁闭了
  20. 手电筒java下载_Android studio编写简单的手电筒APP

热门文章

  1. 初探swift语言的学习笔记四(类对象,函数)
  2. LAMP网站架构方案分析
  3. webClient 利用代理连接Rss资源
  4. 超越RMI,高效Java remote调用
  5. 记录:自制的小说推荐程序(一)
  6. json - 使用 json-lib
  7. Curator counters
  8. System类的几个常用方法
  9. 高性能云计算展望(中)
  10. 如何调试进入Asp.NET MVC源代码