1. 程式人生 > >Neo4j系列-解讀《權力的遊戲》下

Neo4j系列-解讀《權力的遊戲》下

安裝APOC 

參考文章:https://mp.csdn.net/postedit/81907108

圖論

知乎上討論圖論概念:  https://www.zhihu.com/question/22610633

 

1.度中心性(Degree Centrality)

即為某個節點在網路中的聯結數。在《權力的遊戲》網路中提利昂·蘭尼斯特(Tyrion)和最多的角色有接觸。

MATCH (c:Character)
RETURN c.name AS character, size( (c)-[:INTERACTS]-() ) AS degree
ORDER BY degree DESC

2.加權度中心性(Weighted Degree Centrality)

儲存一對角色接觸的次數作為INTERACTS關係的weight屬性。對該角色的INTERACTS關係的所有weight相加得到加權度中心性。在《權力的遊戲》網路中提利昂·蘭尼斯特(Tyrion)為加權度中心最高的人物。

MATCH (c:Character)-[r:INTERACTS]-()
RETURN c.name AS character, sum(r.weight) AS weightedDegree
ORDER BY weightedDegree DESC LIMIT 100

3.中介中心性
(Betweenness Centrality)

識別在網路中具有戰略定位的節點,這意味著資訊通常會通過那個人。這樣的中介地位賦予了這個人權力和影響力。中間性中心是通過給定節點的短路徑數量的原始計數。例如,如果一個節點位於兩個大型社群之間的瓶頸上,那麼它將具有較高的中間性。

中介中心性指的是一個結點擔任其它兩個結點之間最短路的橋樑的次數。一個結點充當“中介”的次數越高,它的中介中心度就越大。這個有點像是我們身邊那種社交達人,我們認識的不少朋友可能都是通過他/她認識的,這個人起到了中介的作用。

betweenness centrality

MATCH (c:Character)
WITH collect(c) AS characters
CALL apoc.algo.betweenness(['INTERACTS'], characters, 'BOTH') YIELD node, score
SET node.betweenness = score
RETURN node.name AS name, score
ORDER BY score DESC LIMIT 100

4.接近中心性(Closeness centrality)

衡量一個節點對其叢集內所有鄰居的集中程度。假定到所有其他節點的路徑都是最短的,那麼該節點就能夠以最快的速度到達整個組。一般來說,那種需要讓儘可能多的人使用的設施,它的接近中心度一般是比較高的。

在社交網路分析中,用於找到具有理想社交網路位置的人,以便更快地傳播資訊。

closeness centrality

MATCH (c:Character)
WITH collect(c) AS characters
CALL apoc.algo.closeness(['INTERACTS'], characters, 'BOTH') YIELD node, score
RETURN node.name AS name, score
ORDER BY score DESC LIMIT 100

5.PageRank

估計當前節點對其相鄰節點的重要性,然後再從其鄰居那裡獲得節點的重要性。一個節點的排名來源於其傳遞連結的數量和質量。PageRank雖然被谷歌拋棄了,但它還是被廣泛認為是檢測任何網路中有影響力的節點的常用方式。

MATCH (c:Character) WITH collect(c) AS nodes
CALL apoc.algo.pageRankWithConfig(nodes,{types:'INTERACTS'}) YIELD node, score
RETURN node.name, score
ORDER BY score DESC LIMIT 100