路径复杂度(环形回路的复杂度计算)

路径复杂度

  • 1、通用公式: (E+F) - N+1
  • 2、非环形回路的复杂度计算
    • 公式为什么+1?
    • 公式为什么(E+F)-N?
  • 3、类推到环形回路的复杂度演示
    • 区分下纯环形回路 和 不是纯粹的环形回路
  • 3、特殊情况:自旋
    • 公式化理解:此时将B自旋回路看成一个环形回路即可
    • 概念化理解:自旋过,没有自旋过
    • 企业级理解:直接当成一条正常边就行

1、通用公式: (E+F) - N+1

路径复杂度= E-N+2+(F-1) = (E+F) - N+1
环形回路和非环形回路公式实际是一样的,没区别:复杂度= (E+F)-N+1

属性解释:
E是边(线条数量),
N是节点数量,
F为路径终结点数量(就是end节点 ,如果是纯环形回路,则没有路径终结点,F为0,则=E-N+1)

2、非环形回路的复杂度计算

公式为什么+1?

路径复杂度(环形回路的复杂度计算)_第1张图片

公式为什么(E+F)-N?

每多一条边,只有三种情况:
1、多一个已有路径的next节点,
2、一个组合(一个新路径+一个新的终结点+一个节点)
3、节点不变,终结点减1

这3种情况里,
1 和 3 的总值不变,N加多少,(E+F)就加多少,且不会出现新的路径
而第二种情况里,N加多少,(E+F)就多一,且会出现一条新的路径,显然这才是关键点

路径复杂度(环形回路的复杂度计算)_第2张图片
那么(E+F)-N 就会只剩下多出来的新路径(情况2)
路径复杂度(环形回路的复杂度计算)_第3张图片

3、类推到环形回路的复杂度演示

区分下纯环形回路 和 不是纯粹的环形回路

路径复杂度(环形回路的复杂度计算)_第4张图片

以纯环形回路进行类推,依然满足公式:(E+F)-N+1
纯环形回路其实没必要计算终结点F,因为一直都是0,除非它不再是纯粹的环形回路

路径复杂度(环形回路的复杂度计算)_第5张图片

路径复杂度(环形回路的复杂度计算)_第6张图片

3、特殊情况:自旋

此时环形和非环形没区别

公式化理解:此时将B自旋回路看成一个环形回路即可

公式:(E+F)-N+1
总复杂度= A->B的非环形回路的路径 + B自旋回路的路径
= (1+1-2+1)+ (1+0-1+1)
= 1 + 1
= 2

路径复杂度(环形回路的复杂度计算)_第7张图片
路径复杂度(环形回路的复杂度计算)_第8张图片

概念化理解:自旋过,没有自旋过

路径复杂度(环形回路的复杂度计算)_第9张图片

企业级理解:直接当成一条正常边就行

因为计算结果一样,完全不影响

你可能感兴趣的:(软考知识点:软件设计师,软件工程,java)