オイラー路の列挙
4
0
0
全文
(2) Vol.2010-AL-131 No.7 2010/9/22. 情報処理学会研究報告 IPSJ SIG Technical Report. v3. v2. 小のものとする、これをオイラー路の代表表記とよぶ。つまり、(a1 , a2 , . . . , am ) がオイラー 路の代表表記とは任意の同一のオイラー路を表す (a01 , a02 , . . . , a0m ) に対して、ある整数 k が 存在して、i < k なる i に対して ai = a0i かつ ak ≤ a0k であるときをいう。先に述べたように. v1. 図 3 のグラフに対して、オイラー路 (3, 2, 1, 5, 4, 2, 5, 3, 4) と (4, 3, 5, 2, 4, 5, 1, 2, 3) を同一の ものとして扱うとした。このオイラー路の代表表記は (3, 2, 1, 5, 4, 2, 5, 3, 4) となる。次に、. v4. オイラー路の代表表記について順序を定める。与えられたグラフ G の異なるオイラー路の. v5. 代表表記 (a1 , a2 , . . . , am ) と (b1 , b2 , . . . , bm ) に対して、(a1 , a2 , . . . , am ) ≤ (b1 , b2 , . . . , bm ). 図 1 オイラー路をもつグラフの例. であるとはある整数 k が存在して、i < k なる i に対して ai = bi かつ ak ≤ bk であるときを いう。特にある整数 k が存在して、i < k なる i に対して ai = bi かつ ak < bk であるときは して扱うことにする。図 2 においては全ての頂点の次数は偶数である偶頂点である。よってこ. (a1 , a2 , . . . , am ) < (b1 , b2 , . . . , bm ) と表す。図 3 のグラフのオイラー路 (3, 2, 1, 5, 4, 2, 5, 3, 4). のグラフではオイラー回路が存在する。実際、頂点列 (v3 , v2 , v1 , v5 , v4 , v2 , v5 , v3 ) はこのグ. と (3, 2, 1, 5, 4, 3, 5, 2, 4) では (3, 2, 1, 5, 4, 2, 5, 3, 4) ≤ (3, 2, 1, 5, 4, 3, 5, 2, 4) である。この. ラフのオイラー路である。頂点列 (v3 , v2 , v4 , v5 , v1 , v2 , v5 , v3 )、(v3 , v5 , v2 , v4 , v5 , v1 , v2 , v3 )、. 順序によって、グラフが与えられたときに、そのオイラー路の集合に対して全順序が定義さ. (v4 , v2 , v5 , v3 , v2 , v1 , v5 , v4 ) なども図 2 のグラフのオイラー路である。しかし、これら. れた。. の回路において (v3 , v2 , v1 , v5 , v4 , v2 , v5 , v3 ) と (v3 , v5 , v2 , v4 , v5 , v1 , v2 , v3 ) は頂点の並び. 補題 1 定義した順序によって、与えられたグラフのオイラー路の集合は全順序集合とな. が逆になっているだけであり、(v3 , v2 , v1 , v5 , v4 , v2 , v5 , v3 ) と (v4 , v2 , v5 , v3 , v2 , v1 , v5 , v4 ). る。 補題 1 から与えられたグラフのオイラー路の集合には最小元が存在する。それを最小オ. は 頂 点 列 の 始 ま り が 違 う だ け で あ る 。こ れ ら も 同 一 の オ イ ラ ー 回 路 と し て 扱 う。 図 3 の グ ラ フ に お い て 添 え 字 だ け を 取 り 出 し て 、そ の 頂 点 の ラ ベ ル と し よ う。. v3. イラー路とよぶ。図 3 のグラフにおいては最小オイラー路は (3, 2, 1, 5, 4, 2, 5, 3, 4) である。 数列 A. v2. =. (a1 , a2 , . . . , am ) に 対 す る 操 作 と し て flipping を 定 義 す る 。flipping. fl(A, (ai , aj )) とは A = (a1 , a2 , . . . , ai , . . . , aj . . . , am ) に対して、数列 (a1 , a2 , . . . , ai−1 , aj , aj−1 , . . . , ai+1 , ai , aj+1 , . . . , am ) を構成する操作である。つまり数列 A に対して、その部 分数列 (ai , . . . , aj ) を反転させた数列を新たに作る操作である。. v1 v4. 数列 A = (a1 , a2 , . . . , am ) に対して、ai = aj かつ任意の h > i, k > i 対して ah 6= ak で あるような (ai , aj ) を最後尾同一要素対 lpe(A) という。また、2-lpe(A) とは A から ai を. v5. 除いて得られる最後尾同一要素対とする。A = (3, 2, 1, 5, 4, 2, 5, 3, 4) においては先頭から 5. 図 2 オイラー回路をもつグラフの例. 番目と 9 番目の要素 4 が最後尾同一要素対であり、2-lpe(A) は 4 番目と 7 番目の要素 5 で ある。 数列 A = (a1 , a2 , . . . , am ) に対して、ai = aj ,ai+1 < aj−1 かつ任意の h > i, k > i 対して. す る と 、オ イ ラ ー 路 (v3 , v2 , v1 , v5 , v4 , v2 , v5 , v3 , v4 ) は (3, 2, 1, 5, 4, 2, 5, 3, 4) と な り、. ah 6= ak であるような (ai , aj ) を最後尾昇順同一要素対 lpe< (A) という。また、2-lpe< (A). (v3 , v2 , v1 , v5 , v4 , v3 , v5 , v2 , v4 ) は (3, 2, 1, 5, 4, 3, 5, 2, 4) となる。今後、頂点のラベルは整数. とは A から ai を除いて得られる最後尾順同一要素対とする。A = (3, 2, 1, 5, 4, 2, 5, 3, 4) に. として考えることにする。まず、このラベルに基づいてオイラー路の表記について次のよう. おいては先頭から 4 番目と 7 番目の要素 5 が最後尾昇順同一要素対である。. に定める。与えられたグラフ G のオイラー路の表記は同一のオイラー路を表す表記の中で最. 2. c 2010 Information Processing Society of Japan °.
(3) Vol.2010-AL-131 No.7 2010/9/22. 情報処理学会研究報告 IPSJ SIG Technical Report. 3. 3. 最小オイラー路を構成するアルゴリズム. 1. Fleury’s Algorithm はオイラー路を構成するアルゴリズムとして知られている。このア. 5. ルゴリズムをもとにした最小オイラー路を構成するアルゴリズムは次の通りである。. 4 2. Min euler. 図 3 図 1 のグラフに Min euler を実行したときの例. T = ∅, N um = 1 とする。 1. 奇頂点 v を 1 つ選ぶ (奇頂点がない場合は偶頂点を 1 つ選ぶ)。 v を cv とおく。v に 1 を割り当てる。v を T に加える。N um の値を 1 増やす。. れるオイラー路を、この番号で表すと (1, 2, 3, 1, 4, 2, 5, 3, 4) となる。. 2. cv に接続する辺の中で橋でないものの集合を Ecv とする。. 定理 1 アルゴリズム Min euler は、アルゴリズムで与えた頂点の番号付けによって最. 3. Ecv = ∅ のときは橋 e = (cv, x) を選ぶ。それ以外のときは 6 へ。. 小オイラー路を O(m2 ) で構成する。. 4. x が番号をもっているならば、cv を x に更新し、x を T に加える。. 出力される最小オイラー路については次が成り立つ。. 5. x が番号をもっていないならば、cv を x に更新し、x を T に加える。x に N um の値. 補題 2 アルゴリズム Min euler によって出力される最小オイラー路の先頭は (1, 2, 3). を割り当てる。N um の値を 1 増やす。10 へ。. である。. 6. Ecv のどの辺に対して、cv とは異なる端点が番号をもたない場合は、Ecv から任意の 辺 e = (cv, w) を選ぶ。それ以外のときは 8 へ。. 4. オイラー路の列挙アルゴリズム. 7. cv を w に更新する。w を T に加える。w に N um の値を割り当てる。N um の値を 1. 補題 1 からオイラー路は全順序集合になっており、定理 1 からアルゴリズム Min euler. 増やす。10 へ。. によって得られたオイラー路は最小オイラー路である。よって最小オイラー路から順序どおり. 8. Ecv で cv とは異なる端点が最小の番号もつ辺 e = (cv, u) を選ぶ。. にオイラー路を構成すればよい。今単純グラフ G に対し、オイラー路 B = (b1 , b2 , . . . , bm ). 9. cv を u に更新する。u を T に加える。10 へ。. を出力し、B の次のオイラー路 C を構成することを考える。A = (a1 , a2 , . . . , am ) を B の. 10. e を削除し、孤立点を削除する。. 直前に出力したオイラー路とする。A が存在しない場合は B は最小オイラー路である。こ. 11. 2 から 9 の操作ができなくなるまで繰り返す。. のときは C = fl(B, lpe(B)) である。. 上のアルゴリズムで与えられたグラフ G がアルゴリズム終了後に空になれば、G はオイラー. B が最小オイラー路でないときを考える。A と B について a1 = b = 1, a2 = b2 , . . . , ai−1 =. 路 T をもつ。空にならないときは G はオイラーグラフではない。上記のアルゴリズムで頂. bi−1 かつ ai 6= bi としよう。このとき、b1 , . . . , bi を固定したオイラー路の中で B は最小オ. 点には番号付けがされている。この番号をグラフの頂点のラベルとする。するとオイラー路. イラー路になっている。. T はこのラべルでの最小オイラー路となっている。. lpe(B) の 2 要素がともに (bi+1 , . . . , bm ) に含まれる場合. 図は図のグラフにアルゴリズム Min euler を適用した例である。v3 を最初の cv として. B < fl(B, lpe(B)) である。もし、B = fl(B, lpe(B)) ならば G が単純グラフであることに. 選び、次に e として (v3 , v5 ) を選んでいる。すると cv が v5 に更新される。次に e = (v5 , v2 ). 反する。B < D < fl(B, lpe(B)) となる D は存在しないので C = fl(B, lpe(B)) である。. としている。cv が v2 に更新されると、Min euler の 8 によって、cv は v3 になる。以下、. lpe(B) の 1 要素が bi であり、別の 1 要素 bj が (bi+1 , . . . , bm ) に含まれる場合. アルゴリズムに従うと、頂点 (v1 , v2 , v3 , v4 .v5 ) はそれぞれ番号 (5, 3, 1, 4, 2) をもち、得ら. このとき、bi と同じ要素は (bi+1 , . . . , bm ) の中に bj しか存在しない。もし bj 以外に bi と同. 3. c 2010 Information Processing Society of Japan °.
(4) Vol.2010-AL-131 No.7 2010/9/22. 情報処理学会研究報告 IPSJ SIG Technical Report. じ要素が存在するならば、lpe(B) の 2 要素が (bi+1 , . . . , bm ) に含まれることになるからで. bh+1 , bj , bj−1 , . . . , bq+1 , bp , bp+1 , . . . , bh−1 , bh , bj+1 , . . . , bm ) である。. ある。このとき、B < fl(B, lpe(B)) である。もし、fl(B, lpe(B)) < B ならば bi+1 > bj−1. b0 = bq+1 の場合は bh−1 < bh+1 と bh−1 > bh+1 の 2 通りについて考える。. ということになり、b1 , . . . , bi を固定したオイラー路の中で B が最小オイラー路であったこ. bh−1 < bh+1 のとき、C = fl(fl(B, lpe(B)), (bp , bq )) = (b1 , . . . , bp−1 , bq , bq+1 , . . . ,. とに反する。また、B < D < fl(B, lpe(B)) となる D は存在しないので C = fl(B, lpe(B)). bj−1 , bj , bh−1 , . . . , bp+1 , bp , bq−1 , . . . , bh+1 , bh , bj+1 , . . . , bm ) である。 bh−1. である。. (bi , . . . , bm ) に lpe(B) が存在しない場合. >. bh+1 の と き 、C. =. fl(fl(fl(B, lpe(B)), (bp , bq )), lpe(b)). =. (b1 , . . . , bp−1 ,. bq , bq+1 , . . . , bj+1 , bh , bh+1 , . . . , bq−1 , bp , bp+1 , . . . , bh−1 , bj , bj+1 , . . . , bm ) である。. lpe(B) = (bh , bj ) は h < i である。このとき、bh+1 < bj−1 ならば B < fl(B, lpe(B)). j < q のとき C = fl(B, (bp , bq )) とする。. であり、B < D < fl(B, lpe(B)) となる D は存在しないので C = fl(B, lpe(B)) である。. lpe(B) が存在しないときは G はパスである。. bh+1 > bj−1 ならば fl(B, lpe(B)) < B である。そこで 2-lpe< (fl(B, lpe(B))) = (bp , bq ) を. グラフ G がオイラー路をもち、奇頂点をもつ場合は補題 2 より、オイラー路の先頭を 1. みつける。このとき、lpe< (fl(B, lpe(B))) = (bj , bh ) であり、p < j である。このとき B で. に固定すれば、オイラー路の代表表記のみを列挙することになる。なぜならば、この場合の. の q と j, h の関係によって場合に分けて考える。. 同一のオイラー路は頂点列の反転しかなく、オイラー路の終点は 1 より大きい整数が割り当. q < h のとき C = fl(fl(B, lpe(B)), 2-lpe< (fl(B, lpe(B)))) である。. てられているからである。また、グラフ G がオイラー回路をもつ場合は補題 2 より、オイ. q = h のとき bh−1 , bh+1 , bj−1 の中で bp+1 より大きくかつもっとも bp+1 に近いもの b0. ラー路の先頭を 1, 2 に固定すれば代表表記のみを列挙することになる。. 0. とする。b = bh−1 の場合は C = fl(fl(B, lpe(B)), (bp , bj )) = (b1 , . . . , bp−1 , bj , bh−1 , . . . ,. 上記の議論から B の次のオイラー路を得るために高々3 回のフリップを行えばよい。ま. bp+1 , bp , bj−1 , . . . , bh+1 , bh , bj+1 , . . . , bm ) である。. た、フリップする要素を見つけるためにオイラー路を走査する必要があるが、これも定数回. b0 = bh+1 の場合は bh−1 < bp+1 と bh−1 > bp+1 の 2 通りについて考える。. でよい。よって、次が成り立つ。 定理 2 与えられた単純グラフに対して、O(m2 ) の前処理の後、そのオイラー路を 1 つ. bh−1 < bp+1 のとき、C = fl(fl(B, lpe(B)), (bh , bp )) = (b1 , . . . , bp−1 , bh , bh+1 , . . . , bj−1 , bj , bh−1 , . . . , bp+1 , bp , bj+1 , . . . , bm ) である。 bh−1. > bp+1 の と き 、C. あたり O(m) で列挙できる。. = fl(fl(fl(B, lpe(B)), (bh , bp )), (bj , bp )) = (b1 , . . . , bp−1 ,. 5. ま と め. bh , bh+1 , . . . , bj−1 , bp , bp+1 , . . . , bh−1 , bj , bj+1 , . . . , bm ) である。 b0 = bj−1 の場合も bh−1 < bp+1 と bh−1 > bp+1 の 2 通りについて考える。. 本研究ではオイラー路の列挙について考察した。提案するアルゴリズムは O(m2 ) の前処. bh−1 < bp+1 のとき、C = fl(B, (bp , bj )) = (b1 , . . . , bp−1 , bj , bj−1 , . . . , bh+1 , bh , bh−1 , . . . ,. 理の後にオイラー路 1 つあたり O(m) で列挙する。前処理では Fleury’s Algorithm を用い. bp+1 , bp , bj+1 , . . . , bm ) である。. て最小オイラー路を構成している。また、オイラー路の列挙にあたってはオイラー路の集合. bh−1 > bp+1 のとき、C = fl(fl(B, (bp , bj )), (bh , bp )) = (b1 , . . . , bp−1 , bj , bj−1 , . . . ,. に全順序を定義して、その順序を利用している。. bh+1 , bp , bp+1 , . . . , bh−1 , bh , bj+1 , . . . , bm ) である。. 参. h < q < j のとき bq−1 , bq+1 の中で bp+1 より大きくかつもっとも bp+1 に近いもの b0 と. 考. 文. 献. 1) G. Brightwell and P. Winkler, Counting eulerian circuits is #P-complete, Proc. ALENEX /ANALCO 2005, 259–262, 2005. 2) B.D.McKay and R.W.Robinson, Asymptotic enumeration of Eulerian circuits in the complete graph, Combinatorics, Probability and Computing, 7, 437–449,1998.. する。 0. b = bq−1 の場合は bh−1 < bj−1 と bh−1 > bj−1 の 2 通りについて考える。 bh−1 < bj−1 のとき、C = fl(B, (bp , bq )) = (b1 , . . . , bp−1 , bq , bq−1 , . . . , bh+1 , bh , bh−1 , . . . , bp+1 , bp , bq+1 , . . . , bm ) である。 bh−1 > bj−1 のとき、C = fl(fl(B, (bp , bq )), (bh , bj )) = (b1 , . . . , bp−1 , bq , bq−1 , . . . ,. 4. c 2010 Information Processing Society of Japan °.
(5)
関連したドキュメント
漏洩電流とB種接地 1)漏洩電流とはなにか
〔問4〕通勤経路が二以上ある場合
ているかというと、別のゴミ山を求めて居場所を変えるか、もしくは、路上に
現到着経路 (好天時以外) (A,C滑走路) 現出発経路 (C,D滑走路) 現到着経路 (好天時) (A,C滑走路) 現到着経路 ( 好天時以外 ) (A,C滑走路) 新出発経路
このアプリケーションノートは、降圧スイッチングレギュレータ IC 回路に必要なインダクタの選択と値の計算について説明し
航海速力についてみると、嵯峨島~貝津航路「嵯峨島丸」が 10.9 ノット、浦~笠松~前 島航路「津和丸」が 12.0
(1)原則として第3フィールドからのアクセス道路を利用してください。ただし、夜間
・ RCIC 起動失敗,または機能喪失時に,RCIC 蒸気入口弁操作不能(開状態で停止)で HPAC 起動後も