- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析
课程设计
题目: 世界名画陈列馆问题(分支限界法)
专业: 网络工程
班级:
学号:
姓名:
计算机工程系
2012年 11 月 16 日
一、算法问题描述
世界名画陈列馆问题的优先队列式分支限界法。世界名画陈列馆由m×n个排列成矩形阵列的陈列室组成。为了防止名画被盗,需要在陈列室中设置警卫机器人哨位。每个警卫机器人除了监视它所在的陈列室外,还可以监视与它所在的陈列室相邻的上、下、左、右4 个陈列室。试设计一个安排警卫机器人哨位的算法,使得名画陈列馆中每一个陈列室都在警卫机器人的监视之下,且所用的警卫机器人数最少。
二、算法问题形式化表示
本问题的m*n的陈列室的解可表示如下图所示。其中1代表在该陈列室设置警卫机器人哨位,0表示未在该陈列室设置警卫机器人哨位。
0
1
0
0
1
0
0
1
0
0
0
1
0
0
1
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
1
m*n陈列室的可能解
最为极端的情况是所有元素的值为1。那什么情况下是最优解呢?就是设置警卫机器人哨位数最少即为最优。因为每个矩阵中的值都可以为1或0,有m*n个元素,有种可能满足约束条件的矩阵,要从种可能中遍历找到满足约束条件的1的个数最小的矩阵。由此可见这是一个NP问题。这里的约束条件就是当某一个元素为1时,相邻的4个方向上的元素值可以为0。
三、期望输入与输出
输入:
第一行有2 个正整数m和n (1≤m,n≤20)
输出:
将计算出的警卫机器人数及其最佳哨位安排输出。第一行是警卫机器人数;接下来的m行中每行n个数,0 表示无哨位,1 表示哨位。
样例输入:
4 4
样例输出:
40 0 1 01 0 0 00 0 0 10 1 0 0
四、算法分析与步骤描述
分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。与回溯法不同,在搜索问题的解空间树时,每一个活结点只有一次机会成为扩展结点,活结点一旦成为扩展结点,就一次性产生其所有儿子结点,在这些儿子结点中,那些导致不可行解或导致非最优解的儿子结点被舍弃。其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所求的解或活结点表为空时为止。
有两种常用的方法可用来选择下一个E-结点:
(1)先进先出(FIFO)即从活结点表中取出结点的顺序与加入结点的顺序相同,因此活节点表的性质与队列相同。
(2)最小耗费或最大收益法在这种模式中,每个结点都有一个对应的耗费或收益。如果查找一个具有最小耗费的解,则活节点表可以用最小堆来建立,下一个E-结点就是具有最小耗费的活结点;如果希望搜索一个具有最大收益的解,则可用最大堆来构造活结点表,下一个E-结点是具有最大收益的活结点。
它采用自底向上的顺序,找到边界条件,将整个问题的最优解与问题的局部最优解用递推的等式联系起来,把边界条件代入递推等式逐步求得最优解。
class Monitor{
int m,n;//矩阵的大小
char [][]Matrix;//矩阵
int []Place;//监控所放置的位置
i = room / 5;//min是在此矩阵内所需要的最少监控数量
if(room % 5!=0) i++;
for(i = 0; i room; i++){//输出矩阵
if(i != 0 i % n == 0)
System.out.println();
System.out.print(Place[i]);
} System.out.println();
boolean Prem_Modify(int Layer,int room){}//Layer当前需要移动的
//控编号,room,可移动的上线
boolean SetMonitor(int Demolition,int Set){//设置监控置,
//Demolition拆除,Set安装
for(i = 0; i m; i++)
for(j = 0; j n; j++)
if(Matrix[i][j] == 0)
您可能关注的文档
- 社区评估外国的.doc
- 社区选举发言稿.doc
- 社区运营过程中团购模式的价值.doc
- 社区营销与社区媒介.doc
- 社区治理》形成性考核作业.doc
- 社区主任发言稿.doc
- 社团成立大会致辞.doc
- 社团春游郊游活动策划书.doc
- 涉外礼仪要求不包括.doc
- 涉外民事关系法律适用法解析.doc
- 跨境电商物流服务模式与跨境电商物流智能化研究报告.docx
- 2025年职业教育培训机构招生市场分析报告.docx
- 农药安全管理指南解读.pptx
- 小学体育教学中排球运动技能提升策略探讨教学研究课题报告.docx
- 初中生物生态环境调查实践活动的组织与实施教学研究课题报告.docx
- 基于多设备融合的中学英语口语交际教学实践与反思教学研究课题报告.docx
- 智能家居语音交互系统在智能家居家庭生活助手中的个性化服务与优化策略报告.docx
- 2025年二手交易平台商业模式创新与行业自律组织建设报告.docx
- 数字影视行业技术革新,2025年成果与产业生态报告.docx
- 数字影视行业技术革新,2025年成果与市场影响报告.docx
文档评论(0)