円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。正の整数 に対し、 円をちょうど支払う硬貨の組み合わせのうち、枚数が最小のものの枚数を とする。
また、次の貪欲法で 円を支払ったときの硬貨の枚数を とする。
(貪欲法)残りの金額が になるまで、残りの金額以下の硬貨のうち最も額面の大きいものを 枚使う、という操作をくり返す。
を満たす整数 のうち、 となる をすべて求めよ。
硬貨問題などで貪欲法の結果 と動的計画法による最適値 を比べ、 となる を見つけたり数えたりできる
硬貨の種類が決まっているとき、「払える最大の硬貨から使う」貪欲法の枚数 と、動的計画法で求めた本当の最小枚数 を表にして並べます。そうすることで、貪欲法が損をする金額 ( となる )を見つけたり数えたりできます。新しい硬貨の組を作るときや、プログラムで貪欲法を使ってよいかを確かめるときに役立ちます。ここでは、1 円硬貨を含み、どの金額も払える硬貨の組を考えます。
貪欲法の払い方も、 円をちょうど払う払い方の 1 つです。 はそのような払い方すべての中での最小枚数なので、いつでも が成り立ちます。したがって「貪欲法が最適でない」とは、 と真に大きくなることです。両者を同じ で比べれば判定できます。
は前提の技能の漸化式 で求めます。 も同じ形の漸化式で表せます。貪欲法は最初に「 以下で最大の硬貨 」を 1 枚使い、残り 円にも同じ規則を当てはめます。よって です。 は可能な硬貨をすべて試して最小を取りますが、 は 1 通りしか試しません。この違いが差を生みます。
差が出ても、それより大きい金額すべてで差が出るとは限りません。そのため、調べる範囲の をひとつずつ比べる必要があります。
動的計画法で の表を作る:、 について ( は硬貨の額面で、 のものだけを考える)
貪欲法で の表を作る:、 を 以下で最大の硬貨として
同じ で と を比べ、 となる に印を付ける( となることはないので、出たら計算ミス)
印の付いた を、問われた形(すべて・個数・最小のもの)で答える
1 円、3 円、4 円の 3 種類の硬貨が何枚でも使えるとする。 円をちょうど払うとき、貪欲法の枚数を 、最小枚数を とする。 の範囲で となる をすべて求めよ。
手順1( の表): から順に、 を計算する(引けるものだけを使う)。。
手順2( の表): は なら 4、 なら 3、 なら 1 である。。
手順3(比較): である。実際、貪欲法は だが、最適は である。 である。貪欲法は だが、最適は である。ほかの ではすべて となる。
手順4:求める は である。
答え:
貪欲法で、残りの金額を超える硬貨まで「最大の硬貨」として選んでしまう誤り。正しくは 以下で最大の硬貨 を選ぶ(例:硬貨 で なら であり、4 ではない)。
一度 となったら、それより大きい ではずっと貪欲法が失敗すると思い込む誤り。正しくは ごとに比べる(例:硬貨 では だが、 である)。
の漸化式で、 となる硬貨も使ったり、 を置き忘れたりする誤り。正しくは とし、 の硬貨だけで を取る。
小さい でいくつか試して差が出なかったので、「貪欲法は常に最適」と結論してしまう誤り。正しくは、問われた範囲のすべての で と を比べる(例:硬貨 では で差がなく、 で初めて差が出る)。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。正の整数 に対し、 円をちょうど支払う硬貨の組み合わせのうち、枚数が最小のものの枚数を とする。
また、次の貪欲法で 円を支払ったときの硬貨の枚数を とする。
(貪欲法)残りの金額が になるまで、残りの金額以下の硬貨のうち最も額面の大きいものを 枚使う、という操作をくり返す。
を満たす整数 のうち、 となる をすべて求めよ。
円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。正の整数 に対し、 円をちょうど支払う硬貨の組み合わせのうち、枚数が最小のものの枚数を とする。また、「残りの金額を超えない硬貨のうち最も額の大きいものを 枚使う」ことを残りが 円になるまでくり返す貪欲法で 円を支払ったときの硬貨の枚数を とする。 を満たす整数 のうち、 となるものをすべて求めよ。
円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。正の整数 に対し、 円をちょうど支払う硬貨の組み合わせのうち、枚数が最小のものの枚数を とする。また、「残りの金額を超えない硬貨のうち最も額の大きいものを 枚使う」ことを残りが 円になるまでくり返す貪欲法で 円を支払ったときの枚数を とする。
を満たす整数 のうち、 となるものをすべて求めよ。
種類の文字 からなる長さ の文字列があり、各文字の出現回数は次のとおりである。
| 文字 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 出現回数 |
この文字列を、次の貪欲法(ハフマン符号の構成法)で作った 進符号で符号化する。
文字列の各文字をその符号語に置き換えて並べたとき、得られる の列の長さ(ビット数)を求めよ。
円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。正の整数 に対し、 円をちょうど支払う硬貨の組み合わせのうち枚数が最小のものの枚数を とする。また、次の貪欲法で 円を支払ったときの枚数を とする。
貪欲法:残りの金額が になるまで、残りの金額以下で額面が最大の硬貨を 枚使う。
を満たす整数 のうち、 となるものの個数を求めよ。