I : 首都 原案 : 岸本 解法の提示 : 森田 正当性の証明 : 岸本 テスター : 岸本, 森田 解説 : 岸本.

Slides:



Advertisements
Similar presentations
組合せ最適化輪講 2.3 連結性 川原 純. 2.3 連結性 内容 – グラフ上の節点をすべてたどるアルゴリズム 計算機上でのグラフの表現 – 強連結成分を求めるアルゴリズム トポロジカル順序を求める方法も – k- 連結、 k- 辺連結について – 2- 連結グラフの耳分解について.
Advertisements

有限幾何学 第 2 回. 有限幾何学 第 2 回 1. 様々なグラフの例 2. 道と最短経路問題 1. 用語の説明 2. 最短経路問題 3. ダイキストラのアルゴリズム.
1 高速フーリエ変換 (fast Fourier transform). 2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法.
2015 年度 有限幾何学 期末試験 次の各問に答えよ.( (1), (2), (3), (4), (5), (7), (8), (10) は答えだけでよい) (1) 有向閉路が存在しない位数 4 のトーナメントを描け. (2) 内点の個数が 10 個の正則 2 分木の葉の個数を求めよ. (3) グラフ.
G 問題 コードアート オンライン 原案:西出 ライタ:伊藤 テスタ:西出. 問題概要 0 大きさのさまざまな n 個の円に多角形 m 個を入れら れるか判定する問題 0 ただし、同じ円に複数の多角形を入れることはでき ない 0 もし、入れられる場合は、辞書順最小の入れ方を出 力 ① ② ③ ① ②.
問題案 : 稲葉 解答:秋葉、稲葉.  「 + 」の辺を通ると所持金が 1 円増える  「 - 」の辺を通ると 1 円減る (文無しは通れ ない)  始点を0円で出て終点に0円で着く最短路 は?  |V| ≦ 250 =
ACM/ICPC と アルゴリズム 「実践的プログラミング」 稲葉 一浩. 自己紹介 ﻪ 理Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 ﻩ 博士課程1年 ﻩXML を扱う専用言語の研究など ﻪ 個人的には ﻩ ﻯD.
模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤.
J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
ハノイグラフの生成と最短経路の導出 東京電機大学 理工学部 村田和也 松浦昭洋
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
凸関数じゃないですか (最大値/最小値を求める問題) 目的関数を固定する (最大値/最小値を最小/最大化する問題)
T2V技術 Web製作ラボ 4/25, 2011 hayashiLabo 9.
2009/12/4 グラフ (2) 第10講: 平成21年12月4日 (金) 4限 E252教室 コンピュータアルゴリズム.
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
電子情報工学科5年(前期) 7回目(21/5/2015) 担当:古山彰一
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
A: Attack the Moles 原案:高橋 / 解説:保坂.
I: Tokyo Olympics Center
問題作成・解説: 北村 解答作成協力: 小西・松本
Problem G : Entangled Tree
An Algorithm for Enumerating Maximal Matchings of a Graph
アルゴリズムイントロダクション第5章( ) 確率論的解析
原案:阿部 担当:福澤, 笠原 英訳:寺島 解説:福澤
JAG Regional Practice Contest 2012 問題C: Median Tree
 Combinations(2)        古川 勇輔.
Problem C: Princess' Japanese
模擬国内予選2014 Problem C 壊れた暗号生成器
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
5.5 The Linear Arboricity of Graphs (グラフの線形樹化数)
生命情報学入門 配列のつなぎ合わせと再編成
独立成分分析 1.問題は何か:例:解法:全体の見通し 2007/10/17 名雪 勲.
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
ネットワーク理論 Text. Part 3 pp 最短路問題 pp 最大流問題 pp.85-94
グラフアルゴリズムの可視化 数理科学コース 福永研究室 高橋 優子 2018/12/29.
アルゴリズムイントロダクション 第24章 単一始点最短路問題
離散数学 08. グラフの探索 五島.
7.4 Two General Settings D3 杉原堅也.
25. Randomized Algorithms
b f c a d e g h a b c d e f g 図1 図2 2012年度 有限幾何学 期末試験
First Course in Combinatorial Optimization
離散数学 07. 木 五島.
最短ネットワーク問題:シュタイナー問題 3-G 023145 長谷川 和弘.
2016年度 有限幾何学 中間試験 問1 次のグラフを描け.(描けない場合は理由を述べよ) 各20点
ベイジアンネットワーク概説 Loopy Belief Propagation 茨城大学工学部 佐々木稔
アルゴリズムとデータ構造1 2006年7月11日
問題作成、解説担当:中島 副担当:坪坂、松本
D: 壊れかけのヒープ 問題案: 稲葉.
かけ算九九は 言えるようになったかな? じゃ、 かけ算ビンゴを やってみよう。.
第16章 動的計画法 アルゴリズムイントロダクション.
プログラミング入門 電卓を作ろう・パートI!!.
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
2009/11/27 グラフ (1) 第9講: 平成21年11月27日 (金) 4限 E252教室 コンピュータアルゴリズム.
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
2017年度 有限幾何学 期末試験 注意:ループと多重辺がないグラフのみを扱う. 問1 次の定理と,その証明の概略を読み,各問に答えよ.
ヒープソート.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
問2 次の問に答えよ. (ただし,握手補題,オイラーの定理,Oreの定理 は授業で紹介したものとする) (1) 握手補題を書け.
参考:大きい要素の処理.
13.近似アルゴリズム.
C問題 高所恐怖症 原案・ライタ : 伊藤 テスタ : 青木・西出.
情報数理Ⅱ 第10章 オートマトン 平成28年12月21日.
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
第4章 空間解析 2.ネットワーク分析 (2) 最大流問題
無向グラフが与えられたとき、最大位数の完全部分グラフを求める問題
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
京都大学 情報学研究科 通信情報システム専攻 高田智史 joint work with 伊藤大雄 中村義作
Presentation transcript:

I : 首都 原案 : 岸本 解法の提示 : 森田 正当性の証明 : 岸本 テスター : 岸本, 森田 解説 : 岸本

概要 DAG な有向グラフが与えられる グラフの辺に対しては反転操作が可能 ある頂点 s からすべての頂点に到達可能にした い T(s) を頂点 s に対して必要最小限な反転操作回 数とする T(s) の最小値およびそれを達成する頂点をすべ て求めよ

制約 頂点数 N <=10,000 辺数 M <= 100,000 グラフは DAG 入次数 0 の頂点数は 50 以下

原案 まずは原案を考える 問題設定は同じ 制約のみ異なる

原案の制約 頂点数 N <= 300 辺数 M <= 500 くらい

原案の解法 有向辺 (i, j) に対して i->j にはコスト 0 の辺 を張り, j->i にはコスト 1 の辺を張ることに する 考えたい問題のコストの最小値は, 実はい くつか有向辺を選んで s から到達可能であ るようにすればよい つまり …?

最小全域有向木!

最小全域有向木 何それ 重み付き有向グラフに対して根 r が与えられた とき, r を根とする最小重みの全域有向木を求め る どうするの Chu-Liu/Edmonds のアルゴリズムが知られて いる

Chu-Liu/Edmonds のアルゴ リズム 1. 根以外の頂点 v に対して頂点 v に入る辺として重みが最小の 辺 min(v) を選択する 2. これらの辺を使って有向木になっていたら終了 3. そうでない場合, どこかにループが存在する 4. ループ中の頂点 v に対して, v に入る辺の重みをそれぞれ ( 元 の辺の重み ) – (min(v) の重み ) と変更する 5. 1 つのループに含まれる頂点で縮約して 1 つの頂点にする 6. 1 に戻る 細かいことは以下のページ

評価 Chu-Liu/Edmonds のアルゴリズムは時間 計算量 O(VE) で動作する 各頂点に対して T(v) の値を求めたいので V 回動かす 全体で O(V^2 E) これで間に合う やったぜ

現実 頂点数 N <=10,000 辺数 M <= 100,000 グラフは DAG 入次数 0 の頂点数は 50 以下 とてもじゃないけど間に合わない

変な制約は無いか 競プロでは妙な制約をみかけることがある 無いかな? 「入次数 0 の頂点数は 50 以下」 どういうことだろう?

首都になりうる頂点 元のグラフで頂点 v から頂点 u に到達可能 とする このとき v から u は到達可能であり, u から v へ到達可能にするために余計にコストが必 要 ということは入次数 0 の頂点だけが首都に なりうる!

さっそく評価 S を入次数 0 の頂点からなる集合とする 候補が減ったので Chu-Liu/Edmonds のア ルゴリズムの適用回数は |S| 回まで減った O(|S|NM) まだまだつらい

じゃあどうすればいいの? S に含まれる頂点を v, u とする v -> u に到達可能にしないとどうしようもない 逆に, S に含まれる頂点を到達可能にするだけ でよさそう v -> u を到達可能にするために必要なコストだ けを考えて S 上で s から到達可能にするルート の選び方を考えればよい?

本当? v -> u, v->w のパスがあったときに途中ま で同じものをひっくり返す場合がありそう。 うまくいかないんじゃない? 実は大丈夫 がんばって証明しました アウトラインはスライドの付録へ つまり … ?

やっぱり 最小全域有向木!

辺のコスト あとは v->u のコストをどう求めるか 辺を順向きにたどれば 0, 逆向きにたどれば 1 のコストがかかるとする これで v->u の最短経路を求める。

評価 コスト決定パート Dijkstra : O(|S| E log V) コストが 01 なので queue に突っ込むと O(|S| E) 最小全域有向木パート 頂点数 O(|S|), 辺数 O(|S|^2), 試す回数 O(|S|) O(|S|^4) あわせて O(|S|^4 + |S|E) めでたしめでたし

ジャッジ解 岸本 (C++) : 236 行 5348Byte 森田 (C++) : 232 行 6147Byte

正解者 1AC / 2 Trying teams Operasan (221:31)( 中身は semiexp+japlj) 198 行 3982Byte ジャッジ解より短い ジャッジの実装へたくそなのでは ライブラリ無しだったらしい! もう 1 つのチームは O(|S|NM) 解法を提出し ているように見えました

最小全域有向木について 「アルゴリズムデザイン」に書いてあります Spaghetti Source edmonds.html edmonds.html ジャッジ aizu.ac.jp/onlinejudge/description.jsp?id=GRL_2_B&l ang=jp aizu.ac.jp/onlinejudge/description.jsp?id=GRL_2_B&l ang=jp

余談 (1) 最初は原案通りの問題だったが、森田さんがもう ちょっと制約きつくできそうと言った 自分もそれっぽいコストを考えて証明のような物 を書いたが撃墜されてしまった 森田解が正しそうなので証明した。これは複数人 から同意を得たので合っているはず 正直今も撃墜されないかビクビクしている

余談 (2) そもそも思いついたきっかけについてです 何か問題を作ろうと思っていた時期がありました 以下の二つをそれぞれ考えていました 1. 典型アルゴリズムを使わない問題 2. グラフであまり見かけない操作を使った問題 1 を出したくなったのは、 Asia Danang(Vietnum) 2013 では知っててもコンテストであまり見かけな いアルゴリズムがたくさん出てたからです

余談 (3) とりあえず 2 の方をうんうん考えていると辺の反転とい うのが思い浮かんだのでそれで何か問題を作れないか 考えていました そうしたら 1 として最小全域有向木が思いついたので非 常に嬉しかった、という具合です 当時は周囲でこのアルゴリズムが登場していなかった ため出題を楽しみにしていました が、会津大が先に出してしまった ( aizu.ac.jp/onlinejudge/cdescription.jsp?cid=RitsCamp14 Day2&pid=L ) ので悔しかったです aizu.ac.jp/onlinejudge/cdescription.jsp?cid=RitsCamp14 Day2&pid=L

証明について 付録の証明です 非自明なので大変 5 時間コンテスト中に行うのは困難

証明のアウトライン (1) ひっくり返す辺を共有する場合を考える S 上の頂点 u,v,w があるとして S 上にない頂点 a,b が あるとする。ただし a->b は元のグラフで辺が張ら れている v->…->b->a->…u, a->…w の経路上で逆方向の辺 をひっくり返してうまくいくこと (a->u, a->w の経 路の辺に重複は無い ) にする このとき、これ以下のコストで分岐がないような 経路に直せれば嬉しい

証明のアウトライン (2) 頂点 a は S に含まれないので S 中の頂点のどれかか ら到達可能である。これで場合分けをする (1)u が a に到達可能であれば, v->…b->a->…->u, u- >…->a->…->w のパスを考えると同じコストで済 む (2)w が a に到達可能であれば同じこと (3) 残り : a が u,w 以外の S 中頂点 x から到達可能とし たときはどうなるか

証明のアウトライン (3) (3-a) : 今回の解で u->…->x の経路が解として選択され ているとき 次の経路で v->u->x->w とたどった場合と同じコストで OK v->…->b->a->…->u->…->x->…->a->…->w (3-b) : w->…->x の経路が解として選択されているとき 同上 (3-c) : ( それ以外の頂点 y)->…->x が解として選択されて いるとき y->…->x->…->a->…->u, a->…->w とすればよりよい結果 となる