講義の概略 グラフの次数とその性質 次数:ある頂点と隣接する別の頂点の数 H26 グラフ理論 グラフを特徴付けるパラメータ グラフの次数:次数の最大値 ―第3回― グラフの次数と隣接行列 グラフを計算機上で表現するための技法 隣接行列 推移閉包 到達可能性 1 1.3: グラフの次数と隣接行列 定理1.5: グラフ G に対して, が成り立つ. 定義(グラフの次数) グラフ G の点 v∈V(G) に隣接する辺の数 d(v) を, v の次数という.d(v) = 0 のとき v を孤立点, d(v) = 1 のとき端点という.Gの最大次数,最小次数を それぞれ Δ(G),δ(G) で表す. 次数が偶数の点を偶点,奇数の点を奇点という. 奇点 定理の直感的意味:次数の総和は 辺数の2倍になっている. レ d(u) レ 辺をちょうど2回ずつ 数えている d(v) 証明:任意の頂点 u,v に対して,(u,v) が G の辺 であれば,d(u) と d(v) が1度ずつ数えられている ので,左辺の総和は辺のちょうど2倍に等しい. 端点 Δ(G)=4 δ(G)=1 2 偶点 3 4 1 系1.6:任意のグラフの奇点の個数は偶数. ※ 系とはある定理から直ちに導かれる性質 証明:グラフの奇点の集合を Vo とし, 偶点の集合を Ve とすると,定理1.3より, Σ v ∈V(G) d(v) = Σ v∈Vo d(v) + Σ v∈Ve d(v) = 2|E(G)| となる. 中段第2項が偶数なので,|Vo| は偶数である. ※補足: Σv∈ Vo d(v) + 偶数 = 偶数なので Σv∈ Vo d(v) は偶数でなければならず |Vo| (奇点の数)も偶数 定義(正則グラフ): すべての点の次数が等しいグラフを正則グラフ という.正則グラフの次数が r であるとき, r-正則グラフという. K5 (完全グラフ)や K3,3 (完全2部グラフ)は それぞれ5-正則, 3-正則グラフである. K5 K3,3 5 6 ※次数と正則グラフの関係 定理1.8:任意のグラフ G に対して,G を誘導部分 グラフとして含むΔ(G)-正則グラフ H が存在する. 定理:任意のグラフ G に対して,G を誘導部分 グラフとして含むΔ(G)-正則グラフ H が存在する. 証明:H の構成法を示す.G が正則ならば, H = G とすればよい.そうでないならば, G のコピーを2つ作り,それらを Gx,Gy とし, d(v) <Δ(G) であるような Gx と Gy の対応する 頂点同士を辺で結ぶ.これをG1とする. 誘導部分グラフの例: この場合 G は H の誘導部分グラフであるが, HはΔ(G)-正則 (すなわち2-正則) グラフではない. 1 G は H の誘導部分グラフ 4 1 2 3 Δ(G)=3 G のコピー 2 3 G H 7 8 2 証明(つづき):G1 が正則ならば,G は G1 の誘導部分 グラフであるので,H=G1 とする.そうでないならばこの 操作を続けていくと, Δ(G)未満の次数が1ずつ増加する ので,有限回で条件を満たす H = Gk が得られる. G Δ(G)-正則グラフ H の構成例 4 G2 2 G1 1 4 1 3 2 3 G G1 = H 9 定理1.9:δ(G) ≥ 2 (最小次数が2以上) ならば G には閉路が存在する. 証明:G の任意の歩道※下図参照 を (v1,…,vk) とする. このときある頂点が2回以上含まれていればは閉路 を含みこの定理が成り立つので, v1,…,vk は1度ずつ 含まれるとする. 10 証明(つづき): vk は端点ではないので,接続している点 vk+1 がある. これが v1,…,vk のどれかと等しいなら閉路となり, そうでないならばこの操作を続けること,頂点の個数は 有限なので,いつかは同じ点が2回現れるため, 結局 G は閉路を含まなければならない. G G v1 vi ≠ vj (i ≠ j ) v2 v1 v2 vk vk+1 vk+2 vk+m =vk vk Gの歩道 11 いつかは以前現れた頂点が再び現れる 12 3 隣接行列の応用例:PageRank1) によるウェブ 1) Google ページのランク付け 隣接行列とその応用 隣接行列:グラフを計算機上で表現可能にする ための有効な概念. v4 v1 e1 v2 e6 e5 e3 e2 v3 v1 v2 v3 v4 各ノードから出ている辺が,重要度を均等に 分配していると考える(確率遷移行列は隣接行列の正規化) ※単純グラフならば対角成分は常に0 1/2 C リンクする側とされる側が興味を共有する構造 体をウェブコミュニティーという Computer vendors 興味を共有する グループ An lim B n n C n 1 2 An 1 2 Bn 0 C n 6/5 3 / 5 ... 6/5 1 1 1 / 2 1 3/2 1 14 HITSアルゴリズム2) によるウェブコミュニティの発見 ― ウェブコミュニティーの発見 ― PC vendors B 0 0 1 13 もうひとつの重要な応用: Yahoo! An 1 1 2 B 0 n 1 C 1 2 n 1 A 隣接行列 無向(多重)グラフ ページAは重要度をAとCに等しく分配... 1/2 v1 v2 v3 v4 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 ハブとオーソリティーの概念 オーソリティー:(特定のトピックについての情報が豊富なページ) ハブ(高いオーソリティーへのリンクが豊富なページ) 相互補完的に計算される概念 IBM 高いハブ度 高いオーソリティー度 TOSHIBA FUJITSU wikipedia周辺のコミュニティ http://ja.wikipedia.org/wiki/ 興味の対象 典型的なウェブコミュニティー 15 2) Jon M. Kleinberg: Authoritative Sources in a Hyperlinked Environment. 16 J. ACM 46(5): 604-632 (1999). 2006 Rolf Nevanlinna Prize 4 隣接行列の表現 ハブとオーソリティーのランキング 初期値 グラフを計算機上でどのように実現するか 1 1 2 2 3 3 4 無向グラフ(多重辺を含む場合)の隣接行列A(G) v1 1 1 この結果を用いて ハブのランクを更新 1 3 2 3 2 2 1 2 4 3 4 3 v2 更新されたオーソリティー v4 v3 G 0 1 A(G)= 0 0 1 1 1 0 0 1 0 1 0 0 1 0 この計算を繰り返す 17 定理1.10:グラフ G の頂点集合を V(G)={v1,…,vp} とし,A(G) を G の隣接行列とする.行列A (n) (G) の (i,j)成分 a (n)ij は,長さ n の vi-vj 歩道の総数に等しい. v1 v2 v4 v3 G 0 1 A(G)= 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 1 A2(G)= 1 0 1 3 1 1 1 1 2 0 0 1 0 1 v3からv2までの長さ2の歩道 の数はちょうど1つある 19 18 証明:帰納法で示す.n =1 のときはあきらか. A(G)n = (aijn) に対して,(i,j) 成分aijnが 長さ n の vi-vj 歩道の本数であると仮定する. A(G)n+1 = A(G)n・A(G) より, A(G)n+1 の (i,j) 成分 aijn+1 は, ... (1.2) となる. 一方,長さ n+1 の歩道は,長さ n の vi-vk 歩道に 辺 (vk,vj) を加えることにより得られる. よって帰納法の仮定と(1.2)式よりn+1のときも正しい. したがって定理が成立する. 20 5 系1.11 (3)の補足 系1.11: 定理1.7よりつぎが成り立つ. (1)グラフ G がループを持たないとき,A(G)2 の成分 a(2)ij は,長さ2の vi-vj 道(i ≠ j)の本数 6 7 3 1 A3(G) = 5 12 1 4 の対角成分は何を意味するか? 0 1 0 6 8 6 3 6 (2) G が単純グラフのとき, a(2)ii=degG vi (3) G がループを持たないとき, G の3角形の個数 は x z ※ ただし,tr(A)=a11+・・・+ann y 頂点xから長さ3でxに返る場合の数は? (この数がA3(G)の対角成分に並ぶ) 21 グラフの他の表現(計算機でどのよう vbxzay に実現するか) v000010 隣接行列の利点 単純な構造(実装しやすい) 辺の追加・削除が最も高速 隣接リストによる表現 b101001 x100000 z000010 a000100 y100000 配列とリストの先頭へのポインタで表現 配列のi番目が、ノードiで定義されている辺を順 に指している 利点:サイズが辺数とほぼ同じ(効率的)&追加・ 削除が容易 欠点:二つのノードに辺があるかを v a 調べるのに時間がかかることがある b v x 二つのノードに辺があるかが直ちにわかる 22 欠点 無駄が多い(ほとんどの値はゼロ) 大きなグラフを行列で表すのは困難 23 b から y へ辺があることを 知るためには、リストの最後まで みなければわからない x z a y v a z v y 24 6 辺リストによる表現 隣接行列のもう一つの応用 配列に辺を並べて表現 ノードを整数で表し、整数の組み(i,j)を配列に格 納する 利点:圧縮を考えなければ最も小さい表現&追加 が容易 欠点:辺のチェックをするために,常にすべての 値をみなければならない(最も効率が悪い)&削除 が困難 5 6 3 G 3 5 1 4 2 6 2 G 010010 001000 010000 000001 000100 000010 Gの隣接行列A(G) 26 隣接行列による推移閉包の表現 有向グラフGでxからyへ到達可能なら辺(x,y)を加えたグラフを Gの推移閉包という 推移閉包が求まれば, 任意のx,yに対してその到達可能性を高 速に計算できる 1 4 25 有向グラフの推移閉包 5 1 v a b v b x b y x v z a a z y v 一組で辺を表す 有向グラフG(辺に向きのあるグラフ)を考える 辺は向きがある方向にしかたどることが出来ない 頂点xからyへ道があるとき, xからyへ到達可能であるという 6 3 5 1 4 2 Gの推移閉包を表すグラフの隣接行列をGの推移閉 包行列といい,A*(G)と表す xからyへ到達可能 ⇔ A*(G)[x][y]=1 4 6 2 Gの推移閉包 27 3 Gの推移閉包 111111 011000 011000 000111 000111 000111 Gの推移閉包行列 A*(G) 28 7 推移閉包行列の計算 初期行列からの計算 初期行列:隣接行列の対角成分を1に変更する(自分自身に は到達できる) 推移閉包行列:初期行列からどう計算すればよいか? 010010 001000 010000 000001 000100 000010 110010 011000 011000 000101 000110 000011 111111 011000 011000 000111 000111 000111 Gの隣接行列 初期行列 Gの推移閉包 以下の基本アイディアを各A(G)[x][y]で行う A(G)[x][y]=1 ⇒ xからyへ到達可能であることを次々 に拡張していく z A(G)[x][z]=0 x A(G)[x][y]=1 29 z A(G)[x][z]=1 x A(G)[y][z]=1 y A(G)[x][y]=1 A(G)[y][z]=1 y 30 推移閉包を計算するアルゴリズム Warshallのアルゴリズム 入力Gの隣接行列 A(G)[n][n] 出力Gの推移閉包行列 A*(G) for y=1,...,n for x=1,...,n if A(G)[x][y] = = 1 for z=1,...,n if A(G)[y][z] = = 1, then A(G)[x][z] = 1 return A*(G) =A(G) 31 8
© Copyright 2025 ExpyDoc