わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

5×3をめぐるお話・第1話を余談で話す

一方向ハッシュ関数について,理解しておくべきことを,一通り解説したところで,これにまつわる余談に移りたいと思います.
その前に,準備をします.ホワイトボードを消して,ちょっと書きましょう…

見れば分かるように,「ごさんじゅうご」ですね.お話の中で,2回,授業を聞いているみなさんに“さん,はい”と振ります.そのときは声を揃えて,「ごさんじゅうご」と言ってくださいね.下のほうに書いたのは,あとで書き足したいからです.
さて,登場するのは,パパと,3人の子どもです.子どもに名前をつけておきましょう.3姉妹で,上から順に,アヤコ,カナコ,サワコといいます.特別な意味はありませんが,まあ3文字で「コ」で終わる名前で,先頭文字が「ア」「カ」「サ」となっています.私も3人の娘がおりますが,まったく違う名前ですし,下の子2人は今年生まれで,まだ会話ができる状態ではありません.
さてさて,ある日のこと,パパが,3人の子どもに言いました.
「おやつの時間だな.みんなで,おいしいのを食べるか」と.
「わーい!」と,みんな喜びます.
「ちょうどチョコレートをもらったところで,仏様のところにお供えしているから,取ってこよう」
そしたら
「いくつ?」ってまあ,聞きますわなあ.
「そうだなあ…ひとり5個でどうだ.あ,ちょうどいい,かけ算の問題だぞ.5個ずつ3人で,ぜんぶでいくつかな?」
“さん,はい”
    「ごさんじゅうご」
よくできました.パパも言います.
「そう,そのとおりだ.だから15個持って来よう.たしか15個入りだったんだよな…」ということで,取りに行きます.
……
パパは,チョコレートを持って,そしてママといっしょに,3人のところに戻ってきました.
「ほらやるぞ」
「わーい!」子どもは無邪気なものです.
「そら.1個目は,アヤコ,カナコ,サワコ,ママ,パパ.2個目な,アヤコ,カナコ,サワコ,ママ,パパ.そして3個目だ,アヤコ,カナコ,サワコ,ママ,パパ」
…変ですね.
「あれ…?」
「みんな3個ずつあるよな」
「パパ,おかしいよ!」
「どうした」
「さっき,ひとり5個って言ったじゃない!」
「言ってないよ.かけ算の問題だぞ.5人いてて3個ずつで,ぜんぶでいくつだ?」
“さん,はい”
    「ごさんじゅうご」
協力ありがとう.でも,声の量は減ったかな.そう,やっぱり変です.
「あれ!?」
「な.うちは5人家族なんだから,5人に3個ずつで,チョコレートはちょうど15個だ.めでたしめでたし.はい,パパの分はごちそうさま.お前らも早く食べなあよ」
「パパ,ぜったいおかしいよ〜!!」
親子の会話は,ここまでです.それでですね…
このお話の構図は,ホワイトボードに書き足して,こんなふうになります.

一方向ハッシュ関数だと,その定義域がメッセージ空間,値域がハッシュ値空間となりますが,今回のケースでは,「問題文空間」と「式空間」とすればよさそうです.そして,問題文を式で簡潔に表すと,「5個ずつ3人」も「5人に3個ずつ」も,「5×3=15」という式になったという筋書きです.
とはいうものの,現在の小学校教育では,「5人に3個ずつ」については「3×5=15」として式を書くよう,指導されています.書き足すと,こうです.

ハッシュ関数*1に結びつけて考えるとき,「5個ずつ3人に」も「5人に3個ずつ」も,ともに「5×3=15」で表せるのは,衝突の一例です.さてこれ,弱衝突耐性のことなのか,強衝突耐性のことなのかというと…
パパが,どういう気持ちで「5人に3個ずつ」を言ったかによります.仏さんのお供えを取りに行く途中にママと顔を合わせ,ママもチョコレートがほしいと言い出して,何とかならないかというのなら,「5個ずつ3人に」と「5×3=15」の結びつきがある状態で,あとで「5人に3個ずつ」と「5×3=15」を結びつけたのですから,弱衝突耐性を破る攻撃に相当します.
そうではなく,最初っから今言ったような会話にして楽しもうという意図だったのなら---しかし,はじめ喜ばせてあとでがっかり感を与えるというのを「楽しむ」というのも,よろしくない親ですが---あらかじめ,「5個ずつ3人に」と「5×3=15」が結ばれ,「5人に3個ずつ」と「5×3=15」が結ばれることを知っていたわけですから,強衝突耐性を破る攻撃と言えます.

もう少し補足

「/ (per)」付きの単位を入れて,式にすると,次のようになります.

  • 1回目の「ごさんじゅうご」:5個/人×3人=15個
  • チョコレートを配るとき:5個/回×3回=15個.この式からは,一人につき何個受け取ったかが見えない.
  • 2回目の「ごさんじゅうご」:5人×3個/人=15個

学生に「ごさんじゅうご」と言わせるのと,アヤコ,カナコ,サワコという3人の名前は,本エントリを作るに当たってのアレンジであり,実際の授業ではそこまでしませんでした.

*1:意図的に「一方向」を取り除いています.keyword:ハッシュ関数