組合せ最適化 2.3 連結性 2.4 オイラーグラフと2部グラフ

Slides:



Advertisements
Similar presentations
ゲームプログラミング講習 第2章 関数の使い方
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
第27講 オームの法則 電気抵抗の役割について知る オームの法則を使えるようにする 抵抗の温度変化を理解する 教科書P.223~226
コラッツ予想の変形について 東邦大学 理学部 情報科 白柳研究室 山中 陽子.
コンパイラ 第3回 字句解析 ― 決定性有限オートマトンの導出 ―
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.
VTX alignment D2 浅野秀光 2011年12月15日  放射線研ミーティング.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
生命情報学 (8) スケールフリーネットワーク
前半戦 「史上最強」風 札上げクイズ.

認知症を理解し 環境の重要性について考える
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
社会福祉調査論 第4講 2.社会調査の概要 11月2日.
2015年12月28日-2016年3月28日 掲載分.
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
腫瘍学概論 埼玉医科大学国際医療センター 包括的がんセンター 緩和医療科/緩和ケアチーム 奈良林 至
“企業リスクへの考え方に変化を求められています。 トータルなリスクマネジメント・サービスをプロデュースします。“
情報漏えい 経済情報学科 E  西村 諭 E  釣 洋平.
金融班(ミクロ).
第11回 2009年12月16日 今日の資料=A4・4枚+解答用紙 期末試験:2月3日(水)N2教室
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
Blosxom による CMS 構築と SEO テクニック
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
g741001 長谷川 嵩 g740796 迫村 光秋 g741000 西田 健太郎 g741147 小井出 真聡
自然独占 公共経済論 II no.5 麻生良文.
Autonomic Resource Provisioning for Cloud-Based Software
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
6 日本のコーポレート・ガバナンス 2008年度「企業論」 川端 望.
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
米国ユタ州LDS病院胸部心臓外科フェローの経験
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
次世代大学教育研究会のこれまでの活動 2005年度次世代大学教育研究大会 明治大学駿河台校舎リバティタワー9階1096教室
子どもの本の情報 大阪府内の協力書店の情報 こちらをクリック 大阪府内の公立図書館・図書室の情報
第2回産業調査 小島浩道.
〈起点〉を示す格助詞「を」と「から」の選択について
広東省民弁本科高校日語専業骨幹教師研修会 ①日本語の格助詞の使い分け ②動詞の自他受身の選択について   -日本語教育と中日カルチャーショックの観点から- 名古屋大学 杉村 泰.
■5Ahバッテリー使用報告 事例紹介/東【その1】 ■iphon4S(晴れの昼間/AM8-PM3) ◆約1時間で68%⇒100%
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
SAP NetWeaver を支える Microsoft テクノロジーの全貌 (Appendix)
ガイダンス(内業) 測量学実習 第1回.
Python超入門 久保 幹雄 東京海洋大学.
熱力学の基礎 丸山 茂夫 東京大学大学院 工学系研究科 機械工学専攻
京都民医連中央病院 CHDF学習推進委員会
資料2-④ ④下水道.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Presentation transcript:

組合せ最適化 2.3 連結性 2.4 オイラーグラフと2部グラフ 組合せ最適化 2.3 連結性 2.4 オイラーグラフと2部グラフ 岩間研究室M2 津山担当

2.3 連結性 ・連結性=最も重要な概念 連結なグラフだけを考えれば十分な問題も多い。 (連結でない時は連結成分ごとに考えれば良い) (最大次数は? k-彩色可能か? 閉路はいくつ? etc……) ・グラフの連結成分を検出するアルゴリズムを考える。

2.3 連結性 ・グラフ走査アルゴリズム [入力] 有向(or無向)グラフGと1点s [出力] sから到達可能な全ての点の集合Rと (R,T)がsを根とする有向木(or木)となるような 辺集合T⊆𝐸(𝐺) を具体的に考える。 以下、とりあえず 無向グラフで説明 (有向グラフも同様) s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択 If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、②へ Q チェックすべき頂点集合 s

2.3 連結性 命題2.16:グラフ走査アルゴリズムは正しく動作する。 [証明(簡単に)] ・常に(R,T)はsを根とする有向木(or木)である。 (Tに追加される枝は常に新しい頂点に向けて張られる) ・アルゴリズムが出力したRに対して、sから 到達可能な点𝑤∈𝑉(𝐺)\Rの存在を仮定すると? 𝑥 𝑦 𝑤 ……     ……    …… ∈𝑅 ∉𝑅 ∉𝑅 ・𝑥はQに一度入れられている ・Qが空になった時、アルゴリズムは停止する ・𝑦がR,Qに加えられる前に𝑥がQから  除去されることはない!     →矛盾する s

2.3 連結性 ・ところで、「入力としてグラフを与える」とは? 様々なグラフの表現方法(頂点数n、枝数mとする) Gの接続行列 1 0 1 0 0 0 1 1 0 ⋯ 0 0 0 1 0 0 0 0 1 ⋮ ⋱ ⋮ 0 0 0 ⋯ 0 1 1 頂点𝑖から枝𝑗が出る時 𝑖,𝑗 成分=1、他は0 辺1 辺2 辺3 … 辺(m-2)辺(m-1)辺m  頂点1 頂点2 頂点3 … 頂点n

2.3 連結性 ・ところで、「入力としてグラフを与える」とは? 様々なグラフの表現方法(頂点数n、枝数mとする) Gの接続行列(有向グラフの時) 1 0 1 0 0 0 −1 1 0 ⋯ 0 0 0 −1 0 0 0 0 1 ⋮ ⋱ ⋮ 0 0 0 ⋯ 0 1 −1 頂点𝑖から頂点𝑖′に枝𝑗が出る時 𝑖,𝑗 成分=1、 𝑖′,𝑗 成分=−1、他は0 辺1 辺2 辺3 … 辺(m-2)辺(m-1)辺m  頂点1 頂点2 頂点3 … 頂点n 各列で非0な要素はたったの2個で、 ほとんどの成分は0 接続行列を表現するために 𝑂 𝑚𝑛 の領域が必要(というか𝛩(𝑚𝑛)ね) →あまり効率的な表現方法ではない

2.3 連結性 隣接行列を表現するために 𝑂 𝑛 2 の領域で十分 →グラフがdenseな時、有効 →グラフがsparseな時、もっと良い表現方法がある! dense……密 辺数がΘ( 𝑛 2 )とか? sparse……疎 辺数が𝑂(𝑛)とか? ・ところで、「入力としてグラフを与える」とは? 様々なグラフの表現方法(頂点数n、枝数mとする) Gの隣接行列 0 0 1 0 0 0 1 1 0 ⋯ 0 0 0 1 0 0 0 0 1 ⋮ ⋱ ⋮ 0 0 0 ⋯ 0 1 0 頂点𝑖から頂点𝑗に枝が出る時 𝑖,𝑗 成分=1、他は0 出典:隣接行列 –Wikipedia- 点1 点2 点3 …点(n-2)点(n-1) 点n  頂点1 頂点2 頂点3 … 頂点n

2.3 連結性 ・ところで、「入力としてグラフを与える」とは? 様々なグラフの表現方法(頂点数n、枝数mとする) →たとえばそれぞれの辺の両端点のみ記憶すると? 辺kの両端点が頂点 𝑖 𝑘 と頂点 𝑗 𝑘 の時に 𝑖 1 , 𝑗 1 , 𝑖 2 , 𝑗 2 ,… 𝑖 𝑘 , 𝑗 𝑘 ,…, 𝑖 𝑚−1 , 𝑗 𝑚−1 ,( 𝑖 𝑚 , 𝑗 𝑚 ) という形式でグラフを表現できる ・点を記憶するのに log 𝑛 ビット ・辺を記憶するのに2 log 𝑛 ビット ・グラフを表現するのには  2𝑚 log 𝑛 =𝑂(𝑚 log 𝑛 )ビット mが小さい(グラフがsparseな)時、 少ない領域でグラフを表現できる →辺の順番を適当な順で保存されても 実用上不便過ぎる! ある点に接続する辺が欲しい時は多い

2.3 連結性 ・ところで、「入力としてグラフを与える」とは? 様々なグラフの表現方法(頂点数n、枝数mとする) Gの隣接リスト →それぞれの頂点に接続する辺のリストと、 それらリストへのポインターのリストも保存する (点 𝑣 1 ,点 𝑣 2 ,……,点 𝑣 𝑛−1 ,点 𝑣 𝑛 ) ・「これは2𝑚 log 𝑛 ビット 余分に領域を用意すれば 記憶できる」 → 2𝑚 log 𝑚 では? 𝑚=Θ(𝑛)を仮定した? 頂点を記憶する? ただの勘違い? ・隣接リストでグラフを表現するための総ビット 𝑂(𝑛 log 𝑚 +𝑚 log 𝑛 ) (辺 𝑒 11 ,辺 𝑒 12 ,辺 𝑒 13 ,……) (辺 𝑒 21 ,辺 𝑒 22 ,辺 𝑒 23 ,……)      …… (辺 𝑒 𝑛1 ,辺 𝑒 𝑛2 ,辺 𝑒 𝑛3 ,……)

2.3 連結性 ・ところで、「入力としてグラフを与える」とは? 今後、グラフが入力として与えられる時、 その隣接リストを受け取るものとして考える。 要するに? 「指定された辺への操作」「指定された点への操作」 は定数時間で行える仮定の上で計算時間を議論する。 (指定された点の隣接リストのヘッダーにアクセスする、点から出る辺を適当に一つ選択する、指定された辺の端点を求める……)

2.3 連結性 以下、基本的に 𝑛,𝑚でそれぞれグラフの点数、辺数を(本書では)表す。 また、𝑛−1≤𝑚< 𝑛 2 の成立を仮定する。 (つまり、連結でかつ並列辺が存在しないと仮定する) グラフアルゴリズムの計算時間は𝑛, 𝑚をパラメーターに測定される。 𝑂(𝑚+𝑛)時間の計算時間のアルゴリズムは線形と呼ばれる。

2.3 連結性 命題2.17:グラフ走査アルゴリズムは𝑂(𝑚+𝑛)時間で走るよう実装できる。つまり連結成分は線形時間で求まる。 [証明(簡単に)] ・各点𝑥それぞれに対し、”現在の辺”を指すポインターを導入する。(初めはすべて最初の辺を指すor空) ・③でポインターは一つ前進し、リストの最後に達するとその点𝑥は集合Qから除去され、二度と入れられない。 ・全て除去されれば アルゴリズムは 正しく停止する →点数+辺数に比例! ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択  If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}    とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、  ②へ    グラフ走査アルゴリズム(再掲)

2.3 連結性 ・③の中で追加される頂点の選ばれる順番が気になる →そもそも、②で頂点はどのように選ばれるのか? ・深さ優先探索(Depth-First Search, DFS) Qに最後に入れられた𝑣∈𝑄を選ぶ ・幅優先探索(Breadth-First Search, BFS) Qに最初に入れられた𝑣∈𝑄を選ぶ それぞれの選び方により作られる木をそれぞれ 深さ優先探索木(DFS-tree)、幅優先探索木(BFS-tree) と呼ぶ。 ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択  If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}    とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、  ②へ    グラフ走査アルゴリズム(再掲) s s

2.3 連結性 命題2.18:幅優先探索木はsから到達可能なすべての点への最短パスを含む。それぞれの最短パスの長さ𝑑𝑖𝑠 𝑡 𝐺 (𝑠,𝑣)は線形時間で求められる。 [証明(それなりにちゃんと)] ・アルゴリズムの①に𝑙 𝑠 ≔0、④に𝑙 𝑤 ≔𝑙 𝑣 +1を加え、(𝐺,𝑠)に対してアルゴリズムを幅優先で実行する。 ・𝑣∈𝑅に対し常に𝑙 𝑣 =𝑑𝑖𝑠 𝑡 𝑅,𝑇 (𝑠,𝑣)の成立が明らか。 ・𝑣を現在走査中の 点とすると、 𝑙 𝑤 >𝑙 𝑣 +1となる 点𝑤はその時点でRに 存在しない。(∵幅優先) ①𝑅≔ 𝑠 ,𝑄≔ 𝑠 , 𝑇≔𝜙とする。 ②If 𝑄=𝜙 then 終了する else 𝑣∈𝑄を選ぶ ③𝑒={𝑣,𝑤}∈𝐸 𝐺 となる𝑤∈𝑉 𝐺 \Rを選択  If そのような𝑤は存在しない then 𝑄≔𝑄\{𝑣}    とし、②へ ④𝑅≔𝑅∪ 𝑤 , 𝑄≔𝑄∪ 𝑤 , 𝑇≔𝑇∪{𝑒}とし、  ②へ    グラフ走査アルゴリズム(再掲)

2.3 連結性 命題2.18:幅優先探索木はsから到達可能なすべての点への最短パスを含む。それぞれの最短パスの長さ𝑑𝑖𝑠 𝑡 𝐺 (𝑠,𝑣)は線形時間で求められる。 [証明(それなりにちゃんと)] ・アルゴリズム終了時点で𝑑𝑖𝑠 𝑡 𝐺 𝑠,𝑤 <𝑑𝑖𝑠 𝑡 𝑅,𝑇 (𝑠,𝑣) と なる点𝑤∈𝑅が存在すると仮定し、その中でも最もsから近い点𝑤について考える。 ・PをGの最短s-wパスとし、最後の枝𝑒={𝑣,𝑤}を考えると𝑑𝑖𝑠 𝑡 𝐺 𝑠,𝑣 =𝑑𝑖𝑠 𝑡 𝑅,𝑇 (𝑠,𝑣)かつ𝑒∉𝑇が成立。(∵ 𝑤の選び方) ・𝑙 𝑤 = 𝑑𝑖𝑠𝑡 𝑅,𝑇 𝑠,𝑤 > 𝑑𝑖𝑠𝑡 𝐺 𝑠,𝑤 = 𝑑𝑖𝑠𝑡 𝐺 𝑠,𝑣 +1= 𝑑𝑖𝑠𝑡 𝑅,𝑇 𝑠,𝑣 +1=𝑙 𝑣 +1が成立することになる。 𝑣除去の時点で𝑤はRに存在しないことが𝑒∉𝑇と矛盾。

2.3 連結性 ・この結果は最短パス問題に対するDijkstraのアルゴリズムからも導出できる。 →Dijkstraのアルゴリズムは辺に(非負の)重みを与えたグラフに対する幅優先探索の一般化(7.1節でやります) ・連結成分に続いて、有向グラフの強連結成分を求めるアルゴリズムを考える。 強連結成分……任意の二点間のパスが存在する。 →n回DFS/BFSすればいける!(愚直) →実は各辺を2回辿れば十分(線形)

2.3 連結性 ・強連結成分アルゴリズム [入力] 有向グラフG [出力] 各点の強連結成分を表す関数𝑐𝑜𝑚𝑝:𝑉 𝐺 →𝑁 𝑐𝑜𝑚𝑝 𝑎 =2 𝑐𝑜𝑚𝑝 𝑏 =2 𝑐𝑜𝑚𝑝 𝑐 =1 𝑐𝑜𝑚𝑝 𝑑 =3 𝑐𝑜𝑚𝑝 𝑒 =3 𝑐𝑜𝑚𝑝 𝑓 =2 𝑐𝑜𝑚𝑝 𝑔 =2 b a c g f d e

2.3 連結性 ①𝑅≔𝜙,𝑁≔0とする。 ②For すべての𝑣∈𝑉(𝐺) do: If 𝑣∉𝑅 then Visit1(𝑣) ③𝑅≔𝜙,𝐾≔0 とする。 ④ For 𝑖≔|𝑉 𝐺 | down to 1 do: If 𝜓 −1 𝑖 ∉𝑅 then 𝐾≔𝐾+1とし、Visit2( 𝜓 −1 𝑖 ) Visit1(𝑣) ①𝑅≔𝑅∪{𝑣}とする。 ② For 𝑣,𝑤 ∈𝐸(𝐺)となるすべての𝑤∈𝑉(𝐺)\R do: Visit1(𝑤) ③𝑁≔𝑁+1, 𝜓( 𝑣 ≔𝑁, 𝜓 −1 𝑁 ≔𝑣とする。 Visit2(𝑣) ①𝑅≔𝑅∪{𝑣}とする。 ② For 𝑤,𝑣 ∈𝐸(𝐺)となるすべての𝑤∈𝑉(𝐺)\R do: Visit2(𝑤) ③𝑐𝑜𝑚𝑝 𝑣 ≔𝐾とする。 3 6 7 1 4 5 2 ① ② ③ 番号の大きい頂点を根に、逆矢印で見てDFSを行う。 できた反有向木 ごとに𝑐𝑜𝑚𝑝値を 与える。 1 2 3 4 5 6 7 DFSを行い、 葉から順に番号を振る

2.3 連結性 定理2.19:強連結成分アルゴリズムはすべての 強連結成分を線形時間で正しく求める。 [証明(それなりにちゃんと)] ・計算時間が𝑂(𝑛+𝑚)なのは明らか。 ・同じ強連結成分中の頂点は、2回目の深さ優先探索森 において同じ反有向木に属するので同じ𝑐𝑜𝑚𝑝値になる。 ・𝑐𝑜𝑚𝑝 𝑢 =𝑐𝑜𝑚𝑝(𝑣)となる二点𝑢,𝑣が実際に同じ強連結成分に含まれることさえ言えばOK! 3 6 7 1 4 5 2 ① ② ③ 1 2 3 4 5 6 7

2.3 連結性 定理2.19:強連結成分アルゴリズムはすべての 強連結成分を線形時間で正しく求める。 [証明(それなりにちゃんと)] 2.3 連結性 定理2.19:強連結成分アルゴリズムはすべての 強連結成分を線形時間で正しく求める。 [証明(それなりにちゃんと)] ・ 𝑢,𝑣それぞれから反有向木において到達できる頂点で 𝜓値最大の点をそれぞれ𝑟 𝑢 ,𝑟(𝑣)とする。 ・𝑐𝑜𝑚𝑝 𝑢 =𝑐𝑜𝑚𝑝(𝑣)なので、2回目の深さ優先探索森で同じ反有向木に属するため、その木の根𝑟=𝑟 𝑢 =𝑟(𝑣) ・𝜓 𝑟 ≥𝜓(𝑢)より、 𝑟=𝑢または1回目の深さ優先探索森はr-uパスを(同様にr-vパスも)含む。 ・rは反有向木の根なのでu-rパス、v-rパスも存在する。 ゆえにuからv、vからuが到達可能であり、二つは同じ強連結成分に属することが分かる。 3 6 7 1 4 5 2 ① ② ③ 1 2 3 4 5 6 7

2.3 連結性 ・このアルゴリズムで、有向無閉路グラフ(Directed Acyclic Graph, DAG)のトポロジカル順序も求められる。 定義2.8[再掲] Gを有向グラフとする。任意の辺 𝑣 𝑖 , 𝑣 𝑗 ∈𝐸(𝐺)に対して𝑖<𝑗が成立するような点集合𝑉 𝐺 ={ 𝑣 1 , 𝑣 2 ,… 𝑣 𝑛 }の順序をGのトポロジカル順序(topological order)という。 命題2.9[再掲] 有向グラフがトポロジカル順序をもつ必要十分条件は、無閉路であることである。 ・各強連結成分を1点に縮約することで有向無閉路グラフが得られるが、各点の元の成分の𝑐𝑜𝑚𝑝値が実はその順序となっている。 3 6 7 1 4 5 2 ① ② ③ ① ② ③

2.3 連結性 定理2.20:強連結成分アルゴリズムは有向グラフGの 各強連結成分を1点に縮約して得られる有向グラフの トポロジカル順序を正しく求める。 [証明(さくっと)] ・ XとYを有向グラフGの二つの強連結成分とする。𝑥∈𝑋,𝑦∈𝑌に対して𝑐𝑜𝑚𝑝 𝑥 <𝑐𝑜𝑚𝑝 𝑦 かつ辺(𝑦,𝑥)が存在すると仮定して矛盾を導く。 ・2番目のDFSではYの最初の点が加えられる前にXの点はすべてRに加えられている。特に辺(𝑦,𝑥)が走査されている時𝑥∈𝑅かつ𝑦∉𝑅である。 ・するとKが増加する前に𝑦がRに加えられることになり、 𝑐𝑜𝑚𝑝 𝑥 <𝑐𝑜𝑚𝑝(𝑦)に反する。

2.3 連結性 ・k+1以上の頂点を持つ無向グラフにおいて 任意にk-1個の点を除いても連結である時 k-連結(k-connected)であると言い、k-1個の辺を除いても連結である時 k-辺連結(k-edge-connected)であると言う。 (3点以上のグラフが 2-連結(2-辺連結)な 必要十分条件は、関節点(橋)を持たないことである) グラフGが k-連結 であるような最大のkをGの点連結度(vertex-connectivity)と呼び、 k-辺連結であるような最大のkを辺連結度(edge-connectivity)と呼ぶ。 →連結なグラフは、1-連結(1-点連結)である →非連結なグラフは、点連結度(辺連結度)は0とする。

2.3 連結性 ・関節点を持たない極大な連結部分グラフ=ブロック ブロックは……極大な2-連結グラフor1本の橋or孤立点 2つのブロックは……高々1点のみを共有 2個以上のブロックに属する点は……関節点 (証明はしない)

2.3 連結性 ・関節点を持たない極大な連結部分グラフ=ブロック ブロックは……極大な2-連結グラフor1本の橋or孤立点 2つのブロックは……高々1点のみを共有 2個以上のブロックに属する点は……関節点 (証明はしない)

2.3 連結性 定義2.21 Gを(有向あるいは無向)グラフとする。 各 𝑃 𝑖 𝑖∈ 1,…,𝑘 に対して、 𝑃 𝑖 はパスであり 𝑃 𝑖 の両端点のちょうど2点のみが 𝑟 ∪𝑉 𝑃 1 ∪…∪𝑉( 𝑃 𝑖−1 )に属するか、 あるいは 𝑃 𝑖 は閉路でありかつちょうど1点のみが 𝑟 ∪𝑉 𝑃 1 ∪…∪𝑉( 𝑃 𝑖−1 )に属するような 系列𝑟, 𝑝 1 ,… 𝑃 𝑘 を用いてG= 𝑟 ,𝜙 + 𝑃 1 +…+ 𝑃 𝑘 と書け るとき、これをGの耳分解(ear-decomposition)という。 𝑘≥1かつ 𝑃 1 が3点以上からなる 閉路かつ 𝑃 2 ,…, 𝑃 𝑘 がすべてパス である時、耳分解はプロパー(proper)であると呼ぶ。

2.3 連結性 以下の2-連結グラフの華麗な構造定理を証明する。 定理2.22(Whitney[1932]) 無向グラフが2-連結である 必要十分条件は、プロパーな耳分解を持つことである。 [証明(割とちゃんと)] ・明らかに長さ3以上の閉路は2-連結である。 ・2-連結なGの𝑥≠𝑦なる二点を結ぶx-yパスを加えても 2-連結である。 ・よってプロパーな耳分解を持つグラフは2-連結である ので、十分性が示された。

2.3 連結性 以下の2-連結グラフの華麗な構造定理を証明する。 定理2.22(Whitney[1932]) 無向グラフが2-連結である 必要十分条件は、プロパーな耳分解を持つことである。 [証明(割とちゃんと)] ・ 2-連結グラフGの極大な単純部分グラフをG’とする。 ・明らかにG’も2-連結であり、すなわち閉路を含む。 単純であることから閉路の長さは3以上である。 ・Hをプロパーな耳分解を持つGの極大部分グラフとする。このようなHは存在する。 まずHは全点でないと仮定して ムジュンを導く。

2.3 連結性 以下の2-連結グラフの華麗な構造定理を証明する。 定理2.22(Whitney[1932]) 無向グラフが2-連結である 必要十分条件は、プロパーな耳分解を持つことである。 [証明(割とちゃんと)] ・Hが全点でない時、𝑥∈𝑉(𝐻)かつ𝑦∉𝑉(𝐻)となる辺𝑒= 𝑥,𝑦 ∈𝐸 𝐺 が存在する。(∵Gは連結) ・𝑧∈𝑉(𝐻){𝑥}を考える。𝐺−𝑥は連結であるため、y-zパスPを持つ。Pを𝑦から辿った時、𝑉(𝐻)に属する最初の点を𝑧′とする。 ・この時、 𝑃 𝑦, 𝑧 ′ +𝑒は耳として 加えられるため、極大性に反する。 𝑧 𝑦 𝑥 𝑧′

2.3 連結性 以下の2-連結グラフの華麗な構造定理を証明する。 定理2.22(Whitney[1932]) 無向グラフが2-連結である 必要十分条件は、プロパーな耳分解を持つことである。 [証明(割とちゃんと)] ・ Hは全点である。 ・𝐸(𝐺)\E 𝐻 の各辺が仮に存在しても、それらは 耳として加えることができる。 ・したがってH=Gが得られるため、必要性が示された。

2.3 連結性 2-辺連結グラフと強連結グラフに対する同様の特徴付けについては演習問題17を参照されたい。 だそうな。 2.3 連結性 の内容はひとまずここまで。 やったこと ・隣接行列や隣接リストでグラフを表すと都合良さげ ・与えられた頂点を含む連結成分全点木を出すアルゴリズムは、線形で動く ・強連結成分を求めるアルゴリズムは、線形で動く →そして同時にトポロジカル順序も与える。 ・無向グラフが2-連結である必要十分条件は、プロパーな耳分解があること という華麗な結果

2.4 オイラーグラフと2部グラフ レオンハルト・オイラー (Leonard Euler 1707-1783) 「オイラーは人類史上最も多くの 論文を書いた数学者であったと言 われ、彼の論文は5万ページを超え る全集にまとめられて1911年から 刊行され続けているが、その全集 は100年以上たった今日でも未だに 完結していない」 (出典:レオンハルト・オイラー –Wikipedia) そんなオイラーさんの29歳頃(若い!)の業績のお話。

このプレーゲル川に架かっている7つの橋を全て1度ずつ渡って、元の所に 2.4 オイラーグラフと2部グラフ ・みんな大好きケーニヒスベルクの橋の問題           [画像元:一筆書き - Wikipedia] 町の誰か ~これがグラフ理論のはじまりである~ このプレーゲル川に架かっている7つの橋を全て1度ずつ渡って、元の所に 戻ってくることはできるか??? できない

2.4 オイラーグラフと2部グラフ 定義2.23 グラフGの全ての辺を含む閉じたウォークをオイラーウォーク(Eulerian walk)という。 無向グラフGは全ての点の次数が偶数である時、オイラー(Eulerian)であると呼ばれる。 有向グラフGは全ての点𝑣∈𝑉(𝐺)で 𝛿 − 𝑣 =| 𝛿 + 𝑣 | である時、オイラーであると呼ばれる。

2.4 オイラーグラフと2部グラフ 定理2.24(Euler [1736], Hierholzer [1873]) 連結グラフGがオイラーウォークを持つための 必要十分条件は、Gがオイラーであることである。 [証明(適当)] ・必要性は明らかである。 ・十分性は具体的なアルゴリズムを与えることで示す。

2.4 オイラーグラフと2部グラフ ・Eulerのアルゴリズム [入力] 無向連結オイラーグラフ ∵連結であるか、オイラーであるかは線形時間で判定できるため、そうでない入力は拒否できる。有向グラフの場合のアルゴリズムは簡単な改変で得られる。 [出力]GのオイラーウォークW

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とする。𝐸 𝐺 ≔𝐸(𝐺){𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。 𝑣 1

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。 𝑣 1

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。 𝑣 3 𝑣 1 𝑣 2 =𝑊

2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。 𝑣 2 𝑣 1 𝑣 3 𝑣 4 =𝑊 𝑣 5 =𝑊

② If 𝛿 + 𝑥 =𝜙 then ④へ else 𝑒∈ 𝛿 + (𝑥)を選び𝑒=(𝑥,𝑦)とする 2.4 オイラーグラフと2部グラフ ① 𝑣 1 ∈𝑉(𝐺)を任意に選ぶ。𝑊≔𝐸𝑈𝐿𝐸𝑅 𝐺, 𝑣 1 を返す。 𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 1 ) ① 𝑊≔ 𝑣 1 , 𝑥≔ 𝑣 1 とする。 ② If 𝛿 𝑥 =𝜙 then ④へ else 𝑒∈𝛿(𝑥)を選び𝑒={𝑥,𝑦}とする ③𝑊≔𝑊,𝑒,𝑦かつ𝑥≔𝑦とし、𝐸 𝐺 ≔𝐸(𝐺)\{𝑒}として②へ ④𝑊を系列 𝑣 1 , 𝑒 1 , 𝑣 2 , 𝑒 2 ,……, 𝑣 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 とする。 For 𝑖≔1 to 𝑘 do: 𝑊 𝑖 ≔𝐸𝑈𝐿𝐸𝑅(𝐺, 𝑣 𝑖 )とする ⑤𝑊≔ 𝑊 1 , 𝑒 1 , 𝑊 2 , 𝑒 2 ,……, 𝑊 𝑘 , 𝑒 𝑘 , 𝑣 𝑘+1 として、𝑊を返す。 𝑣 3 𝑣 2 𝑣 4 𝑣 1 =𝑊 =𝑊 有向グラフの場合は②を ② If 𝛿 + 𝑥 =𝜙 then ④へ else 𝑒∈ 𝛿 + (𝑥)を選び𝑒=(𝑥,𝑦)とする

2.4 オイラーグラフと2部グラフ 定理2.25:Eulerのアルゴリズムは正しく動作し、 計算時間は𝑂(𝑚+𝑛)である。 [証明(|𝐸 𝐺 |についての帰納法)] ・𝐸 𝐺 =𝜙の時は自明。 ・次数条件(全て偶数)の仮定より、④が実行される時は 𝑣 𝑘+1 =𝑥= 𝑣 1 が成立する。この時点で𝑊は閉ウォークであり、 𝑊を除いたグラフ𝐺′も次数条件を満たす。 ・各辺𝑒∈𝐸( 𝐺 ′ )に対して、𝑒と同じ連結成分に属する𝐺′の点 𝑣 𝑖 でその添え字𝑖が最小のものが存在する。 ・帰納法の仮定より、𝑒は 𝑊 𝑖 に属するため、⑤で構成される閉ウォーク𝑊は実際にオイラーウォークである。

2.4 オイラーグラフと2部グラフ オイラーでないグラフに対して辺を加えたり縮約したりしてオイラーグラフにすることも興味深い問題。 (cf. 中国人郵便配達問題,chinese postman problem) Gを無向グラフとして、FをV(G)の非順序対の族とする。 (𝑉 𝐺 , 𝐸 𝐺 ∪𝐹)がオイラーならば、Fは奇数ジョイン(odd join)と呼ばれる。 Gから各辺𝑒∈𝐹を順次縮約していって得られるグラフがオイラーならば、Fは奇数カバー(odd cover)と呼ばれる。

2.4 オイラーグラフと2部グラフ 定理2.26(Aoshima and Iri[1977]):Gを無向グラフとする。 (a)奇数ジョインは奇数カバーである (b)極小な奇数カバーは奇数ジョインである。 [(a)の証明] ・Fを奇数ジョインとし、Gから(𝑉 𝐺 ,𝐹)の連結成分を縮約 して得られるグラフをG’とする。 ・ (𝑉 𝐺 ,𝐹)の各連結成分は 奇数次数の点を偶数個持つ。 ⇒それらの成分を1つに縮約すると偶数次数の点になる。 ・一方、Fに含まれない点は元々偶数次数である。 ・したがって、グラフG’は偶数次数の点しか持たないため、Fは奇数カバーである。

2.4 オイラーグラフと2部グラフ 定理2.26(Aoshima and Iri[1977]):Gを無向グラフとする。 (a)奇数ジョインは奇数カバーである (b)極小な奇数カバーは奇数ジョインである。 [(b)の証明] ・Fを極小な奇数カバーとする。Fの極小性より、 (𝑉 𝐺 ,𝐹)は森である。各𝑣∈𝑉(𝐺)で 𝛿 𝐹 𝑣 ≡ 𝛿 𝐺 𝑣 (𝑚𝑜𝑑 2)であることを示せば十分である。 ・𝑣∈𝑉(𝐺)で 𝑣,𝑤 ∈𝐹となる点𝑤を含む 𝑉 𝐺 ,𝐹 −𝑣の連結成分を 𝐶 1 , 𝐶 2 ,……, 𝐶 𝑘 とする。 ・Fは森なので、𝑘=| 𝛿 𝐹 𝑣 |である。 𝑣

2.4 オイラーグラフと2部グラフ 定理2.26(Aoshima and Iri[1977]):Gを無向グラフとする。 (a)奇数ジョインは奇数カバーである (b)極小な奇数カバーは奇数ジョインである。 [(b)の証明] ・Fは奇数カバーなので、Gで𝑋≔𝑉 𝐶 1 ∪…∪𝑉 𝐶 𝑘 ∪{𝑣} を縮約すると偶数次数の点になるため、| 𝛿 𝐺 𝑋 |は偶数。 ・一方、Fの極小性より、( 𝑣,𝑤 ∈𝐹となる任意の𝑤に対して) 𝐹\{{𝑣,𝑤}}は奇数カバーではないので、各𝑖に対して| 𝛿 𝐺 𝑉 𝐶 𝑖 |は奇数である。 X 𝑣

2.4 オイラーグラフと2部グラフ 定理2.26(Aoshima and Iri[1977]):Gを無向グラフとする。 (a)奇数ジョインは奇数カバーである (b)極小な奇数カバーは奇数ジョインである。 [(b)の証明] ・以上をまとめると、 𝛿 𝐹 𝑣 ≡ 𝛿 𝐺 𝑣 (𝑚𝑜𝑑 2)を示せば十分 𝑘=| 𝛿 𝐹 𝑣 | | 𝛿 𝐺 𝑋 |は偶数。 各𝑖に対して| 𝛿 𝐺 𝑉 𝐶 𝑖 |は奇数である。 ・ここで、 𝑖=1 𝑘 | 𝛿 𝐺 𝑉 𝐶 𝑖 | = 𝛿 𝐺 𝑋 + 𝛿 𝐺 𝑣 −2 𝐸 𝐺 𝑣 ,𝑉 𝐺 \X +2 1≤𝑖<𝑗≤𝑘 | 𝐸 𝐺 𝐶 𝑖 , 𝐶 𝑗 | より、 𝛿 𝐹 𝑣 ≡ 𝛿 𝐺 𝑣 (𝑚𝑜𝑑 2)が示される。 X 𝑣

2.4 オイラーグラフと2部グラフ ・オイラーグラフについてはまた12.2節でやります ・続いて2部グラフについて ・無向グラフの2分割(bipartition)とは、AとBがともに安定集合となるような点集合の分割𝑉 𝐺 =𝐴∪𝐵

2.4 オイラーグラフと2部グラフ ・オイラーグラフについてはまた12.2節でやります ・続いて2部グラフについて ・無向グラフの2分割(bipartition)とは、AとBがともに安定集合となるような点集合の分割𝑉 𝐺 =𝐴∪𝐵

2.4 オイラーグラフと2部グラフ ・2分割を持つ時、グラフは2部(bipartite)であると呼ぶ。 ・𝑉 𝐺 =𝐴∪𝐵, 𝐴 =𝑛, 𝐵 =𝑚かつ 𝐸 𝐺 = 𝑎,𝑏 :𝑎∈𝐴,𝑏∈𝐵 となるような単純な2部グラフを 𝐾 𝑛,𝑚 と書き、完全2部グラフと呼ぶ。 ・以後𝐺= 𝐴∪𝐵,𝐸 𝐺 と書いた時、2部グラフを表す … 𝑛 𝑚

2.4 オイラーグラフと2部グラフ 命題2.27(König[1916]):無向グラフGが2部グラフであるための必要十分条件は、Gが奇数長の閉路を持たない ことである。与えられた無向グラフGに対して、2分割か 奇数長閉路を求める線形時間アルゴリズムが存在する。 [証明] ・まず必要性を簡単に示す。(直観的には明らか) ・閉路 𝑣 1 , ……, 𝑣 𝑘 が存在し、 𝑣 1 ∈𝐴であると仮定する。 ・明らかに 𝑣 𝑖 ∈𝐴であることと𝑖が奇数であることは等価 であり、𝑘が奇数の時 𝑣 1 , 𝑣 𝑘 が共に𝐴に属することになるが、これは2分割になっていない。

2.4 オイラーグラフと2部グラフ 命題2.27(König[1916]):無向グラフGが2部グラフであるための必要十分条件は、Gが奇数長の閉路を持たない ことである。与えられた無向グラフGに対して、2分割か 奇数長閉路を求める線形時間アルゴリズムが存在する。 [証明] ・グラフは連結であると仮定する。 ・任意に点𝑠∈𝑉 𝐺 を選び(𝐺,𝑠)に幅優先探索を適用し、幅優先木T全ての点𝑣∈𝑉(𝐺)への距離を求める。 ・𝐴≔ 𝑣∈𝑉 𝐺 :𝑑𝑖𝑠 𝑡 𝐺 𝑠,𝑡 は偶数 , 𝐵=𝑉(𝐺)\𝐴と 定義する。もし𝐺[𝐴]か𝐺[𝐵]に辺𝑒={𝑥,𝑦}が存在すれば、 T上でのx-yパスに𝑒をつなげた奇数長閉路が得られる。それが無ければこれは2分割を与えている。

2.4 オイラーグラフと2部グラフ 2.4 オイラーグラフと2部グラフ の内容はここまで。 やったこと ・オイラーウォークを持つ必要十分条件はオイラーであることであり、そのウォークは線形時間で求まる。 ・オイラーでないグラフをオイラーに変形するための奇数ジョイン、奇数カバーの概念があり、それらはある意味等価である。 ・2部グラフである必要十分条件は、奇数長閉路を持たないこと。その閉路または2分割は線形時間で求まる。

おわり