Dobra Biblioteka algorytmów grafów Java? [zamknięte]
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.
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.
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:
- JGraphT Jeśli bardziej interesują Cię struktury danych i algorytmy.
- JGraph jeśli głównym celem jest wizualizacja.
- Jung, yWorks i BFG to inne rzeczy, których ludzie próbowali używać.
- Prefuse jest Nie Nie, ponieważ trzeba przepisać większość z nich.
- Google Guava jeśli potrzebujesz tylko dobrych danych.
- Apache Commons Graph . Obecnie uśpiony, ale zapewnia implementacje dla wielu algorytmów. Zobacz https://issues.apache.org/jira/browse/SANDBOX-458 jbpt to algorytmy, które są implementowane przez Jung 'a, Grapht' a, Prefuse 'a, Jbpt' a, Jbpt 'a, Jbpt' a, Jbpt 'a, Jbpt' a, Jbpt ' a.]}
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);
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.
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).
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.
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.
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
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
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.
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/
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.
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
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;
}
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 .
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!
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):
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.
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..
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