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.

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

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

  • Be the first to comment

  • Be the first to like this

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

  1. 1. 情報科学への誘い
 高校数学を学んできた諸君に 2005-06-15 国島丈生
  2. 2. 自己紹介 • 知能メディア工学研究室(横田研究室) 助教授 • 情報通信工学演習I(1年次)・情報通信 工学実験B(2年次) • 計算機言語I(2年次) • コンパイラ・計算機言語II(3年次) • 形式言語理論(修士1年次)
  3. 3. 自己紹介 • 京都大学工学部情報工学科(今の情報学 部) (1989, M1991, D1994) • 奈良先端科学技術大学院大学情報科学 研究科助手(1994~1997) • 岡山県立大学助教授(1997~)
  4. 4. 興味のある分野 • ソフトウェア技術 • 構造化文書(XML)処理技術 • データベース • プログラミング言語 • WWW技術
  5. 5. 今日の内容 • 高校数学から情報科学への橋渡し • 自分の(大学時代の)経験をもとに • 注意 • 私の経験が皆に役立つとは限らない • 私≠皆さん、皆さんも全員違う人間 • 大学は(他の誰とも違う)自分を見 つけていく場
  6. 6. 学科を選んだ理由 • 高校までコンピュータとは無縁 • 友達のコンピュータでゲームをした程 度 • 数学が好きだった • 理学部数学科だと就職に困りそう • {数理,情報}工学科の偏差値の高い方を 選択
  7. 7. 友達のコンピュータ メモリ2~16KB
  8. 8. どんな時代? • 国産パソコン NEC PC-9801 • PC-9801VX01(1987年):CPU 8MHz, HDDなし(FDのみ), 353,000円 • Windows なんぞ当然なし • Sun3/60(4回生配属時に導入されたWS) • CPU 20MHz, メモリ24MB • 数百万円
  9. 9. 実際のところは? • 物理が結構必要だった… • 電気回路・電子回路など • 一般教養の数学は難しかった • 専門でも高校数学の延長(微分とか積 分とか)は出てこなかった • どちらかというとパズルみたい • 成績は…Dは少なかったが、B/Cは結構 あったような?
  10. 10. 後悔した? • そうでもない • もともとパズルっぽいものは好き • 高校数学とは別物と考えれば、結構 おもしろい • プログラムを書くのがおもしろい • ただし本当におもしろいと思い出し たのは4回生でUNIXに触れてから
  11. 11. 結局 • 理論寄りの研究室に配属 • 講義で教授が気に入った • ブール代数、アルゴリズム、論理設計 • でも研究室内ではアウトサイダー(ソ フトウェア) • その後ソフトウェア寄りの研究室に鞍 替え
  12. 12. 未来は神のみぞ知る • 研究者としては割と回り道をしている • 有限オートマトン(B4~M2) • データ工学、論理(D) • HTML,WWW(助手) • 関数型言語, Java, 形式言語(県立大) • しかし • すべてが今の興味の対象(XML)に関連
  13. 13. 今にして思えば • 情報工学の二面性 • 計算機科学 • コンピュータの構成に関する学問 • 物理現象が関わってくる • 情報科学 • コンピュータ上で問題を解く学問 • 計算手順、アルゴリズム
  14. 14. 車の両輪 • 情報技術者には両方の素養が必要 • プログラムが書ければええやん→否 • 問題の難しさを見極めなければいい プログラムは書けない • 計算手順(アルゴリズム) • ハードウェアの制約
  15. 15. 今、そして昔 • 昔…情報技術者はオールマイティ • ハードウェアからソフトウェアまで • 学べる程度の範囲だった • 今は? • カバーする範囲がとてつもなく広く 深くなった • 学ぶ範囲はどんどん狭く(タコツボ化) • 常識程度の知識はオールマイティであっ てほしい
  16. 16. 情報科学への橋渡し • 結城浩「プログ ラマの数学」 • ソフトバンク 社、2200円
  17. 17. 本を読もう • 時間のあるうちに • インターネットに頼 るだけでは知識の底 が浅くなる • 情報科学関係のお勧 め例 • コンピュータの名 著・古典100冊 (インプレス)
  18. 18. 何が必要だった? • 離散の世界の数学 • 0/1の代数(ブール代数) • 集合、剰余系、場合の数、数学的帰 納法、数列、etc. • 苦手だったんですけど→情報科学の 視点から、これから理解していけば OK
  19. 19. 問題 • 今日は日曜日です。100日後は何曜日? • 1日後は月、2日後は火、…100日後は 火 • 今日は日曜日。1億日後は何曜日? • とても数えられません • 7の倍数日後はいつも日曜日。1億÷7 = 14285714 あまり 2。∴火曜日
  20. 20. 問題 • 今日は日曜日。10100日後は何曜日? • 10100なんてとても計算できません。7 で割った余りも計算できません • 10nを7で割った余りを、n=1, 2, …で計 算してみよう
  21. 21. すると • 100%7=1, 101%7=3, 102%7=2, 103%7=6, 104%7=4, 105%7=5, 106%7=1, 107%7=3, … • %:余りを求める演算子 • nが1増えると、周期6で同じ数が出てく る(1, 3, 2, 6, 4, 5) 周期7ではない!! • 100 % 6 = 4 ∴木曜日
  22. 22. プログラムにすると void nannyoubi(int n) { if (n%6 == 0) { printf(“月曜日¥n”); } else if (n%6 == 1) { printf(“水曜日¥n”); } else if (n%6 ==2) { /* 以下省略 */ }
  23. 23. 問題 生まれて2日経つと子を1匹産めるように なり、それ以降は毎日子を1匹産むとい う生き物がいる。 1日目に、生まれたての生き物を1匹も らったとすると、11日目には全部で何匹 になっているか。
  24. 24. 考え方 • n日目に生きている生き物は • n-1日目までに生まれていた生き物 • n-2日目までに生まれていた生き物が 産んだ子供 • n日目の生き物の数をF(n)とすると • F(n) = F(n-1) + F(n-2), F(1) = 1, F(2) = 1 • これに従って計算すると F(11) = 89
  25. 25. 実は • 有名な数列(フィ ボナッチ数列) • 一般項は複雑 • しかしプログラム は漸化式そのもの (再帰関数) F(n) = 1 √ 5 ( 1 + √ 5 2 )n + ( 1 − √ 5 2 )n int F(int n) { if (n == 1 || n == 2) { return 1; } else { return F(n-1)+F(n-2); } }
  26. 26. 問題 川岸に、狼、山羊、キャベツをつれた人 がいる。川には船が一艘あるが、一度に たかだか一つの荷物しか運べない。また、 狼と山羊(山羊とキャベツ)だけを川岸 に置いたまま人が離れると、狼(山羊) が山羊(キャベツ)を食べてしまう。こ のとき、すべての荷物を反対側の岸に運 ぶ最短手順を求めよ。
  27. 27. どうやって解こう? • 最初は山羊を連れていくしかない • ほかのものだと食べられてしまう • 山羊を対岸に残し、人だけで戻ってく るしかない • 山羊を連れて帰ったら元に戻ってしま う • …
  28. 28. 書き方を決める • 人(P)、狼(W)、山羊(G)、キャベツ(C) • 左岸にいるもの-右岸にいるもの • 例:最初は PWGC-Φ • Φ:何もいないことを表す • 目標:PWGC-Φ から Φ-PWGC に至る 最短経路を示すこと
  29. 29. 図にしてみると 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が対岸に運んだもの
  30. 30. 結局 • 最短手順は2通り • 最短手順以外の解が無数にある • 実は • 手順を示した図=有限オートマトン • 情報科学の基本概念の一つ • 文字列検索、論理設計など • 関連科目:離散数学、コンパイラ、 形式言語理論(大学院)
  31. 31. どう考えたのか • 最初にできることは • 狼を連れて行く→山羊とキャベツ…× • 山羊を連れて行く • キャベツだけ連れて行く→狼と山 羊…× • 人だけ渡る→狼と山羊、山羊とキャ ベツ…× • 場合分けを繰り返す
  32. 32. 局面の表現 • 各局面を「左岸にいるものの集合」「右 岸にいるものの集合」の2つで表現 • 船で荷物や人が移動=2つの集合の要素 が変化すること • 移動中の状況は無視
  33. 33. 変数 • 高校数学と情報科学で最も変わるもの • 高校数学での変数とは • 未知数:方程式や不等式 • 数の抽象化:関数 • プログラム(特にCなど)の変数とは • 値を保持する「器」 • プログラムの実行に伴い値が書き換 えられる
  34. 34. 例:自動販売機 • 飲み物1, 飲み物2, …の価格 p1, p2, … • 飲み物1,飲み物2,…が買えるか b1,b2,…(ランプのon/off) • 投入金額 n • 硬貨を投入するたび • n が増える • n ≧ pk なら bk を on に • 飲み物kを購入したら • n - pk > 0 なら n - pk を釣り銭に
  35. 35. 難しく言うと • 変数p1, p2, …, b1, b2, …, n:ある瞬間の自 動販売機の状態を表している • 硬貨の投入/飲み物の購入によって、 自動販売機の状態が変化 • つまり • 変数の値の変化=プログラムの実行
  36. 36. なぜこんな使い方を? • 演習Iのレポートの復習 • CPUはメモリ(HDD)上のデータを 読み出し、計算し、結果をメモリ (HDD)に書き込む • メモリ(HDD):0/1を保持する領域 の集まり • 変数/アルゴリズム≒メモリ(HDD)/ CPU(フォン・ノイマン型計算機)
  37. 37. それでもなお 学生:「先生、分からないんですけど」 私:「アルゴリズムは分かるの?」 学生:「それは何となく分かります」 私:「そんなら、そのままプログラムに すればええやん」 学生:「どうやってプログラムにしたら いいかが分からないんです」
  38. 38. Algorithm = Program? • 否 • Algorithm + Data Structure = Program
 (by N.Wirth) • プログラムには両方重要 • アルゴリズム(計算手順) • それに適したデータ構造(変数、配 列、構造体etc.)…高校数学やパズル にはまったくなかった部分
  39. 39. 鍵はデータ構造 • 局面をどう表すか • アルゴリズムの世界では…比較的自由 • 線形リスト、スタック、待ち行列、木、 二分木、配列、集合、… • プログラムの世界では…単純、限定 • Cだと:変数、配列、構造体、… • データ構造をいかに翻訳するかが鍵 • アルゴリズム⇔プログラムの翻訳はデー タ構造の翻訳についてくる
  40. 40. 諸君の健闘を祈る
  41. 41. レポート課題 • 以下の問題のうち1問以上を解いてレ ポートにまとめよ。 • 6/21(火) 17:00までに2610に提出 • 用紙はA4が望ましい • なるべく自分が知らなかった問題をやっ てみること
  42. 42. 問題1:ハノイの塔 台の上に3本の棒(左から順にA, B, C)が固 定されており、Aにn枚の円盤がはまって いる。円盤は下に行くほど半径が大きく なっている。次のルールを満たしながら、 円盤をすべてBに移すのに必要な手数をn で表せ。 • 一度に一枚の円盤しか移動できない • 移動の途中で円盤の大小を逆にして はいけない
  43. 43. 問題2 天国と地獄の分かれ道に2人の人がい る。彼らはチャーチルとヒットラーであ るが、どちらがどちらかは分からない。 チャーチルは、質問には必ず本当のこと を答える。ヒットラーは必ず本当と反対 のことを答える。1回だけ質問をして、天 国への道を見分ける方法を考えよ。
  44. 44. 問題3 問題2の変形として次の状況を考える。 このとき2回の質問で天国への道を見分 ける方法を考えよ。 • 分かれ道にいるのはチャーチル、ヒッ トラー、スターリン。 • スターリンは本当と嘘(本当と反対のこ と)をランダムに言う。
  45. 45. 問題4 図のようにかかっている7本の橋を、次の条件 を満たしながらすべて渡りたい。渡れるなら手 順を示し、渡れないなら証明を述べよ。 • それぞれの橋は一度しか渡れない。 • それぞれの土地は何度通ってもよく、どこか ら開始しても、どこで終わってもよい。開始 点と終了点が違っていてもかまわない。
  46. 46. 将来に向けて • どの問題も関連する講義がある • 問題1:計算機言語I、情報通信工学 実験B(再帰) • 問題2・3:人工知能(論理) • 問題4:離散数学(グラフ理論)

×