Page 162 - 《软件学报》2020年第12期
P. 162

3828                                Journal of Software  软件学报 Vol.31, No.12, December 2020

         代表拥有同一个起点、起始时间、结束时间的一系列环路.算法 1 中给出了寻找候选五元组函数的伪代码,其
         中,S 集合代表节点拥有的三元组信息,SearchLimit 值为人为给定的限制长度值.
             同理,在使用布隆过滤器        [19] 进行处理时,我们仍然可以利用 hop 值来降低搜索的复杂度.这是因为在使用布
         隆过滤器时,为了满足获取候选信息的需要,要对原图进行一次反向遍历和一次正向遍历                               [18] .而在进行正向遍历
         的过程中,就可以运用三元组进行操作,操作的方式与上述方式是基本一致的.









                                   Fig.2    Reduce the size of candidates using hop
                                       图 2   通过 hop 缩小候选节点集合
             算法 1. set_interaction_exact(G).
             输入:读取时序图的输入流.其中,要求图输入的格式为(起始节点,终止节点,时间戳)的三元组,输入时间不
         递减;
             输出:〈起点,起始时间,结束时间,候选点集,最小跳数〉的五元组.
             1.   while (读取时序边〈from,to,timestamp〉)
             2.      if (self_loop) continue;
             3.      S[to]←pair((from,timestamp),1);
             4.      if (S[from]不为空)                        //进行继承
             5.         for (S[from]中的三元组〈node,time,hop〉)
             6.            if (该三元组的时间已经在时间窗口外)             //清理
             7.               从 S[from]中删除这个三元组;
             8.            else
             9.               new_hop←hop+1;
             10.              if (to==node)                 //找到了环路
             11.                 if (new_hop≤SearchLimit)
             12.                    记录五元组信息;
             13.                else                        //还要继续进行搜索
             14.                    if (new_hop<SearchLimit)
             15.                       if (S[to]中不含有这个三元组)
             16.                          S[to]←((node,time),new_hop);
             17.                       else
             18.                          if (原 hop 值>新的 hop 值)
             19.                             更新这个三元组的 hop 值;
             20.     if (到了程序约定的清理时间)
             21.        清除已经过期的三元组;
         3.2   搜索算法
             在这一模块中,我们将沿用 2SCENT 算法中的剪枝方式                [18] ,利用关闭时间和封锁节点的策略来帮助我们进
         行搜索.虽然通过第 1 步操作我们已经减少了很多不会被搜索到的点,但是当图变得越来越大,搜索的长度越来
         越长,一些搜索已经超过了要求的长度却仍在进行.这样的搜索增加了寻找环路所需的时间.若想在 2SCENT 算
   157   158   159   160   161   162   163   164   165   166   167