1 / 15

ACM/ICPC と アルゴリズム

ACM/ICPC と アルゴリズム. speech @ 「実践的プログラミング」 稲葉 一浩. 自己紹介. 理 Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 博士課程1年 XML を扱う専用言語の研究など 個人的には http://www.kmonos.net/ D 言語 C++. Boost ACM/ICPC 歴 2003 [Lighthouse] ビバリーヒルズ大会 (11 位 ) 2004 [Gokuri] ソウル予選、会津予選で敗退 2005 [Gokuri-Squeeze] 上海大会(惨敗 orz ).

adara
Download Presentation

ACM/ICPC と アルゴリズム

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ACM/ICPCとアルゴリズム speech @ 「実践的プログラミング」 稲葉 一浩

  2. 自己紹介 • 理Ⅰ → 理学部情報科学科 → 情報理工学系研究科コンピュータ科学専攻 • 博士課程1年 • XMLを扱う専用言語の研究など • 個人的には • http://www.kmonos.net/ • D言語 • C++. Boost • ACM/ICPC歴 • 2003 [Lighthouse] ビバリーヒルズ大会 (11位) • 2004 [Gokuri] ソウル予選、会津予選で敗退 • 2005 [Gokuri-Squeeze] 上海大会(惨敗orz)

  3. 「アルゴリズム」とは • アルゴリズム(algorithm) は、なんらかの問題を解くための手順のことである。算法(さんぽう)と訳されることもある。 -- Wikipediaより • 例 • なんらかの問題 : 整列(sorting) • アルゴリズム : クイックソート、バケツソート,...

  4. 発表の内容 × • どういう問題を解くアルゴリズムを知っているとよいのか!? • どういう問題を解くアルゴリズムは知らなくてもいいのか!?

  5. 「NP完全問題」 • NP問題 • 「答えがあってるかのチェック」は簡単な問題 • Sorting とか • NP困難問題 • どんなNP問題よりも、それ以上に「難しい」問題 • 「この問題が効率よく解ければ他のどんなNP問題も解ける」とわかっている問題 • NP完全問題 : NPかつNP困難 • NP問題の中で一番「難しい」問題

  6. 「NP完全問題」 • ICPCなどでも、よく出題される • でも、NP完全問題を効率よく解くアルゴリズムは、まだ誰も発見していない • もちろんICPCの出題者も! • うまい解き方が思いつかなくても問題なし • 「NP完全問題だ」と気づいたら、なんの工夫もないプログラムで突撃してOK! • そういう風に入力が作ってあるはず

  7. 「NP完全問題」の例 • 巡回セールスマン問題 • ハミルトン経路問題 • 集合分割問題 • 最大クリーク問題 • ナップザック問題

  8. Traveling Salesperson Problem • 入力:都市間の移動にかかる時間 • 出力:全ての都市を巡って戻ってくる最短経路

  9. Hamiltonian Path • 入力:点と辺でできた図形(グラフ) • 出力:全点を一度ずつ通るような経路 「ひとふでがき」 とはちょっと違う

  10. Partition • 入力:数の集合 • 出力:和が丁度半分になるように分けられる?{1.2, 3.4, 5.6, 5.3, 0.9, 3.5} ただし、 数の集合が「小さい整数」と わかっているときは、 効率よく解ける。(DP)

  11. Maximum Clique • 入力:グラフ • 出力:どの2点も辺でつながってるような 頂点集合の最大サイズ

  12. Knapsack Problem • 入力:荷物(重さ、価値) • 出力:重量制限を満たす   範囲でできるだけ   価値を増やす荷物の   選び方

  13. そのほか • Google “NP完全” • Wikipedia “NP完全”

  14. 実際に出た問題 • 2005 F (巡回セールスマン問題) • 2003 E (最適配置問題) • 2002 D (Hit & Blow) • ...

  15. おまけ • 知っているとよいアルゴリズム • グラフ理論 • 『データ構造とアルゴリズム』 培風館 エイホ、ウルマン、ホップクロフト • 『アルゴリズムC++』 近代科学社 セジウィック • 図形問題 • 高校の数学の教科書

More Related