さくらんぼ計算とは、小学校低学年の算数の授業で習う、足し算の繰り上がりに関係する筆算の作法の一つである。
さくらんぼ計算は、以下のようなもの。6+7を例に挙げる。
6+7
=6+(4+3)
=(6+4)+3
=10+3
=13
この式変形の2行目のものを、7から4と3を2つぶら下げて書く。こうすることで1の位から10の位に繰り上がるときに1の位と10の位の数がどうなるか見やすくなる。
この計算は「左の数に何を足したら10になるか」を習得していることが前提。アルゴリズムとしては以下の順序になる。
「簡単な計算をあえてクソめんどくさい方法で教えている」というものがあるが、どういう教え方をしても繰り上がりの時に似たような方法を辿ることになる。この時期の学習内容は計算すること自体に慣れさせる手習いの意味が強い。
6+7という式を見て13という数字が瞬時に脳内に現れる大人からすればクソに見えるだろうが、一桁同士の足し算を暗記するための手段(の準備運動)としてはそう的外れなものでもないだろう。最近出てきたよくわからないものであることは否定できないが、最終的にはいちいちさくらんぼ(に限らず各々の習った作法)を思い浮かべて計算することも無くなる。
他の計算を覚える方法として100マス計算があるが、あちらは計算の表を暗記するようなものであり、さくらんぼ計算は(逆にややこしいが)アルゴリズムに焦点を当てた教え方と言える。どちらが良いかは個人差もあるので判断が難しいところである。
そろばんの場合は5の珠ひとつと1の珠4つで一つの桁を表すので、5の珠と1の珠で自然と別々に計算できる。珠の操作の手順から、6+7=(5+1)+(5+2)=(5+5)+(1+2)=10+3という計算を自然と行うことができる。
ただし、自然に計算できるようになるためには珠の動きを繰り返し練習して暗記しなければならない。そろばんでも「何に何を足したら10になる」という操作は基本であり、「6は1足して5とって10足す」「7は2足して5とって10足す」「3は7とって10足す」みたいな呪文を唱えながら練習することになる。
基本的な考え方は関連リンクに従っている。
集合{●●●…}が与えられたとき、数の数え方は序数と基数の少なくとも2通りある。
リンゴの数を数える場合、いち、に、さん、し、ご…と順番に数えるだろう。それぞれのリンゴには順番がつけられ、最後の一つが代表の数となる。これが序数である。また、個数が「ご」だとわかった場合、ちょうど5個のリンゴが入る袋に入れる作業をする。リンゴには順番がついておらず、全部の数「5」だけがわかっている。これが基数である。
序数の足し算を☆、基数の足し算を♡で表すことにする。序数と基数は図で書くと以下のようになる。
序数 [→●][→●→●][→●→●→●] …
序数の足し算 [→●] ☆ [→●→●] = [→●→●→●]
基数 (●) (●●) (●●●) …
基数の足し算 (●) ♡ (●●) = (●●●)
序数を[1][2][3]…、基数を「1」「2」「3」…、と書き分ける事にする。
空集合{}に対する序数を[0]、基数を「0」と書き、それぞれに以下の法則が成り立つと仮定する。a,b,cは任意の数字であることを示す。
結合法則 ([a]☆[b])☆[c]=[a]☆([b]☆[c])
単位元律 [0]☆[a]=[a]☆[0]=[a]
結合法則 (「a」♡「b」)♡「c」=「a」♡(「b」♡「c」)
単位元律 「0」♡「a」=「a」♡「0」=「a」
これは序数が☆に対して、基数が♡に対してモノイドになっているということである。
集合の要素が有限である場合、序数と基数は一対一に対応する。「袋に入ったリンゴをいち、に、さんと数えてから袋に3と書き込む作業」と「3と書かれた袋に入っているリンゴを実際にいち、に、さんと数える作業」により同一視できるためである。この同一視により、序数と基数の区別を取り除いた数を自然数と呼ぶことにする。書き方はそれぞれのかっこを取り除いたものである。しかし、この同一視では演算☆と♡が同じものである保証はない。
さて、ここで圏論の言葉を利用する。
圏Cの合成∘に対し、直積圏C×Cは以下を満たす。
二項演算F:(C×C)→Cが関手であるとき、Fは以下を満たす。
これらから、2項演算Fが関手であるとき、次を満たす。
F:C×C→Cを-⊗-とおく。つまり、普通の積のように中置記法にする。
圏C×Cはテンソル積Fによってモノイダル圏をなしているという。2番目の項目(interchange law)は交替律や、相互交換法則などと呼ばれる。
まとめると以下を満たす。
対象がただ一つ(つまり恒等射がただ一つ)のモノイダル圏はモノイダルモノイドという。モノイダルモノイドが相互交換法則を満たす場合、次の事が言える。
実は交換法則(可換性)は相互交換法則から導ける性質なのである。
ここまで準備が整ったところで、♡と☆に相互交換法則が成り立つか確認しよう。
序数を求める関数をf、基数を求める関数をgとする。f(a)=g(a)=a (aはa個の要素を持った集合、つまり自然数a)とする。
(a☆b)♡(c☆d)
=f(a∐b)♡f(c∐d)=g(a∐b)♡g(c∐d)=
g(a∐b∐c∐d)=f(a∐c∐b∐d)
=f(a∐c)☆f(b∐d)=g(a∐c)☆(b∐d)
=(a♡c)☆(b♡d)
相互交換法則が成り立つことが示された。
自然数は各数を射として、対象がただ一つの圏として構成できるので、自然数はモノイダルモノイドである。∘に☆、⊗に♡を入れてみよう。すると相互交換法則から、☆と♡はともに可換であり、☆と♡は一致することが言える。これを+とおけば普通の足し算になる。
この結果に数学的帰納法を適用することで全ての自然数で+の演算が「数を順番に並べて数える作業」と「順番を無視して数の大きさだけを求める作業」と一致し、集合の要素の数える順番を入れ替えてもよいことが言える。
相互交換法則という耳慣れない法則が出てきた(用語は人によって異なるかもしれない)。足し算を習うときには当然聞いたこともないし、大学で群論などを学ぶときにも聞いたことがないという人が多いだろうと思う。しかし、モノイダル圏の双関手の持つ基本的性質であり、足し算は繰り上がりの時に相互交換法則が基本的な操作として自然と現れる。
そろばんの例を再度確認しよう。そろばんでは足し算の繰り上がりの時に5を括りだして5同士を先に足し算する。
6+7=(5+1)+(5+2)=(5+5)+(1+2)=10+3=13
記号を一部置き換えてみよう。
6+7=(5☆1)+(5☆2)=(5+5)☆(1+2)=10☆3=13
相互交換法則が現れた。構造的には、電気回路で言う直列と並列の関係にある。☆を直列足し算、+を並列足し算とでも呼ぶとわかりやすい。
6 | 5 | ☆ | 1 | 5 | 1 | |||||||
+ | ⇒ | + | ⇒ | + | ☆ | + | ⇒ | 10 | ☆ | 3 | ||
7 | 5 | ☆ | 2 | 5 | 2 |
つまり、足し算演算子+は自分自身と相互交換法則が成り立っており、指を折りながら数を数える方法はこの法則が成り立つからこそ「分解して数える順番を変えてそれぞれ数えたものを後で足す」方法が成り立つのである。足し算は可換な演算なのでほぼ自明のようなものではあるが、繰り上がりの時にひっそりと表れている重要な性質である。
繰り上がり計算はa+bの片方をa=a+0、もう片方をb=(10-a)+(b-(10-a))に書き直して相互交換法則に従って計算するものであるが、そろばんは5,6,7,8,9同士の時に特別に両方を5+●の形に書き直して繰り上がり計算をする作法であり、さくらんぼ計算は特にそういうことはしない作法と言うことができる。
式の形が全てのパターンで同じなので汎用性はさくらんぼ計算の方が高いが、指の数が5本なのでそろばん方式のほうが覚えやすいのではないだろうかと個人的には思う。
足し算は指を折って数えること(序数の足し算)が自然であるが、計算を抽象化(基数の足し算)すれば具体的な数え上げ作業は不要となる。圏論と言う考え方を用いると、序数の足し算と基数の足し算は一致し、交換法則などの足し算の諸法則をうまく説明できる。
さくらんぼ計算にみられる式変形の正当性は圏論的立場からも保証されるが、「なんかうまく説明できないけどややこしい」という感覚は抽象化する前の「順番の入れ替えや数の分解の操作が必ずしも自明ではない、順番に数え上げるやり方」が人間にとってより自然で、その感覚に引きずられているからだと筆者は推測する。
繰り上がりを作法として暗記してしまってもよいだろうが式変形にどのような法則や数学的ベースがあるか考えてみるのもよいだろう。
掲示板
12 ななしのよっしん
2020/11/12(木) 22:51:27 ID: iZs8X8NShG
本当にクリエイティブな子はそんなことで躓かねーよ
強制されたから〇〇が嫌になったって、できない子の常套句じゃん
13 ななしのよっしん
2023/04/16(日) 16:25:47 ID: DcwNRjWiL+
最初はなんだこれと思ったが、要は頭の中で6枚ハジキの入った10連タイルに7連ハジキぶちこんで3枚落とすあれか
改めて見ると7の下にいきなり2つ数字ぶら下げてるから意味不明なんだな
7をどうしてそう分割するかの理由が書き込む部分に盛り込まれてない、6と合流する未来を先取りしていきなり4と3に分ける図になってるから、一度手順を忘れると暗記科目になってしまう(子どもによっては暗記してしまうし、暗算した答えから逆算もできてしまう)
6から、あるいは6と7の両方にぶら下げて4を書く、そのあと7からぶら下げて3を書くみたいにもう一筆つけて作業の順序と必然性をつければ、面倒くさいのはともかく謎作法とは思われないだろう
上で筆算教えとけと言う人も居るが確かに筆算では面倒でも目的不明の手順はなかった(面倒くさいけど)
ところで記事の100マス計算の話、あれって頭の中でこういうアルゴリズムそれぞれで作って高速化する物じゃないの?
14 ななしのよっしん
2023/04/16(日) 17:05:49 ID: DcwNRjWiL+
(1)7からある数字を取り出しましょう
(2)取り出しましたか?じゃあその数字を隣の6と足してみましょう
(3)10になりましたか?ならない?おかしいですね。やり直しです
(4)7から何の数字を取り出せばいいかな?
(5)7のさくらんぼには何の数字が入るかな?1と6、2と5、3と4、4と3、5と2、6と1さあどれでしょう?いっぱいありますね?さあ早く選んで!7のさくらんぼですよ!7だからどれ!?
……多分自分なら授業中はできても家で宿題でやる頃には頭の中こうなりそう
まず「6があるので4が取り出される(この時7は無関係)」しかる後に「3が弾き出される」みたいなイメージが作りづらい図だと思う
順番さえしっかりしてれば10以外の任意の組み合わせにも応用できるし、間違えても見直しやり直しが効く
筆算の繰り下がりとかは間違えて不必要に下げてしまっても数字が余るだけだからそのまま計算できるが、さくらんぼで間違えると元の路線に戻れる部分がないんじゃないかな
下手すると7との組み合わせと
(省略しています。全て読むにはこのリンクをクリック!)
急上昇ワード改
最終更新:2024/12/22(日) 14:00
最終更新:2024/12/22(日) 14:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。