



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析上机报告姓名:学号:日期:上机题目:最佳调度问题(回溯算法)实验环境:CPU: 2.10GHz ; 内存: 6G ; 操作系统:Win7 64位 ;软件平台:Visual Studio2008 ;一、算法设计与分析:题目:最佳调度问题(回溯算法)设有n个任务由m个可并行工作的机器来完成,完成任务i需要时间为ti。试设计一个算法找出完成这个任务的最佳调度,使完成全部任务的时间最早。算法思想:解空间的表示:一个深度为N的M叉树。ti:第i个任务的时间xi=j:当前输出结果Resi=j:表示第i个任务要运行在第j台机器上time_machinei:第i个机器上的运行时间基本思路: 1、搜索从开始结点(根结点)出发,以DFS搜索整个解空间。2、每搜索完一条路径则记录下time_min和Resi序列,开始结点就成为一个活结点, 同时也成为当前的扩展结点。在当前的扩展结点处向纵深方向移至一个新结点, 并成为一个新的活结点,也成为当前扩展结点。 3、如果在当前的扩展结点处不能再向纵深方向扩展,则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点;直至找到一个解或全部解。二、核心代码:bool placetest(int k)int time_max_K = time_machine1;for(int i=2;i time_max_K )time_max_K = time_machinei;if(time_max_K time_min)return false;elsereturn true; void Backtrack(int k,int t,int x) if(k N )int time_max_K = time_machine1;for(int i=2;i time_max_K )time_max_K = time_machinei;if(time_max_Ktime_min)time_min = time_max_K;for(int i=1;i=N;i+)Resi = xi;elsefor(int i=1;i=K;i+)xk = i;if( placetest(k) )time_machinei += tk;Backtrack(k+1,t,x);time_machinei -= tk; 三、结果与分析:附录(源代码)算法源代码(C+描述)/*最佳调度问题(回溯算法)设有n个任务由k个可并行工作的机器来完成,完成任务i需要时间为。试设计一个算法找出完成这n个任务的最佳调度,使完成全部任务的时间最早。*/#include #include #include using namespace std;int K,N;int *time_machine;/K+1=0;int *Res;/N+1;static int time_min = INT_MAX;bool placetest(int k);void Backtrack(int k,int t,int x);int main()cout 请输入任务个数和机器个数: N K;if( N = K)cout 最短运行时间即为任务中时间最长者!endl;return 0;int *t = new intN+1;int *x = new intN+1;cout 请分别输入 N个任务时间: endl;for(int i=1;i ti;/t8 = 0,2,14,4,16,6,5,3;time_machine = new intK+1;Res = new intN+1;for(int i=1;iK+1;i+)time_machinei=0;for(int i=1;iN+1;i+)cout ti ;cout endl;clock_t start,finish; double totaltime;start=clock();Backtrack(1,t,x);finish=clock(); /1ms clock+ totaltime=(double)(finish-start)/CLOCKS_PER_SEC;cout 程序运行时间: totaltime sn;for(int i=1;iN+1;i+)cout Resi ;cout endl;cout min time: time_min endl;system(pause);return 0;bool placetest(int k)int time_max_K = time_machine1;for(int i=2;i time_max_K )time_max_K = time_machinei;if(time_max_K time_min)return false;elsereturn true; void Backtrack(int k,int t,int x) if(k N )int time_max_K = time_machine1;for(int i=2;i time_max_K )time_max_K = time_machinei;if(time_max_Ktime_min)time_min = time_max_K;for(int i=1;i=N;i+)Resi = xi;elsefor(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025农产品买卖合同模板
- 水闸消防安全知识培训课件
- 水粉画草丛中的鸭子课件
- 乡镇水源保护方案
- 小升初语文古诗鉴赏知识点衔接-《曲》练习(含答案)
- 桥梁检测设备选型与使用方案
- 学生宿舍节能设计与技术应用方案
- 水电验收课件第五元素
- 水电站业务知识培训课件简报
- 二零二五年度新能源设备采购及运营合作协议
- 陕西省特种设备隐患排查清单(2025年)
- 快递行业交通安全培训
- 货款转让协议书
- 燃气公司加气站操作规程及安全要求
- 装修砸墙安全协议书
- DB4407∕T 70-2021 地理标志产品 新会陈皮
- 送水工劳务合同协议
- 读博协议和合同
- 2025CACA子宫颈癌诊疗指南解读
- 2025年第34届全国中学生物理竞赛预赛试卷及答案(完整版)
- 骨科护理10分钟小讲课
评论
0/150
提交评论