油分け算 — 江戸の数学パズル

問題 (『塵劫記』 より、現代語化)

ここ に、油 が 10 升、ぴったり 入った 大桶 が ある。
そして、空 の 桶 が 二つ。 一 つ は 7 升 入り、 もう 一 つ は 3 升 入り。

この 三 つ の 桶 だけ を 使って、10 升 の 油 を、ちょうど 5 升 と 5 升 の 二 つ に 分けよ。
ただし、油 は 一滴 も こぼ さず、他 の 容器 も 使わ ない こと。

条件 を 整理 しよう

  • 桶 は 3 つ ─ (10 升 入り、7 升 入り、3 升 入り)。
  • 最初 の 状態 ─ (10, 0, 0)。
  • 目標 の 状態 ─ (5, 5, 0)。
  • 許される 操作 ─ 「ある 桶 から 別 の 桶 へ、油 を 移す」 だけ。
  • 桶 は 「ちょうど 空」「ちょうど いっぱい」 に なる まで しか 量を 計れない。

状態 表 を 書こう

このような パズル は、紙 に 状態 表 を 書いて 整理 する と 解ける。
表 の 各 行 が 「ある 瞬間 の 各 桶 の 中身」 を 表す。

手 数10 升桶7 升桶3 升桶操作 内容
01000(初期 状態)
137010 升桶 → 7 升桶 へ いっぱいに
23437 升桶 → 3 升桶 へ いっぱいに
36403 升桶 → 10 升桶 へ 全部
46137 升桶 → 3 升桶 へ いっぱいに
59103 升桶 → 10 升桶 へ 全部
69017 升桶 → 3 升桶 へ (残り 1 升 だけ)
727110 升桶 → 7 升桶 へ いっぱいに
82537 升桶 → 3 升桶 へ いっぱいに (まで)
95503 升桶 → 10 升桶 へ 全部 ✓

できた! ─ 9 手 で 解けた
ただし これ が 最短 か どう か は、ぜひ 自分 で 別解 を 探して み て ほしい。

もう 一 つ の 解

実 は、上 と は 違う 道筋 で も 解ける。

手 数10 升桶7 升桶3 升桶操作
01000初期
170310 升桶 → 3 升桶 へ いっぱいに
27303 升桶 → 7 升桶 へ 全部
343310 升桶 → 3 升桶 へ いっぱいに
44603 升桶 → 7 升桶 へ 全部
516310 升桶 → 3 升桶 へ いっぱいに
61723 升桶 → 7 升桶 へ (残り 1 升 だけ)
78027 升桶 → 10 升桶 へ 全部
88203 升桶 → 7 升桶 へ 全部
952310 升桶 → 3 升桶 へ いっぱいに
105503 升桶 → 7 升桶 へ 全部 ✓

こちら は 10 手。
だから、上 の 解 (9 手) の ほう が、より 短い こと が わかる。

なぜ 江戸 の 人 は こんな パズル を 楽しん だ の か

『塵劫記』 が 出版 された 寛永 4 年 (1627) ─ それ は 江戸 幕府 が 成立 して まだ 24 年。日本 が ようやく 平和 を 取り戻し、町人 文化 が 花開き 始めた 時期 で あった。

当時 の 庶民 は、識字率 が 急速 に 上昇 し、寺子屋 (てらこや) で 「読み・書き・算盤 (そろばん)」 を 学んだ。
『塵劫記』 は その 算盤 教育 の 教科書 と して 大 流行 した。 鶴亀算・旅人算・鼠算・油分け算 ─ こうした 「面白 算術」 が、寺子屋 の 生徒 たち を 夢中 に させた。

さらに、江戸 期 に 発達 した 「算額 (さん がく)」 文化 ─ 神社 の 絵馬 に 数学 の 難問 を 奉納 する 習慣 ─ も、こうした 数学 パズル 文化 の 延長 線 上 に ある。
日本人 は、世界 で も 例外 的 に、庶民 が 数学 を 楽しむ 文化 を 持って いた の だ。

現代 の 「水汲み 問題」 と

この 形 の パズル は、現代 で は 「水汲み 問題」 (water pouring puzzle) と 呼ばれて、コンピュータ 科学 の 探索 アルゴリズム の 教材 と して も 使われる。

  • 1995 年 の 映画 『ダイ・ハード 3』 で、主人公 が 5 ガロン と 3 ガロン の 容器 で 4 ガロン を 量る 場面 が 有名。
  • コンピュータ で 全 探索 を かければ、最短 解 を 機械 的 に 求められる。
  • 容量 が 互いに 素 (最大公約数 が 1) ならば、ほぼ あらゆる 量 が 作れる ─ という 数学 的 結果 が ある。

1627 年 の 京都 の 油 桶 が、1995 年 の ハリウッド 映画 と、そして 21 世紀 の コンピュータ 教育 と、こうして 繋がって いる ─ それ が 数学 の 楽しさ で ある。

挑戦 ─ 別 の サイズ で やってみよう

さあ、君 も 別 の 数字 で やって みよう。

  1. 6 升 入り と 4 升 入り で、10 升 の 油 を 5 升 ずつ に。── これ は 解 が ない! (理由 を 考え よう)
  2. 8 升 入り と 5 升 入り で、10 升 の 油 を 5 升 ずつ に。── 何 手 で 解ける か?
  3. 6 升 入り と 5 升 入り で、11 升 の 油 を 1 升 だけ 取り出せる か?

解 が ある か 否か を、状態 表 と 「最大 公約数」 の 性質 から 考えて み よう。