我知道有一些着名的图形分区算法工具,如METIS,由karypis Lab实现(http://glaros.dtc.umn.edu/gkhome/metis/metis/overview)
但我想知道是否有任何方法来分割存储在Neo4j中的图形? 或者我必须转储Neo4j的数据并手动转换节点和边缘格式以适应METIS输入格式?
答案 0 :(得分:8)
关于新的和有趣的算法,这绝不是详尽的或现有的,但这些是我看的第一个地方:
特定算法:DiDiC (Distributed Diffusive Clustering) - 我在论文中使用了一次(Partitioning Graph Databases)
特定算法:EvoCut "Finding sparse cuts locally using evolving sets" - 来自Microsoft的本地概率算法 - related to these papers
通用算法系列:Hierarchical Graph Clustering
从高层次开始:
注意:
一般限制 - 少数群集算法所做的事情:
答案 1 :(得分:4)
过去曾与METIS和Neo4j独立合作,我不知道有任何工具可以从Neo4j生成METIS文件。话虽这么说,编写这样一个工具应该是一项容易的任务,并且将是一个很好的社区贡献。
将METIS与Neo4j集成的另一种方法可能是通过JNI将METIS从C ++连接到Neo4j。然而,这将涉及更多,因为它必须处理事务,并发等事情。
关于分区图的更一般的问题,很有可能通过合理的努力实现一些更为人熟知和简单的算法。