2010-12-24

数学特別演習(第11回)

今日は「中国の郵便配達員問題」アルゴリズムの最後、入力が有向グラフの場合の話から始める、ということだったのですが、最初の担当の学生さんが、次の章からしか予習をしていません、ということで、急きょ、その場で発表をしてもらいました。

学生さんも、突然のことで面食らったと思いますが、私や、前回発表した人の説明を手がかりに、何とか無事この部分を終えることができました。

次の章では「ナイト跳び」の問題に関する議論が始まりました。これは、チェスの「ナイト」の駒を、チェス盤の上で動かし、すべてのマス目を一度だけ通過させることができるか?という問題です。ここでは「バックトラッキング法」や「ウォーンスドルフの方法」(1823年、ヒューリステックな方法)が紹介され、ついでオイラーによる研究成果(1757年)が紹介されました。ここでもオイラーが登場している。すごいです。

以上、最初の部分で詰まったことと、「ナイト跳び」の部分はよく準備してきたようなことから、最初の人に時間を使ってもらい、今日は1人で授業を終えました。

後で聞いたのですが、今日話した学生さんは、前回の2人目の人から、次の範囲が「ナイト跳び」から、と聞いていたのだそうで(私は前回の授業終了の際に、正しい範囲を伝えていたはずですが)、今日は本人もさぞかし驚いたことでしょう。でも、最後まできちんと説明していたのはよく頑張ったと思います。

そんなわけで、今日は予想外の展開になりましたが、今年の授業も今日で終わりです。よいクリスマス、お正月を過ごし、また年明けに元気に再会できることを願っています。

数学特別演習:第10回の感想から

今日も、次の授業の前に、第10回の学生さん達の感想から、興味深い(おもしろい?)と思ったものを紹介します。(文面の一部を編集しています。太字も私によるものです。)

今日の範囲はとても内容が濃く、難しかったと思う。しかし、発表者が丁寧に説明してくれたおかげで、よく理解できた。
「今回の内容が濃かった」という感想は、複数寄せられました。私も予習して感じた通りだったと思います。一方で、発表者の説明がわかりやすかった、という感想も複数ありました。たいてい、2つの感想がセットで書かれていました。今回の発表者のお二人、お疲れさまでした。

今まで、この授業に限らず、数学を学んでいて、一体これは何に使うんだろうということが数多くあった。大学に入ってから、様々な場面で論理と同様に応用先も学び始めた頃から、ようやく「スッキリ」し始めた部分がある。
数学科では、数学自体が研究の対象になる場合が多いため、なかなか応用に目が届きにくいかもしれませんが、世の中には興味深い(解きたい)問題も数多く存在し、それらに対する数学の興味深い応用もいろいろあると思うので、そうした応用問題に目を向けるのも有益だと思います。また、そうした応用問題の内容を理解する上でも「数学力」を身につけておくと、役に立つのではないかと思います。

今回の範囲は、ページ数の割に内容が難しいところで、自分が読んだ時に理解できなかった部分を、他の人の解釈から理解することができた。
こんな風に色々な観点から物事を見るのは大切なことかもしれないなぁ。 みつを
内容は最初の感想とほぼ同じですが、最後の一言に思わずニヤリ。もし、相田みつをさんがこんな額を書いたら、どんな感じになったんでしょう、見てみたい気がしました。

2010-12-22

微積分III演習(第3回)

今日も、数列の極限の問題を中心に解きました。数列の発散のε-N 法による定義や、数学でよく使う s.t (such that) 節などの説明も加えました。

講義は2クラスに分かれていて、1つのクラスでは関数の極限をすでに習い、もう1クラスではまだ習っていなくて、関数の連続性と一緒にやる予定とのことですが、関数の極限は計算練習も必要な部分ですので、ちょっと講義を先取りする形ですが、演習問題を配りました。

実際に解いてもらのは来年になりますが、新しい年も頑張りたいと思います。

2010-12-21

計算機演習(第3回)

今日は、Mathematicaを使っての授業の第2回ということで、学生さん達の方も、端末やMathematicaやMoodleの操作にも少しずつ慣れてきたのではないかと思います。

今日が前回授業のレポートの締切日でもありますが、ほとんどの人が授業時間内に提出を済ませているようでした。

次回の授業は来年になります。次回は線形代数の話題に入りますが、学生さん達の活動に期待したいと思います。

2010-12-20

数理科学II(第19回)

今日は、前回途中で終わった、部分終結式PRS算法の残りの部分について説明し、多項式剰余列の話が一通り終わりました。その後、数式処理システムMathematicaを用いて多項式剰余列を計算のデモンストレーションを行いました。

本来であれば、この後で「縮小PRSと部分終結式PRSを計算して、係数膨張の縮小を確かめる」という課題を出したいところですが、拡張Euclid互除法のアルゴリズムの解説、というか、1学期のレポート課題の答え合わせが残っていまして、これをやってからの方がよいだろう、と思います。アルゴリズムを書き下す部分をなぜ残しておいたかというと、この次のテーマとして、数式処理(多項式演算)の実装の話を考えており、そこではプログラミング言語も使って具体的な話をしますから、アルゴリズムについても、そこでちゃんと話をしよう、と思っているわけです。

そんなわけで、今年は、昨年と比べて、いろいろ事情はありましたが、2か月遅れで同じ話を終えました。2回は出張による代講、1回は集中講義、1回は別の授業の打ち合わせ、1回はアルゴリズムの基本を昨年よりも丁寧に話した部分、ということで、5回分で2か月遅れ!? と思ったのですが、期末試験の日程や秋休みなどを考慮すると、このくらいの遅れはやむを得ないようです。

昨年の講義回数からすると、あと6〜7回ですので、それまでに次の内容をうまくまとめられるようにしたいですね。次の講義は、1月18日(火)(月曜日の振替授業)ですので、約1か月先です。・・・これだけ時間があるなら、ちゃんと次の講義ノートが作れるはずですよね。頑張りましょう。今年もお疲れさまでした。来年もよろしくお願いします。

2010-12-17

数学特別演習(第10回)

今日は、前回のペアリングの話を受けて、ごみ収集車の問題を解くための「中国の郵便配達員問題のアルゴリズム」をやりました。

今回、アルゴリズムの各処理は文章で書かれており、それぞれに異なるアルゴリズムを適用した計算が含まれています。個々のアルゴリズムについては、前に出てきたものだったり、難しいものだったりするため、具体的な計算は省略されており、したがって、アルゴリズムを読んだだけでは、その動作を理解するのが難しいと思いますが、今日の授業では、今まで取り扱っているごみ収集車の問題を例に挙げて、アルゴリズムの動作を解説してくれましたので、わかりやすかったのではないかと思います。

その後、中国の郵便配達員問題の別の応用例として、プロッタによる図の動画手順というのがありましたが、さすがに今の学生さん達は、プロッタの実物を見た人はいませんでした。そうでしょうね、私も見たと思いますが、記憶があやしいですし・・・

今日は、さらに、有向グラフに対する解法に進みましたが、ここは途中で時間となりました。事前に予習した時に感じていましたが、今日の範囲はなかなかページ数の割に内容が濃かったようです。次回は、今日の続きで、有向グラフに対する解法(の途中)から始まります。

2010-12-16

数学特別演習:第9回の感想から

数学特別演習の授業では、毎回、学生さんに感想を書いてもらっていますが、今日は、その中からいくつか、印象に残ったものを紹介したいと思います。(なお、ここでは著者は匿名にし、文面は内容に合わせて一部改変している箇所があります。また、引用文中の太字は私によるものです。)

次数が奇数のノードに対して「操業橋渡し運行」を使ったり、なるべく計算回数が少なくてすむように、O(n!) ではなく O(nk) の計算量を目指す、など、今回の授業は数学的な工夫、テクニックに関する内容が多く、楽しみながら授業を聴くことができた。
現実の世界で数学の力が活かされるのは、高度な理論はもちろんですが、今回のような「ちょっとした工夫」もたくさん活かされていますし、これらも高度な理論に劣らず重要だと思います。そして、こうした「ちょっとした工夫」ができることを見抜くためには、数学をきちんと勉強して理解し、数学的な問題解決法を身につけてこそ可能になると思います。

今日の授業で良いことを知った。何か作業をする前に、その作業がどの程度大変なのかをしっかり確認しておくことが大切だということだ。これは確かにこれまでも無意識のうちにやっていたことだが、数式にすると大変かどうかがよりはっきりする。また、今回の内容は割と具体的だったので面白かった。
今回の授業の中で「計算を始める前に、計算量解析を行い、あらかじめ効率がよりよい手段を選ぼう」という趣旨の話をしました。まず、事前に仕事量を見積もるという点、そして、数式で具体的に仕事量を比較するという点をつかんでくれたのは、よかったのではないかと思います。

関係ないことだが、レナ(この本の主人公の女子高生)の水泳のタイムは、高校生にしては速いと思う。(本文では、100m自由形で1分3秒5だが、本人の自己ベストはもっと速いと言っている)
なるほど、こういう着眼もありましたか。本書では、レナは友達とスイミングスクールに通っていて、400mメドレーリレーを友達と4人で組む時に、誰がどの種目を泳げばベストタイムになるか?という、組み合わせの問題の一種を考える場面があるのですが、水泳のタイムに着目するのは、おもしろいと思います。この本はもともとドイツで(ドイツ語で)出版された本ですが、水泳のタイムに関して、本国ではどんな反応があったのか、興味深いところです。

以上のような感じで、読み進めています。

2010-12-15

微積分III演習(第2回)

今日の授業では、主に数列の極限についてやりました。先週のレポートを返して提出し、ついで今週のレポートを回収し、それから学生さん達に問題を解いてもらいました。

今日は私もだいぶしゃべったので、先週配ったすべての演習問題を解ききれませんでした。続きは来週です。

2010-12-13

計算機演習(第2回)

今日は、サテライト端末を使っての初めての授業ということで、早めに端末室に来て準備をしました。

出席を取って資料を配り、まず Mathematica の起動、ついで Moodle (e-ラーニングシステム)へのログインとコース登録を行いました。Moodle の仕様についても、特に大きなトラブルはなかったかと思います。

その後、レポートの作り方と提出方法について説明しました。レポートは、Mathematica ノートブックで作られた、レポート用ファイルをダウンロードし、記入していきます。セルを操作して、説明文が入っているセルのスタイルを Text にするよう指導しました。

ところが、ある学生さんから「セルのスタイルを Text にしても、スタイルがうまく変わらない」という質問があり、学生さんのノートブックファイルをいろいろ操作してみたところ、私が思いもよらないことが起きていました。

学生さんが書こうとした説明文の内容は(文例は変えてありますが)

この結果は 1 + 1 = 2 を示す。
といった内容です。ところが、いろいろ調べてみると、上記の文章の「この結果は」の部分が Mathematica の識別子(変数)と認識されており、「を示す。」の部分も識別子となっているようです。

私はこれを見て、最初何が起こっているか理解できませんでしたが、よく考えてみると、もし、上記の内容を書いたセルのスタイルを Text に変える前に式の評価を行ったとすれば、上の内容には代入記号 "=" がありますから、これによって代入の式と見なされ、その結果、「この結果は」や「を示す。」という名前の変数ができたのだろう、と推測しました。

そこで、まず、「この結果は」と「を示す。」という名前の定義を消し、次に、新しいセルを1つ作り、上記の内容をコピー、ペーストした上で、スタイルを Text に変えて、ようやく説明文が出来上がりました。

学生さん達の操作を見ていると、操作に慣れた私達には思いもよらないことが起きることがしばしばありますが、数学を学ぶ上でいろいろな例題を考えるのと同様、今年もこれから学生さん達といろいろな経験をするであろうことを楽しみにしています。

数理科学II(第18回)

ようやく、今日から実質的な3学期の授業です。今日は「部分終結式PRS算法」についての説明を始めましたが、前回、2学期最後の授業を休んだ人もいたので、縮小PRS算法の結果と問題点を復習した後、部分終結式PRS算法の説明に入りました。

前段の復習が結構長くなったので、今日の本題は半分程進んだでしょうか。残りの半分は来週です。次回は、今回の続きを行い、その後、数式処理を用いて多項式剰余列の計算を実演したりして、今年の授業を終える予定です。

2010-12-10

数学特別演習(第9回)

今日からこの授業も3学期です。今日は、まず、前回の「オイラーの定理」を受けて、オイラーの業績の紹介がありました。複素関数論で現われる公式「ei π+1=0」は、オイラーが発見した公式ですが、これは小説「博士の愛した数式」でもモチーフになっていました。それから、ドイツに伝わる一筆書き遊び「サンタクロースの家」というのも紹介されていました。期せずしてちょうどよいタイミングの話題になったと思います。

その次に、ごみ収集車が街中のごみを収集して回る最短経路の問題を考えることになりました。収集車のランニングコストを抑えるためには、収集車の総走行距離をなるべく抑える必要があります。そのためには、なるべく一筆書きに近い形で街中を通り抜けたいわけですが、街路には行き止まりなどもあり、なかなかそううまくはいきません。そこで、この問題をなるべくよい形で解くために「操業橋渡し運行」というのを導入し、操業橋渡し運行が最短になる組み合わせを求める問題として「ペアリング問題」を解くという話になりました。

「ペアリング問題」は、組み合わせの問題の一種なので、これを素朴に解こうとすると、時間計算量が O(n!) になり、組み合わせの爆発が起きるわけですが、これを O(n3) の計算時間で解くアルゴリズムがあるという事実が紹介されました。

次回は、これらを組み合わせて、ごみ収集車の問題を解くということで、ダイクストラのアルゴリズム、プリムのアルゴリズムに続いて、久々に具体的な形のアルゴリズムが授業に登場する予定です。私も予習をしつつ、学生さんの発表を見守りたいと思います。

2010-12-08

微積分III演習(第1回)

今日から、3学期の微積分III演習の授業です。

今回、私が担当するクラスは、化学類、地球学類向けのクラスです。3学期の微積分は、イプシロン-デルタ (ε-δ) 論法が中心となるので、履修者は1・2学期の微積分に比べて減ります。人数は年によってまちまちのようですが、今年は10人強の人達が集まりました。本来であれば先週、12月早々の授業開始のはずでしたが、先週は出張のため、今日の授業開始です。

今日は早速、これまでの復習を兼ねたレポートを提出してもらい、ついでに宿題も出しました。これから授業がどんな展開になるか、楽しみにしたいと思います。

2010-12-07

計算機演習(第1回)

今日から、3学期の「計算機演習」の授業です。数式処理システム Mathematica の実習を行います。

今日はガイダンスで、授業日程、単位の取り方(成績評価基準)、準備事項などを話しました。ガイダンスの進行に、昨年はOpenOffice.org の Impress(Microsoft PowerPoint に相当するもの)を使いましたが、そういえば Mathematica はプレゼンテーションにも使えるんだと思い、今年のガイダンスの試行スライドは Mathematica で作りました。

その他、今年は若干授業の内容や段取りを変えています。いつも、授業期間内に入る出張が重ならず、授業回数が過去数年間より1回増えたことと、レポートの評価をする際のTAの負担を減らすことを目的として、カリキュラムを一部入れ替えました。それから、授業で使う e-learning システムが、これまでの WebCT から Moodle に切り替わり、その移行作業が大詰めです。

とりあえずは、来週の授業開始に間に合うよう、準備を進めたいと思います。

数理科学II(第17回)

今日から3学期の授業が始まったわけですが、5分経っても誰も来ません。今週は他の仕事が迫っているので、休講にして引き揚げようとしたところ・・・学生さんが1人やって来ました。

そこで、1人でしたから、まずは手伝ってもらっている学類の授業のTA(ティーチング・アシスタント)の相談を始めたところ、しばらくして2人目、3人目がやってきました。

今日来た学生さん達には、同じ授業のTAをお願いしていたので、業務内容や今後の準備などについて説明してたら、授業時間はほぼ終わってしまいました。というわけで、この授業の続きはまた来週です。