分割neo4j图,min-cut

时间:2014-04-01 14:07:07

标签: neo4j graph-theory

我听说过用于分割或分割图形数据库的最大流量最小切割方法。有人有一个示例密码查询可以对照影片数据集吗?基本上我想根据他们喜欢的内容将用户划分为不同的分片/群集,这样最小的切割可以自然地找到类型的用户群,如恐怖,戏剧,或者它可能会创建非直观的群集/片段,如时髦/浪漫和保守/喜剧/恐怖组织。

1 个答案:

答案 0 :(得分:2)

我的简短回答是否定,对不起,我不知道你会如何表达这一点。

我的答案很长,即使这是可能的 - 这很可能 - 我会反对它。

多种算法'做' min-cut max-flow,这些都具有不同的性能特征,并且由于群集计算成本很高,我猜你想要控制所使用的特定算法实现。 Cypher是一种声明性语言,您指定 您正在寻找但不是 来执行此操作并且很难以Cypher引擎能够弄清楚你正在尝试做什么的方式来指定这样一个复杂的问题。这将使Cypher(或任何声明性语言引擎)难以生成有效的查询计划。

我的建议是找到您想要使用的特定算法并使用Neo4j Java API来实现它。 如果你在嵌入式模式下运行Neo4j,那么你就完成了。如果您正在运行Neo4j服务器,那么您只需将该代码作为Unmanaged Server Extension

运行

社区检测后的AFAIK'算法。存在非重叠(社区不重叠)和重叠变体,其中非重叠通常更容易实现和理解。常用算法有:

  • 非重叠:Louvain
  • 重叠:标签传播算法(LPA)(通常不重叠,但有扩展使其重叠)

以下是算法的一些C ++代码示例:Louvain, Oslom (overlapping), LPA (non-overlapping), and Infomap)

如果你想要出血,我推荐使用SCD算法