2014-02-26 3 views
2

파이썬의 networkx 라이브러리를 사용하면 그래프 G에서 k- 코어를 추출 할 수 있습니다. 그러나 특정 k에 대해 모든 k- 코어를 추출 할 수 있습니까? 그래프 클러스터링을하고 싶습니다. 제 아이디어는 큰 k 값에 대해 k 코어를 추출하고 이와 같은 클러스터를 정의하는 것입니다.networkx를 사용하여 모든 k- 코어 추출하기

답변

4

NetworkX에서 사용되는 k 코어의 정의에는 k 코어가 연결될 필요가 없습니다. http://networkx.lanl.gov/reference/generated/networkx.algorithms.core.k_core.html

그래야 그래프에서 (아마도 연결이 끊어진) k 코어를 모두 얻을 수 있습니다. 연결된 구성 요소

In [1]: import networkx as nx 

In [2]: G = nx.Graph([(1,2),(1,3),(2,3)]) 

In [3]: G.add_edges_from([(10,20),(10,30),(20,30)]) 

In [4]: nx.k_core(G,k=2).edges() 
Out[4]: [(1, 2), (1, 3), (2, 3), (10, 20), (10, 30), (20, 30)] 

별도의 서브 그래프로를 원하는 경우에 당신이 찾을 수 있습니다 :

In [5]: graphs = nx.connected_component_subgraphs(nx.k_core(G,k=2)) 

In [6]: for g in graphs: 
    ...:  print g.edges() 
    ...:   
[(1, 2), (1, 3), (2, 3)] 
[(10, 20), (10, 30), (20, 30)] 
다음

2 분리 된 3 노드 전체 그래프의 그래프의 간단한 예입니다
관련 문제