Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20070627フレッシュマンセミナー

2007年6月27日に実施した、岡山県立大学情報工学部情報通信工学科1年次生向けの講義「フレッシュマンセミナー」の講演スライド

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

20070627フレッシュマンセミナー

  1. 1. 情報科学への誘い
 高校数学を学んできた諸君に 2007-06-27 国島丈生(横田研究室)
  2. 2. 自己紹介 • 京都大学工学部情報工学科(1985-1994) • 今の情報学部 • 奈良先端科学技術大学院大学(助手, 1994~1997) • 岡山県立大学(助教授・准教授, 1997~)
  3. 3. 自己紹介 • 情報通信工学実験B(2年) • プログラミング言語II(2年) • コンパイラ(3年) • プログラミング言語III(3年) • 形式言語理論(修士1年)
  4. 4. 興味のある分野 • ソフトウェア技術 • 構造化文書(XML)処理技術、テキスト 処理技術、データベース、プログラミ ング言語、WWW技術 • 最近、日本文学の研究者と交流あり
  5. 5. もっと知りたい人は http://t.kunishi.googlepages.com/ 
 からいろいろたどれます
  6. 6. 今日の内容 • 高校数学から情報科学への橋渡し • 自分の(大学時代の)経験をもとに • 注意 • 私の経験が皆に役立つとは限らない • 大学は(他の誰とも違う)自分を見 つけていく場
  7. 7. 高校時代は • 高校までコンピュータとは無縁 • 友達のコンピュータでゲームをした程 度 • パソコンは高嶺の花 • インターネットなんて想像すらしなかっ た
  8. 8. どんな時代? • 国産パソコン NEC PC-9801 • PC-9801VX01(1987年):CPU 8MHz, HDDなし(FDのみ), 353,000円(今 だと50万円以上?) • Windows なんぞ当然なし • Sun3/60(研究室にあったコンピュータ) • CPU 20MHz, メモリ24MB, 数百万円
  9. 9. 友達のコンピュータ メモリ2~16KB ディスクなし ポケットコンピュータ (ポケコン)
  10. 10. なぜ情報を選んだ? • 数学が好きだった • 当時の京大には選択肢が3つ • 理学部数学科…就職に困りそう • {数理, 情報}工学科…区別がつかない →偏差値の高い方を選択
  11. 11. ところが いろいろと誤算があった
  12. 12. 誤算その1 • 物理が結構必要だった… • 物理は得意ではなかったので数学を 生かそうと思ったはずなのに
  13. 13. 今にして思えば • 情報工学の二面性 • 計算機科学:コンピュータの構成に 関する学問…物理現象が関わる • 情報科学:コンピュータ上で問題を 解く学問…計算手順、アルゴリズム • これらは互いに関連している
  14. 14. コンピュータは万能? • プログラムが書ければええやん→否 • コンピュータでは時間がかかりすぎて (事実上)解けない問題もある • コンピュータがもっと速くなったら解 けるか?→Yesの場合もNoの場合もある
  15. 15. 例 チェックボックス形式の 設定項目が30個あり、こ れらの組み合わせが正し く動作するか検査したい。 
 1つの検査に1分かかると して、どのくらいの時間 がかかるか。
  16. 16. 答は • 組み合わせの総数 • 230 = 10億7374万1824 回 • 1073741824 / (60 × 24 × 365) ≒ 2037 (年) • 理論上は無限ではないから調べられる が、現実的には調べられない
  17. 17. 誤算その2 • 一般教養の数学は難しかった
  18. 18. 誤算その3 • 専門でも高校数学の延長(微分とか積 分とか)は出てこなかった • どちらかというとパズルみたい 8クイーン問題 哲学者の食事問題
  19. 19. 後悔した? • もともとパズルは好き • 高校数学とは別物と考えれば、結構 おもしろい • プログラムを書くのがおもしろい
  20. 20. 情報科学の数学 • コンピュータという「0/1の土俵」の上 で計算の手順を考えるための道具 • 離散の世界の数学 • 0/1の代数(ブール代数)、集合、剰 余系、場合の数、数学的帰納法、数 列、etc.
  21. 21. 情報科学への橋渡し • 結城浩「プログ ラマの数学」(ソ フトバンク社、 2200円)
  22. 22. 問題 • 今日は日曜日です。100日後は何曜日? • 1日後は月、2日後は火、…100日後は 火
  23. 23. 問題 • 今日は日曜日。1億日後は何曜日? • とても数えられません • 7の倍数日後はいつも日曜日。1億÷7 = 14285714 あまり 2。∴火曜日 • 法則の発見により計算を削減
  24. 24. 問題 • 今日は日曜日。10100日後は何曜日? • 10100なんてとても計算できません。7 で割った余りも計算できません • 10nを7で割った余りを、n=1, 2, …で計 算してみよう
  25. 25. すると • 100%7=1, 101%7=3, 102%7=2, 103%7=6, 104%7=4, 105%7=5, 106%7=1, 107%7=3, … • %:余りを求める演算子 • 周期6で同じ数が出る(1, 3, 2, 6, 4, 5) • 100 % 6 = 4 ∴木曜日 • 法則の発見により再び計算を削減
  26. 26. プログラムにすると void nannyoubi(int n) { if (n%6 == 0) { printf(“月曜日¥n”); } else if (n%6 == 1) { printf(“水曜日¥n”); } else if (n%6 ==2) { /* 以下省略 */ } 法則がそのままプログラムになる
  27. 27. 問題 ウサギの対は生まれて1ヶ月経つと1対(2 匹 )の子供を産むようになり、それ以降 は毎日子を1対産む。またこのウサギは決 して死なない。 1対のウサギが最初にいたとして、1年後 には何対のウサギがいることになるか。
  28. 28. 考え方 • nヶ月目のウサギの対は • n-1ヶ月目までのウサギの対 • n-2ヶ月目までに生まれていたウサギ が産んだ子供 • nヶ月目の対の数をF(n)とすると • F(n) = F(n-1) + F(n-2), F(0) = 1, F(1) = 2 • これに従って計算すると F(12) = 377
  29. 29. 実は • 有名な数列(フィ ボナッチ数列) • 一般項は複雑 • しかしプログラム は漸化式そのもの int F(int n) { if (n == 0) return 1; else if (n == 1) return 2; else { return F(n-1)+F(n-2); } } F(n) = 1 ⇥ 5 ⇤� 1 + ⇥ 5 2 ⇥n + � 1 − ⇥ 5 2 ⇥n⌅
  30. 30. 問題 台の上に3本の棒A, B, Cがあり、Aにn枚の円盤が はまっている。円盤は下ほど半径が大きい。次 のルールを満たしながら、円盤をすべてBに移 すのに必要な手数をnで表せ。(ハノイの塔) • 一度に一枚の円盤しか移動できない • 途中で円盤の大小を逆にしてはいけない
  31. 31. 問題 川岸に、狼、山羊、キャベツをつれた人 がいる。川には船が一艘あるが、一度に たかだか一つの荷物しか運べない。また、 狼と山羊(山羊とキャベツ)だけを川岸 に置いたまま人が離れると、狼(山羊) が山羊(キャベツ)を食べてしまう。こ のとき、すべての荷物を反対側の岸に運 ぶ最短手順を求めよ。
  32. 32. どうやって解こう? • 最初は山羊を連れていくしかない • ほかのものだと食べられてしまう • 山羊を対岸に残し、人だけで戻ってく るしかない • 山羊を連れて帰ったら元に戻ってしま う
  33. 33. 場合分けを繰り返す • 最初にできることは • 狼を連れて行く→山羊とキャベツ…× • 山羊を連れて行く→○ • キャベツだけ連れて行く→狼と山 羊…× • 人だけ渡る→狼と山羊、山羊とキャ ベツ…×
  34. 34. 書き方を決める • 左岸にいるもの-右岸にいるもの • 人(P)、狼(W)、山羊(G)、キャベツ (C)、何もいない(Φ) • 例:最初は PWGC-Φ • 目標:PWGC-Φ から Φ-PWGC に至る 最短経路を示すこと
  35. 35. 図にしてみると PWGC-Φ WC-PG PWC-G W-PGCC-PWG WGP-CPGC-W G-PWCPG-WCΦ-PWGC G Φ G Φ G Φ Φ G C C WW G GGG W WC C 枝のラベル: Pが対岸に運んだもの
  36. 36. 結局 • 最短手順は2通り • 最短手順以外の解が無数にある • 実は • 手順を示した図=有限オートマトン • 情報科学の基本概念の一つ • 文字列検索、論理設計など
  37. 37. 問題 図の7つの橋を各1度ずつ 通って元の場所に戻ってく ることができるか。ただし、 同じ橋を2度以上通っては ならない。(ケーニヒスベ ルクの橋)
  38. 38. 考え方 • 「この図が一筆書き可 能か」と等しい…不可 能(点に繋がっている 線の数がどれも奇数だ から) • グラフ理論:電気回路、 ネットワークなどとも 関連 陸地→点 橋→点と点を結ぶ線
  39. 39. よくある会話 学生:「先生、このプログラムの課題、分からな いんですけど」 私:「アルゴリズムは分かるの?」 学生:「それは何となく分かります」 私:「そんなら、そのままプログラムにすればえ えやん」 学生:「どうやってプログラムにしたらいいかが 分からないんです」
  40. 40. Algorithm = Program? • 否 • Algorithm + Data Structure = Program
 (by N.Wirth) • プログラムには両方重要 • アルゴリズム(計算手順) • それに適したデータ構造(変数、配 列、構造体etc.)…高校数学やパズル にはまったくなかった部分
  41. 41. 鍵はデータ構造 • 計算の局面をどう表すか • アルゴリズムの世界では…比較的自由 • 線形リスト、スタック、待ち行列、木、 二分木、配列、集合、… • プログラムの世界では…単純、限定 • Cだと:変数、配列、構造体、… • データ構造をいかに翻訳するかが鍵
  42. 42. 腕の立つ人には • ACMプログラミングコンテスト • http://icpc.baylor.edu/icpc/ • 詳細を知りたい人は国島まで
  43. 43. 諸君の健闘を祈る
  44. 44. 問題 天国と地獄の分かれ道に2人の人がい る。彼らはチャーチルとヒットラーであ るが、どちらがどちらかは分からない。 チャーチルは、質問には必ず本当のこと を答える。ヒットラーは必ず本当と反対 のことを答える。1回だけ質問をして、天 国への道を見分ける方法を考えよ。
  45. 45. 問題 次の状況を考える。このとき2回の質問 で天国への道を見分ける方法を考えよ。 • 分かれ道にいるのはチャーチル、ヒッ トラー、スターリン。 • スターリンは本当と嘘(本当と反対のこ と)をランダムに言う。

×