2012-03-07 7 views
2

그래프 분석 라이브러리 또는 프레임 워크, C++ 또는 java에서 더 좋은 추천을 찾고 있습니다. 나는좋은 그래프/복잡한 네트워크 라이브러리

https://stackoverflow.com/questions/3010805/scalable-parallel-large-graph-analysis-library

이 웹 페이지는 몇 가지 가능한 솔루션을 제공, 일부 그래프 라이브러리를 발견 :

• C++ - 가장 실행 가능한 솔루션은 부스트 ​​그래프 라이브러리 및 병렬 부스트 그래프 도서관 것으로 보인다. 또한 Cray XMT와 같이 대규모 멀티 스레드 하드웨어 아키텍처에 더 기울이기는하지만 MTGL도보고 있습니다. 마지막으로, 고려 대상으로 LEMON을 추가했습니다. • C-igraph 및 SNAP (Small-World Network Analysis and Partitioning); 후자는 SMP 시스템에서 병렬 처리를 위해 OpenMP를 사용합니다. • Java - 아직 병렬 라이브러리를 발견하지 못했지만 JGraphT와 아마도 JUNG이 비 병렬 공간에서 경쟁자를 이끌고 있습니다. • 파이썬 - igraph와 NetworkX는 가장 견고한 옵션처럼 보입니다. 이전에는 BGL을위한 Python 바인딩이 있었지만, 이제는 지원되지 않습니다. 2005 년의 마지막 릴리스가 이제는 낡은 것처럼 보입니다.

는하지만 난 내 자신의 필요에 따라 사용해야하는 하나 확실하지 않다 :

  1. 좋은 데이터 구조 및 알고리즘. 복잡한 네트워크의 속성을 분석 할 수 있습니다.
  2. 확장 성 : 내가 수정하고 내 알고리즘을 구현 그래프/네트워크
  3. 캔 분석을 만 개 노드 자체에 의해 제조 할 수있다
  4. 복잡한 네트워크가 더 잘 될 것 찾아 내 시간을 절약하기 위해 모서리 수 진정한 복잡한 네트워크.

분석 기능 및 확장 성이 가장 중요한 문제입니다. 누구에게도 추천이 있습니까? 어떤 제안이 도움이 될 것입니다.

답변

0

저는 networkx를 사용했으며 Jung뿐 아니라 완벽하게 작동합니다. 귀하의 데이터가 위의 두 가지 작업보다 뛰어나지 만 내가 가지고있는 문제는 지속성이 부족하다는 것입니다 (XML 파일을 모두 저장할 수 있고 데이터베이스에 다운로드/다운로드 할 수 있지만 데이터베이스 분석을 제한하지 않습니다 메모리의 크기에 대한 그래프의 크기).

최근에는 neo4j (및 다양한 부가 기능)를 가지고 놀았습니다. 무제한으로 확장 할 수는 없지만 데이터가 300 억 개 미만이면 스토리지 엔진으로서 정말 빠르며 다른 코어 (또는 작업자 기계)를 사용하여 그래프를 병렬로 분석 할 수 있습니다. 테스트 문서가 많기 때문에 성능 테스트 방법이 많습니다. 테스트 케이스가 아니기 때문에 테스트 유형에 동의하지 않으므로 neo4j.org에서 무료로 다운로드하고 직접 판단 해보십시오.

+0

감사합니다 @learningJava, neo4j는 복잡한 네트워크 분석 기능이 부족한 것 같습니다. 내가 다른 도구와 결합 할 수 있을까? – Willwang

+0

나는 당신의 구체적인 문제가 무엇인지 정확히 모르겠다. 그러나 https://github.com/tinkerpop/gremlin/wiki를 보면 neo4j가 다양한 anaytics를 매우 빠르게하는 데 도움이되는 것으로 보인다. 나는 대부분의 데이터베이스가 그렇게하지 않는 큰 상호 관련 노드를 처리 할 때 효율성이 우수하기 때문에 neo4j를 좋아한다. 그리고 유감스럽게도 우리는 지금까지 주요 플레이어 인 것처럼 보인다. –

관련 문제