2017-12-04 2 views
1

내 응용 프로그램에서, 나는 betweenness 중립성 노드를 계산하려고합니다. 다음은 Betweenness Centrality Calculation Formula입니다. Deminator는 두 노드 사이의 관계의 수입니다. 그러나 numerator는이 관계 사이의 특정 노드의 존재 카운트입니다. 그렇다면 관계에있는 노드의 존재 개수를 어떻게 찾을 수 있습니까?neo4j cypher 관계에있는 특정 노드의 존재 개수를 찾는 방법은 무엇입니까?

이 사이퍼의 결과로서 예를 들어 MATCH p=allShortestPaths((u1{name:1174}) - [*..20] - (u2{name:1179})) return p

A graph between 2 specific nodes. 어떻게하면 노드 사이의 관계에 노드 : 1204의 전이 횟수를 찾을 수 있습니까? 1174-1179

node A에서 node B 사이의 최단 경로가 있습니다. 얼마나 많은 노드에 노드 node C이 포함되어 있습니까?

+2

검색어에 이미지를 삽입하십시오. 또한 "전환"의 정의를 분명히하십시오. –

+0

hello @GaborSzarnyas, 이제 링크를 사용하여 이미지를 볼 수 있습니다. 전환 수단; 노드 a에서 노드 c까지의 최단 경로에서 얼마나 많은 노드 b가 노드 b를 포함합니까? –

+0

링크가 아닌 이미지로 삽입하십시오. 감사. –

답변

0

경로 변수에 nodes() 함수를 사용하여 주어진 경로에 대한 노드 컬렉션을 얻을 수 있습니다. 거기에서 특정 이전에 일치 된 노드가 있는지 확인할 수 있습니다.

MATCH (n{name:1204}) 
MATCH p=allShortestPaths((u1{name:1174}) - [*..20] - (u2{name:1179})) 
WITH p, case when n in nodes(p) then 1 else 0 end as occurrences 
RETURN count(p) as shortestPathCount, sum(occurrences) as occurrencesCount 

또한, 당신이 당신의 그래프와 쿼리에 레이블을 사용 권장 : 여기 한 가지 방법이다. 현재 이것은 주어진 이름을 가진 노드를 찾기 위해 모든 노드 스캔을 수행하고 노드 수가 증가함에 따라 효율성이 점점 떨어집니다. 노드에 레이블을 추가하고 일치 항목에 레이블을 사용하면 적어도 레이블 스캔을 대신 수행하게됩니다. 레이블/등록 정보에 색인을 작성하면 조회에서 시작 노드에 대한 색인 찾아보기가 수행됩니다.

관련 문제