试论网络流算法中模型的优化与选择.docVIP

试论网络流算法中模型的优化与选择.doc

  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文档。上传文档
查看更多
试论网络流算法中模型的优化与选择.doc

  试论网络流算法中模型的优化与选择 试论网络流算法中模型的优化与选择 福建师大附中 周 成 [内容摘要] 近年来,在国内信息学竞赛(尤其是国家队选拔赛)、国际信息学竞赛中,多次出现应用网络流算法求解的试题,网络流算法已是信息学奥赛选手必须掌握的算法。本文主要探讨不同网络模型的构造对问题解决的效率的影响,以及如何优化网络模型,提高算法的效率。 [关键词] 网络流,模型,优化,选择。 一、引言 网络流算法是一种高效实用的算法,相对于其它图论算法来说,它的模型更加复杂,编程复杂度也更高。但是它综合了图论中的其它一些算法(如最短路径、宽度有哪些信誉好的足球投注网站算法),因而适用范围也更广,经常能够很好地解决一些有哪些信誉好的足球投注网站与动态规划无法解决的非NP问题。 网络流在具体问题中的应用,最具挑战性的部分是模型的构造,它没用现成的模式可以套用,需要我们对各种网络流的性质了如指掌(比如点有容量、容量有上下限、多重边等等),根据具体的问题发挥我们的创造性。一道问题经常可以建立多种模型,不同的模型对问题的解决效率的影响也是不同的,本文通过实例探讨如何确定适当的模型,提高网络流算法的效率。 二、网络流算法时间效率 当我们确定问题可以使用最大流算法求解后,就根据常用的Ford-Fulkerson标号法求解;而最小(大)费用最大流问题也可用类似标号法的对偶算法解题。Ford-Fulkerson标号法的运行时间为O(VE2),对偶法求最小费用流的运行时间大约为O(V3E2)。 显然,影响网络流算法的时间效率的因素主要是网络中顶点的数目与边的数目。这二个因素之间不是相互独立的,而是相互联系,矛盾而统一的。在构造网络模型中,有时,实现了某个因素的优化,另外一个因素也随之得到了优化;有时,实现某个因素的优化却要以增大另一因素为代价。因此,我们在具体问题的解决中,要坚持全局观,实现二者的平衡。 三、模型的优化与选择 (一)减少模型的顶点数与边数,优化模型 如果能根据问题的一些特殊性质,减少网络模型中的顶点的数目和边的数目,则可以大大提高算法的效率。 例1:最少皇后控制 在国际象棋中,皇后能向八个方向攻击(如图1(a)所示,图中黑点格子为皇后的位置,标有K的格子为皇后可攻击到的格子)。现在给定一个M*N(N、M均不大于于50)的棋盘,棋盘上某些格子有障碍。每个皇后被放置在无障碍的格子中,它就控制了这个格子,除此,它可以从它能攻击到的最多8个格子中选一个格子来控制,如图1(b)所示,标号为1的格子被一个皇后所控制。 请你编一程序,计算出至少有多少个皇后才能完全控制整个棋盘。 图1(a) 图1(b) 输入格式: 输入文件的第一行有两个整数M和N,表示棋盘的行数与列数。接下来M行N列为一个字符矩阵,用.号表示空白的格子,x表示有障碍的格子。 输出格式: 输出文件的第一行仅有一个数S,表示需要皇后的数目。 Sample Input 3 4 x... x.x. .x.. Sample Ouput 5 问题分析] 如果本问题用简单的有哪些信誉好的足球投注网站来做,由于题目给的棋盘很大,有哪些信誉好的足球投注网站算法很难在短时间内出解。由于一个皇后在棋盘最多只能控制两个格子,因此最少需要的皇后数目的下界为[N*M/2]。要使得皇后数目最少,必定是尽量多的皇后控制两个格子。如果我们在每两个能相互攻击到的格子之间加上一条有向弧,则问题很类似于二分图的最大匹配问题。 [模型一] 1. 将每个非障碍的格子按行优先编号(0~m*n-1)。 2. 将上述的每个格子i折成两个格子i和i,作为网络模型中的顶点。 3. 若格子i可以攻击到格子j且ilt;j,则在模型中顶点i到j之间加上一条有向弧,容量为1。 4. 增加一个源点s,从s点向所有顶点i添上一条弧;增加一个汇点t,从所有顶点j到t添上一条弧,容量均为1。 图1(b)所示的棋盘,对应的模型为: 图2 显然,任一解对应于以上模型的一个最大匹配。且最大匹配中,匹配数必定是偶数。因此至少需要的马匹数为M*N-障碍数-最大匹配数/2。 [模型二] 如果我们将棋盘涂成黑白相间的格子,则某皇后控制的两个格子一定是一个是黑格,另一个是白格(如图3),不妨设这两个格子中皇后在白格子上。于是,我们将N*M个格子分成两部分白格与黑格。因此我们可以将模型一优化为: 图3 1.将棋盘中的所有格子分成两个部分,对所有的格子进行编号,每个白格与它能攻击到的黑格之间(障碍除外)添上一条从白格到黑格的弧,构成一个二分图。 2.增加一个源点s,从s点向所有非障碍的白格添上一条弧;增加一个汇点t,从所有非障碍的黑格到t添上一条弧。 3.设置所有的弧的流量为1。 图1(b)所示的棋盘,对应的模型为: 图4 [两种模型的比较] 显然,模型二的顶点数与边数大致是模型一的一半。下面是在BP环境下两种模型的时间效率比较

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档