目前的 RSS-I 不是批量的,就是一条条边算的。
图很小的时候,RSS-II 不好,RSS-I 好。因为 RSS-I 一条条算,可以直接判 0, RSS-II 一批批算,不能直接判 0,要用蒙特卡洛。
RSS-II 里之后选的边是可以包括之前的未定边的,肯定是有一个 scheme 让 RSS-II 等同于 RSS-I
测试自己实现的肥波那其堆,主要是内存和时间。 sum of shortest path 当作 influence LPS 加速,用最普通的堆,下沉操作
先考虑 s-t
- BFS 出一个拓扑序,DAG 上 dp.
- BFS+cascade
- 迭代/随机游走
- 点概率反推边概率?
- 从 DAG 衍生,不相交路径容斥
- 看看 landmark 排序,有一个改进 landmark pruned labeling 的
- 看看 topk,弄一个含更多边的结构
- 路径覆盖数量排序,或者 mia 那里覆盖数量排序
- 树合并
- 单点贡献排序?
- 树拆分,查询时只合并链
- 最短路链上点对就是最短路
- 能否利用三角不等式相减那一边
- 最短路覆盖时,n 棵 size 为 n 的树,没棵砍小
- DAG dp 是不行的,因为前驱节点的存在概率不是独立的。如果只有 n 到 n+1 层也不可以。
- 到一个点不相交路径可以容斥,但是很愚蠢。
dblp: 2260138 6787979 (经过清理,原始边 1.4kw 条) avg prob 不用乘以 2,就用 log 里的
lastfm: avg prb 要乘以 2
RSS-II 原论文实验中使用了 r=50 的设置,但是原论文是在测试 varience, 实际上 50 条边的概率乘起来,再乘以不够大的采样数量,舍入误差偏大,实际实验中即使使用 10000 以上的采样数量,仍没有收敛到蒙特卡洛的值,所以我们根据收敛性调整,取偏小的 r,在 dblp 数据集中为。(放图)
用一个极端的例子说明这种情况,s 有 50 条出概率为 0.5 的出边,仅有 1 条以 1 的概率通到 t,用 rss 在采样数为 10000 时,每一个分层空间均为
可以调的阈值,要加到结果文件名里。