Mímisbrunnr知恵の泉

← ネットワーク科学 一覧

🎓 レベル:標準 | 重要度:B(推奨)

📎 前提:次数・道・連結成分 | 関連:二部ネットワークと射影グラフの走査

要点(BLUF)

概念:制約が型を生む

一般のグラフに条件を課すと、扱いやすく性質の整った「型」が現れます。木・二部・完全・正則は、ネットワーク科学で最も頻出する4つの型。それぞれの制約が、計算の単純さ(木)やモデル化の対象(二部)、比較の基準(完全・正則)を決めます。

数式による定義と性質

木(tree):連結かつ閉路を持たないグラフ。次の3つは同値です。

    連結で閉路なし    m=n1 かつ連結    任意の2点間の道が一意\text{木} \iff \text{連結で閉路なし} \iff m = n-1 \text{ かつ連結} \iff \text{任意の2点間の道が一意}

エッジを1本でも足すと閉路ができ、1本でも引くと非連結になる「ギリギリ連結」な構造です。

二部グラフ(bipartite):ノード集合を V=XYV = X \cup YXY=X \cap Y = \varnothing)に分割でき、すべてのエッジが XXYY をまたぐもの。同値な特徴づけとして「奇数長の閉路を持たない」があります。これは2色で塗り分け可能という性質そのものです。

完全グラフ KnK_n:すべての異なる2ノードがエッジで結ばれたグラフ。エッジ数は

m=(n2)=n(n1)2m = \binom{n}{2} = \frac{n(n-1)}{2}

密度1の上限ケースで、密度の基準になります。

正則グラフ(regular):すべてのノードの次数が同じ値 kkkk-正則)。サイクル CnC_n は2-正則、完全グラフ KnK_n(n1)(n-1)-正則です。

コードで確認

import networkx as nx

# 木:パスグラフ P5
T = nx.path_graph(5)
print("P5は木か:", nx.is_tree(T),
      " エッジ数:", T.number_of_edges(), "(= n-1 =", T.number_of_nodes()-1, ")")

# 二部:完全二部グラフ K(2,3)
B = nx.complete_bipartite_graph(2, 3)
print("K(2,3)は二部か:", nx.is_bipartite(B), " エッジ数:", B.number_of_edges())

# 完全グラフ K5
K5 = nx.complete_graph(5)
print("K5のエッジ数:", K5.number_of_edges(), "(= n(n-1)/2 =", 5*4//2, ")")

# 正則:サイクル C6(全ノード次数2)
R = nx.cycle_graph(6)
degs = set(dict(R.degree()).values())
print("C6は正則か:", len(degs) == 1, " 次数:", degs)

実行結果:

P5は木か: True  エッジ数: 4 (= n-1 = 4 )
K(2,3)は二部か: True  エッジ数: 6
K5のエッジ数: 10 (= n(n-1)/2 = 10 )
C6は正則か: True  次数: {2}

木はエッジ数が n1n-1、完全グラフは n(n1)/2n(n-1)/2、正則グラフは全次数が一致 — 定義どおりの数値が出ています。

4つの型の関係

graph TD
    G["一般のグラフ"] --> T["木<br/>連結・閉路なし・m=n-1"]
    G --> B["二部グラフ<br/>奇数閉路なし・2色で塗れる"]
    G --> C["完全グラフ Kn<br/>全対が隣接・密度1"]
    G --> R["正則グラフ<br/>全次数が等しい"]
    C -.->|"Knは (n-1)-正則"| R

数式の直観的意味

木の m=n1m=n-1 は「nn 個のモノを過不足なく繋ぐ最小本数」です。nn 人を全員つなぐには最低 n1n-1 本の握手が要る。これより少ないと誰かが孤立し、多いと無駄な閉路ができる。二部グラフの「奇数閉路なし」は、塗り分けを試みると奇数の輪では必ず同色隣接が生じて破綻することから来ます。

⚠️ よくある誤解・落とし穴

対応シミュレーション

本文のコードがそのまま検証用です。二部グラフの射影は 二部ネットワークと射影 で扱います。

関連