2012-03-29 3 views
7

큰 그래프에서 알고리즘을 실행하는 것과 관련된 프로젝트를 진행 중입니다. 가장 큰 두 개는 약 300k와 600k 버텍스를 가지고 있습니다 (상당히 희소합니다). 그 그래프를 처리 할 수있는 자바 라이브러리를 찾고 싶습니다. 사용하는 알고리즘 중 하나가 그래프를 트리로 분해하는 것과 관련하여 크고 작은 크기의 트리도 처리 할 수 ​​있기를 바랍니다. 이상적으로 라이브러리에는 폭 넓은 첫 번째 검색과 Dijkstra 또는 다른 최단 경로 알고리즘도 포함됩니다. another question을 바탕으로 대형 (최대 600k 정점) 그래프를 저장하고 처리하기위한 Java 라이브러리

, 나는 몇 가지 라이브러리 ( JGraphT, JUNG, jdsl, yworks)에서 찾아 봤는데하지만 나는 그들이 현실적으로 처리 할 수있는 얼마나 많은 정점을 찾는 힘든 시간을 보내고 있습니다. 그들의 문서를 보면 내가 찾을 수있는 것은 JUNG FAQ의 비트로, 150k 버텍스의 그래프를 쉽게 처리 할 수 ​​있다고 말했고 이는 여전히 내 그래프보다 약간 작습니다 ... 나는 여기 누군가가 사용한 것을 기대하고 있습니다. 또는 더 많은 라이브러리를 가지고 있으며, 필요한 그래프 크기를 처리 할 수 ​​있는지 또는 더 나은 다른 라이브러리가 있는지 말해 줄 수 있습니다.

레코드의 경우 시각화 도구가 필요하지 않습니다. 이것은 엄격하게 데이터 구조의 그래프와 트리를 표현하고 그에 대한 알고리즘을 실행하는 것에 관한 것입니다.

배경 모든 사람이 정말로 신경 쓰는 경우 : 연구 논문에 설명 된 알고리즘을 구현하고 가능한 한 최대한 실험을 종이에서 실행해야합니다. 내가 사용할 종이와 데이터 세트는 here입니다. 교수님은 알고리즘/데이터 구조의 시간/공간 복잡성을 알 수있는 한 찾을 수있는 라이브러리를 사용할 수 있다고 말합니다.

+1

[JGraphT] (http://jgrapht-users.107614.n3.nabble.com/Max-limit-of-vertices-td1194057.html)에 대한 정보가 있습니다. 분명히이 그래프를 아무 문제없이 처리해야합니다 ... – Maltiriel

답변

3

귀하의 문제에 대한 좋은 해결책이 될 수있는 그래픽 데이터베이스 인 Neo4J을 살펴보십시오.

+0

고마워, 지금 이걸보고있다. 이러한 데이터 세트를 확실히 처리 할 수 ​​있습니다. – Maltiriel

+1

저는 메모리얼 라이브러리 중 하나를 시도 할 것입니다. 그게 종이에서 행해진 것입니다. 그래서 저는 교수님이 더 좋게 생각하고 있다고 생각합니다.하지만 작동하지 않는다면 Neo4J와 함께 갈 것입니다. 사용하기 쉽고 필요한 알고리즘이 모두 있습니다. 제안 해 주셔서 감사합니다! – Maltiriel

3

체크 아웃 JGraph도 마찬가지입니다. 그러나 시각화를 지향합니다.

또한 어쩌면 Apache Hama - 매트릭스, 그래프 및 네트워크 알고리즘과 같은 거대한 과학 계산을위한 분산 컴퓨팅 프레임 워크 일 수 있습니다.

Annas 또한 관심을 수 있습니다 - 그래프 이론 분야의 개발자 및 연구자를 위해 만들어진 오픈 소스 자바 프레임 워크 - 등

+0

흠. 내가 보았던 정보는 적합하지 않은 것처럼 보입니다. 사용자 설명서에서 예를 들어 스윙과 관련하여 시작합니다. 저는 시각화 작업을 전혀 망쳐 놓고 싶지 않습니다. 그럴 수 있니, 아시나요? – Maltiriel

+0

@Maltiriel, 당신은 잠재적으로 그래프 모델 독립형으로 작업 할 수 있습니다. 그러나 그래프를 시각화 할 필요가 없다면 과도한 것입니다. – tenorsax

+0

추가 제안 해 주셔서 감사합니다. 하마는 내가하고있는 일을하기에는 조금 낫지 만, 안나 스는 매우 재미있어 보인다. 나는 이것보다 먼저 내 수색을 한 번도 보지 못했다. – Maltiriel

1

Cassovary https://github.com/twitter/cassovary -project 찾는 AI, 경로, 분산 시스템, 트위터에서 수 Scala (따라서 JVM)를 사용하여 매우 큰 그래프를 메모리에서 처리합니다.

또는 GraphChi의 자바 버전은 디스크를 사용하여, 더 큰 그래프를 처리 할 수 ​​있습니다 : 그들은 빠른 랜덤 액세스를 필요로

http://code.google.com/p/graphchi-java/ 그러나 GraphChi는 정확한 최단 경로 유형의 알고리즘 효율적으로하지 않습니다.

관련 문제