图论模型在实际中的应用教程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
另外,我们回到刚才的问题 我们可以注意到白格主教和黑格主教是不会互相攻击的 所以问题可以化简为白格放i(i=k)个棋子和黑格放k-i个棋子分别处理 而且处理方法是一样的。 为了直观,我们把白格从棋盘中抽出 小方格和棋盘都顺时针旋转45度,再压缩,黑格同样 最后都可以化建成左图情况 我们希望知道的,就是在这样的一个棋盘上放置i(or k-i)各两两不同行不同列的象有多少种放法 由于行列关系是相对的,所以行列顺序不重要,所以把宽度小的行放在宽度大的行之上,将图转换成这样的情况。 然后,我们就可以继续编写算法来把这种有序的图形递归化简,然后利用棋盘多项式的规则化简 最后我们可以从第x的k次方项的系数得知放置k个互不攻击的象的方法数有多少了 建模步骤的总结 模型的分析与求解 已建立的模型是否有标准解法 转化成标准模型 对已有的标准解法修改,以适应模型的求解 模型的检验 灵敏性,鲁棒性 模型的应用 图论模型的引入 引例 现有6个人,任意两人之间或者相互认识,或者相互不认识,证明这6个人中,或者有3个人彼此都认识,或者有3个人彼此不认识 思路一 只有6个人,人数非常少,可以枚举任意两人之间的关系,然后判断每一种情况是否符合题意。如果所有情况都满足,则命题成立。 虽然只有6个人,但是这样做的时间复杂度可不低,枚举次数为215 只能借助计算机了。。。 有没有人可以直接证明的办法呢? 思路二 有了图论这个强大的工具 我们还是像往常一样,以人为顶点,关系为边,建图 但是为了以后的直观,这里图的建立有一点小小的不同: 如果两个人之间相互认识,则在这两个人(顶点)间连一条红色边,如果两个人不认识,则在这两个人(顶点)间连一条蓝色边(下面会看到这样做的好处) 那么这样我们就得到了一个由红边和蓝边组成的6阶完全图 我们实际上要证明的就是这个图中或者存在一个红三角形(认识),或者存在一个蓝三角形(不认识) 任取一个顶点v0,由它连出5条边到其它的顶点,这五条边只有红色和蓝色两种 根据抽屉原理,肯定有一种颜色的边有3条或3条以上,不妨设为红色 vi v0 vj vk 如果vi,vj,vk之间的边都是蓝边,则图中存在一个蓝三角形 如果至少有1条为红边,那么它总会与v0发出的两条红边组成一个红三角形。 这样就证明了这个命题 现有n根长度不同的小木棍,每根木棍数量无限,取出一些小木棍可以拼出一根长度为这些小木棍长度之和的木棍。现在要求最小的整数k,使得长度大于等于k的木棍都能够被给出的n根小木棍拼出。 例如,现在有3根小木棍,长度分别3,5,7 它们可以拼出长度为3,5,6,7,8,9,10,11,12,13……的木棍,看上去5就是答案,怎么证明呢? 可以考虑把能够拼出来的木棍长度x根据模3的结果分成3类(0,1,2) 对于x mod 3=0,3能够拼出来,那么6,9,12……等等模3为0的数都可以被拼出来 对于x mod 3=1,7能被拼出来,那么7,10,13……等等都能被拼出来 对于x mod 3=2,5能被拼出来,那么8,11,14……等等都能被拼出来 也就是说,5确实是我们要求的答案 这个题看上去似乎毫无头绪,那就先看看简单的情况吧! 根据上面的证明,可以发现一种思路,不妨把上述结果推广一下: 设n根木棍的长度为L1,L2,…,Ln,不妨设L1为所有木棍中最短的 现在把能够拼出的木棍长度根据模L1的结果分为L1类(0,1…L1-1),若某一类中的数模L1的结果为i,则它们组成的集合为Si 显然,如果存在一个集合Si为空,则问题无解 现在考虑所有集合都不为空的情况: 设每个集合的最小元为b0,b1…bl1-1 (集合不为空,肯定存在最小元) 那么如何去求题目要求的k呢? 考虑这样一个值:k’=max {bn} - L1,1=nL1,(b0=0,不考虑) L1是最短的木棍,故k’0. ⑴ k’不属于任何Si集合,否则与k’是某个S中最小元。即k’不能被小木棍拼出。 ⑵ 对任意Lk’,设L Sp,L+L1max{bn}=bp 故Lbp-L1 而L bp (mod p) 所以 L=bp,所以L一定能够被拼出 由以上两点可知,k’一定是不能被拼出的木棍长度中的最大值 那么k’+1就是我们要求的答案! 还剩下最后一步:求b0,b1,b2…bl1-1,也就是每个集合中的最小元 事实上,每一个能被拼出来的木棍长度x,都是从0开始,用已有的小木棍拼出来的。那么就可以把集合的编号看做顶点,小木棍的长度看边的长度,建立一个图。对于每个点i(集合i),都连出n条边,长度为L1,L2…Ln。对于长度为Lk的边,连向编号为(i+Lk) mod L1的顶点。 对于从顶点i到j的一条长度为L的路径,表示集合i中的一

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档