programing

Java 그래프 알고리즘 라이브러리가 좋습니까?

prostudy 2022. 7. 26. 22:09
반응형

Java 그래프 알고리즘 라이브러리가 좋습니까?

Graph 알고리즘을 위한 Java 라이브러리를 사용해 본 경험이 있는 사람이 있습니까?JGraph를 사용해 본 결과, 구글에는 여러가지 종류가 있습니다.실제 제품 코드에서 성공적으로 사용되고 있거나 추천할 만한 제품이 있습니까?

명확히 하자면 그래프/차트를 작성하는 라이브러리가 아니라 그래프 알고리즘(최소 스패닝 트리, Kruskal 알고리즘 노드, 에지 등)에 도움이 되는 라이브러리를 찾고 있습니다.Java OO API에 적합한 알고리즘/데이터 구조가 있는 것이 이상적입니다.

JGraph 를 사용하고 있는 경우는, 알고리즘용으로 설계된 JGraphT 를 사용해 주세요.기능 중 하나는 JGraph 라이브러리를 사용한 시각화입니다.아직 개발은 됐지만 꽤 안정적이죠저는 얼마 전에 JGraphT 알고리즘의 복잡성을 분석했습니다.그 중 일부는 가장 빠르지 않지만, 독자적으로 구현할 예정이고 그래프를 표시할 필요가 있다면 이것이 최선의 선택일 수 있습니다.API를 사용하는 것이 너무 좋아서 그래프 작업을 하는 앱을 빨리 만들고 나중에 표시해야 했습니다.

요약:.

  • 데이터 구조 및 알고리즘에 더 관심이 있는 경우 JGraphT를 참조하십시오.
  • 시각화에 중점을 두는 경우는, JGraph 를 참조해 주세요.
  • Jung, yWorks, BFG는 사람들이 사용해 본 다른 것들입니다.
  • 프리퓨즈는 대부분 다시 써야 하기 때문에 거절할 수 없다.
  • 좋은 데이터 구조만 필요한 경우 Google Guava.
  • Apache Commons 그래프.현재 휴면 상태이지만 많은 알고리즘에 대한 구현을 제공합니다.구현된 알고리즘의 목록은 https://issues.apache.org/jira/browse/SANDBOX-458을 참조하십시오.또한 Jung, GraphT, Prefuse, jBPT와 비교합니다.

JGraphT에서 매우 단순하고 강력한 Java 그래프 라이브러리를 확인해 보십시오. 이 라이브러리는 매우 잘 만들어졌으며 혼동을 완화하기 위해 JGraph와는 다릅니다.샘플 코드:

UndirectedGraph<String, DefaultEdge> g =
        new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);

    String v1 = "v1";
    String v2 = "v2";
    String v3 = "v3";
    String v4 = "v4";

    // add the vertices
    g.addVertex(v1);
    g.addVertex(v2);
    g.addVertex(v3);
    g.addVertex(v4);

    // add edges to create a circuit
    g.addEdge(v1, v2);
    g.addEdge(v2, v3);
    g.addEdge(v3, v4);
    g.addEdge(v4, v1);

JUNG은 시각화에 적합한 옵션이며 랜덤 그래프 생성, 재배선 등을 위한 몇 가지 다른 메커니즘을 포함하여 사용 가능한 그래프 알고리즘의 꽤 좋은 세트가 있다.또한 일반적으로 필요에 따라 확장 및 적응이 매우 용이하다는 것을 알게 되었습니다.

Apache Commons는 Commons-Graph를 제공합니다.http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/에서 소스를 검사할 수 있습니다.샘플 API 사용도 SVN에 있습니다.구현된 알고리즘의 목록은 https://issues.apache.org/jira/browse/SANDBOX-458을 참조하십시오.또한 Jung, GraphT, Prefuse, jBPT와 비교합니다.

좋은 데이터 구조만 필요한 경우 Google Guava.

JGraphT는 많은 알고리즘이 구현되어 좋은 그래프 모델을 가진 그래프 라이브러리입니다.안녕하세요 예라이선스: LGPL+EPL.

JUNG2는 JGraphT와 유사한 데이터 구조를 가진 BSD 라이센스 라이브러리입니다.현재 JGraphT에 없는 레이아웃 알고리즘을 제공합니다.가장 최근의 커밋은 2010년 및 패키지입니다.hep.aida.*는 LGPL입니다(JUNG에 의해 Import콜트라이브러리 경유).따라서 ASF 및 ESF의 산하에 있는 프로젝트에서 JUNG을 사용할 수 없습니다.아마도 누군가는 github fork를 사용하여 그 의존성을 제거해야 할 것이다.Commit f4ca0cd는 마지막 CVS 커밋을 미러링하고 있습니다.현재 커밋으로 인해 시각화 기능이 제거된 것 같습니다.commit d0fb491c 에는,.gitignore.

프리퓨즈는 행렬 구조를 사용하여 그래프를 저장합니다. 이는 희박한 그래프에 대해 메모리 효율적이지 않습니다.라이선스: BSD

Eclipse Zest는 SWT와 독립적으로 사용할 수 있는 그래프 레이아웃 알고리즘을 내장했습니다.org.eclipse.zest.layouts 참조해 주세요.알고리즘입니다.사용된 그래프 구조는 Eclipse Draw2d하나입니다. 여기서 노드는 명시적 개체이며 Apache Commons Graph, JGraphT 및 JUNG2에서 발생하는 것처럼 Generics를 통해 주입되지 않습니다.

http://neo4j.org/은 많은 그래프 알고리즘을 포함하는 그래프 데이터베이스로 대부분의 인메모리 라이브러리보다 더 잘 확장됩니다.

대학 프로젝트에서 yWorks의 yFiles를 만지작거리다가 API가 꽤 좋다는 것을 알게 되었습니다.

청사진을 확인하세요.

Blueprint는 속성 그래프 데이터 모델의 인터페이스, 구현, 구성 및 테스트 스위트의 모음입니다.Blueprint는 JDBC와 유사하지만 그래프 데이터베이스용입니다.TinkerPop 오픈 소스 소프트웨어 스택 내에서 청사진은 다음을 위한 기반 기술 역할을 합니다.

파이프: 느긋한 데이터 흐름

Gremlin: 그래프 통과 언어

프레임: 객체에서 그래프로의 매퍼

용해로: 그래프 알고리즘 패키지

렉스터:그래프 서버

http://incubator.apache.org/hama/은 대량의 매트릭스 및 그래프 데이터를 위한 Hadoop의 분산된 과학 패키지입니다.

그래프 알고리즘에 관심이 있다면 JDSL(Java의 Data Structures Library)로 충분합니다.http://www.cs.brown.edu/cgc/jdsl/

시각화에 있어서, 우리 그룹은 프리퓨즈로 어느 정도 성공했습니다.건축용 바닥판과 버블 다이어그램에 대응할 수 있도록 확장했습니다만, 큰 불만이 없었습니다.또한 Flare라는 새로운 Flex 툴킷이 출시되어 매우 유사한 API를 사용합니다.

업데이트: 코멘트에는 동의하지만, 결과적으로 많은 커스텀 기능/사용 전 제한에 대한 대처가 이루어졌습니다.프리퓨즈를 사용하여 첫날부터 진척을 나타낼 수 있었기 때문에 처음부터 시작하는 것이 나았을 것이라고는 말할 수 없습니다.한편, 같은 것을 2차 실장하는 경우는, 요건을 보다 잘 이해할 수 있기 때문에, 프리퓨즈를 생략할 수도 있습니다.

Annas는 이해하기 쉬운 오픈 소스 그래프 패키지입니다.

http://annas.googlecode.com

그래프가 다음과 같이 단순하게 표현될 수 있다는 것을 확신하는 것도 좋습니다.

class Node {
   int value;
   List<Node> adj;
}

흥미로운 알고리즘을 직접 구현할 수 있습니다.그래프 연습/학습 세션 도중 이 질문에 답할 경우 고려해야 할 가장 좋은 lib입니다.;)

대부분의 일반적인 알고리즘에 인접 매트릭스를 사용할 수도 있습니다.

class SparseGraph {
  int[] nodeValues;
  List<Integer>[] edges;     
}

또는 일부 연산의 경우 매트릭스:

class DenseGraph {
  int[] nodeValues;
  int[][] edges;     
}

프로덕션 레디라고 불러도 될지 모르겠지만 jGABL이 있어요.

퍼포먼스가 필요하시면 Grph를 보시기 바랍니다.도서관은 프랑스 대학과 CNRS/Inria에서 개발되었습니다.

http://www.i3s.unice.fr/ ~호기 / grph /

프로젝트가 활성화되어 사후 대응적인 지원이 제공됩니다.

java에서의 명령어 그래프 알고리즘 실장은 여기에서 찾을 수 있습니다(교수님).Sedgewick 등: http://algs4.cs.princeton.edu/code/

나는 coursera에 관한 이 특별한 알고리즘 코스를 수강하는 동안 그들을 소개받았습니다(또한 교수님이 가르쳐 주셨습니다).Sedgewick) :

https://www.coursera.org/course/algs4partI

https://www.coursera.org/course/algs4partII

실제로 차트 작성 라이브러리를 찾고 노드/엣지 그래프 라이브러리를 찾고 있지 않다면 BFG(Big Faceless Graph Library)에서 스플리싱을 권장합니다.JFree Chart보다 훨씬 사용하기 쉽고, 보기 좋고, 실행 속도도 빠르고, 출력 옵션도 많아 비교가 되지 않습니다.

http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html의 JGraph

그래프(다이렉트 또는 비다이렉트)를 사용하기 위한 파워풀한 소프트웨어를 제공합니다.Graphivz 코드도 생성하며 그래픽 표현을 볼 수 있습니다.자체 코드 알고리즘을 패키지에 넣을 수 있습니다(예: 백트랙코드).패키지에는 다음과 같은 알고리즘이 있습니다.Dijkstra, 최소 경로 비용 역추적 등..

언급URL : https://stackoverflow.com/questions/51574/good-java-graph-algorithm-library

반응형