资源分配 (Resource Allocation)
|
此功能在 Aura Graph Analytics 中不可用。 |
资源分配是一种用于根据共享邻居计算节点之间紧密程度的度量方法。
历史与解释
资源分配算法由周涛、吕琳媛和张翼成于 2009 年提出,作为研究各类网络中链路预测的一部分。其计算公式如下
其中 N(u) 是与 u 相邻的节点集合。
值为 0 表示两个节点不接近,而较高的值表示节点更接近。
该库包含一个用于计算两个节点之间接近度的函数。
语法
以下内容将运行算法并返回结果
RETURN gds.linkprediction.resourceAllocation(node1:Node, node2:Node, {
relationshipQuery:String,
direction:String
})
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
|
节点 |
null |
否 |
一个节点 |
|
节点 |
null |
否 |
另一个节点 |
|
字符串 |
null |
是 |
用于计算 |
|
字符串 |
BOTH (双向) |
是 |
用于计算 |
资源分配算法示例
以下代码将创建一个示例图
CREATE
(zhen:Person {name: 'Zhen'}),
(praveena:Person {name: 'Praveena'}),
(michael:Person {name: 'Michael'}),
(arya:Person {name: 'Arya'}),
(karin:Person {name: 'Karin'}),
(zhen)-[:FRIENDS]->(arya),
(zhen)-[:FRIENDS]->(praveena),
(praveena)-[:WORKS_WITH]->(karin),
(praveena)-[:FRIENDS]->(michael),
(michael)-[:WORKS_WITH]->(karin),
(arya)-[:FRIENDS]->(karin)
以下代码将返回 Michael 和 Karin 的资源分配得分
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.linkprediction.resourceAllocation(p1, p2) AS score
score |
|---|
0.3333333333333333 |
我们还可以基于特定的关系类型计算一对节点的得分。
以下代码将仅基于
FRIENDS(朋友)关系返回 Michael 和 Karin 的资源分配得分 MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.linkprediction.resourceAllocation(p1, p2, {relationshipQuery: "FRIENDS"}) AS score
score |
|---|
0.0 |