Pythonで作る二部グラフ – 完全ガイド

スポンサーリンク

本日のチュートリアルでは、2分割グラフとは何か、そしてそれをpythonプログラミング言語でnetworkxライブラリを使って実装する方法について理解します。

スポンサーリンク

二部グラフ入門

ここで,”a “はAに属し,”b “はBに属している.

一方の集合のノードは互いに接続できず、他方の集合のノードにのみ接続できる。

1
2
import networkx as nx
from networkx.algorithms import bipartite

二部グラフは、例えば、顧客の購買のモデル化に有用です。

この場合、ノードは顧客のパーティションと商品のパーティションの2つのグループに分けられる。

エッジは、消費者がある製品を購入したことを示す。

このシナリオでは、アイテムは互いにリンクできないのが道理です。

結局、製品は他の製品を購入できないのだから。

Pythonによるビットパートライトグラフの実装

プログラムの最初のステップは、モジュールやライブラリをコードにインポートすることです。

ここでは、基本的なnetworkxと、networkxからbipartiteをインポートする必要があります。

G = nx.Graph()

次に、空のグラフを作成して、後の節でノードとエッジを追加します。

1
2
G.add_nodes_from(['A1','A2','A3','A4'], bipartite=0)
G.add_nodes_from(['B1','B2','B3'],bipartite=1)

次にノード属性 “bipartite “を持つノードを追加します。

ここで、bipartite属性の値は、ノードのクラスを決定します。

その値が0であれば第1クラスに属し、1であれば第2クラスに属します。

G.add_edges_from([('A1', "B3"),('A4', "B1"),('A2', "B2"),('A2', "B3"),('A3', "B1")])

次に、対向するクラスのノード間のみにエッジを追加します。

エッジはいくつでも追加できますが、ここではいくつかのエッジを追加しました。

bipartite.is_bipartite(G)

また、グラフが二部構成かどうかは、以下の簡単なコードで確認することができます。

nx.draw_networkx(G, pos = nx.drawing.layout.bipartite_layout(G, ['A1','A2','A3','A4']), width = 2)

さて、以下のコードでグラフを簡単に可視化できます。

Bipartite Graph Example
Bipartite Graph Visualization

まとめ

Networkx を使って二部グラフを作成する方法を学びました。

このチュートリアルはいかがでしたか?いずれにせよ、以下のチュートリアルをご覧になることをお勧めします。

  1. NetworkXパッケージ – Pythonグラフライブラリ
  2. 非重み付けグラフのノード間距離の計算
  3. Pythonによるグラフ操作【簡単な例付き】 4.
  4. Pythonでグラフを実装する

お時間を割いていただきありがとうございました! 何か新しいことを学べたでしょうか!

タイトルとURLをコピーしました