2014/09/09

初心者向け「アルゴリズム」の教え方

1号(♂14才)が参加しているロボット教室で、思いつきで「アルゴリズム」について教えてみよう、と思った。
アルゴリズムを工夫することによって、
  • 計算の精度を高める (有効数字など)
  • 計算量を削減できる (計算時間の短縮)
を知ってもらえればいいと思った。
対象は小3〜中3である。
こんなかんじで始めた。
アルゴリズムとはコンピューティングにおける計算の順序のことで、これを工夫することによっていろいろなメリットがあります。

「計算の精度を高める」の説明
計算の精度を高める例として、次の算数を解いてもらう。
1 ÷ 3 × 3 = ?

算数で解くと、答えは「1」。
しかし、安い電卓を各自に回して解いてもらうと答えは「1」にはならず、「0.999...」となる。はてな?
これは、電卓が最初の「1 ÷ 3」の結果を2進数で表せず、「0.333...」の結果のみを保持してしまい、続く 「× 3」で「0.999...」となってしまうためである。
では、計算の順番を入れ替えるとどうなるか?
1 × 3 ÷ 3 = ?

この場合は、算数上も電卓上でも「1」である。ひゃっほー!
この説明での注意点は(安い)電卓を使うことである。
PCや、スマホのような高級なOSを持つ計算機や関数電卓では、そのあたりは配慮されていて、ちゃんと答えが「1」となるように仕組まれている。
この例題で、計算の順序によって「計算の精度」に影響が出ることを知ってもらうことができた。


さて、次に「計算量の削減」だが、ネットでネタ探しをすると、ソート(並べ替え)の話がメインなので、「バブルソート」や「バケツソート」「クイックソート」の実例を出してみても、いまいち食いつきが悪い。
というか、勝手講師の私が2度も「クイックソート」の説明でつまづいたので、とても下手な説明になってしまったのも失敗の要因として大きい(個人的にはショックが大きい…)
もっとも、講師の下手さを差し引いても、まだ、小中学生の実生活でソーティングのお世話になるようなこともないので、興味を引かなかったようでもある。

「計算量を削減する」の説明
そこで、ソートではなく「絞り込みの順番」で考えてみるとした(バケツソートになっているけど)。
次の例題を考えた。
(目的) 男女同数24人づつ合計48人のクラスの中で、9月生まれの女子の人数を知りたい。
(前提条件) 質問は1人づつ1回に1種類しかできない。質問の結果によって次の質問の対象者を減らすことが出来る(絞込)。また、回答の際の声色で男女の区別は出来ないものとする(現実ではできちゃうので)。
(導きたい結果) 9月生まれは4人おり、そのうち女子は2人である。
必然的に以下の2種類の質問をすることになる。
A. あなたの性別は何ですか? (男子ですか? 女子ですか?)
B. あなたは何月生まれですか?
この「質問の順序次第で質問の回数が大幅に変わること」を知ってもらうことが狙いである。

(A先B後の場合)
Aを最初に質問し、Bを続いて質問する場合は次の質問回数が期待値となる。
  1. あなたの性別は何ですか?  → 48回の質問
  2. 女子24人に絞られる
  3. (女子24人に対し) あなたは何月生まれですか? → 24回の質問
  4. 女子で9月生まれの2人に絞り込まれた!
この場合、48回+24回=72回の質問が必要になる。

(B先A後の場合)
Bを先に質問し、Aを後にした場合は次のとおりとなる。
  1. あなたは何月生まれですか?  → 48回の質問
  2. 9月生まれ4人に絞られる
  3. (9月生まれ4人に対し) あなたの性別は何ですか?  → 4回の質問
  4. 女子で9月生まれの2人に絞り込まれた!
この場合、48回+4回=52回の質問で済む。

質問の順序を工夫することで(=アルゴリズムを工夫することで)、20回も削減できた(28%OFF)。
最初の48回の質問回数は必須とすると、2番目の質問では24回から4回に減ったので、部分的に83%OFFと考えることもできる。ひゃっほー!
もっとも、期待値が推定出来る場合でないと有効ではないので、その点は注意が必要ではある。


次回のロボット教室でのチャンスに「計算量…」の説明で、子どもたちの合点が行くかどうか試してみる所存である。
その流れで、ロボット教室なのでセンサーの効率的なチェックの仕方や、合理的なif文の構造にまで踏み込めればいいかなと思う。

====

画像はiPhone5で撮影。
雨上がり、水たまりのアスファルトに溶け込んでいる朝の空。
そいういえば、今日、iPhone6が発表だな。NFC搭載だと嬉しいかも(買い換えないけど)。

2014/09/05

白檀のガルーダ

画像は白檀 (びゃくだん) で出来たガルーダ (インドネシア神話の鳥の神様)。
PCの置いてある机の上で睨みを効かせてもらっている。

学生時代の留学生にインドネシアのジャカルタから来てた人がいて、お互い卒業して私は就職、彼は、国に帰って元々の国家公務員に戻ったわけだけど、給料生活にが入ったので、入社して初めての夏に初めての海外旅行として彼の家を尋ねたことがある。このガルーダはその時に購入したもの。

それ以来彼と会ったことは無いのだけど、最近 facebook でつながったので懐かしく思った次第。
画像で見る限り、本人が相変わらずのハッピースマイルでナイスガイで嬉しいことこのうえない。ところが、あんなに華奢だった奥様が、いつ何時飢餓に遭遇しても耐えらるんじゃないかという…(以下自粛)。

白檀はいい香りがするのだけど、もう20年くらい経つのでさすがに香りが抜けてきた。
削れば昔のあの香りが出ると思うけど、facebook ってそういうところがある。

2014/08/30

「ファイルを見つけるためのヒント」超訳

Windows7関係で、いろいろ検索していたら、Microsoftのサポートページでなんか変な日本語にぶちあたった。

ファイルを検索するヒント
ファイルの検索は、朝、服を着るときに、一足の靴下を見つける作業に似ています。
一足の靴下を見つけないと仕事を始めることができないので、これは、毎日、必要な作業だということができます。
Windows は、靴下を見つける作業は支援できませんが、ファイルを見つける作業であれば問題なく支援できます。
ファイルの検索や整理には、ファイルの保管場所とは独立したいくつかの方法があります。
毎朝、靴下を見つけるって、どういうシチュエーションなの? って思ってしまう。 

ということで原文にあたってみる。URLの "ja-jp"の部分を "en-us" に変更すると上手く行った。
Tips for finding files
Finding a file is a lot like looking for a pair of socks when you get dressed in the morning. You can’t really start working until you locate those socks, and it’s something you need every single day. Windows can’t help you find your socks any faster, but it can definitely lend you a hand when it comes to finding your files. Here are some ways to find and organize your files, no matter where they might be stored.
なんか原文なら伝わる気がする。
試しに原文を英語→日本語でGoogle翻訳にかけてみると、もっとひどい結果が。
ファイルを見つけることは、多くの作業が午前中に服を着る時に靴下のペアを探してのようなものです。
あなたは本当にあなたがそれらの靴下を見つけるまでは作業を開始することはできません、それはあなたが毎日必要とするものだ。
 Windowsは、任意のより高速な靴下を見つけるのを助けることはできませんが、それはあなたのファイルを見つけることに来るとき、それはあなたに手を貸す確実にすることができます。
ここではあなたのファイルは、それらが置かれているかもしれませんどんなにを見つけ、整理するいくつかの方法があります。
ということでuyabin版の超訳は次のようなものになりました。
朝、あるべき靴下が見つからなかったら、探しますよね。
靴下なしに一日を始めることもできないので、この類って毎日やっているようなことですね。
Windowsが靴下を探してあげることは難しいですが、靴下でなくファイルなら探すお手伝いができます。
ファイルの検索や整理の方法はいろいろありますよ。
「見つける」よりは「探しだす」が、隠れているものを露わにする意図が明確になっていると思う。
うーむ、そもそもファイル検索を靴下捜索に結びつける元の文章のロジックってどうなんだろう?

====

画像はiPhone5で撮影。
香港土産の5匹の豚の置物。
1年前にも登場

2014/08/26

叔父さんの「遊びションガネー」

先週の木曜日に母方の叔父さんが亡くなった。
享年80なので、平均寿命ではある。

7人兄弟の第3子で次男であったが、長男が戦前に亡くなったので実質長男の役を負わされていた。畑仕事で生計を立てていた。
やんちゃで押しの強い姉弟妹たちの中で唯一穏やかで、ともすると、自己主張の強い彼らからなめられていたのかもしれないが、本人はどこ吹く風、甥っ子姪っ子たちには必ず声をかける気の優しい叔父さんであった。

晩年はリウマチを患い、あまり曲がらない指で三線を持つと決まって歌うのは「遊び(あしび)ションガネー」であった。
ハスキーボイスで、歌も三線も上手いというわけではなかったけれど、晩ご飯をお世話になった時に興に乗って歌ってくれたのはこの曲だけだった。
当時はこの曲にピンとこなかったのだけど、民謡なんて歌を知らないと魅力半減だと思うので、知っていれば違う聞き方ができたかも、と今は思う。

最後の数年を老人ホームで過ごし、そのまま逝ってしまったのだけれど、火葬場の最後の別れの時、残された妻のYさんが見せた寂しさは他の親族とは一際異なるものだった。

====

画像は火葬場から見えた雲。
右側は発達中の入道雲で雲の下部は今にも雨が落ちてきそうなほど暗かった。
豪雨警報が出ていたが、結局この地域に雨は振らなかった。
iPhone5で撮影。


2014/08/15

ヤールー

ヤールーとは沖縄語でヤモリのこと。

トイレの換気扇が動かないので見てくれ、と私の素敵な奥様に言われて中を覗いたところ、ヤールーが換気扇に頭を突っ込んでいた。
羽と枠に挟まっていたせいで、換気扇が回らなかった。
ヤールーの皮と言うか肌は他の爬虫類より人間に近いので、ティッシュ越しでも触るときのグニュッとした感覚は嫌なもんだけど、なんとか彼または彼女を取り除いて換気扇は復活、でも、ヤモリは復活しなかった。成仏したただろうか。

ヤールーの色は白っぽいのがメジャーだと思うが、中には焦げ茶から黒に近いグレーのものもいる。
肌の色が遺伝か生まれた時の環境によるのかどうかは分からないが、肌の色が異性を選択するときの判断基準になってたりするのだろうか。

ヤールーについて書くのは初めてではなく以前に書いていた
ヤールーの黒目が縦目でギザギザというのはその時初めて知った。

====

画像は、とあるイタリアンレストランに貼り付いていたヤールー。
iPhone5で撮影。

2014/08/13

オジーとオバーの家の崩壊

お正月と旧暦のお盆には母方の祖父母の家、つまり、オジーオバーの家にご挨拶に行くことが習わしとなっている。もう、オジーもオバーも亡くなっているので屋敷内の別の家に次男叔父さんの奥さんが住んでいるのでそこに顔を出す訳だけど。
そのオジーとオバーの家が崩壊しかけている。
外壁だけは新しくペイントされているのでまだ使えるかなと思ってたが、家の中の天井のコンクリートが落ち始めてきている。
これほど内部から壊れかけているコンクリート建物を見るのも初めてだ。
住むにはちょっとキツイな。

海砂利と錆びた鉄筋。
コンクリートに混ぜた砂がたぶん海砂利か石灰岩で、建設が戦後すぐの当時のことだから、当然、意図的ではないにせよ、塩抜きなどの工程はすっ飛ばしてしているはずなので塩分もりもりで、塩が水分を呼び、水分が鉄筋に錆を誘い、錆は鉄筋を膨張させ、圧縮には強いが膨張には弱いコンクリートを内側から破壊しているさまがよく分かる。
また、砂利の量も多く、粒も大きいのも容易に崩落した要因の一つのように思える。

5年前にこう書いた
オバーも数年前から老人ホームへ行き、仲の良かった親戚は子供の成長と共に疎遠となり、そのうちことごとく離婚でばらばらとなり、いとこ同士で会うことも なく、地域で一番最初にコンクリート造にしたというオジーの家は今は人気も無く寂れている。オジーが亡くなった後には山羊小屋にされ今は何もいない元の牛小屋や、それでも変わらない仏壇を中心とした家の間取りを見ると一族や家族といったものの栄華盛衰を思わざるを得ない。
この家をどんなにお金をかけて補修しても、あるいは、新たに建て替えたりしたとしても当時の賑わいを取り戻すことは叶わない。
コンクリートの崩落が一族の凋落を表しているようで、なんかこう、物悲しい。

2014/08/08

辺野古の海

この間、沖縄高専のサマースクールに1号(♂14才)を送るため、名護市の辺野古まで行ってきた。彼が高専の先生たちの授業を受けている間、やることもないし、せっかくだからと近くの辺野古の海まで足を伸ばしてみることにした。車で5分である。
訪れたのは、キャンプ・シュワブに隣接する辺野古の漁港の隣のビーチではなく、シュワブから遠ざかる方向のいちゃんだビーチ。ちなみに「いちゃんだ」とは無料とか報酬なしという意味の沖縄語。
1枚目の画像は、訪れたビーチを示すGoogle Mapsを画面キャプチャしたところ。画面中央の出っ歯ている部分が辺野古崎でキャンプ・シュワブ内にある。

2枚目の画像は、そのビーチの様子。ビーチグラスが豊富にあって、あまり人が訪れない場所であることを匂わせる。私の記憶にある40年位前の沖縄本島中北部の海はこうだったなぁ、と錯覚させるくらい手垢がついていない。
当然ながら海もきれいで、ここを埋め立てるというのは、正直なところ阿呆の所業なんだろうと思う。
それにしても思い出すのは、ほぼ毎日の夕方、県庁前や久茂地交差点で街宣を続ける銀色の軽自動車があって、帰宅の足を進めながらこの車から流れるスピーチによくこれだけ喋れるもんだなぁ、とあらぬ方向で感心しているけれど、内容は一方的に政府よりだし、冷静に聞けば沖縄人を丁寧な言葉で上から目線で小馬鹿にしているので、例えば
「沖縄のアイデンティティは防人です」
なんて政府の本音を教えてくれるものだから、スピーチが耳に入る度に、妙な感慨をいつも抱いている(誰のための防人やねん?)。
このスピーチは、少なくとも私には逆効果でしかない。

てなことを考えているうちに、そろそろ帰るべ、と車を出そうとすると、来た時はまさに仮想の厳戒態勢をくぐり抜けるほど警戒していたのに、帰るときには考え事に気を取られて足を取られてしまった。つまり車が砂地にスタックしてしまった(3枚目の画像)。蟻地獄さながらである。
ま、冷静に焦りながら、石や板をかき集めてタイヤの下に敷いて何度かのチャレンジで脱出できた。
この経験からいくつかの人生訓ができそうな気もするが、そんな人生訓は誰もありがたがらないだろうから書かないけれど、辺野古の基地問題は蟻地獄なようなものと例えることはできそうな気がする。ここから上手いこと脱出できるだろうか。
4枚目の画像が沖縄高専のピロティーから望む学生寮。
その先にスタック辺野古の海が見える。
つまり、学生寮から辺野古の海がよく見えるわけで、学生と海とがコントラストを成して集合している。
この画像に沖縄の未来が凝縮されている気がする。

====

画像はiPhone5で撮影。

zenback