ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:17.01KB ,
资源ID:8950986      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8950986.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计算法设计与分析 飞行员配对问题.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计算法设计与分析 飞行员配对问题.docx

1、课程设计算法设计与分析 飞行员配对问题吉林财经大学算法设计与分析课程设计 专业:计算机科学与技术 学号: 姓名: 一课设内容分析1)问题描述第二次世界大战时期,英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。如何选择配对飞行的飞行员才能使一次派出最多的飞机。对于给定的外籍飞行员与英国飞行员的配合情况,试设计一个算法找出最佳飞行员配对方案,使皇家空军一次能派出最多的飞机。2)问题分析基础的二分图最大匹配问题。

2、 给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。极大匹配是指在当前已完成的匹配下,无法再通过增加未完成匹配的边的方式来增加匹配的边数。最大匹配是所有极大匹配当中边数最大的一个匹配。选择这样的边数最大的子集称为图的最大匹配问题。如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配。求二分图最大匹配可以用最大流或者匈牙利算法。 3)建模方法 在二分图的基础上增加源S和汇T。 (1): S向X集合中每个顶点连一条容量为1的有向边。 (2): Y集合中每个顶点向T连一条容量为1的有向边。 (3): XY集合

3、之间的边都设为从A集合中的点到B集合之中的点,容量为1的有向边。 4)建模分析 基本的二分图最大匹配,可以直接用匈牙利算法或Hopcroft_Karp算法解决,更一般的方法是网络最大流。 求网络最大流,流量就是匹配数,所有满流边是一组可行解。 可行解的输出:枚举所以边,如果uX,vY,并且满流,那么当前边为可行解的一组匹配。 二课程设计目的 通过课程设计,提高用计算机解决实际问题的能力,提高独立实践的能力,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。提高结合实际的编程能力。在实际的编程和调试综合试题的基础上,把高级语言程序设计的思想、编程巧和解题思路进行总结与概括,通过

4、比较系统地练习达到真正比较熟练地掌握计算机编程的基本功,为后续的学习打下基础。 最重要的事培养自己的理性思维,无论是在编程还是在以后的工作生活中养成一个良好的思维习惯。三算法原理及思路运用数学上的短除法让一个整数对二取余,然后再让这个整数除以二,取整数部分,然后继续对二取余,如此继续循环,中间只要对二取余的结果是一,就累加一次,直到该整数最后为零,最后把累加的结果输出,就是该整数转换成二进制数后里面有多少个一。四源代码 #include #include #include #include #define maxn 10020#define INF 100000000using namespa

5、ce std;int n, m, s, t, tot, ans, dmaxn, headmaxn, distmaxn;struct E int from; int to; int next; int tab;edgemaxn;void add_edge(int u, int v, int f) tot+; edgetot.from = u, edgetot.to = v, edgetot.tab = f, edgetot.next = headu, headu = tot; tot+; edgetot.from = v, edgetot.to = u, edgetot.tab = 0, edg

6、etot.next = headv, headv = tot;int min(int a,int b) if(ab) return b; else return a;int dfs(int x, int low) int a; if (x = t) return low; for (int i = headx; i != -1; i = edgei.next) if (edgei.tab 0 & distedgei.to = distx + 1 & (a = dfs(edgei.to, min(edgei.tab, low) edgei.tab -= a, edgei1.tab += a; r

7、eturn a; return 0; int bfs() int l, r, k; memset(dist,0xff,sizeof(dist); d0 = 0; d1 = s; l = 0, r = 1; dists = 0; while (l 0 & distedgei.to 0) return 1; else return 0; void dinic() ans = 0; while (bfs() ans += dfs(0,INF); void print() if (ans = 0) printf(No Sulotionn); return; printf(%dn,ans); for (

8、int i = 0; i = tot; i += 2) if (edgei.tab = 0 & edgei.from != s & edgei.to != t) printf(%d %dn, edgei.from, edgei.to); int main() FILE *file=NULL; file=fopen(data/air0.in,r); if(file=NULL) coutdont open the fileendl; exit(0); int x, y,i; memset(head,0xff,sizeof(head); tot = -1; while(fscanf(file,%d%

9、d,&m,&n)!=EOF) s = 0, t = n + 1; for (i = 1; i = m; i+) add_edge(0, i, 1); for (i = m+1; i = n; i+) add_edge(i, t, 1); while (fscanf(file,%d%d,&x,&y)!=EOF) if (x = -1 & y = -1) break; else add_edge(x, y, 1); dinic(); print(); return 0;五个人总结 在这次课程设计的学习中,我学到了很多,也找到了自己身上的不足。感受良多,获益匪浅。 在课程设计的过程中,经历了奋斗的酸甜苦辣。分享了成功的喜悦。这次的课程设计对我来说是一个挑战。课程设计中文档的撰写我从来就没有担心过,就是代码的编写我真的很担心,平时对这方面的知识的就不是很扎实。所以在这次的课程设计中,刻意的去锻炼了自己的宏观分析能力,无论是在前期的命题分析,还是在代码的编写,以及最终的调试和排错上,都一步一步的按照既定的规则与步奏,也是慢慢的克服了自己心急,粗心的习惯,养成了看待问题的缜密性思维。总之,这次的课程设计让我获益良多,将会使我终身受益。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1