- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.4组合优化
1. 4 组合优化
组合优化问题在实践中有着广泛的应用,同时也是计算机科学中的重要研究课题。本章对于八皇后问题、SAT问题、装箱问题、背包问题及TSP问题等五个经典的组合优化问题,给出其定义、串行算法描述、并行算法描述以及并行算法的MPI源程序。
1.1 八皇后问题
1.1.1 八皇后问题及其串行算法
所谓八皇后问题(Eight Queens Problem),是在8*8格的棋盘上,放置8个皇后。要求每行每列放一个皇后,而且每一条对角线和每一条反对角线上最多只能有一个皇后,即对同时放置在棋盘的任意两个皇后和,不允许或者的情况出现。
八皇后问题的串行解法为如下的递归算法:
算法16.1 八皇后问题的串行递归算法
/* 从chessboard的第row行开始放置皇后 */
procedure PlaceQueens(chessboard, row)
Begin
if row 8 then
OutputResult(chessboard) /* 结束递归并输出结果 */
else
for col = 1 to 8 do /* 判断是否有列、对角线或反对角线冲突 */
(1)no_collision = true
(2)i = 1
(3)while no_collision and i row do
(3.1)if collides(i, chessboard[i], row, col) then
no_collision = false
end if
(3.2)i = i + 1
end while
(4)if no_collision then
(4.1)chessboard[row] = col /* 在当前位置放置一个皇后 */
(4.2)go(step + 1, place) /* 递归地从下一行开始放置皇后 */
end if
end for
end if
End /* PlaceQueens */
1.1.2 八皇后问题的并行算法
该算法是将八皇后所有可能的解置于相应的棋盘上,主进程负责生成初始化的棋盘,并将该棋盘发送到某个空闲的从进程,由该从进程求出该棋盘上满足初始化条件的所有的解。这里,我们假定主进程只初始化棋盘的前两列,即在棋盘的前两列分别放上2个皇后,这样就可以产生8 * 8 = 64个棋盘。
算法16.2八皇后问题的并行算法
(1)主进程算法
procedure EightQueensMaster
Begin
(1)active_slaves = n
(2)while active_slaves 0 do
(2.1)从某个从进程i接收信号signal
(2.2)if signal = Accomplished then从从进程i接收并记录解end if
(2.3)if has_more_boards then
(ⅰ)向从进程i发送NewTask信号
(ⅱ)向从进程i发送一个新棋盘
else
(ⅰ)向从进程i发送Terminate信号
(ⅱ)active_slaves = active_slaves - 1
end if
end while
End /* EightQueensMaster */
(2)从进程算法
procedure EightQueenSlave
Begin
(1)向主进程发送Ready信号
(2)finished = false
(3)while not finished do
(3.1)从主进程接收信号signal
(3.2)if signal = NewTask then
(ⅰ)从主进程接收新棋盘
(ⅱ)if 新棋盘合法 then
在新棋盘的基础上找出所有合法的解,并将解发送给主进程
end if
else /* signal = Terminate */
finished = true
end if
end while
End /* EightQueenSlave */
MPI源程序请参见章末附录。
1.2 SAT问题
1.2.1 SAT问题及其串行算法
1.SAT问题描述
所谓可满足性问题(Satisfiability Problem)即SAT问题,其定义为:对于一个命题逻辑公式,是否存在对其变元的一个真值赋值公式使之成立。这个问题在许多领域都有着非常重要的意义,而且对其快速求解算法的研究成为计算机科学的核心课题之一。例如在机器定理证明领域,某命题是否是一个相容的公理集合的推论,这个问题归结为该命题的反命题与该公理集合一起是否是不可满足的
您可能关注的文档
最近下载
- (正式版)-B 5768.2-2022 道路交通标志和标线 第2部分:道路交通标志.docx VIP
- SheWalksinBeauty她走路很优美.pptx VIP
- 教育部产学合作协同育人教学内容和课程体系改革项目申报书—基于超级计算机虚拟仿真实验系统的并行计算课程教学探索.docx VIP
- 桥牌自然约定卡.docx VIP
- GB55002-2021 建筑与市政工程抗震通用规范.docx VIP
- 2025年度镇村(社区)后备干部选拔考试题(含答案).docx VIP
- 《恋爱的犀牛》话剧剧本.doc VIP
- 宠物社交平台宠物服务行业痛点分析及解决方案.docx
- 教育部产学合作协同育人教学内容和课程体系改革项目申报书—Web服务渗透虚拟仿真实验教学设计与实践.docx VIP
- 第一单元第1课体育与健康概述教学设计2023—2024学年人教版初中体育与健康九年级.docx VIP
文档评论(0)