我知道有一些著名的图形分区算法工具,例如由 karypis Lab 实现的 METIS ( http://glaros.dtc.umn.edu/gkhome/metis/metis/overview )
但我想知道有什么方法可以对存储在 Neo4j 中的图进行分区吗?或者我必须转储 Neo4j 的数据并手动转换节点和边缘格式以适应 METIS 输入格式?
我知道有一些著名的图形分区算法工具,例如由 karypis Lab 实现的 METIS ( http://glaros.dtc.umn.edu/gkhome/metis/metis/overview )
但我想知道有什么方法可以对存储在 Neo4j 中的图进行分区吗?或者我必须转储 Neo4j 的数据并手动转换节点和边缘格式以适应 METIS 输入格式?
关于新奇有趣的算法,这绝不是详尽无遗或最先进的,但这些是我首先要看的地方:
具体算法:DiDiC(分布式扩散聚类) - 我在论文中使用过一次(分区图数据库)
特定算法:EvoCut“使用演化集在本地查找稀疏切割” ——微软的局部概率算法——与这些论文相关
通用算法系列:层次图聚类
从高层次来看:
笔记:
一般限制- 很少有聚类算法会做的事情:
过去曾独立使用 METIS 和 Neo4j,我不知道有任何工具可以从 Neo4j 生成 METIS 文件。话虽如此,编写这样一个工具应该是一件容易的事,并且会是一个伟大的社区贡献。
将 METIS 与 Neo4j 集成的另一种方法可能是将 METIS 通过 JNI 从 C++ 连接到 Neo4j。然而,这将涉及更多,因为它必须处理事务、并发等问题。
在划分图的更一般的问题上,很可能通过合理的努力来实现一些更知名和简单的算法。