2. 道と閉路
著者:梅谷 武
道と閉路に関連する用語を定義し、オイラーグラフについて述べる。
作成:2023-04-07
更新:2024-10-25
更新:2024-10-25
本章ではグラフは無向グラフとして考える。有向グラフの場合はそれを無向グラフとみなすか、あるいは方向性を考慮した議論にする必要がある。
定義2.1 歩道,小道,道
グラフGの頂点v,wが与えられたとき、vからwへの歩道ほどう, walk(walk)とはv0 = v, vn = w (n>0)なるn + 1個の隣接する頂点列v0, v1, ⋯, vn |
e1, ⋯, en |
v0, e1, v1, e2, ⋯, vn-1, en, vn |
vからwへの小道こみち, trail(trail)とは辺が重複しない歩道のことである。小道を定める相異なる辺の列
e1, ⋯, en |
vからwへの道みち, path(path)とは頂点が重複しない小道のことである。
始点と終点が一致している歩道(小道,道)を閉じたとじた, closed(closed)歩道(小道,道)といい、一致しない歩道(小道,道)を開いたひらいた, open(open)歩道(小道,道)という。
閉じた小道を回路かいろ, circuit(circuit)、閉じた道を閉路へいろ, cycle(cycle)という。長さkの閉路をk-閉路k-へいろ, k-cycle(k-cycle)といい、kが奇数のとき奇閉路きへいろ, odd cycle(odd cycle)、偶数のとき偶閉路ぐうへいろ, even cycle(even cycle)という。
定義2.2 連結性
グラフGにおいて二つの頂点v,wが連結れんけつ, connected(connected)であるとは、vからwへの歩道が存在することである。グラフGが連結れんけつ, connected(connected)であるとは、Gの任意の二頂点が連結であることをいう。
連結性はグラフの頂点集合上の同値関係であり、それにより頂点集合を分割することができる。その各分割を連結成分と呼ぶ。連結成分は次のように特徴付けることができる。ここではこれを連結成分の定義とする。
定義2.3 連結成分
グラフHがグラフGの連結成分れんけつせいぶん, connected component(connected component)であるとは、HはGの連結部分グラフであり、Hを真に含むGの部分グラフが連結にならないことである。証明
v,w間を結ぶ歩道をv0=v, e1, v1, e2, ⋯, vn-1, en, vn=w. |
⋯,p,e,q,⋯,q,e,p,⋯ |
⋯,p,e,q,⋯,p,e,q,⋯ |
⋯,p,⋯ |
⋯,p,e,q,⋯ |
v,w間を結ぶ小道に重複点pがあったとすると 重複の仕方は
⋯,p,⋯,p,⋯ |
⋯,p,⋯ |
命題2.5
- 連結グラフの任意の二頂点間を結ぶ道が存在する
- 回路に含まれる二頂点はその回路から一辺を除いても小道で結ばれる。
- 連結グラフの回路から一辺を除いても連結である。
証明
(1):補題2.4より。(2):p,qを含む回路を
v,⋯,p,⋯,q,⋯,v |
p,⋯,q,⋯,v |
q,⋯,v,⋯,p |
v,⋯,p,⋯,q |
(3):連結グラフGの回路Cから一辺eを除いたグラフG'が連結であることを示す。G'の任意の頂点v,wをとる。Gの連結性からv,wを結ぶ歩道Wが存在する。
case 1):eがWに含まれないときはWはG'の歩道である。
case 2):eがWに含まれるときは(2)の方法で作った小道を使ってeに置き換えた歩道をW'とするとW'はv,wを結ぶG'の歩道である。
いずれの場合もv,wを結ぶG'の歩道が存在し、G'は連結である。■
定義2.6 オイラー回路
グラフGのオイラー小道おいらーこみち, Eulerian trail(Eulerian trail)とはGのすべての辺を含む小道のことであり、オイラー回路おいらーかいろ, Eulerian circuit(Eulerian circuit)とはGのすべての辺を含む回路のことである。 オイラー小道をもつグラフを準オイラーグラフじゅんおいらーぐらふ, semi-Eulerian graph(semi-Eulerian graph)、オイラー回路をもつグラフをオイラーグラフおいらーぐらふ, Eulerian graph(Eulerian graph)という。
証明
Gがループか多重辺を含めば閉路を含むのでGは単純グラフであるとする。vを任意の頂点とし、頂点列v0 = v, v1, ⋯, vi. ⋯ |
定理2.8 オイラーグラフ
連結グラフGがオイラー回路をもつための必要十分条件はすべての頂点の次数が偶数となることである。証明
[⇒]:Gのオイラー回路Pのある頂点vを定めて始点とし、そこから回路を辿りながら、各頂点を通過するときに頂点毎の加算器に通過した辺数を加算していくと最終的に始点は終点と一致して終わる。このとき始点(終点)以外の頂点は通過するときに入力と出力を合わせて2だけ増えていき、始点も出力1が最終的には入力1が加わるので全頂点の次数は偶数になる。[⇐]:Gの各頂点の次数が偶数であるとすると上の補題2.7から閉路Cを含む。CがGのすべての辺を含めばオイラー回路になる。CがGのすべての辺を含まないと仮定する。GからCを除いた部分グラフをHとするとHはCと共通の頂点をもち、補題よりその頂点を始点とする閉路CHを含む。G = C∪CHであればCとCHを合わせた回路がオイラー回路になる。C∪CHがGに一致しなければ同じことを繰り返していけば最終的にオイラー回路が得られる。■
証明
[⇒]:オイラー小道をv0, e1, v1, e2, ⋯, vn-1, en, vn. |
[⇐]:奇数次数の頂点数が2であるとする。奇数次数の二つの頂点u,vを結ぶ新しい辺eを元のグラフGに加えるとG + eは次数が偶数となるのでオイラー回路Cをもつ。このときC - eはGのオイラー小道である。■
頂点集合V = {a,b,c,d,e,f}、辺集合E = {e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12}と写像φが次のように与えられる無向グラフにオイラー小道があるかどうか調べる。
最初にグラフを描く。
graph21.dot:
graph graph21 {
a;
b;
c;
d;
e;
f;
a -- b [label="e1"];
a -- c [label="e2"];
b -- c [label="e3"];
b -- d [label="e4"];
c -- e [label="e5"];
d -- e [label="e6"];
d -- f [label="e7"];
e -- f [label="e8"];
b -- f [label="e9"];
c -- f [label="e10"];
a -- f [label="e11"];
a -- f [label="e12"];
}
$ dot -Tpng graph21.dot -o graph21.png
graph21.png:
次に次数列を求める。
graph21.rkt:
#lang racket
(require "graph.rkt")
(define graph21 (make-graph 'undirected))
(add-vertex! graph21 'a)
(add-vertex! graph21 'b)
(add-vertex! graph21 'c)
(add-vertex! graph21 'd)
(add-vertex! graph21 'e)
(add-vertex! graph21 'f)
(add-edge! graph21 'a 'b 'e1)
(add-edge! graph21 'a 'c 'e2)
(add-edge! graph21 'b 'c 'e3)
(add-edge! graph21 'b 'd 'e4)
(add-edge! graph21 'c 'e 'e5)
(add-edge! graph21 'd 'e 'e6)
(add-edge! graph21 'd 'f 'e7)
(add-edge! graph21 'e 'f 'e8)
(add-edge! graph21 'b 'f 'e9)
(add-edge! graph21 'c 'f 'e10)
(add-edge! graph21 'a 'f 'e11)
(add-edge! graph21 'a 'f 'e12)
(define vertices (sort (get-vertices graph21) symbol<?))
(map (λ (v) (cons v (degree graph21 v))) vertices)
(sort (map (λ (v) (degree graph21 v)) vertices) <)
'((a . 4) (b . 4) (c . 4) (d . 3) (e . 3) (f . 6))
'(3 3 4 4 4 6)
次数列は[3,3,4,4,4,6]なのでオイラー小道は存在する。始点をe、終点をdとし、eから小道を伸ばしていく。
ここで終点dに到達したのですでに通った辺を除くと
という回路が残る。これをつなげばeからdへのオイラー小道になる。
e,e8,f,e9,b,e1,a,e2,c,e10,f,e12,a,e11,f,e7,d |
d,e4,b,e3,c,e5,e,e6,d |
18世紀東プロイセンのケーニヒスベルク(現カリーニングラード)で、町を流れるプルーゲル川にかかる七つの橋すべてをちょうど一度ずつ渡って町を一周する道順はないかということが話題となり、人々はその道順を探すことを楽しんでいたが誰もそれを発見することができなかった。
1736年にオイラーEuler, Leonhard, 1707-1783(Euler, Leonhard, 1707-1783)はケーニヒスベルクの橋の問題を一般化し、それを解く方法に関する論文を発表した。これが現代的なグラフ理論の始まりであるとされている。オイラーの1736年論文では上の定理2.8の必要条件に相当することを証明しているが十分条件を証明していない。この十分条件が証明されたのはドイツの数学者ヒールホルツァーの1873年論文においてである。
オイラーはケーニヒスベルクの橋の問題を上図のような4頂点/7辺のグラフにオイラー小道があるかどうかの問題に帰着させ、4頂点の次数が[3,3,3,5]であることからオイラー小道が存在しないことを示し、さらに一般のグラフにおけるオイラー小道の存在条件についても考えた。
グラフを描く。
graph22.dot:
graph graph22 {
layout=neato;
node [shape=point, width=0.1];
a [pos="0,1!"];
b [pos="0,0!"];
c [pos="0,-1!"];
d [pos="2,0!"];
a -- b;
a -- b;
b -- c;
b -- c;
a -- d;
b -- d;
c -- d;
}
$ dot -Tpng graph22.dot -o graph22.png
graph22.png:
次数列を求める。
graph22.rkt:
#lang racket
(require "graph.rkt")
(define graph22 (make-graph 'undirected))
(add-vertex! graph22 'a)
(add-vertex! graph22 'b)
(add-vertex! graph22 'c)
(add-vertex! graph22 'd)
(add-edge! graph22 'a 'b 'e1)
(add-edge! graph22 'a 'b 'e2)
(add-edge! graph22 'b 'c 'e3)
(add-edge! graph22 'b 'c 'e4)
(add-edge! graph22 'a 'd 'e5)
(add-edge! graph22 'b 'd 'e6)
(add-edge! graph22 'c 'd 'e7)
(define vertices (sort (get-vertices graph22) symbol<?))
(sort (map (λ (v) (degree graph22 v)) vertices) <)
'(3 3 3 5)
語 句
歩道 ほどう, walkグラフの頂点vから頂点wへの歩道とは、隣り合った頂点と辺が接続しているような頂点と辺の交互列でvから始まりwで終わるもののこと。
始点 してん, start vertex歩道における先頭の頂点のこと。
終点 しゅうてん, end vertex歩道における末尾の頂点のこと。
小道 こみち, trail辺が重複しない歩道のこと。
道 みち, path頂点が重複しない小道のこと。
閉じた とじた, closed歩道(小道,道)の始点と終点が一致していることの表現。
開いた ひらいた, open歩道(小道,道)の始点と終点が一致していないことの表現。
回路 かいろ, circuit閉じた小道のこと。
閉路 へいろ, cycle閉じた道のこと。
k-閉路 k-へいろ, k-cycle長さkの閉路のこと。
奇閉路 きへいろ, odd cycle長さが奇数の閉路のこと。
偶閉路 ぐうへいろ, even cycle長さが偶数の閉路のこと。
連結 れんけつ, connectedグラフGにおいて二つの頂点v,wが連結であるとは、vからwへの歩道が存在することである。
連結 れんけつ, connectedグラフGが連結であるとは、Gの任意の二頂点が連結であることをいう。
連結成分 れんけつせいぶん, connected componentグラフHがグラフGの部分グラフであるとは、V(H)⊆V(G), E(H)⊆E(G)であり、Hの辺の端点がHの頂点であるようなもののことである。
オイラー小道 おいらーこみち, Eulerian trailグラフGのオイラー小道とはGのすべての辺を含む小道のこと。
オイラー回路 おいらーかいろ, Eulerian circuitグラフGのオイラー回路とはGのすべての辺を含む回路のこと。
準オイラーグラフ じゅんおいらーぐらふ, semi-Eulerian graphオイラー小道をもつグラフのこと。
オイラーグラフ おいらーぐらふ, Eulerian graphオイラー回路をもつグラフのこと。
オイラー Euler, Leonhard, 1707-1783スイス・バーゼルに生まれ、バーゼル大学でヨハン・ベルヌーイに数学を学ぶ。1723年哲学修士号取得。1726年ヨハンの息子ニコラウス・ベルヌーイの後任としてサンクトペテルブルクのロシア帝国科学アカデミーに職を得る。1741~1766年ベルリン・アカデミー在職。1766年サンクトペテルブルクに戻り、1783年そこで生涯を終える。18世紀数学の中心人物で、数学の全部門に数多くの業績を残した。特に数学解析の形式を整備し、物理学や工学へ応用がし易いようにし、これにより19世紀に数学・物理学・工学が飛躍的に発展することとなった。但し、論証の厳密性への関心は薄かった。
This document is licensed under the MIT License.
Copyright (C) 2024 Takeshi Umetani