在线子路径分析:原理、实现与性能评估
1. 算法基础与复杂度分析
在线子路径分析算法在运行过程中,会更新采样集并决定跳过多少块后再次开始采样。例如,每次采样子路径 [3456] 时,其在样本中的计数会增加。该子路径的采样率约为子路径 [4567b] 的 3 倍,子路径 [4567a] 的 6 倍,子路径 [12b34] 和 [2b345] 的 20 倍以上。即使采样概率约为 1/40,预计它也会被采样约 150 次,从而能够非常准确地估计其计数。
复杂度分析方面:
- 跳过开销 :在 enterBlock 方法中,每块的操作复杂度为 O(1),具体常数取决于跳过过程的实现。
- 采样开销 :在 sampleBlock 方法中,每个采样块的操作复杂度为 O(1)。
- 表重采样成本 :通过设置新的采样概率来控制,可使每个采样块的摊销复杂度为 O(1)。
由于采样块的数量只是执行块总数的一小部分,因此总采样开销为 o(n)(n 为执行块的数量),每个执行块的摊销开销为 o(1)。
2. 特殊考虑因素
2.1 采样与跳过
采用热列表算法进行采样和计数。该算法根据输入大小和允许的内存占用计算初始采样频率 f,每个子路径以 1/f 的概率被采样。计算公式为:
[ f = \frac{n}{m \times G} ]
其中,m 是允许的内存占用,G 是预期增益,n 是预期输入大小。为了提高性能,不直接决定
超级会员免费看
订阅专栏 解锁全文

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



