
Networkit ist eine Open-Source-Toolsuite für die Hochleistungsnetzwerkanalyse. Ziel ist es, Tools für die Analyse großer Netzwerke in der Größe von Tausenden bis Milliarden Kanten bereitzustellen. Zu diesem Zweck implementiert es effiziente Graph -Algorithmen, von denen viele parallel zur Verwendung von Multicore -Architekturen sind. Diese sollen Standardmessungen der Netzwerkanalyse berechnen. Networkit konzentriert sich auf Skalierbarkeit und Vollständigkeit. Networkit ist außerdem ein Testbett für Algorithmus Engineering und enthält neuartige Algorithmen aus kürzlich veröffentlichten Forschungen (siehe Liste der Veröffentlichungen unten).
Networkit ist ein Python -Modul. Hochleistungsalgorithmen werden in C ++ geschrieben und Python über die Cython Toolchain ausgesetzt. Python wiederum gibt uns die Möglichkeit, interaktiv zu arbeiten, und eine reichhaltige Umgebung von Tools für die Datenanalyse und wissenschaftliches Computing. Darüber hinaus kann der Kern von Networkit bei Bedarf als native Bibliothek erstellt und verwendet werden.
Sie benötigen die folgende Software, um Networkit als Python -Paket zu installieren:
apt-get install python3-devdnf install python3-develpip3 install cmake )pip3 install cython ) Um Networkit zu verwenden, können Sie es entweder über Paketmanager installieren oder das Python -Modul aus der Quelle erstellen.
Während die neueste Version im Allgemeinen für alle Paketmanager verfügbar ist, unterscheiden sich die Anzahl der älteren herunterladbaren Versionen.
pip3 install [--user] networkit
conda config --add channels conda-forge
conda install networkit [-c conda-forge]
brew install networkit
spack install py-networkit
Weitere systemspezifische Informationen zur Installation von Networkit unter Linux, MacOS (sowohl Intel als auch M1) und Windows-Systemen finden Sie hier.
git clone https://github.com/networkit/networkit networkit
cd networkit
python3 setup.py build_ext [-jX]
pip3 install -e .
Das Skript ruft cmake und ninja ( make As Fallback) an, um Networkit als Bibliothek zu kompilieren, die Erweiterungen zu erstellen und in den oberen Ordner zu kopieren. Standardmäßig wird Networkit mit der Anzahl der verfügbaren Kerne im optimierten Modus erstellt. Es ist möglich, dass die Option hinzugefügt wird -jN Die Anzahl der für die Kompilierung verwendeten Threads.
Um einen Überblick zu erhalten und sich über die verschiedenen Funktionen/Klassen von Networkit zu informieren, sehen Sie sich unseren interaktiven Notebooks-Abschnitt an, insbesondere das Networkit-Userguide. Hinweis: Um die berechnete Ausgabe aus den Notebooks anzuzeigen und zu bearbeiten, wird empfohlen, Jupyter Notebook zu verwenden. Dies erfordert die vorherige Installation von Networkit. Sie sollten das wirklich überprüfen, bevor Sie mit der Arbeit an Ihrer Netzwerkanalyse beginnen.
Wir bieten auch eine Ordnerin unserer Notizbücher. Um auf diesen Dienst zuzugreifen, können Sie entweder oben auf das Abzeichen klicken oder diesen Link folgen. Haftungsausschluss: Aufgrund des Wiederaufbaus des zugrunde liegenden Bildes kann es einige Zeit dauern, bis Ihre Bindemittelinstanz zur Verwendung bereit ist.
Wenn Sie nur kurz sehen möchten, wie Networkit verwendet wird, liefert das folgende Beispiel einen Climpse. Hier erzeugen wir einen zufälligen hyperbolischen Graphen mit 100K -Knoten und berechnen ihre Gemeinschaften mit der PLM -Methode:
>>> import networkit as nk
>>> g = nk.generators.HyperbolicGenerator(1e5).generate()
>>> communities = nk.community.detectCommunities(g, inspect=True)
PLM(balanced,pc,turbo) detected communities in 0.14577102661132812 [s]
solution properties:
------------------- -----------
# communities 4536
min community size 1
max community size 2790
avg. community size 22.0459
modularity 0.987243
------------------- -----------
Falls Sie nur mit dem C ++ - Core von Networkit zusammenarbeiten möchten, können Sie es entweder über Paketmanager installieren oder aus der Quelle erstellen.
conda config --add channels conda-forge
conda install libnetworkit [-c conda-forge]
brew install libnetworkit
spack install libnetworkit
Wir empfehlen CMAKE und Ihr bevorzugter Build -System zum Aufbau des C ++ - Teils von Networkit.
Die folgende Beschreibung zeigt, wie CMake verwendet wird, um nur den C ++ - Kern zu erstellen:
Zunächst müssen Sie ein Build -Verzeichnis erstellen und ändern: (in diesem Fall namens build )
mkdir build
cd build
Rufen Sie dann CMake an, um Dateien für das make -System zu generieren, und geben Sie das Verzeichnis der Root CMakeLists.txt -Datei (z. B. .. ) an. Danach wird die make aufgerufen, um den Build -Prozess zu starten:
cmake ..
make -jX
Um die Kompilierung mit Make a Multi -Core -Maschine zu beschleunigen, können Sie -jX anhängen, wobei X die Anzahl der zu kompilierten Threads bezeichnet.
In diesem Absatz wird erläutert, wie die Networkit Core C ++ - Bibliothek verwendet wird, falls sie aus der Quelle erstellt wurde. Um es zu verwenden, wenn Sie es über Paketmanager installiert haben, beziehen Sie sich am besten auf die offizielle Dokumentation (Brew, Conda, Spack).
Um die vorherige kompilierte Networkit -Bibliothek zu verwenden, müssen Sie sie installieren und während des Zusammenstellens Ihres Projekts verknüpfen. Verwenden Sie diese Anweisungen, um Networkit in /usr/local zu kompilieren und zu installieren:
cmake ..
make -jX install
Sobald Networkit installiert wurde, können Sie wie folgt Anweisungen in Ihrer C ++-Anwendung verwenden:
#include <networkit/graph/Graph.hpp>
Sie können Ihre Quelle wie folgt kompilieren:
g++ my_file.cpp -lnetworkit
Das Erstellen und Ausführen von Networkit -Unit -Tests ist nicht obligatorisch. Als Entwickler möchten Sie jedoch möglicherweise Unit -Tests für Ihren Code schreiben und ausführen. Wenn Sie Probleme mit Networkit haben, sollten Sie überprüfen, ob Networkit ordnungsgemäß ausgeführt wird. Die Unit -Tests können nur aus einem Klon oder einer Kopie des Repositorys und nicht aus einer PIP -Installation durchgeführt werden. Um die Unit -Tests durchzuführen, müssen Sie sie zuerst kompilieren. Dies erfolgt durch Einstellen des CMAKE NETWORKI_BUILD_TESTS -Flags ON :
cmake -DNETWORKIT_BUILD_TESTS=ON ..
Unit -Tests werden unter Verwendung von GTEST -Makros wie TEST_F(CentralityGTest, testBetweennessCentrality) implementiert. Einzelne Tests können durchgeführt werden mit:
./networkit_tests --gtest_filter=CentralityGTest.testBetweennessCentrality
Zusätzlich kann man die Pegel der Ausgänge der Protokolle angeben, indem man --loglevel <log_level> ; Unterstützte Protokollstufen sind: TRACE , DEBUG , INFO , WARN , ERROR und FATAL .
Sanitärer sind großartige Tools, um Ihren Code zu debuggen. Networkit bietet zusätzliche CMAKE -Flags, um Adress-, Leck- und undefinierte Desinfektionsmittel zu ermöglichen. Um Ihren Code mit Desinfektionsmittel zu kompilieren, setzen Sie die CMAKE NETWORKIT_WITH_SANITIZERS um entweder address oder leak :
cmake -DNETWORKIT_WITH_SANITIZERS=leak ..
Durch das Festlegen dieser Flagge an address wird Ihr Code mit der address und den undefined Desinfektionsmitteln zusammengestellt. Wenn Sie es auf leak setzen, werden auch das leak hinzugefügt.
Die neueste Version der Dokumentation finden Sie online.
Bei Fragen zu Networkit schauen Sie sich unseren Ausgabenbereich an und prüfen Sie, ob bereits eine offene Diskussion vorliegt. Wenn Sie sich nicht gerne ein neues Problem eröffnen. Um über dieses Projekt auf dem Laufenden zu bleiben, abonnieren Sie unsere Mailingliste.
Wir ermutigen Beiträge zum Networkit -Quellcode. Anweisungen finden Sie im Entwicklungsleitfaden. Für Unterstützung wenden Sie sich bitte an die Mailingliste.
Die Liste der Mitwirkenden finden Sie auf der Seite "Networkit -Website Credits".
Die Programmquelle enthält:
Der Quellcode dieses Programms wird unter der MIT -Lizenz veröffentlicht. Wir bitten Sie, uns zu zitieren, wenn Sie diesen Code in Ihrem Projekt verwenden (vgl. Der Abschnitt Veröffentlichungen unten und insbesondere im technischen Bericht). Feedback ist auch willkommen.
Auf der Seite "Networkit Publications" werden die Publikationen in Networkit als Toolkit, auf Algorithmen in Networkit und einfach Networkit verwendet. Wir bitten Sie, die entsprechenden zu zitieren, wenn Sie Networkit für Ihre eigene Forschung nützlich empfanden.