2017-12-29 60 views
0

그래프 속성이있는 igraph 그래프를 저장하고 검색하려고합니다. 특히, 나는 두 개의 터미널 그래프를 가지고 있으며, 소스와 싱크를 그래프 속성으로 저장하므로 일정 시간에 그 그래프를 검색 할 수 있습니다. 버텍스는 특정 순서가 아니다 (예를 들어, 첫 번째 정점은 소스이고 마지막 정점은 싱크 임).igraph 그래프 속성 저장/검색

설명서를 검색했지만 그래프 속성 저장/검색을 지원하는 형식이 없음을 알 수 없습니다. 내가 놓친 게 있니?

필자의 단점은 부울 소스/싱크 정점 속성을 사용하는 것이지만, 더 많은 공간이 필요하고 올바른 정점을 검색하는 데 선형 시간이 필요하다는 것입니다.

답변

1

GraphML은 전체 그래프, 개별 정점 또는 개별 가장자리에 첨부 할 수있는 숫자 및 문자열 속성을 지원합니다 (실제로는 더 복잡한 것들을 지원하지만 igraph의 GraphML 구현은 숫자 및 문자열 속성으로 제한됩니다). 따라서 Graph.write_graphml()Graph.Read_GraphML()을 사용할 수 있습니다. 또한 파이썬의 pickle 모듈 (예 : pickle.dump()pickle.load())을 사용하여 igraph 그래프를 저장하면 모든 그래프/정점/가장자리 속성을 다시 얻을 수 있습니다 (복잡한 파이썬 개체조차도) - 유일한 catch는 pickle 형식이 파이썬 세계 외부의 다른 툴과 상호 운용 될 수 없습니다.

+0

대단한 답변입니다. 저를 올바른 길로 인도했습니다. GraphML은 꼭지점 개체를 가리키는 특성을 가지고 있기 때문에 특성을 캡처하지 못했습니다. 피클을 시도 할 때 "정점 개체를 피클 할 수 없기 때문에"TypeError도 발생했습니다. (이유는 모르겠지만 어쨌든 ...) 따라서, 버텍스 객체보다는 그래프 속성에 소스/싱크 인덱스 (즉, 정수)를 직접 저장하여 해결했습니다. 다시 말하지만, 좋은 반응. – Tim