NOIp图论算法与模型构建.ppt

  1. 1、本文档共96页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 一旦有了h序列,我们可以由左至右构造s串:如果hi-1=hi,则说明si=0;否则si=1(1=I=n)。由此看来,问题的关键是如何计算h序列。 仔细观察上述推论条件,发现有以下特点: (1) 除h0=0外,其余的条件都是由“=”连接的不等式 ?? (2)? 每个不等式都是含两个h未知数、一个常数的一次不等式; 可见,所有不等式都整理成了k=hi-hj 它给我们启示,上述不等式类似于连接两点的一条有向边。因此,我们联想到信息学解题中常用的图论知识。 模型2 构造有向图G 我们构造有向图G,如图: 其中vi代表s串中的第I位。若k=vi-vj,则vi向vj引出一条权为k的有向边vi,vj,表明si…sj中至少需增加k个1(k为正值)或减少k个1(k为负值)。由此得出构造有向图G的方法: 0=hi-hi-1 -1=hi-1-hi a0-L0=hi-L0-hi L0-b0=hi-hi-l0 a1=hi-hi-L1 -b1=hi-l1-hi 计算图G的最长路径: 我们已构造了一个有n+1个顶点的有向图G。 (1) 图G中无环 令D[I]表示从顶点0到顶点I的最长路径长度。 对于图中 每条从点I指向点J的权为C[I,J]的边,有性质 D[I]+C[I,J]=D[J](注意:这与上述不等式的形式相似) 这样,令hi=D[I],h完全符合所有限制条件,即为原不等式组的一组解 。 (2) G中含有环 可用反证法证明无解。 从s1出发,顺序确定每位二进制数。当hi=hi-1时,说明s1…si-1中1的个数与s1…si中1的个数相同,即si为0;否则si为1。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 算法描述:MST_Kruskal(G) for i=1 to n do f[i] ? i; //初始化并查集 sort( e, e+m); //边按大小排序 c ?0; //取边的计数器 for i=1 to m do //从小到大取边 v ?find_set( e[i].v ); //左端点所在连通块“根” u ?find_set( e[i].u ); //右端点所在连通块“根 if(u,v 不在同一连通块上) //如果不在同一连通块 union(v,u); //合并两连通块 sum =sum+ g[v][u]; //加入这条边的权 if (++c == n-1) break; //if 取了n-1条边,结束 最小生成树(MST)-----Kruskal算法 时间复杂度分析 Prim算法普通的方法 O(|V|2) Prim算法中用“堆”方法 O((|E|+|V|)*log|V|) ---对稀疏图较好 Kruskal算法 O(|E|*log|E| +|N|*A(|V|)) ---对稀疏图较好 最小生成树(MST)-----时间复杂度 图的拓扑结构 拓扑排序 顶点表示活动的网——AOV-网 例如课程选择中课程之间的关系 关键路径 边表示活动的网——AOE-网 求图中总长最长的路径 例如计算工程所需时间 拓扑排序算法 寻找入度为0的节点 将找到的节点放入队列中,删除所有这个节点引出的边 重复1,直至没有度为0的节点 如果有节点不在队列中,则说明原图中有环,否则无环。 1 2 5 3 6 4 7 求关键路径算法 对给定的图进行拓扑排序 按照拓扑排序的结果扩展和标记 1 2 3 4 5 6 8 7 9 6 4 5 1 1 2 4 7 9 2 4 最短路径:对在权图G=(V,E),从一个源点s到汇点t有很多路径,其中路径上权和最少的路径,称从s到t的最短路径。 简单讲:找出连接两个给定点的最低成本路径

您可能关注的文档

文档评论(0)

精华文档888 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档