algorithm - 邻域图的压缩

标签 algorithm geometry compression graph-algorithm nearest-neighbor

我有一个巨大邻域图(约 1 亿个顶点),其中彼此“靠近”的顶点有一条边。显然相邻顶点有许多共同的邻居。

为什么没有空间索引?

你可以把它想象成一个几何问题。但实际上有些边缘可能不存在,因为必须检查比仅几何形状更多的标准以满足“邻居”条件。另一种情况的检查成本非常高。但是可以保证几何上相距很远的顶点一定不会是邻居。几何邻近度是相邻边的必要条件。

因此,这不是社交图谱。该图仅局部密集。它有密集的子图。

有没有办法利用这些知识来压缩图形?目前它太大了,无法放入内存。

例子

在此示例中,所有邻域边都绘制为实线,而虚线边仅显示彼此“靠近”的那些顶点,而不是没有邻居(不满足其他条件)。虚线边不存在。只有关于实体边的信息是相关的。 neighborhood graph

问题

如何压缩邻边信息?

查询将是:给我一个特定顶点的所有相邻顶点。

最佳答案

似乎可以使用简单的压缩方案 -
选择任意节点
进行几层深度的面包优先搜索
检查具有相似邻接列表的邻居
将它们标记为次要
为他们写基础节点和区别
当遇到邻接列表太远的节点时,用完整列表组织新的基节点。

但是这张图是用来做什么的呢?任何压缩都会使操作变慢......

 Node: 
     Base node (for base node: null, for secondary: base node (number or address)
     List: True adj. list for base node
           RemoveList, AddList for secondary node 

当 RemoveList + AddList 的大小与 base 列表的大小相当时,创建新的 base

一些 close ideas found

关于algorithm - 邻域图的压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43693170/

相关文章:

algorithm - 给定字符串 x、y 和 z。判断 z 是否为 shuffle

algorithm - 柏姆-雅可比尼定理

sql-server - 经纬度坐标的几何运算

以 URL 安全方式压缩十六进制 GUID 的算法?

C - 循环次数减少的冒泡排序

python - 如何解决此 python 代码中缺少 1 个必需的位置参数?

algorithm - 计算分割多边形的面积

ruby - 在 Ruby 中处理三角形求解

javascript - 你用什么来最小化和压缩 JavaScript 库?

python - 记录并压缩 subprocess.call 的输出