用Neo4J求解加权网络流

用Neo4J求解加权网络流,neo4j,graph-theory,linear-programming,graph-traversal,Neo4j,Graph Theory,Linear Programming,Graph Traversal,我有一个二分图(guy和girl注释),其中节点通过加权边连接(girl-guy对的兼容性如何),每个节点的容量为5(每个男孩/女孩可以与5个异性匹配)。我需要找到最佳匹配以最大化权重 这可以表述为一个加权网络流——每个男孩是5个单位的源,每个女孩是5个单位的汇,每个可能的弧有1个单位的容量。这个问题可以使用线性规划或图遍历算法(如Ford–Fulkerson)来解决 我目前正在研究使用Neo4j的可能解决方案-有人知道如何解决吗?(或者我应该只使用线性规划解决方案…)我认为是这样的。按关系的权

我有一个二分图(guy和girl注释),其中节点通过加权边连接(girl-guy对的兼容性如何),每个节点的容量为5(每个男孩/女孩可以与5个异性匹配)。我需要找到最佳匹配以最大化权重

这可以表述为一个加权网络流——每个男孩是5个单位的源,每个女孩是5个单位的汇,每个可能的弧有1个单位的容量。这个问题可以使用线性规划或图遍历算法(如Ford–Fulkerson)来解决


我目前正在研究使用Neo4j的可能解决方案-有人知道如何解决吗?(或者我应该只使用线性规划解决方案…)

我认为是这样的。按关系的权重按降序排列,找到五个最兼容的关系,然后将它们创建为一个单独的关系
匹配

match (guy:Guy)-[rel:COMPATIBLE]->(girl:Girl)
where guy.id = 'xx'
with guy, rel, girl
order by rel.weight desc
limit 5
create (guy)-[:MATCH]->(girl)

谢谢你,戴夫!然而,这将给你的前几个家伙最好的比赛,但其余的家伙将得到要么糟糕的比赛,或根本没有比赛。加权网络流是一个试图使所有匹配项的权重最大化的优化问题。这是对不同问题的一个很好的回答。我认为这个问题还不清楚,但我查阅了福特·富尔克森的资料,我认为你需要最大化所有节点的回报。我不认为直接使用密码是可能的。对-我在密码中添加了where子句,只关注一个人。