网站大量收购独家精品文档,联系QQ:2885784924

分派问题的回溯算法与实现.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分派问题的回溯算法与实现

期 末 考 查 设计科目: 算法设计与分析 设计名称: 分派问题的回溯算法与实现 姓名: 学号: 序号: 班级: 分派问题的回溯算法与实现 一、 期末考查题目 分派问题: 给n个人分派n件工作, 把工作j分派给第i个人的成本cost(i, j), 设计、编程、测试回溯算法, 在给每个人分派一件不同工作的情况下使得总成本最小。 二、问题分析 回溯法原理分析 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再的技术为回溯法可用回溯法求解的问题P,通常要能表达为:对于已知的由n元组(x1,x2,…xn)组成的一个状态空间E={(x1,x2,…,xn)∣xi∈Si ,i=1,2,…,n},给定关于n元组中的一个分量的一个约束集D,要求E中满足D的全部约束条件的所有n元组。其中Si是分量xi的定义域,且 |Si| 有限,i=1,2,…,n。我们称E中满足D的全部约束条件的任一n元组为问题P的一个解。 功能:用回溯法得可行解并选最优解。 树中的节点:求解过程的一个状态 树中的边:标示 xi 的一个可能的值 解向量: 由根节点到任意叶节点的路径定义 解空间:由根节点到所有叶节点的路径定义 答案节点:求出最优解的状态 回溯法求解的基本思想: 基本任务: 1) 根据问题特点设计状态空间树 2) 逐个地生成问题状态 3) 确定问题状态是否是解状态 4) 确定解状态是否是答案状态 规范函数: int FIND(int k) { int i; for(i=0; ik; i++) if(x[i]==x[k]) return 0; return 1; } 搜索过程: 先深度搜索记录搜索的各节点的成本和s再与os比较如果s比os小,将s赋值给os,并将搜索到的节点赋给y[i],当深度搜索结束,返回上一个节点继续搜索;如此循环,直到搜索搜索结束。Y[i]即为所求的答案节点。 1、主要数据类型与变量 int sum; // 表示在分派任务过程中每成功分派一个累计成本; int x[n]; // 记录每成功分派任务给的人员; int y[n]; // 记录分派任务时任务分派所给的人员所得最小成本; int SACNF();// 输入人员和任务表 int PRINTF();//输出人员和任务表 int FIND(int k) //规范函数,判断任务k是否可以分给x[k]号人员。 void TASK() //用回溯法得可行解并选最优解。 int ARRANGE();//输出查找后分配的对应表 2、源程序 #includestdio.h #define N 5 int a[N][N]; int x[N],y[N]; int min=100; SCANF() { int i,j; for(i=0;iN;i++) { for(j=0;jN;j++) { scanf(%d,a[i][j]); } } } PRINTF() { int i,j; for(i=0;iN;i++) { for(j=0;jN;j++) { printf(%d ,a[i][j]); } printf(\n); } } FIND(k) { int i; for(i=0; ik; i++) if(x[i]==x[k]) return 0; return 1; } TASK() { int k=0,sum,i; x[k]=-1; while(k=0) { x[k]++; while((x[k]N) (!FIND(k))) x[k]++; if(x[k]N) { if(kN-1) { k=k+1; x[k]=-1;

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档