优先连接
优先连接是一种用于计算节点之间亲密度的度量,基于它们共同的邻居。
此功能处于 alpha 层级。有关功能层级的更多信息,请参见 API 层级.
历史和解释
优先连接意味着,节点连接越多,它获得新链接的可能性就越大。该算法由 Albert-László Barabási 和 Réka Albert 通过他们对无标度网络的研究而推广。它使用以下公式计算
其中 N(u)
是与 u
相邻的节点集。
值为 0 表示两个节点不亲密,而较高的值表示节点更亲密。
该库包含一个函数来计算两个节点之间的亲密程度。
语法
以下将运行该算法并返回结果
RETURN gds.alpha.linkprediction.preferentialAttachment(node1:Node, node2:Node, {
relationshipQuery:String,
direction:String
})
名称 | 类型 | 默认值 | 可选 | 描述 |
---|---|---|---|---|
|
节点 |
null |
否 |
一个节点 |
|
节点 |
null |
否 |
另一个节点 |
|
字符串 |
null |
是 |
用于计算 |
|
字符串 |
两者 |
是 |
用于计算 |
优先连接算法示例
以下将创建一个示例图
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.alpha.linkprediction.preferentialAttachment(p1, p2) AS score
分数 |
---|
6.0 |
我们还可以根据特定关系类型计算一对节点的评分。
以下将返回 Michael 和 Karin 基于
FRIENDS
关系的优先连接评分 MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.alpha.linkprediction.preferentialAttachment(p1, p2, {relationshipQuery: "FRIENDS"}) AS score
分数 |
---|
1.0 |