版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上xxxxx实验报告课程名称: _算法设计与分析 项目名称:_分支限界法实现_ 姓名:_xxxxx专业:xxxxxxx班级:_xxxxxxx_学号:_xxxxxxxxxxxxxxxxx_同组成员_无_一、实验准备:实验目的: 掌握分支限界法求解问题的一般特征和步骤。 使用分支限界法编程,求解旅行售货员问题。实验环境准备:Windows XP Microsoft C+2008在当前节点(扩展节点)处,先生成其所有的儿子节点(分支),然后再从当前的活节点(当前节点的子节点)表中选择下一个扩展节点。为了有效地选择下一个扩展节点,加速搜索的进
2、程,在每一个活节点处,计算一个函数值(限界),并根据函数值,从当前活节点表中选择一个最有利的节点作为扩展节点,使搜索朝着解空间上有最优解的分支推进,以便尽快地找出一个最优解。分支限界法解决了大量离散最优化的问题。1.队列式(FIFO)分支限界法队列式分支限界法将活节点表组织成一个队列,并将队列的先进先出原则选取下一个节点为当前扩展节点。2.优先队列式分支限界法优先队列式分支限界法将活节点表组织成一个优先队列,并将优先队列中规定的节点优先级选取优先级最高的下一个节点成为当前扩展节点。如果选择这种选择方式,往往将数据排成最大堆或者最小堆来实现。二、实验过程记录:打开Microsoft C+2008
3、,键入代码进行编程:源代码为:#include <stdio.h> #include "stdafx.h"#include <istream> using namespace std; #define MAX_CITY_NUMBER 10 #define MAX_COST int City_GraphMAX_CITY_NUMBERMAX_CITY_NUMBER; int City_Size; int Best_Cost; int Best_Cost_PathMAX_CITY_NUMBER; typedef struct Node int lcost;
4、 int cc; int rcost; int s; int xMAX_CITY_NUMBER; struct Node* pNext; Node; typedef struct MiniHeap Node* pHead; MiniHeap; void InitMiniHeap(MiniHeap* pMiniHeap) pMiniHeap->pHead = new Node; pMiniHeap->pHead->pNext = NULL; void put(MiniHeap* pMiniHeap,Node node) Node* next; Node* pre; Node*
5、pinnode = new Node; pinnode->cc = node.cc; pinnode->lcost = node.lcost; pinnode->pNext = node.pNext; pinnode->rcost = node.rcost; pinnode->s = node.s; pinnode->pNext = NULL; for(int k=0;k<City_Size;k+) pinnode->xk = node.xk; pre = pMiniHeap->pHead; next = pMiniHeap->pHe
6、ad->pNext; if(next = NULL) pMiniHeap->pHead->pNext = pinnode; else while(next != NULL) if(next->lcost) > (pinnode->lcost) pinnode->pNext = pre->pNext; pre->pNext = pinnode; break; pre = next; next = next->pNext; pre->pNext = pinnode; Node* RemoveMiniHeap(MiniHeap* pM
7、iniHeap) Node* pnode = NULL; if(pMiniHeap->pHead->pNext != NULL) pnode = pMiniHeap->pHead->pNext; pMiniHeap->pHead->pNext = pMiniHeap->pHead->pNext->pNext; return pnode; void Traveler() int i,j; int temp_xMAX_CITY_NUMBER; Node* pNode = NULL; int miniSum; int miniOutMAX_CIT
8、Y_NUMBER; MiniHeap* heap = new MiniHeap; InitMiniHeap(heap); miniSum = 0; for (i=0;i<City_Size;i+) miniOuti = MAX_COST; for(j=0;j<City_Size;j+) if (City_Graphij>0 && City_Graphij<miniOuti) miniOuti = City_Graphij; if (miniOuti = MAX_COST) Best_Cost = -1; return ; miniSum += miniO
9、uti; for(i=0;i<City_Size;i+) Best_Cost_Pathi = i; Best_Cost = MAX_COST; pNode = new Node; pNode->lcost = 0; pNode->cc = 0; pNode->rcost = miniSum; pNode->s = 0; pNode->pNext = NULL; for(int k=0;k<City_Size;k+) pNode->xk = Best_Cost_Pathk; put(heap,*pNode); while(pNode != NULL
10、 && (pNode->s) < City_Size-1) for(int k=0;k<City_Size;k+) Best_Cost_Pathk = pNode->xk ; if (pNode->s) = City_Size-2) int edge1 = City_Graph(pNode->x)City_Size-2(pNode->x)City_Size-1; int edge2 = City_Graph(pNode->x)City_Size-1(pNode->x)0; if(edge1 >= 0 &&
11、; edge2 >= 0 && (pNode->cc+edge1+edge2) < Best_Cost) Best_Cost = pNode->cc + edge1+edge2; pNode->cc = Best_Cost; pNode->lcost = Best_Cost; pNode->s+; else for (i=pNode->s;i<City_Size;i+) if(City_GraphpNode->xpNode->spNode->xi >= 0) int temp_cc = pNode-&
12、gt;cc+City_GraphpNode->xpNode->spNode->xi; int temp_rcost = pNode->rcost-miniOutpNode->xpNode->s; if (temp_cc+temp_rcost<Best_Cost) for (j=0;j<City_Size;j+) temp_xj=Best_Cost_Pathj; temp_xpNode->xpNode->s+1 = Best_Cost_Pathi; temp_xi = Best_Cost_PathpNode->s+1; Node*
13、 pNextNode = new Node; pNextNode->cc = temp_cc; pNextNode->lcost = temp_cc+temp_rcost; pNextNode->rcost = temp_rcost; pNextNode->s = pNode->s+1; pNextNode->pNext = NULL; for(int k=0;k<City_Size;k+) pNextNode->xk = temp_xk; put(heap,*pNextNode); delete pNextNode; pNode = RemoveMiniHeap(heap); int main() int i,j;printf("请输入旅行的城市数"); scanf("%d",&City_Size); for(i=0;i<City_Size;i+) printf("请分别输入每个城市与其它城市的路程花费"); for(j=0;j<City_Size;j+) scanf("%d",&City_Graphij); Traveler(); printf("最小花费"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山东枣庄仲裁委员会仲裁秘书招聘4人备考题库及答案详解一套
- 2026广东广州市华南理工大学电力学院余涛教授科研团队招聘科研助理1人备考题库含答案详解(完整版)
- 2026中智江西九江濂溪区政务服务综合业务岗招聘1人备考题库含答案详解(满分必刷)
- 2026青海果洛州民族高级中学会计招聘1人备考题库含答案详解(培优)
- 废旧锂电池拆解及综合利用工程初步设计
- 防火涂料施工方案
- 2026中电科技国际贸易有限公司春季校园招聘备考题库及答案详解(典优)
- 2026贵州省外经贸集团本部党委综合部多岗招聘4人备考题库含答案详解(基础题)
- 2026渤海银行校园招聘备考题库含答案详解(预热题)
- 2026广西柳州柳城县中医医院招聘19人备考题库带答案详解
- 【新教材】人教版(2024)八年级下册英语 Unit 4 Grammar Focus 4a-4d 教案
- 2026年江苏南京市高三二模高考物理试卷试题(含答案详解)
- 真分数与假分数练习题
- 2026贵州贵阳经济技术开发区招聘聘用制人员及社会化工作者19人考试参考试题及答案解析
- TSG Z6002-2026 特种设备焊接操作人员考核细则
- 重庆市建筑安全员《A证》考试题库及答案
- 2026陕西君保融数字产业有限公司招聘(47人)考试参考试题及答案解析
- 江苏省南京市鼓楼区2024-2025学年七年级下学期期中语文试卷
- 2026年医疗保障基金使用监督管理条例实施细则题库及答案
- 中级注册安全工程师《安全生产专业实务-其他安全》真题及答案
- GB/T 46941-2025中医眼保健通用技术要求
评论
0/150
提交评论