狠狠撸

狠狠撸Share a Scribd company logo
グラフ理論入門 1
physics0523
おしながき
?そもそもグラフ理論って?
?木とは?
?木の重心のおなはし
?重心分解のおはなし
- アルカンの数え上げ
?一筆書きのおなはし
そもそも「グラフ理論」って?
実物を見たほうがはやい
グラフ理論とは?
グラフ理論とは?
?前ページにあったような、ものとものとの繋がりを表す図を考え
る学問
?単にグラフ理論と言ってもけっこういろいろある
身の回りのグラフの例
?路線図、推移図、フローチャート、構造式(化学)…
基本用語解説
ざっくり大きく分けて「向き無しの無向グラフ」「向き付きの有向
グラフ」の2通り
具体的な使い方
駅1から駅2までの距離が6→無向辺を張ればよい!
AさんがBさんのことが好き→有向辺を張ればよい!
木とは?
連結(=全体が繋がっている)かつ閉路(=ループ)を持たない(無
向)グラフ(Wikipediaより)
木の特徴(Wikipediaより)
n 個の点からなるグラフ T について次は同値である。
T は木である
T に閉路はなく、 n ? 1 本の辺を持つ
T は連結で、 n ? 1 本の辺を持つ
T は連結で、すべての辺は橋である
T の任意の2点を結ぶ道がちょうど1つある
T に閉路はないが、新しい辺をつけ加えると閉路が必ず1つで
きる
「わ~、頭痛い…」
率直な感想として多分皆さんこうなるので、
やさしい にほんごで せつめい します
木とは?
例えば、6個の頂点を繋ぐために最小限必要な辺は5本
なので、実際に「N頂点をN-1本の辺で繋いだ無向グラフ」=「木」
木の特徴(Wikipediaより)をやさしい日本語に
N 個の点からなるグラフ T について次は同値である。
「T は木である」
→当たり前。そもそも議論の前提。
「T に閉路はなく、 n ? 1 本の辺を持つ」
閉路:「N重結合 = 多重辺」 か 「環 = ループ」
→木は「N頂点、N-1辺からなるループのない無向グラフ」
木の特徴(Wikipediaより)をやさしい日本語に
「T は連結で、 n ? 1 本の辺を持つ」
→木は「N頂点をN-1本の辺で繋いだ無向グラフ」
「T は連結で、すべての辺は橋である」
→どの1つの辺を消したとしても、
木は2つに分割されてしまう
木の特徴(Wikipediaより)をやさしい日本語に
「T の任意の2点を結ぶ道がちょうど1つある」
→どの2頂点間を移動するにも、
(同じ辺を2度通らなければ)道が1通りに定まる
「T に閉路はないが、新しい辺をつけ加えると
閉路が必ず1つできる」
→もし1つ辺を追加したら、そこにちょうど1つループができる
不飽和度の計算
この木の話を応用すると、不飽和度計算の意味が理解できる
まず、飽和~は木構造をしている(不飽和度0)ことに注意
具体的にどう求めるか?
辺の数: H + 2*O + 3*N + 4*C = x とおく
頂点の数: H + O + N + C = y とおく
(辺の数は両側の原子でカウントされていることに注意)
x = 2(y-1) ならグラフは木なので不飽和度は0
そうでない場合、不飽和度=余る辺の数は (x - 2(y-1)) / 2
(これが整数にならない場合は化合物として不適切)
これを変形すると (2*C + N - H + 2) / 2 (いつもの)が求まる
木の重心のおはなし
木には以下の性質を満たす「重心」がある
?その頂点(と繋がる辺)を削除したとき、バラバラになったグラフ
の頂点数が全て元のグラフの半分以下になる
なお、木には必ず重心が最低1つ、高々2つある
(注意:「高々~ある」は「多くとも~ない」と同じことを表します)
参考、一部画像引用元:
https://qiita.com/drken/items/4b4c3f1824339b090202
具体例
同じグラフで重心がもうひとつ
重心が高々2つであることの証明
頂点数 N の木において、☆を付けた2頂点が重心だったとする
(雲の部分は何らかの木が繋がってると思ってください)
図のA,Bの領域で頂点数が N/2 以下である必要がある
このとき☆の頂点が辺で隣接する必要がある
(∵☆の間に頂点が挟まっていると、
A+Bの頂点数ののべの総和がNを超える
なので、鳩の巣原理より、詰む)
重心が高々2つであることの証明
どう頑張ってもA+Bの頂点数の総和はN以上になってしまう
☆のついた頂点がともに重心となるためには、A,Bの領域に含
まれる頂点は共にN/2でなければならない
さらに、このとき、雲の部分に新たに重心ができる余地はない
これで証明完了
(重心が2つある場合、それを繋ぐ辺で切ると
サイズN/2のパーツができることもわかる)
重心が必ず存在することの証明
図証!これの言語化むずかしい!!頑張って言語化します
以下のようなアルゴリズムを検討する
1. 適当に根をとり、v={根}とする
2. 今見てる頂点の下側に繋がるグラフを調べ、部分木(下側に
繋がる木)のサイズが全てN/2以下なら終了
そうでなければ、一番大きい部分木方向に下って、そこを新たな
vとする
この 2. を繰り返す
なぜこれで重心の存在性が示せるか?
図に立ち返って説明します
今p→vと下ってきたとする。すると、「pの時点で止まらなかった」
という情報から、vより上側の頂点数の合計がN/2以下であるこ
とがわかる
さらに、このアルゴリズムは一番下に
たどり着くまでどこかしらで止まる
よって存在証明ができた
重心分解のおはなし
木を重心でグラフを(再帰的に)分解するテクニック
頂点の数をNとすると、再帰の深さは高々log2Nになる
これを使ってアルカンの構造異性体を数え上げよう!!
グラフの問題に言い換えると以下の通り
炭素鎖だけ考えればいいので、
「各頂点から出ている辺が高々4本である木を考える」
参考:https://qiita.com/miwo/items/2632b16ffd30ba63b705
狈≦4の时くらいまでは、顽张ります
アルキル基の场合の数も求めておく
ここから重心分解~!!!
N=5のとき: 重心+残った4頂点で(最大)4部分木
但し、重心に繋げられるのは、 N/2 頂点以下の部分木
[2,2,0,0] , [2,1,1,0] , [1,1,1,1]
それぞれのアルキル基は一意に定まっているので、合計3通り
(炭素数≦2なら(部分)木の形は1通りなので)
次も重心分解で
N=6、一般にNが偶数の場合では場合分けが必要
(i)重心が1つの場合
N=5の時とほぼ同じだが、少し注意が必要
「偶数頂点かつ重心が1つ」?「重心にくっついている部分木の
頂点は N/2 未満」
N=6の場合、3頂点の部分木はくっつかない
残りの5頂点を振り分ける[2,2,1,0] , [2,1,1,1] の2通り
N=6の場合
(ii) 重心が2つの場合
サイズ N/2 のアルキル基を2つ組み合わせればよい
サイズ3のアルキル基を2つ組み合わせるが、注意が必要
「サイズ3のアルキル基」には2通り考えられるが、この2つは重
複組み合わせで数える必要がある
2通りで2つ選ぶ→2H2 = 3C2 = 3 通り
(i)(ii) 合わせて5通り
课题1:狈=7の场合
解答1:N=7の場合
重心+残った6頂点で最大4部分木
部分木として繋げるのは3頂点以内の部分木
[3,3,0,0] [3,2,1,0] [3,1,1,1] [2,2,2,0] [2,2,1,1]
このうち、3頂点のアルキル基が絡む場合は厄介
[3,3,0,0]... 3頂点のアルキル基2つが重複組み合わせで3通り
[3,2,1,0] , [3,1,1,1]... 3頂点のアルキル基の繋ぎ方で2通り
結局、全部ひっくるめて9通り
课题2:狈=8の场合
解答2:N=8の場合
(i) 重心が1つの場合
偶数頂点かつ重心が1つなので、つなげるアルキル基のサイズ
は3以下になる
[3,3,1,0]... 3頂点が2つ、重複組み合わせで3通り
[3,2,2,0]... 3頂点の繋ぎ方で2通り
[3,2,1,1]... 3頂点の繋ぎ方で2通り
[2,2,2,1]... 1通り
解答2:N=8の場合
(ii) 重心が2つの場合
サイズ N/2 のアルキル基を2つ組み合わせればよい
サイズ4のアルキル基を2つ組み合わせるが、注意が必要
「サイズ4のアルキル基」には4通り考えられるが、この2つは重
複組み合わせで数える必要がある
4通りで2つ選ぶ→4H2 = 5C2 = 10 通り
(i)(ii) 合わせて18通り
N≧9の場合…
もう面倒なのでやりませんが、アルキル基の場合の数を数えて
(これはサイズによって再帰的に出来ます、参考で貼ったリンク
も参照)、今までの例のように数えてやるとN=100の場合の
5921072038125809849884993369103538010139
とか言う数も現実的時間で計算可能
https://doratex.github.io/misc-files/isomer/
↑こんな面白げなサイトもありました
一筆書きのおはなし
一筆書きできる必要十分条件:
「奇数本辺が集まっている点(奇点)
が0個または2個である」
これをグラフ理論で証明してみよう!
参考、証明引用元:
https://mathtrain.jp/euler_graph
奇点≠0,2の場合無理なことを証明
ここは簡単
1つ線を引くときに、始点と終点以外の任意の点は、
「その点から2本辺が出ていると考えられる」
始点と終点に限っては、そこに奇点が作れるが、これは
0個(奇点同士が繋がった場合)か2個に限られる
ざっくり図証するとこんな感じ
奇点=2→奇点=0に帰着
「任意の奇点=0であるグラフについて、一筆書きできる」という
結果を仮定して、奇点=2の場合を奇点=0の場合に帰着
前ページの議論より、奇点=0のグラフが一筆書きできるなら、そ
れはループになっているはず
奇点=2の場合は奇点同士を辺で結べば奇点=0になり、この一
筆書きはループ
なので、ループを奇点の位置で切ってやれば一筆書き可能なこ
とが示せる、よって帰着出来た
奇点=0の場合(本質)
ここからがグラフらしい証明になります(と言っても僕の本職はグ
ラフらしい証明を書くことではないので下手でも許してください)
グラフに含まれる辺の数kで(強い仮定の)数学的帰納法します
k=2の場合 : 図より、できました
k<nの場合の成立を仮定、k=nを示すパート
まず、ある 奇点=0,辺数=n のグラフGを考える
そのグラフから1つ閉路を削除することを考える
このとき、分解されたグラフg1,g2,...,gxもそれぞれ奇点=0
(∵閉路を取り除くと、全ての頂点
から偶数本辺を取り除くことになる)
このとき、g1,g2,...,gxにおいて
(分解されたグラフの辺数)<n
k<nの場合の成立を仮定、k=nを示すパート
帰納法の仮定より、グラフg1,g2,...,gxは何らかのループを持つ
なので、図で言うところの赤いループを回っていく段階で分割さ
れたグラフの一部に差し掛かればそのグラフをぐるっと回ってや
れば一筆書きの経路が構築可能
グラフ理論 2に続く …?

More Related Content

What's hot (20)

二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
?
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Yusuke Uchida
?
狈颈尘で竞技プログラミングを始めた话(1ヶ月)
狈颈尘で竞技プログラミングを始めた话(1ヶ月)狈颈尘で竞技プログラミングを始めた话(1ヶ月)
狈颈尘で竞技プログラミングを始めた话(1ヶ月)
tattaka_sun
?
星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章
Shuyo Nakatani
?
窜顿顿基础
窜顿顿基础窜顿顿基础
窜顿顿基础
reew2n
?
特徴选択のための尝补蝉蝉辞解列挙
特徴选択のための尝补蝉蝉辞解列挙特徴选択のための尝补蝉蝉辞解列挙
特徴选択のための尝补蝉蝉辞解列挙
Satoshi Hara
?
大规模凸最适化问题に対する勾配法
大规模凸最适化问题に対する勾配法大规模凸最适化问题に対する勾配法
大规模凸最适化问题に対する勾配法
京都大学大学院情报学研究科数理工学専攻
?
部内勉强会 数え上げの基础
部内勉强会 数え上げの基础部内勉强会 数え上げの基础
部内勉强会 数え上げの基础
Kazuma Mikami
?
ディープラーニング入門 ~ 画像処理?自然言語処理について ~
ディープラーニング入門 ~ 画像処理?自然言語処理について ~ディープラーニング入門 ~ 画像処理?自然言語処理について ~
ディープラーニング入門 ~ 画像処理?自然言語処理について ~
Kensuke Otsuki
?
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
?
机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论
Taiji Suzuki
?
最小カットを使って「燃やす埋める问题」を解く
最小カットを使って「燃やす埋める问题」を解く最小カットを使って「燃やす埋める问题」を解く
最小カットを使って「燃やす埋める问题」を解く
shindannin
?
新しい推薦方式 知識ベース型推薦についての解説
新しい推薦方式 知識ベース型推薦についての解説新しい推薦方式 知識ベース型推薦についての解説
新しい推薦方式 知識ベース型推薦についての解説
Takahiro Kubo
?
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
?
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
?
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
sleepy_yoshi
?
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
?
SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来
Hidekazu Oiwa
?
画像処理基础
画像処理基础画像処理基础
画像処理基础
大貴 末廣
?
SakataMoriLab GNN勉強会第一回資料
SakataMoriLab GNN勉強会第一回資料SakataMoriLab GNN勉強会第一回資料
SakataMoriLab GNN勉強会第一回資料
ttt_miura
?
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
?
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Yusuke Uchida
?
狈颈尘で竞技プログラミングを始めた话(1ヶ月)
狈颈尘で竞技プログラミングを始めた话(1ヶ月)狈颈尘で竞技プログラミングを始めた话(1ヶ月)
狈颈尘で竞技プログラミングを始めた话(1ヶ月)
tattaka_sun
?
星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章星野「调査観察データの统计科学」第3章
星野「调査観察データの统计科学」第3章
Shuyo Nakatani
?
窜顿顿基础
窜顿顿基础窜顿顿基础
窜顿顿基础
reew2n
?
特徴选択のための尝补蝉蝉辞解列挙
特徴选択のための尝补蝉蝉辞解列挙特徴选択のための尝补蝉蝉辞解列挙
特徴选択のための尝补蝉蝉辞解列挙
Satoshi Hara
?
部内勉强会 数え上げの基础
部内勉强会 数え上げの基础部内勉强会 数え上げの基础
部内勉强会 数え上げの基础
Kazuma Mikami
?
ディープラーニング入門 ~ 画像処理?自然言語処理について ~
ディープラーニング入門 ~ 画像処理?自然言語処理について ~ディープラーニング入門 ~ 画像処理?自然言語処理について ~
ディープラーニング入門 ~ 画像処理?自然言語処理について ~
Kensuke Otsuki
?
机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论机械学习におけるオンライン确率的最适化の理论
机械学习におけるオンライン确率的最适化の理论
Taiji Suzuki
?
最小カットを使って「燃やす埋める问题」を解く
最小カットを使って「燃やす埋める问题」を解く最小カットを使って「燃やす埋める问题」を解く
最小カットを使って「燃やす埋める问题」を解く
shindannin
?
新しい推薦方式 知識ベース型推薦についての解説
新しい推薦方式 知識ベース型推薦についての解説新しい推薦方式 知識ベース型推薦についての解説
新しい推薦方式 知識ベース型推薦についての解説
Takahiro Kubo
?
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
?
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
sleepy_yoshi
?
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
?
SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来SGD+α: 確率的勾配降下法の現在と未来
SGD+α: 確率的勾配降下法の現在と未来
Hidekazu Oiwa
?
SakataMoriLab GNN勉強会第一回資料
SakataMoriLab GNN勉強会第一回資料SakataMoriLab GNN勉強会第一回資料
SakataMoriLab GNN勉強会第一回資料
ttt_miura
?

グラフ理論入門 1