neo4j只有4版本以后支持广恢,gds版本為1.3.x以上支持
1靶橱、中介/中間中心性
中介中心性指的是一個(gè)結(jié)點(diǎn)擔(dān)任其它兩個(gè)結(jié)點(diǎn)之間最短路的橋梁的次數(shù)。一個(gè)結(jié)點(diǎn)充當(dāng)“中介”的次數(shù)越高,它的中介中心度就越大拱镐。如果要考慮標(biāo)準(zhǔn)化的問(wèn)題,可以用一個(gè)結(jié)點(diǎn)承擔(dān)最短路橋梁的次數(shù)除以所有的路徑數(shù)量持际。
這個(gè)有點(diǎn)像是我們身邊那種社交達(dá)人沃琅,我們認(rèn)識(shí)的不少朋友可能都是通過(guò)他/她認(rèn)識(shí)的,這個(gè)人起到了中介的作用蜘欲。
創(chuàng)建數(shù)據(jù):
CREATE
????(alice:User {name: 'Alice'}),
????(bob:User {name: 'Bob'}),
????(carol:User {name: 'Carol'}),
????(dan:User {name: 'Dan'}),
????(eve:User {name: 'Eve'}),
????(frank:User {name: 'Frank'}),
????(gale:User {name: 'Gale'}),
????(alice)-[:FOLLOW]->(carol),
????(bob)-[:FOLLOW]->(carol),
????(carol)-[:FOLLOW]->(dan),
????(carol)-[:FOLLOW]->(eve),
????(dan)-[:FOLLOW]->(frank),
????(eve)-[:FOLLOW]->(frank),
????(frank)-[:FOLLOW]->(gale);
CALL gds.graph.create('myGraph', 'User', 'FOLLOW');
CALL gds.betweenness.stream('myGraph')
YIELD nodeId, score
RETURN gds.util.asNode(nodeId).name AS name, score
ORDER BY name ASC
2益眉、接近中心度算法
比如你要建一個(gè)大型的娛樂(lè)商場(chǎng),你可能會(huì)希望周圍的顧客到達(dá)這個(gè)商場(chǎng)的距離都可以盡可能地短姥份。這個(gè)就涉及到接近中心性的概念郭脂,接近中心性的值為路徑長(zhǎng)度的倒數(shù),接近中心性需要考量每個(gè)結(jié)點(diǎn)到其它結(jié)點(diǎn)的最短路的平均長(zhǎng)度殿衰。也就是說(shuō)朱庆,對(duì)于一個(gè)結(jié)點(diǎn)而言,它距離其它結(jié)點(diǎn)越近闷祥,那么它的中心度越高娱颊。
CREATE (a:Node{id:"A"}),
????(b:Node{id:"B"}),
????(c:Node{id:"C"}),
????(d:Node{id:"D"}),
????(e:Node{id:"E"}),
????(a)-[:LINK]->(b),
????(b)-[:LINK]->(a),
????(b)-[:LINK]->(c),
????(c)-[:LINK]->(b),
????(c)-[:LINK]->(d),
????(d)-[:LINK]->(c),
????(d)-[:LINK]->(e),
????(e)-[:LINK]->(d);
CALL gds.alpha.closeness.stream({
????nodeProjection: 'Node',
????relationshipProjection: 'LINK'
})
YIELD nodeId, centrality
RETURN gds.util.asNode(nodeId).id AS user, centrality
ORDER BY centrality DESC;