2-边/顶点连通诱导子图的枚举
1. 算法复杂度分析
在处理搜索树中的节点时,为了限制时间复杂度,我们对算法的第4 - 6行和第12 - 14行应用了替代方法,以减少延迟。接下来分析空间复杂度:
- Seq存储当前组件C′和C之间的MRS序列,在遍历C′的所有子节点后弹出MRS,因此消耗O(n)的空间。
- 根据引理2和ComputeMrsC的定义,栈X使用O(n)的空间。
- 由于最大深度为n,Siz仅使用O(n)的空间。
下面证明算法2的时间和空间复杂度:
- 时间复杂度 :算法2能枚举C(C, ∅)中的所有组件。若深度为奇数,则输出当前组件C′;若深度为偶数且MrsC(C′, X) = ∅,也输出C′;若深度为偶数且MrsC(C′, X) ≠ ∅,则在下一次迭代的第8行输出C′ \ Y。要证明第4行到第19行的操作能在O(n + θt)时间内完成。输出一个组件需O(n)时间,通过在深度变化前后加减MRS来跟踪差异,也需O(n)时间。根据定义,ComputeMrsC的工作时间为θt,其他操作是加减MRS,计算时间为O(n)。
- 空间复杂度 :由于组件C′的大小随深度增加而单调递减,且MrsC(C′, X)最初为空的终止条件最多在n深度时满足,所以最大深度为n。对于组件C′ ∈ C(C, ∅),Seq等价于C′和C之间的MRS序列,因为Seq在深度增加前存储新的MRS,在深度减少前丢弃。对于任何子集I ⊆ C′,I和MrsC(C′, I)两两不相交,所以X可以用O(n)的空间保存。显然,Siz使用O(n)的空间,因此整个空间为O(n + θs)。
超级会员免费看
订阅专栏 解锁全文
27

被折叠的 条评论
为什么被折叠?



