圈复杂度计算
2015-09-16 15:36
253 查看
一、公式:Vg=m-n+p;// Vg=m-n+2p;
g:代表强连通有向图,
m:代表强连通有向图的弧数,
n:代表强连通有向图的节点数,
p:是g中分离部分的数目,(默认是1)
m和n都很清晰,当我们要用公式计算的时候p的值不固定,很难计算。为什么会出现p和2p的情况呢
如图所示,这是一个控制流图,入度是2,出度是28,。我们能从2→28,但是不能从282,所以这里就该减去2p也就是2.
若是画一条从28→2的虚线,那么这里就该减去1,就是正常的p就行。
总结:分离部分位p还是2p主要看,出度和入度有没有相连,相连为p,不相连位2p。这就是1和2 的差距。
二、判定节点数+1
判定节点数是指强连通图中需要判断的节点,就像图中的(3.7.11.15.19),一共5个,那么圈复杂度就是6
三、图中围成圈的个数,
这个要求必须是强连通有向图,意思是有一条从28→2的虚线。然后看看图中围成圈的个数。
像:(19.20.22.23),(15.16.24.23.20.19),(11.12.25.24.16.15),(7.8.26.25.12.11),(3.4.27.26.8.7),
和虚线组成的(2.28.27.4.3)(图中没有画出,请脑补。)
g:代表强连通有向图,
m:代表强连通有向图的弧数,
n:代表强连通有向图的节点数,
p:是g中分离部分的数目,(默认是1)
m和n都很清晰,当我们要用公式计算的时候p的值不固定,很难计算。为什么会出现p和2p的情况呢
如图所示,这是一个控制流图,入度是2,出度是28,。我们能从2→28,但是不能从282,所以这里就该减去2p也就是2.
若是画一条从28→2的虚线,那么这里就该减去1,就是正常的p就行。
总结:分离部分位p还是2p主要看,出度和入度有没有相连,相连为p,不相连位2p。这就是1和2 的差距。
二、判定节点数+1
判定节点数是指强连通图中需要判断的节点,就像图中的(3.7.11.15.19),一共5个,那么圈复杂度就是6
三、图中围成圈的个数,
这个要求必须是强连通有向图,意思是有一条从28→2的虚线。然后看看图中围成圈的个数。
像:(19.20.22.23),(15.16.24.23.20.19),(11.12.25.24.16.15),(7.8.26.25.12.11),(3.4.27.26.8.7),
和虚线组成的(2.28.27.4.3)(图中没有画出,请脑补。)
相关文章推荐
- 《炉石传说》架构设计赏析(1):游戏启动流程
- JS实现显示部分文字点击显示全部
- HTTP响应头内容
- IOS开发(转自知乎)
- double的最大值
- linux(CentOS 7)下eclipse配置maven-3.3.3 和新建maven项目开发hadoop-2.6.0接口
- [LeetCode 216] Combination Sum III
- 数据库单元测试的一点尝试
- Oracle数据库异机升级
- ASP.NET MVC4系列验证机制、伙伴类共享源数据信息(数据注解和验证)
- Comparable与Comparator
- ASP.NET MVC3手把手教你构建Web
- JDBC连接MySQL例子
- OC-oc语言简介,类和对象
- linux之gcc基础
- css3--border属性
- Cocoa Touch 层
- git基础学习3(github)
- 《程序员面试金典》像素翻转
- Varnish 问题点 与 技术方案 Varnish 优劣分析