八皇后问题的并行
来源:互联网 发布:linux启动桌面命令 编辑:程序博客网 时间:2024/04/30 11:11
八皇后问题:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
八皇后问题的串行
为实现八皇后问题,既每行每列放置一个皇后,而且每一条对角线和每一条反对角线上最多只能有一个皇后,主要需要解决放置冲突的问题。冲突主要包括行、列、两条对角线,具体情况如下:
(1)列:规定每一列放一个皇后,不会造成列上的冲突;
(2)行:当第I行被某个皇后占领后,则同一行上的所有空格都不能再放皇后,要把以I为下标的标记置为被占领状态;
(3)对角线:对角线有两个方向。在同一对角线上的所有点(设下标为(i,j)),要么(i+j)是常数,要么(i-j)是常数。因此,当第I个皇后占领了第J列后,要同时把以(i+j)、(i-j)为下标的标记置为被占领状态。
总结来说,假设棋盘上的两个皇后的坐标分别为(i1,j1)和(i2,j2),不允许(i1-i2)=(j1-j2)或者(i1+j1)=(i2+j2)的情况出现。
八皇后问题的并行
该算法是将八皇后问题的所有可能的解置于相应的棋盘上,主进程负责生成初始化的棋盘,并将该棋盘发送到某个空闲进程的从进程,由该从进程求出棋盘上满足初始化条件的所有的解。这里,假设主进程只初始化棋盘的前两列,即在棋盘上的前两列分别放上两个皇后,这样就可以产生8×8=64个棋盘。对于N皇后问题,算法与八皇后问题基本类似,只要在程序实现的时候将皇后数设为N,然后加入输入语句,就可以实现N皇后的求解。
同样,并行算法的基本条件是对同时放置在棋盘上的任意两个皇后(i1,j1)和(i2,j2),不允许(i1-i2)=(j1-j2)或者(i1+j1)=(i2+j2)的情况出现。
- 八皇后问题的并行
- 八皇后的问题
- 八皇后的问题
- 八皇后的问题
- 八皇后、N皇后问题的求解。
- 八皇后问题的实现
- 八皇后问题的解法
- 著名的八皇后问题
- 扩展的八皇后问题
- 谈谈八皇后的问题
- 八皇后问题的实现
- N皇后问题的并行解法
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 由八皇后问题到n皇后的推广
- 基于八皇后上的N皇后问题
- 八皇后问题的java实现
- 八皇后问题的C#解答
- 提交了一个关于pi-futex的LINUX开源故障
- JDBC笔记整理
- poj 1001
- 开始写博啦!
- Eclipse的数据库ER图插件ERMaster
- 八皇后问题的并行
- VIM 常用命令(节选自Unix and Linux Forum)
- c++ 函数缺省参数测试示例
- 常见的几种开源协议
- 游戏开发资源检索 - GLTOP游戏开发
- oracle 索引介绍
- linux与windos编码格式转换
- oracle 10g用浏览器打开
- 使用service locator快速定位你的服务