童释丸——最值问题初探
童善算,以器验之。用最少的珠子表示最大的数,这是 optimization 的朴素思想。
原典
今有童释丸,以算盘算数。每档上珠一颗,下珠五颗。问:用几档可表示最大三位数?
——《算法统宗》卷三·算法总括
这道题说的是什么
一个孩子用算盘来试算,他想用尽可能少的档位表示一个三位数。每个档位有上珠 1 颗(代表 5)和下珠 5 颗(代表 5),最多能表示 9。
问题是:用几档可以表示最大的三位数?
这道题看似简单,但触及了最值问题的核心思想——在约束条件下寻找最优解。
问题分析
算盘每档最多表示 9(上珠 1 颗 + 下珠 4 颗 = 5 + 4 = 9)。
要表示最大的三位数,我们需要:
- 百位最大:9
- 十位最大:9
- 个位最大:9
所以最大的三位数是 999,需要3 档。
但题目问的是"用几档可表示最大三位数"——这实际上是在问:给定档位数,能表示的最大三位数是多少?
示意图
算盘每档最多表示 9,3 档可表示最大三位数 999。
推广: 档能表示的最大数
如果有 档,每档最多表示 9,那么能表示的最大数是:
反过来,要表示最大的 位数,需要 档。
更深层的问题:最小档位表示
如果问题是反过来的:用最少的档位表示所有三位数,那答案是多少?
- 一位数:1 档(0-9)
- 两位数:2 档(00-99)
- 三位数:3 档(000-999)
但这里有进位的问题——如果某档满 10,就需要向高一档进位。所以实际上,算盘的档位数是固定的,我们只能利用已有的档位。
优化思想
童释丸的问题触及了优化的核心:
- 目标函数:最大化表示的数
- 约束条件:档位数量有限
- 决策变量:每档放多少珠子
这是一个典型的整数规划问题——在离散的空间中寻找最优解。
与高中数学的联系
思想延伸:最值问题是高中数学的重要主题,涉及函数极值、不等式、线性规划等内容。童释丸问题是最简单的离散优化实例。
运算练兵场:算盘的位值制体现了十进制的优越性——每档独立表示 0-9,组合起来就是任意整数。
算法思维:优化问题的核心是分解——把大问题拆成小问题,逐个解决。
思考与拓展
-
如果用算盘表示最大的四位数,需要几档?最大能表示多少?
-
如果每档上珠代表 5,下珠代表 1,但下珠只有 4 颗(而非 5 颗),每档最多表示多少?
-
证明: 档算盘能表示的最大数是 。
-
如果目标是表示"所有三位数中最小的那个",答案是什么?这是否是一个有意义的问题?
一句话总结
童释丸问题用最朴素的算盘展示了最值问题的核心:在约束条件下寻找最优解,这是优化的起点。