2011-05-04 5 views
4

커다란 igraph 오브젝트 70,000+ 정점 (노드)과 200,000+ 에지 (연결)가 있습니다. 중심성에 대한 측정을하고 싶지만 네트워크가 너무 큽니다. 좋은 방법은 내 네트워크를 연결된 구성 요소로 분해하는 것입니다 (심지어 최대 규모는 너무 크지 않습니다).그래프/네트워크 내의 연결된 각 구성 요소에 기능을 어떻게 적용합니까?

나는 igraph 함수 clusters 또는 관련 메소드를 사용하려고 생각하고있었습니다. 그런 다음 클러스터에서 alpha.centrality() 및 bonpow()를 계산할 수 있습니까? 그런 다음 결과를 다시 원래 igraph 객체로 병합합니까? (또는 모든 꼭지점이있는 데이터 프레임)

저는 최선의 접근법에 대해 확신하지 못합니다. 사람들이 가지고있는 아이디어를 듣고 싶습니다. 많은 감사합니다 :)

+0

구조를 완전히 이해하지 못하더라도 각 노드가 list()의 요소라면 llply()를 사용하여 컴퓨터에서 조금 떨어진 곳에서 걸어 갈 수 있습니다 :) –

+0

@Brandon 각 _italic_connected component_italic_은 목록의 요소입니까? 내가 언급하고있는 함수가 각 노드가 속해있는 가장 큰 연결 구성 요소에서 계산되어야하기 때문입니다. –

답변

4

당신은 각 구성 요소에 함수 (alpha.centrality 또는 bonpow)를 실행하는 lapply를 사용 후, 연결된 구성 요소의 목록을 얻을 수 igraph에 decompose.graph 기능을 사용할 수 있습니다. decompose.graph을 실행 한 후 원래 그래프를 할당 해제하여 일부 메모리를 다시 청구하려고 할 수 있습니다.

+0

@Michael 머신에 여분의 코어가 있거나 여러 코어가있는 머신에 액세스하는 경우 SNOW 패키지의 parLapply를 사용하여 속도를 높이는 것이 좋습니다. – jkenney9

관련 문제