高等学校数学A/数学と人間の活動/油分け算
問題
[編集]
- ここに、満杯にすると5Lの容器Aと3Lの容器Bがあります(イラストとは違って、目盛はないものとします)。
- 水槽(8L以上)から、この2個の容器を使って、4Lの水を測り分けてください。
- 水を移動させるルール
- ここでは、以下の操作しかできない(「容器の半分」とかは測れない)と考えてください。
- なお、後の考察のため、それぞれの動きに名前をつけておきます。
- 水槽から容器いっぱいの水を汲む(Action1→A1)。
- 水槽に水を戻して、容器を空にする(Action2→A2)。
- 別の容器に移す。以下の2パターンのいずれか。
- 別の容器に全て移し替え、容器を空にする(Action3-1→A3-1)。
- 別の容器がいっぱいになったら、移すのをやめる(Action3-2→A3-2)。
解答
[編集]まずは、この問題を自分で考えてみましょう。解けたり、見当がついたら、「表示」をクリックして開いてみてください。また、しばらく考えて見当がつかないようであれば、開いて回答をながめましょう。次の次の項以下に数学的な考えを記述していますが、考えているときには、目に入れないよう注意してください。
手順1: 最初に容器Aを満たす手順(各手順の後ろにつく(Px)は今は気にしないでください)
①左が最初の状態です。まず、容器Aを満たします。
②そうすると、その水は5Lであることがわかります。次に容器Aから、水を注いで容器Bを満たします。(P1)
③容器Bが3Lなので、容器Aに2Lの水が残ったことがわかります。次に容器Bに入っている水を水槽に戻して空にします。(P2)
④空になった容器Bに、容器Aに残った水(2L)を全部移します。(P3)
⑤空になった容器Aに水を満たします。(P4)
⑥容器Aから水を注いで容器Bを満たします。容器Bにはすでに2Lの水があるため、容器Aから容器Bに移る水は1Lです。(P5)
⑦容器Aに入っていた5Lから1Lの水が容器Bに移ったので、容器Aに残った水は4Lです。これで問題の求める4Lの測り分けができました。(P6)
手順2 最初に容器Bを満たす手順(各手順の後ろにつく(Qx)は今は気にしないでください)
- 容器Bを満たします。(Q1)
- 容器Bから容器Aに移します。容器Aには3Lの水が入っていて、容器Bは空です。(Q2)
- 再び、容器Bを満たします。(Q3)
- 再び、容器Bから容器Aに移します。容器Aは満杯になって、容器Bには1Lの水が残ります。(Q4)
- 容器Aに入っている水を水槽に戻して空にします。(Q5)
- 容器Bに残っている水を容器Aに移します。容器Aには1Lの水が入っていて、容器Bは空です。(Q6)
- 容器Bを満たします(3回目)。(Q7)
- 容器Bから容器Aに移します。容器Aには4Lの水が残ります。(Q8)
拡張と確認
[編集]4Lに限らず、1Lから8Lまでの測り分けができます。
- 1Lを分ける。
- 2Lを分ける。
- 3Lを分ける。水槽から容器Bを満たす。
- 4Lを分ける。本問。
- 5Lを分ける。水槽から容器Aを満たす。
- 6Lを分ける。
- 7Lを分ける。
- 8Lを分ける。水槽から容器Aと容器Bを満たす。
- 1Lを分ける。
- 水槽から容器Bを満たす(容器A:0L、容器B:3L)。
- 容器Bから容器Aに移す(容器A:3L、容器B:0L)。
- 水槽から容器Bを満たす(容器A:3L、容器B:3L)。
- 容器Bから容器Aがいっぱいになるまで移す(容器A:5L、容器B:1L)
- 容器Bに1Lが残る。
- 2Lを分ける。
- 水槽から容器Aを満たす(容器A:5L、容器B:0L)。
- 容器Aから容器Bに移す(容器A:2L、容器B:3L)
- 容器Aに2Lが残る。
- 3Lを分ける。水槽から容器Bを満たす。
- 4Lを分ける。本問。
- 5Lを分ける。水槽から容器Aを満たす。
- 6Lを分ける。
- 水槽から容器Bを満たす(容器A:0L、容器B:3L)。
- 容器Bから容器Aに移す(容器A:3L、容器B:0L)。
- 水槽から容器Bを満たす(容器A:3L、容器B:3L)。
- 容器Aと容器Bに合計6Lが残る。
- 7Lを分ける。
- 水槽から容器Aを満たす(容器A:5L、容器B:0L)。
- 容器Aから容器Bに移す(容器A:2L、容器B:3L)。
- 容器Bから水槽に戻す(容器A:2L、容器B:0L)。
- 容器Aから容器Bに移す(容器A:0L、容器B:2L)
- 水槽から容器Aを満たす(容器A:5L、容器B:2L)。
- 容器Aと容器Bに合計7Lが残る。
- 8Lを分ける。
- 水槽から容器Aと容器Bを満たす(容器A:5L、容器B:8L)。
- 容器Aと容器Bに合計8Lが残る。
油分け算
[編集]このように、容積の異なる複数の容器だけを用いて、液体の量を測り分けるパズル的問題を「油分け算」といいます。
名前の由来は、日本において初出とされる吉田光由『塵劫記』第5巻第40条に取り上げられる以下の問題からです。
- あぶらハかりわけてとる事
- あぶら一斗あるを七升ますと三升ますと二つにて五升づつはかりわけたき
西洋にも、類似の問題が古くからありあり、西洋では、「3個の水差しの問題」(Three Jug Problem)や「注水パズル」(Water pouring puzzle 英語版ウィキペディアの記事)と呼ばれています。
数学的な考察
[編集]油分け算の性質
[編集]4Lの水を測り分けるのに、手順1では、水槽から容器Aに2回水を汲み上げました(①⑤)、一方、容器Bからは1回水槽に水を戻しました(③)。また、4Lを測りとったとき(⑦)に、容器Bは水で満杯ですが、目的の4Lとは無関係なので、この水は戻して良いです。
ここで、水槽から水を移すアクション(A1)を"+"(プラス)、水槽に水を戻すアクション(A2)を"−"(マイナス)と考えると、容器Aで"+"が2回、容器Bで"−"が2回のアクションを行ったことになります。これを式にすると、
となっていることがわかります。
次に、手順2で考えてみましょう。この手順では、水槽から容器Bに3回水を汲み上げました(1. 3. 7.)、容器Aからは1回水槽に水を戻しました(5.)。これを同様に式にします。
となっていることがわかります。
そうすると、この操作は、水槽から水を移すアクション(A1)を"+"(プラス)、水槽に水を戻すアクション(A2)を"−"(マイナス)と考えて、
- ( , は整数)
の形となります。すなわち、これは、一次不定方程式(公式集)を解く問題に帰結するということがわかりました。
一般化すると、 Lと Lの容器を使って、 Lを測り分けるという操作は、一次不定方程式 を解くことによって、 Lの容器を回、 Lの容器を回、各々水槽から汲み上げる、または、水槽に戻すことで達成できるということがわかったわけです。 , をどうやって求めるかは教科書一次不定方程式を参照してください。
- 全数測り分け
さて、油分け算が一次不定方程式と関係が深いことがわかったことで、さらにわかることがあります。上の「拡張と確認」でやったように、 Lと Lの容器を使って、任意に(細かくは、1Lから Lまで、1L刻みに)測り分けること(ここでは「全数測り分け」と言っておきましょう)ができるか、できる場合はどういう場合かということです。
もし、一次不定方程式 が常に整数解を持つならば、全数測り分けは可能となります。では、どういう場合に が整数解を持つかということになると、以下の定理がありました。
- が整数解を持つ。はの整数倍数。(→公式集)
この定理から、 は、 刻みの数となります。すなわち、( が互いに素)でなければ、は、1刻みの連続した整数になることはないということになり、全数測り分けはできないということになります。
グラフによる解法
[編集]一次不定方程式を解くことにより、各々の容器の水槽から汲み上げる、または、水槽に戻す回数は分りました。しかし、これだけで手順がわかるわけではありません。容器は各々1個ずつであるという制約があります。
上の例だと、 の解の一つとして、があるわけですが、容器Aで連続して水が汲めるわけではないのです(容器Aが2個あれば手順が簡単になることを想像してください)。そこで、これを、グラフを使って解決する方法が考えられました。
グラフを使って手順1で解く
[編集]
- 軸に容器Aの量(最大5)、軸に容器Bの量(最大3)となる、目盛が1のグラフを想定する。
- 四角形の内部を点が以下のルールで移動する。
- 最初、点はにいる。
- 点はに移動する。
- 以降、以下のルール(移動ルール1)で移動する。
- 点は、(Rp1)
- 点は、(Rp2)
- 点は、(Rp3)
- 点について、条件分岐し以下の移動。
- k>3ならば(Rp4-1)
- k≦3ならば(Rp4-2)
- の値となった場合、移動を止める。

- 結果、点は以下の軌跡となる。
- :(Rp1)→:Rp4-1 →:Rp2 →:Rp4-2 →:Rp1 →:Rp3 →
- ここで となっているが、明確化のため1手順進める。
- :Rp2 → 4Lを測り分けられた。
- ※上の回答の「手順1」の「Px」に各々対応しているので確認してみてください。
実は、この「移動ルール1」は、以下に示すように「水を移動させるルール」に対応しています。
- 「水槽から容器いっぱいの水を汲む(Action1→A1)」は「Rp1」に
- 「水槽に水を戻して、容器を空にする(Action2→A2)」は「Rp2」に
- 別の容器に移す2パターンは、
- 「別の容器に全て移し替え、容器を空にする(Action3-1→A3-1)」は「Rp4-2」に
- 「別の容器がいっぱいになったら、移すのをやめる(Action3-2→A3-2)」は「Rp3」または「Rp4-1」に
グラフを使って手順2で解く
[編集]同じことが、手順2でもできるはずです。

- 同じグラフを使いますが、移動のルールをちょっと変えます。
- 最初、点はにいる。
- 点はに移動する。
- 以降、以下のルール(移動ルール2)で移動する。
- 点は、(Rq1)
- 点は、(Rq2)
- 点は、(Rq3)
- 点について、条件分岐し以下の移動。
- k>2ならば(Rq4-1)
- k≦2ならば(Rq4-2)
- の値となった場合、移動を止める。
- 点は以下の軌跡となる。
- :(Rq1)→:Rq3 →:Rq1 →:Rq4-1 →:Rq2 →:Rq3 →:Rq1 →:Rq4-2 →
- ※これも、上の回答の「手順2」の「Qx」に各々対応しているので確認してみてください。
「移動ルール2」も、「水を移動させるルール」に対応しています。
- 「水槽から容器いっぱいの水を汲む(Action1→A1)」は「Rq1」に
- 「水槽に水を戻して、容器を空にする(Action2→A2)」は「Rq2」に
- 別の容器に移す2パターンは、
- 「別の容器に全て移し替え、容器を空にする(Action3-1→A3-1)」は「Rq-2」または「Rq4-2」に
- 「別の容器がいっぱいになったら、移すのをやめる(Action3-2→A3-2)」は「Rp4-1」に
縦横の大小が異なるので、ルールが微妙に変わっています。
グラフを使って「拡張と確認」を解く
[編集]では、このグラフを使えば、上の「拡張と確認」で見たように1Lから8Lまでの測り分けができるでしょうか。
グラフを見ると。
- 1L; 又は
- 2L; 又は
- 3L; 又は
- 4L; ()
- 5L;
- ここまでは、 軸上、又は 軸上の点で表されます。これは、容器A又は容器Bのみを使って測り分けたということです。
- 4Lは、5Lはと複数の容器の合計でも測り分けています。グラフの右下りの斜線は、「容器間の移し替え」を表していることがわかります。そして、水の量は、四角形の四辺上に表されているということがわかります。
- 5Lを超えると、容器A又は容器Bの合計の量で表します。
- 6L; 又は
- 7L; 又は
- 8Lだけはこの点が移動するラインにはないので、水槽から容器Aと容器Bをともに満たしたとなります。
グラフで解くルールを一般化する
[編集]このルールを一般化すると、以下のようになります。
- 点 は、四角形 OMRN の辺上を以下のルールに従って移動する。
- この四角形の頂点は次の通り:, , ,
- ただし、()は互いに素である正の整数とする。
- このとき、点 は、を除く、すべての ,,,(,)となる点を必ず一度は通過する。
- したがって、 とした時に、 点 の経路において、 は、区間 である全ての自然数の値をとる。
-
- 初期条件:
- 一般規則(再帰的[1]な移動):
- 点 に対し、次の点 は以下のように定まる:
- 【1】下辺()上にある場合:
- :
- :
- :
- 【2】左辺()上にある場合:
- 【3】右辺()上にある場合:
-
- なお、 であるので、 であり、【1】のような分岐は生じない。
-
- 【4】上辺()上にある場合:
- なお、初期条件をとして、経路を逆に移動するルール(「汲む」と「戻す」が逆になる)にすることもできます。
- このグラフによる解法は、「ユークリッドの互除法」に関係しています。
脚注
[編集]- ^ 「再帰的」とは、「前の状態を元に次の状態を定める」という意味で、コンピュータの繰り返し処理のように、一定の規則で順を追って点の位置が定まることを指します。