程序图和环复杂度

本文探讨了程序图的基本概念,如何用它简化和压缩流程图表示程序结构,重点介绍了环复杂度(如McCabe度量)用于衡量程序的结构复杂性。通过直观观察和公式计算方法,指导读者如何计算环复杂度,并强调了其在评估代码清晰度中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.程序图

1.1概述

  • 用来表示程序结构的一种有向图

  • 由圆圈和有向线段构成

  • 圆圈(节点):执行语句

  • 有向线段:程序执行方向

在这里插入图片描述

1.2作用

  • 体现程序基本结构
  • 反映程序结构复杂度
  • 不关心源代码的细节

1.3程序图是简化的流程图

  • 不区分语句的含义,对所有节点都采用圆圈表示

在这里插入图片描述

1.4程序图是压缩的流程图

  • 忽略数据声明

  • 忽略注释语句

  • 压缩串行语句

  • 压缩循环次数

在这里插入图片描述

左侧流程图中的5条语句——>(对应)右侧程序图中的A节点

2.环复杂度

  • McCabe复杂性度量
  • 是一种定量描述程序结构复杂度的度量模型
  • 能够反映判定节点和循环的引入对程序结构以及执行路径数目带来的不利影响

2.1环复杂度的确定

2.1.1直观观察法
  • 观察程序图将二维平面分割为封闭区域和开发区域的个数
    -在这里插入图片描述
2.1.2公式计算法
  • 利用程序图包含的边和顶点的数量来计算环复杂度
  • 环复杂度V(G)=e-n+2
  • e表示边的数量,n表示顶点的数量
  • 需要满足 前提条件:
    • 程序图中无孤立节点
    • 程序图是强连通图(即双向连通)

在这里插入图片描述
直接套公式:V(G) = e - n + 2 = 10 - 7 + 2 = 5

2.1.3判定节点法
  • 利用程序图包含的边和顶点的数量来计算环复杂度
  • 环复杂度V(G) = P + 1
  • P表示判定节点的数量
  • 前提条件:仅计算两分支的判定节点
  • 在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHppGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值