Page 458 - 《软件学报》2025年第9期
P. 458

苟向阳 等: 高精度滑动窗口模型下的图流三角形近似计数算法                                                   4369



                 目, 而随着   d  增大, 其估算的区间越来越接近滑动窗口, 误差快速降低. 在                d ⩾ 20 时, CBS-bias 算法的误差低于
                 SWTC 算法. 而相比之下, 加入 ETM 误差修正策略后, CBS 算法的误差大大降低, 且在                  d  较小时也能取得低误差.
                 d 较小时, CBS 需要估算一个较大区间内的过期三角形数目, 而此估算只使用了样本边信息, 估算精度不如采样前
                 计数策略, 因此误差高于       d 较大的情况. 但是    d > 5 之后, 误差降低的趋势就已非常微弱.


                                                                 10 2.6
                                        CBS        SWTC                    CBS        SWTC
                              10 2.0
                                        CBS-bias                 10 2.4    CBS-bias
                              10 1.8                             10 2.2
                             平均相对误差 (%)  10 1.4                 最大相对误差 (%)  10 2.0
                               1.6
                              10
                                                                  1.8
                                                                 10
                              10
                               1.2
                                                                  1.6
                              10
                                                                 10
                               0.8
                              10 1.0                             10 1.4
                              10 0.6                             10 1.2
                                   1   2   5   10  15   20            1   2   5   10   15  20
                                         区间划分数量 d                           区间划分数量 d
                                          图 13 CBS  算法误差随区间划分数量变化趋势

                 4.7   有向三角形计数实验
                    本节评估    CBS  算法在有向三角形计数中的效果, 并和            SWTC 算法对比, 实验结果如图        14  所示. 在最大相对
                 误差的实验图中采用指数坐标, 因为不同三角形的最大相对误差差距较大. 实验采用                           StackOverflow 数据集, 设置
                 滑动窗口长度为 4M, 样本比例为 4%. 由于 StackOverflow 数据集中不存在双向边, 但是边分为                  3  种类别, 分别表
                 示用户间的    3  种交互方式: 回答问题、评论问题和评论答案. 本文选择了                 3  种边类别中的“回答问题”类别标记为
                 双向边, 以此来支持 C–G     的  5  类三角形范式计数. 实验中, G 类三角形估算的误差较高, 这是由于 G 类三角形的数
                 量很低. 我们也在样本比例 8% 的设置下进行了 G 类三角形计数, 可以看出误差得到了极大降低. 此外, CBS 算法
                 的误差低于 SWTC 算法, 尤其是在误差较高的范式, 如 G 类三角形中.

                            32           CBS  SWTC              10 2.5         CBS  SWTC
                           平均相对误差 (%)  28                       最大相对误差 (%)  10 2.0
                            24
                            20
                            16
                            12
                                                                10
                                                                  1.5
                             8
                             4
                                A  B  C   D  E   F  G G (8%)         A   B  C  D   E  F   G G (8%)
                                        三角形类别                                 三角形类别
                                                图 14 有向三角形计数估算误差


                 4.8   运行速度和内存消耗对比
                    本节对不同算法的实际内存消耗和运行速度进行实验分析. 实验采用                       StackOverflow 数据集, 设置滑动窗口长
                 度为 4M. 图  15  展示了 CBS 与  SWTC 算法的更新速度随着样本比例的变化, CBS-FP 和 FP 算法则按照第                 4.6  节
                 相同的方式调节采样概率, 使得其空间消耗上限和 CBS 以及 SWTC 算法保持一致. 更新速度的单位为每秒百万
                 次新边插入 (million insertion per second, Mips). 从中可以看出, FP 算法的更新速度最高, 这是由于其采样和估算算
                 法最为简单. 而 SWTC 算法的速度低于 FP 算法, 这是由于 SWTC 算法的采样方案更加复杂, 采样中不仅会加入
                 新样本边, 还会替换掉原有样本边, 带来更大的数据结构更新代价和三角形数目更新代价. 而                            CBS  算法和  CBS-FP
                 算法则更加低一些, 这时由于前两种算法只有新边被采样时才会触发三角形计数, 而使用了采样前计数策略的
                 CBS 和 CBS-FP 算法则对于所有新边都需要进行三角形计数, 计算代价更高. 但是之前的实验表明了 CBS 和 CBS-
                 FP 算法在估算精度上具有很大优势, 速度上的牺牲时是取得高估算精度的必要代价. 在实际应用场景中可以根据
   453   454   455   456   457   458   459   460   461   462   463