algorithm - 计算距 m 个给定节点的距离小于 k 的所有节点的最佳方法

标签 algorithm graph

尺寸图n给出了大小为 m 的子集给出了它的节点。查找位于 distance <=k 的所有节点来自子集的所有节点。

例如。 A->B->C->D->E 是图形,subset = {A,C} , k = 2.

现在,E 与 C 的距离 <=2,但与 A 的距离不超过 2,因此不应将其计算在内。

我想从子集中的每个节点运行广度优先搜索,并取各自答案的交集。
能否进一步优化?

我浏览了很多关于 SO 的帖子,但它们都指向我不明白的 kd-trees,那么还有其他方法吗?

最佳答案

我可以想到两个非渐近(我相信)优化:

  1. 如果您完成了子集节点之一的 BFS,请删除距离 > k 的所有节点
  2. 从子集中距离最大的两个节点开始,得到尽可能小的剩余图

当然,如果 k 很大(接近 n),这没有帮助,我不知道在那种情况下。但是我很肯定 k/d 树不适用于一般图:)

关于algorithm - 计算距 m 个给定节点的距离小于 k 的所有节点的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243831/

相关文章:

python - 在无向图上使用 floyd 算法的字典进行图初始化?

php - 如何将数组元素扩展为函数的单独参数

python - 通过networkx并使用python在图中添加节点和边

matlab - 正态概率图解释

arrays - 给定一个字符串数组,如果每个字符串都可以连接到其他字符串,则返回 true

algorithm - 如何快速计算高维向量之间的距离

algorithm - 将项目集合分类到桶中的最有效方法是什么?

actionscript-3 - 如何更好地为 3D 画廊打包与球体相切的矩形?

c++ - 我的函数顶点和边添加是否不会将数据插入STL容器?

algorithm - 了解收缩层次结构