Loading [MathJax]/jax/output/CommonHTML/jax.js
スポンサーリンク

「連結、グラフ距離、組み合わせグラフ、同型なグラフ」【幾何学の基礎シリーズ】グラフ理論編 その3

グラフ理論

本記事の内容

本記事は、連結、グラフ理論、ループ辺、多重辺、組み合わせグラフについて解説する記事です。

本記事を読むにあたり、「グラフとは何か?」「路」について知っている必要があるため、以下の記事も合わせてご覧ください。

↓「グラフとは何か?」の記事

↓「路」についての記事

連結

連結は本シリーズの最初にサラッと述べた通り、シンプルなコンセプトです。

「連結」を一言で。

一言で述べれば

グラフに対して、どの頂点からどの頂点へも辺をたどって移動できるときに、そのグラフは連結であるという。

ということです。
このコンセプトは前回解説した路でもって記述されます。

ちなみに、路とは以下でした。

路(path)

グラフX=(V,E)において、有向辺の列c=(e1,,en)o(ei)=t(ei+1)(i=1,,n1) を満たすとき、c長さ(length)がn(path)という。cの長さを、|c|により表し、o(e1)c始点t(en)を終点といい、それぞれo(c)t(c)で表す。

詳しくは【幾何学の基礎シリーズ】グラフ理論編 その2を御覧ください。

連結って何ですか?

では、「連結とは何か?」ということについて答えようと思います。

連結

グラフX=(V,E)の任意の2頂点x,yVに対して、o(c)=xt(c)=yとなる路cが存在するとき、X連結(connected)という。

グラフの連結とはまさに、「どんな2点も”繋がっている”」という状態で、離れ小島が無い、ということです。

ちょっとした注意

連結を「どんな2点も”繋がっている”こと」と表現すると、「じゃあ、連結でないグラフは点だけ離れ小島のようになっているグラフということだな?」となるかもしれませんが、無向グラフについてはそれでOKです。
しかし、有向グラフについてはそうもいきません(後の記事で解説します)。

有向グラフでは、下図のように離れ小島がなくとも有向辺の向きによっては連結でない場合が考えられます。

連結のちょっとした性質

ここで、連結のちょっとした性質を紹介します。

命題1.

連結なグラフX=(V,E)において、空でない部分集合AVが次の性質を満たすとする。 o(e)A  t(e)A このとき、AVである。故にA=Vである。

命題1.の証明

集合AVは空集合ではないので、ある要素xAが存在します。
グラフX=(V,E)は連結なので、任意のyVに対して、
o(c)=x,t(c)=y
を満たす路c=(e1,,en)が存在します。
t(c)=yですので、t(en)=yと書き直すことが出来ます。
このとき、y=t(en)Aが示されれば、証明完了です。

任意のi{1,,n}に対してy=t(ei)Aであることを数学的帰納法で証明します。
i=1のときは、o(e1)=xAです。
仮定から、
o(e)A  t(e)A
ですので、t(e1)Aです。
故に、i=1のときは成り立ちます。

t(ei)Aと仮定しましょう。
このとき、o(ei+1)=t(ei)Aだから、これも
o(e)A  t(e)A
により、t(ei+1)Aです。
従って、全てのiに対してt(ei+1)Aです。

命題1.の証明終わり

命題1.は連結なグラフの性質のうちの1つで、頂点の部分集合を取ってきたとき、その部分集合内で点が全て辺で繋がっていれば、その部分集合のとり方は元々のグラフの頂点の集合を取るしか無い、ということです。

グラフ距離

次に、グラフ距離について説明します。

距離関数

まずは、一般に「距離とは何か?」ということについてサラッとお話します。

距離関数、距離空間

集合Vにおいて、次の性質を満たすd:V×VRV上の距離関数(distance function, metric)という。
任意のx,y,zVに対して
  1. d(x,y)0であり、d(x,y)=0x=y
  2. d(x,y)=d(y,x)
  3. d(x,y)+d(y,z)d(x,z)(三角不等式)
である。
距離関数の与えられた集合を距離空間(metric space)という。

「何を言っとるだ?」という感じかもしれませんが、最も馴染み深いと思われるユークリッド距離で考えるとイメージが湧きやすいと思います。

  • d(x,y)0)(d(x,y)=0x=y」という条件について
    これは、「距離は必ず0以上の値で、距離が0な点同士は同じ点しかありえない。」ということを表しています。
    「距離が負なんてことはありえないし、距離が0なのに点が違うってありえないでしょ」という直感に対応しています。
  • d(x,y)=d(y,x)」という条件について
    これはそのまんまです。
    xyの距離とyxの距離は同じだよね?」という直感に対応しています。
    東京駅から新宿駅までの距離と新宿駅から東京駅の距離は同じ、ということです。
  • d(x,y)+d(y,z)d(x,z)(三角不等式)」という条件について
    これは、三角形で考えると分かりやすいと思います。
    要するに、「三角形の2辺の長さの和は他の1辺の長さより大きい」ということです。
三角不等式を三角形で考えると、こうなる。

ちなみに、Rnの距離関数(つまりd:Rn×RnR)は、ユークリッド距離だけではありません。
先程の3つの条件を満たしさえすれば、距離と呼べる、という話だからです。
実際、d:R2×R2R(x1,y1), (x2,y2)R2に対して
d(x,y)=|x1x2|+|y1y2|
と定めても、dは先の3つの条件を満たします(このdをマンハッタン距離といいます)。

余談(完備距離空間) 距離空間に付随する重要な概念として、完備距離空間というものがあります。
実数の連続性のシリーズで述べましたが、実数においてはコーシー列が収束します。
実は、一般にはコーシー列が収束するとは限りません(コーシー列は必ず収束します)。
実数の集合はユークリッド距離でもって距離空間となります。
このようにコーシー列が収束するような距離空間を完備距離空間といいます。
ちなみに、コーシー列が収束するように無理やり集合を”拡張”することを完備化といいますが、有理数の集合を完備化した集合が実数の集合です。
これは実は実数の連続性を担保しているともいえる事実です。

グラフ距離

連結なグラフに対しても距離を考えることが出来ます。
最もよく使われる(と筆者は思っています)がグラフ距離と呼ばれるものです。

グラフ距離

連結なグラフX=(V,E)に対して、V上の距離関数d:V×VR
  1. xyVのとき
  2. o(c)=xt(c)=yとなる路c全体を考え、その長さ|c|の最小値としてd(x,y)を定める。
  3. x=yVのとき
  4. d(x,y)=0と定める。
として定める。この距離関数dグラフ距離と呼ぶ。

要するに、最短経路です。

※注意※これは一般のグラフに対する距離ではなく、連結なグラフに対する距離ということです。

距離関数の節でも述べましたが、距離関数というのは1つの集合に対して1つしか存在しないわけでは有りません。
ちょっと限定的になってはしまいますが、グラフに対する距離としてハミルトン距離という距離もあります。

さて、「グラフ距離を”定める”って言ったって、本当にそれって距離関数なんですか?」となると思います。
そこで、先のグラフ距離が距離関数であることを証明します。

命題2.

グラフ距離は距離関数である。

命題2.の証明

d(x,y)0)(d(x,y)=0x=yであることの証明

xyVのとき、|c|xyをつなぐ辺の個数なので正の値です。
d(x,y)|c|の最小値なので、d(x,y)>0です。

x=yVのときはd(x,y)=0と定めました。
故に、d(x,y)0です。

d(x,y)=d(y,x)の証明

xyをつなぐ辺の個数の最小値とyxとをつなぐ辺の個数の最小値は一致しているためd(x,y)=d(y,x)です。

d(x,y)+d(y,z)d(x,z)(三角不等式)

xyVのとき、d(x,y)+d(y,z)<d(x,z)とすると、少なくとも1点、yの他にxと点zをつなぐ路に点が存在することになります。
しかし、これは路の長さの最小性に矛盾します。

x=yのとき、d(x,y)+d(y,z)=0+d(y,z)=d(y,z)=d(x,z)により成り立ちます。
x=zのとき、d(x,y)+d(y,z)0=d(x,z)により成り立ちます。
y=zのときはx=zと同じです。

命題2.の証明終わり

組み合わせグラフ

本記事の最後に組み合わせグラフについて解説します。

ループ辺と多重辺

簡単です。
辺の始点と終点が一致しているときに、その辺をループ辺といいます。
また、二点間に複数の辺が存在するときに、そのグラフは多重辺を持つと言われます。

ループ辺、多重辺

X=(V,E)をグラフとする。
  1. ループ辺
  2. eEの始点と終点が一致するとき、eEループ辺(loop edge)と呼ぶ。
  3. 多重辺
  4. o(e1)=o(e2)かつt(e1)=t(e2)を満たすような相異なる2辺e1,e2Eが存在するとき、X多重辺(multiple edges)を持つという。

組み合わせグラフ

簡単です。
ループ辺も多重辺も持たないようなグラフを組み合わせグラフといいます。

組み合わせグラフ

ループ辺と多重辺を持たないグラフを組み合わせグラフという。

モデルとして利用する多くのグラフは有限で連結な組み合わせグラフです。

グラフを現象を表すモデルとして扱う場合、多くは有限で連結な組み合わせグラフ(これを助詞を除いて有限連結な組み合わせグラフといいます)です。

例えば、インターネットのネットワークでは、いくら端末が多くてもそれらは有限です。
世界中の端末を集めたとて、数は膨大ですが高々有限の個数しか存在しません。
当然、それらの端末をつなぐケーブルも有限個しか存在しません。
故にインターネットのネットワークのモデルは有限グラフです。
また、互いにケーブルで結ばれていない2つの部分に分けられるネットワークは考える必要がないので、対応するグラフは連結として良いわけです。
ループ辺に当たるケーブルは情報伝達において意味をなさないし、多重辺に当たるケーブルは1つのケーブルとして考えても差し支えありません。
故に、モデルになるグラフというのは組み合わせグラフということになります。

同型なグラフ

同型なグラフというのは「本質的には同じグラフ同士のこと」です。
“本質的に” とはどういうことかと言うと、それはグラフ理論の着眼点を考えると直ちに分かります。

前々回に

グラフ理論は、点と点の繋がり方にのみ着目した分野である。

という話をしました。
つまり、一見形が異なろうが、点と点の繋がり方が同じであれば、同じですよね、という話です。

これを数学的に書くと以下です。

グラフ同型

X1=(V1,E1)X2=(V2,E2)をグラフとする。このとき、写像 fV:V1V2,fE:E1E2 が存在して、任意のeE1に対して
  • o(fE(e))=fV(o(e))
  • t(fE(e))=fV(t(e))
  • ¯fE(e)=fE(ˉe)
  • が成り立つことをいう。

これらの条件はまさに2つのグラフの点の繋がり方が同じであることを表しています。
実際、

  • o(fE(e))=fV(o(e))について
    これは、eE1に対応するX2の辺fE(e)E2の始点は、eE1の始点に対応するX2の始点と一致している、ということを述べています。
  • t(fE(e))=fV(t(e))について
    これは、eE1に対応するX2の辺fE(e)E2の終点は、eE1の終点に対応するX2の終点と一致している、ということを述べています。
  • ¯fE(e)=fE(ˉe)について
    これは、X1の各辺eE1のに対応するX2の辺fE(e)の逆向きの辺は、X1の各辺eE1の逆向きの辺と対応するX2の辺fE(ˉe)と一致している、ということを表しています。

皆様のコメントを下さい!

いきなり全く関係ない話をします。
筆者は漫画をそこそこ読むのですが、中でもバイブルと言えるのはBLEACHです。
もう大好きです。
何回読み直したか分かりません。
来月の10日から千年血戦篇のアニメが始まりますし、ワクワクです。

皆様のバイブル的な漫画は何ですか?是非コメントで教えて下さい!

今回は、連結、グラフ距離、組み合わせグラフ、同型なグラフについて解説しました。
それぞれ

  • 連結:グラフのどの2点も路で繋がっている状態。
  • グラフ距離:グラフの2点間の最短経路。
  • 組み合わせグラフ:ループ辺も多重辺も無いグラフ。
  • 同型なグラフ:見てくれは違えど、点と点との繋がり方が一致しているグラフ同士。

です。

次回は有向グラフと隣接行列①ということで、それぞれを導入します。

乞うご期待!
質問、コメントなどお待ちしております!
どんな些細なことでも構いませんし、「定理〇〇の△△が分からない!」などいただければ全てお答えします!
お問い合わせの内容にもよりますが、ご質問はおおよそ3日以内にお答えします。
もし直ちに回答が欲しければその旨もコメントでお知らせください。直ちに対応いたします。

この記事の内容をより詳しく知りたい方は以下のリンクの本を参照してください!

コメントをする

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