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

运动员最佳配对问题--实验报告.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2011-2012第二学期 《算法设计与分析》期末考核 项目名称:运动员最佳配对问题 1. 项目描述( 10 分) 羽毛球队有男女运动员各 n 人。 给定 2 个 n ×n 矩阵 P 和 Q 。P[i][j] 是男运动员 i 和女运动员 j 配对组成混合双打的男运动 员竞赛优势; Q[i][j] 是女运动员 i 和男运动员 j 配合的女运动员竞赛优势。 由于技术配合和心理状态等各种因素影响, P[i][j] 不一定等于 Q[j][i] 。男运动员 i 和女运 动员 j 配对组成混合双打的男女双方竞赛优势为 P[i][j]*Q[j][i] 。 设计一个算法,计算男女运动员最佳配对法,使各组男女双方竞赛优势的总和达到最大。 编程任务:设计一个算法,对于给定的男女运动员竞赛优势,计算男女运动员最佳配对法, 使各组男女双方竞赛优势的总和达到最大。 2. 算法设计( 10 分) 方法一:优先队列式分支限界法 具体算法: 算法开始时创建一个最大堆,用于表示活结点优先队列 堆中每个结点的 val 值是优先队列的优先级。 接着算法计算出图中每个顶点的最大 val 。 如果搜索到所搜索的排列树的叶子节点,算法即告结束。 方法二:回溯法 具体算法: 套用排列树框架,做好初始化后开始回溯,关键在于到达叶子节点时,需要计算当前 的总和 csum += p[i][w[i]] * q[w[i]][i] ,若发现 csum 比之前的最优值大,则更新 最 优值和配对顺序,回溯完成后则可得到最大总和及其相应的运动员配对方法让男队 员 按自己编号顺序站定,女运动员和他们搭配的各种组合就是女运动员的各种排列。因 此, 搜索的解空间树是 “排列树 ”。用回溯法搜索排列树的算法框架: void backtrack (int t) { if (tn) output(x); else for (int i=f(n,t);i=g(n,t);i++) { x[t]=h(i); if (constraint(t)bound(t)) backtrack(t+1); } } 程序( 50 分) 方法一:分支限界法程序 # include stdio.h # include stdlib.h # define HeapSize 60 typedef struct { int n; // 男运动员个数 int ** p; // 男运动员竞赛优势 int ** q; // 女运动员竞赛优势 }Sport; typedef struct { int w[20]; // 一种排列 int t; // 已排到的位数 int val; // 此种排列的配对和 }Node; typedef struct minheap { int last; // 此时的元素个数 int maxsize; // 堆中的元素最大个数 Node * heep; }Minheap, * Heap; // 建大根堆 void MaxHeapInit (Heap H) { H = (Heap) malloc ( sizeof (Minheap)); H-maxsize = HeapSize; H-last = 0; H-heep = (Node *) malloc ((H-maxsize

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

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

认证主体阳新县融易互联网技术工作室
IP属地湖北
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档