[1] の最適解の構成法は、代金 と財布の小銭 を見て、 命題 8 のようにそれらを分解できる単位に分解して考え、 下の位の硬貨から最適な支払い方を構成していく、という方法であり、 比較的自然なものであった。
例えば、財布に 1324 円 (1000 円札 1 枚、100 円玉 3 枚、10 円玉 2 枚、 1 円玉 4 枚) あるとき、716 円を支払う場合は、1300 円で 700 円を、 24 円で 16 円を支払うように分割して考え、 700 円の方は 100 円玉 2 枚と 1000 円札 1 枚、 16 円の方は 1 円玉 1 枚と 10 円玉 2 枚、 と、結局 1221 円を支払えばよいわけである。
一方、命題 13 の証明の構成法は、 まず最終的な残金
確かにこの支払い方は、前の最適解の支払い方に一致する。 しかし、(1) の引き算を暗算でやることはやや面倒だし、 さらに を求めて共通部分 を求め、それを から取り除く、 という計算を暗算でやるのはかなり難しそうである。
これを、多少暗算でもできそうな計算に改良してみる。 まず、(1) の引き算は、以下のようにすれば足し算に改良できる。
円に を加えた金額が最終的に財布に残る金額となるので、 その冗長性を排除するように から小銭を出していく、 言い変えれば「両替」をしていく、と考えればよい。
例えば、例の場合は 284 円に 324 円を加えるわけであるが、 284 円をもらう際の冗長性を「両替」するように出していけばよい。 まず、324 円から 1 円玉を 1 枚出せば
これにより、1000 円札と 1 円玉 1 枚、10 円玉 2 枚、100 円玉 2 枚を出せば、 手元の 103 円とおつりの 505 円が残ることになり、 確かに非冗長解が得られる。
これは、引き算は多少楽になり、足し算で考えられるようになることが 多少のメリットであるが、 ただし慣れるまではかなり不安の残る方法だと思う。
竹野茂治@新潟工科大学