第十章 代码的优化.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文档。上传文档
查看更多
控制流程图的概念:一个控制流程 图就是具有唯一首结点的有向图。 所谓首结点,就是从它开始到控 制流程图中任何结点都有一条通 路的结点 1 程序流图与循环 表示成一个三元组 G=(N,E,n0) N代表图中所有结点集 E代表图中所有有向边集 n0代表首结点。 以下把控制流程图简称为流图。 控制流程图 一个程序可用一个流图来表示: (1).流图中的有限结点集N就是程序 的基本块集,流图中的结点就是 程序中的基本块。 (2).流图的首结点就是包含程序第 一个语句的基本块。 流图与程序 (3).E是这样构成的: 假设流图中结点i和结点j分别 对应于程序的基本块i和基本块j, 则当下述条件1.或2.有一个成 立时,从结点i有一有向边引向结 点j: 流图中的有向边集E 1.基本块j在程序中的位置紧 跟在基本块i之后,并且基 本块i的出口语句不是无条件 转移语句goto或停语句。 边构成条件规则 2.基本块 i的出口语句是 goto(s)或if … goto (s), 并且(s)是基本块j的入口语句。 (1)read x (2)read y (3)r:= x mod y (4)if r= 0 goto (8) (5) x:=y (6)y:=r (7)goto (3) (8)write y (9)halt 例的流图 (1) read x (2) read y (3) r:= x mod y (4) If r=0 goto (8) (5) x:=y (6) y:=r (7) goto (3) (8) write x (9) halt (1)read x (2)read y (3)r:= x mod y (4)if r= 0 goto (8) (5) x:=y (6)y:=r (7)goto (3) (8)write y (9)halt (1)它们是强连通的。也即,其 中任意两个结点之间,必有一条 通路,而且该通路上各结点都属 于该结点序列。如果序列只包含 一个结点,则必有一有向边从该 结点引到其自身。 2.流程图中循环的定义 (2)路径序列中有且只有一个是 入口结点。所谓入口结点,是指 序列中具有下述性质的结点:从 序列外某结点,有一有向边引到 它,或者它就是程序流图的首结 点 循环的实例 1 2 4 3 5 6 7 对上图中循环结点序列: {6},{4,5,6,7}, {2,3,4,5,6,7} 不是循环结点序列: {2,4},{2,3,4}, {4,6,7},{4,5,7}虽 是强连通的,但因它们的 入口结点不唯一 必经结点: 在程序流图中,对任意两个结点m和n, 如果从流图的首结点出发,到达n的任 一通路都要经过m,则称m是n的必经结 点,记为m DOM n 3. 循环的查找 必经结点集: 流图中结点n的所有必经结点 的集合,称为结点n的必经结点集 ,记为D(n) 循环的入口结点是循环中所有结点 的必经结点 把DOM可以看作流图结点集 上定义的一个关系,则由定义容 易看出,它具有以下性质: (1)自反性: 对流图中任意结点a,有a DOM a 必经结点的代数性质 (2)传递性: 对流图中任意结点a、b和c。 若a DOM b,b DOM c, 则有a DOM c。 (3)反对称性: 若a DOM b且b DOM a,则必 有a=b。 求下图中各结点的D(n) 1 2 4 3 5 6 7 D(1)={1} D(2)={1,2} D(3)={1,2,3} D(4)={1,2,4} D(5)={1,2,4,5} D(6)={1,2,4,6} D(7)={1,2,4,7} 流图G=(N,E,n0)所有结点n的 必经结点集D(n)的算法: // P(n)为n的前驱结点 D(n0):={n0}; for n∈N-{n0} do D(N):=N;/D(N)初值 CHANGE:=TRUE; 结点n的必经结点集D(n)算法 while CHANGE do begin CHANGE:=FALSE; for n∈N-{n0} begin NEWD:={n}∪∩D(P);p∈P(n) if D(n) ≠ NEWD then

文档评论(0)

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

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

1亿VIP精品文档

相关文档