レッスン
理論 — 両替問題:貪欲法と最適解
両替問題とは、各額面の硬貨を何枚でも使えるとき、指定された金額になる組合せのうち枚数が最少のものを求める問題です。貪欲法は、使える最大の硬貨を選ぶ操作を繰り返します。動的計画法では、まず小さい金額をすべて解くことで厳密な最適解を求めます。すなわち、M(0) = 0およびM(a) = 1 + min M(a − c)です。後者ではc ≤ aを満たす硬貨cについて最小値を取ります。すべての金額で貪欲法が最適となる硬貨体系を正準硬貨体系と呼びます。
各記号の意味
M(a)- 金額aを支払う最少枚数。表のマスaに入る数
G(a)- 金額aに対して貪欲法が使う硬貨の枚数
cₘ, cₘ₋₁- 最大と二番目の額面。貪欲法が初めて最適解を逃す金額が存在するなら、その和より小さい
- 前提
- 各額面の硬貨を無制限に使え、額面は整数、費用として数えるのは硬貨の枚数だけとします。レジのフローリンが品切れなら、別の問題です。上界を使うには額面1が必要です。これがなければ支払えない金額が生じ、表では支払える金額でも貪欲法が途中で行き詰まることがあります。
全プロセスの詳細解説
-
1と5に加える第三の額面は? 3 ステップ
ある国には額面1と5の硬貨があり、6から30までのどれかを第三の額面dにしようとしています。どのdなら、貪欲法による釣り銭が常に最適になるでしょうか。このページで一度に試せる体系は一つですが、三種類の硬貨に対するコーゼンとザックスの判定法なら、25通りをまとめて解けます。まず1、3、4を押し、すでに検査済みの体系で判定法を試しましょう。
-
額面が1 < c < dのとき、d = qc + r、0 ≤ r < cと書きます。どこかに反例があるための必要十分条件は、0 < r < c − qです。1、3、4では、d = 4 = 1 × 3 + 1なので、q = 1、r = 1となり、0 < 1 < 2が成り立ちます。したがって反例があり、ページでは最初の反例として6が見つかります。
-
今度はc = 5です。したがってd = 5q + rで、判定条件は0 < r < 5 − qとなります。qが大きくなるほど、rの入れる範囲は狭くなります。
-
q = 1(dは6から9)では、rは1、2、3を取れるため、d = 6、7、8が反例を生みます。q = 2(10から14)ではr = 1または2なので、11と12です。q = 3(15から19)ではr = 1だけで、16になります。q = 4以降は5 − qが1以下となり、条件を満たすrはありません。
解答
反例を生むのは6、7、8、11、12、16の六つです。残る十九個はすべて正準で、17から30までのdはどれも含まれます。六つのうち一つを確かめるには、
1, 5, 12と入力してください。貪欲法は15を12 + 1 + 1 + 1の四枚で支払いますが、額面5なら三枚で足ります。 -
学習の道すじ
アルゴリズムが正しい理由
参考文献 (3)
- The bound the page draws as a dashed line and settles every system with: if greedy is ever beaten, the smallest amount where it is beaten lies strictly between c₃ + 1 and cₘ + cₘ₋₁; the three-coin rule the worked problem uses; the {1, 3, 4} example and the US system 1, 5, 10, 25, 50, 100 as canonical: D. Kozen and S. Zaks, "Optimal bounds for the change-making problem." Theoretical Computer Science 123(2), 1994, pp. 377-388. DOI 10.1016/0304-3975(94)90134-1
- The pre-decimal coins and their values in pence (threepence, sixpence, shilling of 12d, florin of two shillings, half-crown of two shillings and sixpence, crown of five shillings), and the halfpenny's end as legal tender on 31 July 1969: Wikipedia contributors, "£sd", Wikipedia, The Free Encyclopedia, accessed 3 October 2026.
- Which coins made up the circulating set at the end, as the Royal Mint itself issued them in 1970: half-crown, florin, shilling, sixpence, threepence, penny and halfpenny: The Royal Mint, "1970 Pre-Decimal UK Proof Set", product description, accessed 3 October 2026.