- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析与设计实验报告第 X次实验姓名刘悦学号201308080112班级物联1301班时间12.26上午地点工训楼C栋309 实验名称分支限界法求装载问题实验目的通过上机实验,掌握分支限界算法的思想,利用分支限界算法求装载问题并实现。实验原理活结点x在最优队列中的优先级定义为从根结点到结点x的路径所相应的载重量再加上剩余集装箱的总量之和。优先队列中优先级最大的活结点成为下一个扩展结点。优先队列中活结点x的优先级为x.uweight。以结点x为根的子树中所有结点相应的路径的载重量不超过x.uweight。子集树中叶结点相应载重量与其优先级相同。因此,一旦一个叶结点成为当前扩展结点,则可以断言该叶结点所相应的解为即为最优解,终止算法。这里选用在搜索进程中保存当前已构造出的部分解空间树,在算法确定课达到最优解的叶结点时,就可以在解空间树中从该叶结点开始向根结点回溯,构造出相应的最优解。实验步骤算法开始创建一个最大堆,表示活结点优先队列。算法第一个扩展结点是子集树中根结点。开始子集树的根结点是扩展结点。循环产生当前扩展结点的左右儿子结点。如果当前扩展结点的左儿子结点是可行结点,即它所相应的重量为超过轮船的载重量,则将它加入到子集树的第i+1层上,并插入最大堆。扩展结点的右儿子结点总是可行的,故直接插入子集树的最大堆中。接着从最大堆中取出最大元素作为下一个扩展结点。如果此时不存在下一个扩展结点,则问题无可行解。如果下一个扩展结点是叶结点,即子集树中第n+1层结点,则它相对应的可行解为最优解,算法结束。关键代码//定义集装箱的个数 const int N = 4; /*================================================================= 定义HeapNode类来存储最大堆中顶点的信息。 =================================================================*/templateclass Type class HeapNode { templateclass T friend void AddLiveNode(MaxHeapHeapNodeT H,bbnode *E,T wt,bool ch,int lev); templateclass Ty friend Ty MaxLoading(Ty w[],Ty c,int n,int bestx[]); public: operator Type() const{return uweight;} private: bbnode *ptr; //指向活节点在子集树中相应节点的指针 Type uweight; //活节点优先级(上界) int level; //活节点在子集树中所处的层序号 }; /*=================================================================定义bbnode类来定义子集空间树中的结点类型。=================================================================*/class bbnode { templateclass Type friend void AddLiveNode(MaxHeapHeapNodeType H,bbnode *E,Type wt,bool ch,int lev); templateclass Type friend Type MaxLoading(Type w[],Type c,int n,int bestx[]); friend class AdjacencyGraph; private: bbnode *parent; //指向父节点的指针 bool LChild; //左儿子节点标识 }; /*================================================================= AddLiveNode函数将新产生的活节点加入到子集树中,并将这个新结点插入到表示活结点优先队列的最大堆中。=================================================================*/templateclass
您可能关注的文档
- 第四章热处理浅析.ppt
- 编译原理-1引论浅析.ppt
- 动态实时迁移(科干院)素材.docx
- 墩柱施工工艺及质量控制要点素材.pptx
- 编译原理2高级语言及其语法描述浅析.ppt
- 对场效应管工作原理的理解素材.docx
- 第四章三相变压器浅析.ppt
- 对几种分布式关系型数据路由工具的考察素材.docx
- 对外经贸大学-《法制史》复习大纲素材.docx
- 对总承包管理的认识及对专业分包配合、协调、管理与服务方案素材.docx
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)