第321回 テトラちゃんのアルゴリズム講義(前編)

テトラちゃん、先生になる? 学んできたアルゴリズムを「僕」に教えることになったけれど……さあ、いっしょにアルゴリズムを学ぼう!

新シリーズ「数学ガールの物理ノート」始動!

『数学ガールの物理ノート/ニュートン力学』

『数学ガールの物理ノート/ニュートン力学』をアマゾンで見る

登場人物紹介

:数学が好きな高校生。

テトラちゃんの後輩。 好奇心旺盛で根気強い《元気少女》。言葉が大好き。

$ \newcommand{\ABS}[1]{\left|\mathstrut #1\right|} \newcommand{\KAKUDO}[1]{#1^\circ} \newcommand{\TT}[1]{\textrm{#1}} \newcommand{\ANGLE}[1]{\angle\textrm{#1}} \newcommand{\TRI}[1]{\triangle\textrm{#1}} \newcommand{\HIRANO}{\unicode[sans-serif,STIXGeneral]{x306E}} \newcommand{\SQRT}[1]{\sqrt{\mathstrut #1}} \newcommand{\TRUE}{\textbf{true}} \newcommand{\FALSE}{\textbf{false}} \newcommand{\FOCUS}[1]{\fbox{$#1$}} \newcommand{\GEQ}{\geqq} \newcommand{\LEQ}{\leqq} \newcommand{\NEQ}{\neq} \newcommand{\TRIANGLE}{\triangle} \newcommand{\REMTEXT}[1]{\textbf{#1}} \newcommand{\PS}[1]{\left(#1\right)} \newcommand{\SET}[1]{\{\,#1\,\}} \newcommand{\SETM}{\,|\,} \newcommand{\EMPTYSET}{\{\,\}} \newcommand{\REAL}{\mathbb R} \newcommand{\ZEE}{\mathbb Z} \newcommand{\LL}{\left\langle\,} \newcommand{\RR}{\,\right\rangle} \newcommand{\LLRR}[1]{\LL#1\RR} $

放課後の図書室

放課後。

いつものようには図書室に行くと、テトラちゃんがノートに何かを書きながらうなっていた。

「テトラちゃん、今日はどんな数学をやってるの?」

テトラ「あ、先輩……」

いつも元気なテトラちゃん、今日は反応がやや鈍いな。

「どうしたの、難しい数学に挑戦中?」

テトラ「い、いえ、そういうわけじゃないんですが……」

「テトラちゃんの歯切れがわるいのはめずらしいね。考えているところ邪魔しちゃったかなあ」

テトラ「難しい問題でもありませんし、そもそも数学でもないんです。いえ、数学になるんでしょうか……」

「もしよければ話を聞くよ。役に立てるかどうかわからないけど」

テトラ「ありがとうございます! 実はですね、先日双倉図書館(ならびくらとしょかん)で開かれた一般講座に参加したんですよ」

「そういえば、そんな話していたね。テーマは何だったの?」

テトラアルゴリズムです! 《リンクとストラクチャー》という副題が付いていて、いろんなアルゴリズムのお話を聞いてきました。盛りだくさん過ぎてちょっと消化不良ですが……」

テトラちゃんはそういってお腹を撫でた。

学んだこと、お腹に入るんだろうか。

「おもしろかった?」

テトラ「はい。おもしろかったんですが、あとから配付資料を読み返してみると、あちこちに『自分は理解していないな』と思うことが見つかったんです。 それから、何というんでしょうか……全体的にもやもやっとしていることもあります。 いえ、何をやってるかははっきりわかるんですよ。そんなに難しい話ではありませんでしたから。 でも、改めて考えると、何をやってるかがはっきりしなくなるんです。 だから、難しくて……」

「はっきりわかるけれど、はっきりしなくなる。難しくはないけど、難しい。 それじゃ確かに……はっきりしなくて難しいね!」

テトラ「はい……わけがわからない悩みですみません」

そのときは、ちょっとしたアイディアを思いついた。

「うん、だったらね、テトラちゃんが講義をするっていうのはどう?」

テトラ「あ、あたしが……講義? どういうことでしょう」

「テトラちゃんは一般講座に出席していろいろ学んできたわけだよね。だから、その成果を僕に講義するんだ」

テトラ「あたしが……先輩に講義する」

「そうそう。いまの段階だとテトラちゃんの方がずっとわかっているはずだけど、テトラちゃんが講義をして教えてくれるなら、僕もその理解に近付けてうれしい。 そして、もしかしたらテトラちゃんの「もやもや」がどこにあるのかを一緒に考えられるかもしれないよね!」

テトラ先輩に教わるのではなく、先輩に教える……あたしが?」

「よろしくお願いします。テトラ先生!」

テトラ「わ、わかりました。けれど、何日か準備させてください……」

テトラちゃんのアルゴリズム講義は、一週間後に始まることになった。

【CM】

ユーリ「アルゴリズムに関するユーリたちの活躍は『数学ガール/乱択アルゴリズム』にも出てきますぞ!」

『数学ガール/乱択アルゴリズム』

『数学ガール/乱択アルゴリズム』

テトラちゃんの講義開始

一週間後。

テトラ「そ、それではお話します」

「よろしくお願いします」

テトラ「まずですね。あたし、先輩にすごく感謝しています!」

「え? まだ何にも話してないのに?」

テトラ「あたし《先輩に講義する》というつもりで準備をしていたんですが、そうしたら、不思議なことがたくさん起きたからです」

「へえ……」

テトラ「配付資料を読むときに《書かれている内容を理解しよう》という気持ちだけじゃなくて、《書かれている内容を理解した上で、先輩にちゃんと説明できるようにしよう》という気持ちになりました。 そうすると、不思議なことに、自分が何をわかっていないかがはっきりしてきたんですよ」

「それはおもしろいね! ああ、でも、それは納得いく話だなあ」

テトラ「えっ?」

「ほら、僕たちはよく数学の話をするよね。そのときに相手に伝わるように説明しようとする。 でもなかなかうまくいかないし、伝わらないこともある」

テトラ「はい……」

「できるだけはっきり説明しようと思うと、自分自身の理解があやふやなところが浮き彫りになること、あるねえ」

テトラ「そうなんですか、先輩も?」

「うん。テトラちゃんが放つ《根源的な質問》もすごく助かる。それに答えることで、自分の理解が試されている感じがするんだ」

テトラ「あ、あたしは理解が遅いので……でも、そういっていただけるのはうれしいです」

「じゃあ、テトラちゃんの……テトラ先生の講義を聴くよ」

最大値を求めるアルゴリズム

テトラ「双倉図書館の一般講座で学んだことを、あたしなりにまとめたので、その順番でお話しします」

「うん。すごく楽しみだよ!」

テトラ「まずこちら、List 1のアルゴリズムを見てください」

List 1

テトラちゃんが提示したMAX-VALUEというアルゴリズムをざっと眺めた。

ああ、これはきっと、 $$ \LLRR{a_1,a_2,a_3,\ldots,a_n} $$ で与えられた数列の中から最も大きな数を見つけ出すんだろうな。

whileからend-whileまでの繰り返しで、$m < a_k$という比較を行っている。

きっと最大値が$m$に代入されるんだろう。

「なるほど。List 1は僕にも理解できるよ。最大値を求めるアルゴリズムだね」

テトラ「はい。あたしもそう考えたんですが、あさはかでした」

「あさはか?」

テトラ「あたしは、書かれたものをちゃんと読まなかったんです。確かにこのアルゴリズムは、$a_1,a_2,a_3,\ldots,a_n$という数列が与えられたときに、 要素の最大値を求めるものなんですが、重大な誤りがあるんです!」

「重大な誤り……」

テトラ「はい。重大な誤りです」

はちょっと焦った。

確かにも、List 1の内容をろくに読まずに口を開いてしまった。 あさはかだった。《重大な誤り》とは何だろう……

この続きは有料会員登録をすると
読むことができます。
cakes会員の方はここからログイン

1週間無料のお試し購読する

cakesは定額読み放題のコンテンツ配信サイトです。簡単なお手続きで、サイト内のすべての記事を読むことができます。cakesには他にも以下のような記事があります。

人気の連載

おすすめ記事

アルゴリズムを基礎から学ぼう!

ケイクス

この連載について

初回を読む
数学ガールの秘密ノート

結城浩

数学青春物語「数学ガール」の中高生たちが数学トークをする楽しい読み物です。中学生や高校生の数学を題材に、 数学のおもしろさと学ぶよろこびを味わいましょう。本シリーズはすでに14巻以上も書籍化されている大人気連載です。 (毎週金曜日更新)

この連載の人気記事

関連記事

関連キーワード

コメント

tokei1974kuro nowhere は now here じゃなくて no where 8日前 replyretweetfavorite

_011247132444 大学1年のプログラミングの講義から5年経つけど、挫折したポインタの概念がようやく分かったわ 8日前 replyretweetfavorite

yasuhito58 良い良い^^ 10日前 replyretweetfavorite

HazimeStyle 面白い💓 10日前 replyretweetfavorite