2016-09-06 4 views
1

저는 networkx를 약간 사용하고 있으며 사전에서 직접 Graph 오브젝트를 생성하는 방법은 매우 간단합니다 : 간단히 nx.Graph(my_dictionary). 이제 graph-tool을 사용하려고 시도하고 있으며 동일한 작업을 수행 할 수 없다는 것을 알았습니다.그래프 도구를 사전에서 작성하십시오.

Google 검색 중 네트워크 x 그래프에서 그래프 도구 그래프를 만드는 방법을 보여주는 this blog post이 나타났습니다. 그러나이 과정은 상당히 복잡하기 때문에 graph-tool을 사용할 때마다 집에서 양조 한 함수 networkx에 의존하고 싶지 않습니다.

제 사전을 반복하는 함수를 작성하는 것이 쉽다는 생각이 듭니다. 하지만 그 일을 시작하기 전에 아무도 이미 사전에 그래프 도구 파서를 작성하지 않았는지 확인하려고했습니다. 분명히 할 수있는 것처럼 보이지만 그래프 도구 문서에는 아무 것도 찾을 수 없습니다 ....

+0

귀하의 사전에는 무엇이 있습니까? – Peaceful

+0

에지가 시작된 각 정점이 키이며 해당 값은 에지가 가리키는 정점의 목록입니다. 그것은 networkx가 그것을 상자 밖으로 지원하기 때문에 꽤 명백한 형식으로 보인다. – TheChymera

+0

답변을 추가했습니다. – Peaceful

답변

2

이것은 매우 간단 해 보입니다.

In [3]: d # This dictionary contains the adjacency list 
Out[3]: {0: [1, 2], 1: [3]} 

당신은 그것의 에지리스트를 만들고 빈 그래프에 추가 할 수 있습니다 : 다음과 같이 사전 그래프의 adjacency list을 나타내는 (즉, 당신이 의견에 말을한다) 가정, 그것은 수행 할 수 있습니다 :

In [4]: edges = [(i, j) for i in d for j in d[i]] 

In [6]: G = gt.Graph(directed = False) 

In [7]: G.add_edge_list(edges) 

In [8]: G 
Out[8]: <Graph object, undirected, with 4 vertices and 3 edges at 0x7fdbc8257780> 

원하는 것은 무엇입니까.