Dobra Biblioteka algorytmów grafów Java? [zamknięte]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 6 lat temu .

Odpowiedzi na to pytanie są wysiłkiem społeczności. Edytuj istniejące odpowiedzi, aby poprawić ten post. Obecnie nie przyjmuje nowych odpowiedzi ani interakcji.

Czy ktoś miał dobre doświadczenia z jakimiś bibliotekami Javy dla algorytmów Grafowych. Próbowałem JGraph i znalazłem go ok, a w google jest wiele różnych. Czy są jakieś, że ludzie są rzeczywiście z powodzeniem używać w kod produkcji lub polecam?

Dla wyjaśnienia, nie szukam biblioteki, która produkuje wykresy/wykresy, szukam takiej, która pomaga w algorytmach Grafowych, np. minimalnym spanning drzewo, węzły algorytmu Kruskala, krawędzie itp. Najlepiej taki z dobrymi algorytmami/strukturami danych w ładnym Java oo API.

Author: Nick Fortescue , 2008-09-09

18 answers

Jeśli używałeś JGraph, powinieneś spróbować JGraphT , który jest przeznaczony dla algorytmów. Jedną z jego cech jest wizualizacja za pomocą biblioteki JGraph. Jest wciąż rozwinięta, ale dość stabilna. Jakiś czas temu przeanalizowałem złożoność algorytmów JGraphT. Niektóre z nich nie są najszybsze, ale jeśli masz zamiar wdrożyć je na własną rękę i trzeba wyświetlić wykres, to może być najlepszym wyborem. Bardzo podobało mi się korzystanie z jego API, kiedy szybko musiałem napisać aplikację pracował nad grafem i wyświetlał go później.

 110
Author: bibix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-03 01:41:31

Podsumowanie:

 65
Author: mansu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-26 06:07:47

Sprawdź JGraphT dla bardzo prostej i potężnej biblioteki grafów Java, która jest całkiem dobrze wykonana i, aby rozwiać wszelkie nieporozumienia, jest inna niż JGraph. Niektóre przykładowy kod :

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);
 41
Author: Joe Liversedge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-28 20:20:42

JUNG jest dobrym rozwiązaniem do wizualizacji, a także ma dość dobry zestaw dostępnych algorytmów grafowych, w tym kilka różnych mechanizmów tworzenia losowych grafów, przeróbek itp. Okazało się również, że jest to na ogół dość łatwe do rozszerzenia i dostosowania w razie potrzeby.

 37
Author: Kai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-09 11:36:03

Apache Commons oferuje commons-graph . Pod http://svn.apache.org/viewvc/commons/sandbox/graph/trunk / można sprawdzić źródło. Przykładowe użycie API jest również w SVN . Zobacz https://issues.apache.org/jira/browse/SANDBOX-458 dla listy zaimplementowanych algorytmów, również porównywanych z Jung, Grapht, Prefuse, jBPT

Google Guava jeśli potrzebujesz tylko dobrych danych.

JGraphT jest biblioteką grafów z wieloma Algorytmy zaimplementowane i posiadające (w moim oppinionie) dobry model grafu. Przykład Helloworld . Licencja: LGPL + EPL.

Jung2 jest również biblioteką licencjonowaną przez BSD o strukturze danych podobnej do JGraphT. Oferuje algorytmy layoutingu, których obecnie brakuje w JGraphT. Najnowszy commit pochodzi z 2010 roku, a Pakiety hep.aida.* to LGPL (za pośrednictwem biblioteki colt , która jest importowana przez JUNG ). Uniemożliwia to wykorzystanie JUNG w projektach pod parasol ASF i EFS. Może należy użyć widelca github i usunąć tę zależność. Commit f4ca0cd jest odzwierciedleniem ostatniego commita CVS. Obecne zmiany wydają się usuwać funkcje wizualizacji. Commit d0fb491c dodaje .gitignore.

Prefuse przechowuje wykresy za pomocą struktury macierzy, która nie jest wydajna w pamięci dla rzadkich Wykresów. Licencja: BSD

Eclipse Zest posiada wbudowane algorytmy układu graficznego, które można wykorzystać niezależnie od SWT. Zobacz org.zaćmienie.zest.układy.algorytmy . Używana struktura grafu jest jedną z Eclipse Draw2d, gdzie węzły są obiektami jawnymi i nie są wstrzykiwane przez Generyki (jak to ma miejsce w Apache Commons Graph, JGraphT i JUNG2).

 14
Author: koppor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-26 11:20:29

Http://neo4j.org/ to grafowa baza danych, która zawiera wiele algorytmów grafowych i skaluje się lepiej niż większość bibliotek w pamięci.

 12
Author: Jonathan Hendler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-24 09:12:30

W projekcie uniwersyteckim bawiłem się z yFiles przez yWorks i okazało się, że ma całkiem dobre API.

 10
Author: Turismo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-09 11:20:13

Zobacz :

Blueprints jest zbiorem interfejsów, implementacji, wdrożeń i zestawów testowych dla modelu danych wykresu właściwości. Blueprints jest analogiczny do JDBC, ale dla baz danych grafów. W ramach stosu otwartego oprogramowania TinkerPop, Blueprints służy jako podstawowa technologia dla:

Pipes : lazy, data flow framework

Gremlin : a graph traversal language

Ramki : An object-to-graph mapper

Piec : Pakiet algorytmów grafowych

Rexster : Serwer graficzny

 9
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-16 10:00:41

Http://incubator.apache.org/hama / jest rozproszonym pakietem naukowym na Hadoop dla masywnych danych macierzy i wykresów.

 7
Author: xyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-16 16:23:13

JDSL (Data Structures Library in Java) powinien być wystarczająco dobry, jeśli lubisz algorytmy grafowe - http://www.cs.brown.edu/cgc/jdsl/

 7
Author: mr.sverrir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-06 14:09:36

Dla wizualizacji nasza grupa odniosła pewien sukces z prefuse . Rozszerzyliśmy go o architektoniczne płyty podłogowe i diagramy bąbelkowe i nie narzekało zbytnio. Mają też nowy zestaw narzędzi Flex o nazwie Flare, który używa bardzo podobnego API.

UPDATE: Muszę się zgodzić z komentarzem, skończyło się na pisaniu wielu niestandardowych funkcjonalności / pracy wokół ograniczeń prefuse. Nie mogę powiedzieć, że zaczynanie od zera byłoby lepsze, ponieważ byliśmy w stanie Pokaż postępy od pierwszego dnia, używając prefuse. Z drugiej strony, gdybyśmy robili drugą implementację tych samych rzeczy, mógłbym pominąć prefuse, ponieważ lepiej zrozumielibyśmy wymagania.

 5
Author: Jacob Rigby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 01:34:56

Spróbuj Annas its open source graph package, który jest łatwy do opanowania

Http://annas.googlecode.com

 5
Author: Sam Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-07 10:44:12

Dobrze jest też być przekonanym, że Wykres można przedstawić tak prosto jak:

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

I zaimplementować większość algorytmów, które sam uznasz za interesujące. Jeśli wpadniesz na to pytanie w środku jakiejś sesji treningowej / edukacyjnej na wykresach, to jest to najlepszy lib do rozważenia. ;)

Możesz również preferować macierz adjacency dla większości popularnych algorytmów:

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

Lub macierz dla niektórych operacji:

class DenseGraph {
  int[] nodeValues;
  int[][] edges;     
}
 5
Author: Snicolas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-25 08:23:28

Nie wiem, czy nazwałbym to przygotowaniem do produkcji, ale jest jGABL .

 4
Author: Hank Gay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-22 19:00:20

Jeśli potrzebujesz wydajności, możesz spojrzeć na Grph. Biblioteka jest rozwijana na Uniwersytecie francuskim i CNRS / Inria.

Http://www.i3s.unice.fr / ~ hogie / grph /

Projekt jest aktywny i reaktywne wsparcie jest zapewnione!

 4
Author: Luc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 13:07:04

Implementacje algorytmu grafu w Javie można znaleźć tutaj (przez prof. Sedgewick et al.): http://algs4.cs.princeton.edu/code/

Zostałem im przedstawiony podczas uczestnictwa w tych wyjątkowych kursach algorytmów na courserze (również prowadzonych przez prof. Sedgewicka):

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

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

 3
Author: Norbert Madarász,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-19 14:47:33

Jeśli rzeczywiście szukasz bibliotek Wykresów, a nie bibliotek Wykresów węzłów/krawędzi, sugerowałbym skorzystanie z Big Faceless Graph library (BFG). Jest o wiele łatwiejszy w użyciu niż JFreeChart, wygląda ładniej, działa szybciej, ma więcej opcji wyjściowych, naprawdę bez porównania.

 0
Author: Jacob Rigby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-09 11:22:27

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

Zapewnia potężne oprogramowanie do pracy z grafami(bezpośredni lub bezpośredni). Generuje również kod Graphivz, można zobaczyć reprezentacje graficzne. Możesz umieścić własne algorytmy kodu w pakage, na przykład: backtracking code. Pakiet zawiera kilka algorytmów: Dijkstra, backtracking minimun koszt ścieżki, ect..

 -1
Author: Bob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-05 11:27:01