NetworkXで作成されたグラフ | |
| 原作者 | アリック・ハグバーグ ピーター・スワート ダン・シュルト |
|---|---|
| 開発者 | その他多数 |
| 初回リリース | 2005年4月11日[1] [2] |
| 安定版リリース | 3.4.2 [3]
/ 2024年10月21日 |
| リポジトリ |
|
| 書かれた | パイソン |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | ソフトウェアライブラリ |
| ライセンス | BSD-新ライセンス |
| Webサイト | ネットワークx.github.io |
NetworkXは、グラフとネットワークを研究するためのPythonライブラリです。NetworkX は、BSD-new ライセンスに基づいてリリースされたフリー ソフトウェアです。
歴史
NetworkXは2002年にAric A. Hagberg、Daniel A. Schult、Pieter J. Swartによって開発が開始されました。[4]これは、ロスアラモス国立研究所の米国エネルギー省国家核安全保障局によってサポートされています。
このパッケージは、より一般的な社会、生物、インフラシステムの構造とダイナミクスを探求しながら、病気の流行拡大を制御するためのデータと介入戦略を分析するためのツールを作成することを目的として作成されました。[4]
1998年にGuido van Rossumが書いたPythonのグラフ表現に関するエッセイ[5]に触発され、NetworkXは2004年のSciPy年次会議で初めて公開されました。2005年4月、NetworkXはオープンソースソフトウェアとして利用可能になりました。[1]
グラフ理論に焦点を当てたPythonパッケージは、igraph、graph-toolなど多数あります。2024年4月現在、NetworkXのダウンロード数は5000万回を超えており、[6] 2番目に人気のあるパッケージであるigraphのダウンロード数を50倍以上上回っています。[7]この大幅な採用率は、NetworkXの早期リリースとSciPyエコシステム内での継続的な進化に起因する可能性があります。
2008年、オープンソースの数学システムであるSageMathはNetworkXをパッケージに組み込み、より多くのグラフ作成アルゴリズムと関数のサポートを追加しました。[4]
特徴
- グラフと有向グラフのクラス。
- グラフを複数の形式間で変換します。
- ランダムなグラフを構築したり、段階的に構築したりする機能。
- サブグラフ、クリーク、k-コアを見つける機能。
- 隣接性、度合い、直径、半径、中心、媒介性などを調べます。
- 2D および 3D でネットワークを描画します。
サポートされているグラフの種類
概要
このコンテキストでは、グラフは頂点(ノード) とそれらの間の エッジ(接続) のコレクションを表します。NetworkX は、それぞれ異なるアプリケーションとシナリオに適した複数のタイプのグラフをサポートしています。
有向グラフ (DiGraph)
有向グラフ(DiGraph)は、有向エッジで接続されたノードで構成されます。有向グラフでは、エッジはノード間の流れや関係を示す方向を持ちます。[10]

無向グラフ(グラフ)
無向グラフはNetworkXでは単にグラフと呼ばれ、エッジに固有の方向がないグラフです。ノード間の接続は対称的であり、ノードAがノードBに接続されている場合、ノードBもノードAに接続されます。[11]

マルチグラフ
マルチグラフは、同じノードペア間に複数のエッジを許可します。言い換えれば、マルチグラフは2つのノード間に複数のエッジが存在できる並列エッジを許可します。 [12]

マルチディグラフ
MultiDiGraphsは、同じノードペア間に複数の有向エッジを許可する有向グラフです。MultiGraphsと同様に、MultiDiGraphsはノード間に複数の有向関係が存在するシナリオのモデリングを可能にします。[13]

可視化における課題
NetworkX はグラフの作成と分析のための強力なツールを提供しますが、複雑なグラフの視覚化は困難な場合があります。大規模なグラフや密に接続されたグラフを視覚化するには、NetworkX の機能を超えた特殊なテクニックや外部ライブラリが必要になる場合があります。
グラフレイアウト
NetworkX は、2 次元空間でグラフを視覚化するためのさまざまなレイアウトアルゴリズムを提供します。これらのレイアウト アルゴリズムは、グラフの視覚化におけるノードとエッジの位置を決定し、その構造と関係を効果的に明らかにすることを目的としています。
春のレイアウト
スプリングレイアウトは、物理システムにヒントを得た力指向レイアウトアルゴリズムです。エッジをバネ、ノードを荷電粒子として扱い、ノード間の引力と反発力をシミュレートします。この結果、強い接続を持つノードはより近くに配置され、弱い接続を持つノードはより離れたレイアウトになります。[14]
スペクトルレイアウト
スペクトルレイアウトは、グラフの隣接行列のスペクトル特性に基づいています。隣接行列の固有値と固有ベクトルを使用して、低次元空間にノードを配置します。スペクトルレイアウトはグラフのグローバル構造を強調する傾向があるため、クラスターやコミュニティを識別するのに役立ちます。[15]
円形レイアウト
円形レイアウトは、円の周りにノードを均等に配置し、エッジはそれらを結ぶ直線として描画されます。このレイアウトは、円に沿ったノードの配置がグラフの基礎となるトポロジを反映する、循環グラフまたは対称グラフを視覚化するのに特に適しています。[16]
シェルレイアウト
シェルレイアウトは、指定された中心からの距離に基づいて、ノードを同心円またはシェルに編成します。同じシェル内のノードは中心から同じ距離を持ち、隣接するシェルのノード間には放射状にエッジが描画されます。シェルレイアウトは、階層構造やツリー構造を視覚化するためによく使用されます。[17]
鎌田河合レイアウト
鎌田-河合レイアウトアルゴリズムは、ノードのペア間の距離に基づいてノードを配置し、システムの総エネルギーを最小化することを目的としています。グラフのトポロジとエッジの長さの両方を考慮し、幾何学的正確性と読みやすさを重視したレイアウトを実現します。[18]
使用法
NetworkX は、さまざまなレイアウト アルゴリズムをグラフに適用し、 Matplotlibまたはその他のプロット ライブラリを使用して結果を視覚化する関数を提供します。ユーザーは描画関数を呼び出すときに必要なレイアウト アルゴリズムを指定できるため、柔軟でカスタマイズ可能なグラフ視覚化が可能になります。
適合性
NetworkXは、1000万ノードと1億エッジを超えるグラフなど、現実世界の大規模なグラフでの操作に適しています。[説明が必要] [19]純粋なPythonの「辞書の辞書」データ構造に依存しているため、NetworkXは、ネットワークおよびソーシャルネットワーク分析のための合理的に効率的で、非常にスケーラブルで、移植性の高いフレームワークです。[4]
アプリケーション
NetworkXは使いやすく、習得しやすいように設計されており、ネットワーク分析のための強力で洗練されたツールです。コンピュータサイエンスやデータ分析の教育から大規模な科学的研究まで、さまざまなレベルで広く使用されています。[4]
NetworkXは、数学、物理学、生物学、コンピュータサイエンス、社会科学など、データをグラフやネットワークとして研究するあらゆる分野で応用されています。[20] NetworkXグラフのノードは、任意のデータを保持するように特化することができ、エッジに格納されるデータは任意であるため、さまざまな分野に広く適用できます。データからネットワークを読み取り、指定された品質のネットワークをランダムに生成することができます。これにより、大量のネットワークにわたる変化を調査するために使用できます。[4]下の図は、大量のネットワークにわたってバリエーションを作成および変更するソフトウェアの能力の簡単な例を示しています。

NetworkXには多くのネットワークおよびグラフ解析アルゴリズムがあり、幅広いデータ分析に役立ちます。その重要な例の1つは、最短経路アルゴリズムのさまざまなオプションです。次のアルゴリズムはNetworkXに含まれており、グラフの頂点数(V)と辺数(E)に応じて時間の計算量が異なります。[21]
- ダイクストラ: O((V+E) log V)
- ベルマンフォード: O(V * E)
- ゴールドバーグ-ラジック: O(V * E)
- ジョンソン:O(V^2 log(V) + VE)
- フロイド・ウォーシャル:O(V^3)
- A* : O((V+E) log V)
NetworkXグラフアルゴリズムの使用例は、2018年の研究で見ることができます。この研究では、家畜生産ネットワークの伝染病の蔓延に対する耐性を分析するために使用されました。この研究では、コンピューターモデルを使用して、畜産業のすべての役割を考慮しながら、アメリカの豚生産ネットワーク全体の伝染病の傾向を予測および調査しました。この研究では、モデルが感染を導入し、その拡散をシミュレートする際に、NetworkXを使用して次数、最短経路、クラスタリング、およびkコアに関する情報を見つけました。次に、これを使用して、どのネットワークが伝染病の影響を最も受けやすいかを判断しました。[22]
ネットワークの作成と分析に加えて、NetworkXには多くの視覚化機能もあります。2Dビジュアル用のMatplotlibとGraphViz、 3Dビジュアル用のVTKとUbiGraphへのフックを提供します。[4]これにより、このパッケージはネットワーク分析とデータを簡単にデモンストレーションおよびレポートするのに役立ち、視覚処理のためのネットワークの簡素化が可能になります。
統合
NetworkXはSageMathに統合されている。[23]
参照
参考文献
- ^ ab NetworkX 初公開リリース (NX-0.2)、発信者: Aric Hagberg、日付: 2005 年 4 月 12 日、Python-announce-list メーリング リスト
- ^ NetworkX 初期リリース、NX-0.2、hagberg – 2005-04-11、プロジェクト情報 – NetworkX、登録日: 2004-10-21、SourceForge.net
- ^ 「リリース 3.4.2」。2024年10月21日。 2024年10月22日閲覧。
- ^ abcdefg Aric A. Hagberg、Daniel A. Schult、Pieter J. Swart、「NetworkX を使用したネットワーク構造、ダイナミクス、および機能の探索」、第 7 回 Python in Science カンファレンス (SciPy 2008) の議事録、G. Varoquaux、T. Vaught、J. Millman (編)、pp. 11–15。
- ^ van Rossum, Guido (1998 年 2 月)。「Python パターン - グラフの実装」。Python。
- ^ "networkx". PyPi 統計. 2024年4月.
- ^ "igraph". PyPi 統計. 2024年4月.
- ^ abcd 「Old Release Log」。NetworkX。2020年8月22日。 2024年4月24日閲覧。
- ^ “NetworkX 3.0”. NetworkX . 2023年1月7日. 2024年4月24日閲覧。
- ^ 「DiGraph—自己ループ付き有向グラフ — NetworkX 3.3 ドキュメント」。networkx.org 。2024年 4 月 24 日閲覧。
- ^ 「グラフ - 自己ループを持つ無向グラフ - NetworkX 3.3 ドキュメント」。networkx.org 。 2024 年 4 月 24 日閲覧。
- ^ 「MultiGraph—自己ループと平行エッジを持つ無向グラフ — NetworkX 3.3 ドキュメント」。networkx.org 。2024年 4 月 24 日閲覧。
- ^ 「MultiDiGraph—自己ループと平行エッジを持つ有向グラフ — NetworkX 3.3 ドキュメント」。networkx.org 。2024年 4 月 24 日閲覧。
- ^ 「spring_layout — NetworkX 3.3 ドキュメント」。networkx.org . 2024年5月2日閲覧。
- ^ 「spectral_layout — NetworkX 3.3 ドキュメント」。networkx.org 。2024年5月2日閲覧。
- ^ 「circular_layout — NetworkX 3.3 ドキュメント」。networkx.org 。2024年5月2日閲覧。
- ^ 「shell_layout — NetworkX 3.3 ドキュメント」。networkx.org . 2024年5月2日閲覧。
- ^ 「kamada_kawai_layout — NetworkX 3.3 ドキュメント」。networkx.org . 2024年5月2日閲覧。
- ^ Aric Hagberg、Drew Conway、「Python プログラミング言語を使用したソーシャル ネットワークのハッキング (モジュール II - NetworkX で SNA を実行する理由)」、Sunbelt 2010: International Network for Social Network Analysis。
- ^ Hadaj, P.; Strzałka, D.; Nowak, M. (2022年10月19日). 「電力網システム障害のモデリングにおけるPLANSとNetworkXの使用」. Sci Rep . 12 (1): 17445. doi :10.1038/s41598-022-22268-z. PMC 9581963. PMID 36261496 .
- ^ 「最短パス — NetworkX 3.3 ドキュメント」。networkx.org 。2024年 4 月 29 日閲覧。
- ^ Wiltshire, Serge W. (2018年3月9日). 「エージェントベースモデルを用いた生産者特化が家畜生産ネットワークの疫学的回復力に与える影響の評価」. PLOS ONE . 13 (3): e0194013. doi : 10.1371/journal.pone.0194013 . PMC 5844541. PMID 29522574 .
- ^ 「SageMath 数学ソフトウェア システム - Sage」。
外部リンク
- 公式サイト: networkx.github.io
- NetworkX ディスカッション グループ
- 既存のグラフ理論ソフトウェアの調査
- StackOverflow の NetworkX
- GitHubの networkx
