• ベストアンサー

貪欲算法と列挙法について

今ナップサック問題をやっているのですが 疑問に思ったので質問します 貪欲算法の方が数が多いとき速く答えが出る、 ということは分かりますが、他にも貪欲法の 利点または欠点はありますか。ぎゃくに 列挙法の方がよいことがありますか

質問者が選んだベストアンサー

  • ベストアンサー
  • kony0
  • ベストアンサー率36% (175/474)
回答No.1

貪欲算法がなにを差しているか、多少類推がありますが・・・あと、まとはずれな言動かもしれません。その場合はお許しください。 3種類の品物がじゅうぶん多数個あって、 品物A:価値12、重さ6、単位重量あたり価値2.0 品物B:価値 9、重さ5、単位重量あたり価値1.8 品物C:価値 5、重さ4、単位重量あたり価値1.25 とします。いまナップサックの容量が重さ10までしか耐えられないとすると、 単位重量あたり価値が最も高いAを1つ入れてしまい、残りの容量でCを入れるよりも、当然にBを2つ入れたほうが総価値は高いですよね。 ナップサック問題が離散的である限り、単純に単位あたり価値の最も高い順に採用していく方法が、厳密に最適な解を求められるわけではない、というので貪欲法の欠点の指摘ということでよろしいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 電圧降下法による抵抗測定

    電圧降下法による、抵抗測定の利点と欠点を述べよ。という問題が出ました。 いろいろ検索してみたのですが、わかりません。 どなたか、わかる方教えてください。

  • N進法の計算

    こんばんは。 10進法から他の○進法にしなさいという問題があります。 やり方はわかります。 たとえば、2進法で表しなさいという問題なら、10進法の数字を2で割って余りを書き出し、その商をまた2で割って余りを書き出し…を筆算で繰り返して、割られる数が2より小さくなったら最後に下から余りを並べるということですが、そこで疑問です。 どうして余りを並べたものが答えになるのですか? このやり方のカラクリがわかりません。 答えをまた10進法に戻すと辻褄は合うのですが、完全に納得して解いているわけではないのでなんか気持ち悪いです。 文系にもわかるような説明をお願いします。

  • Heリークディテクタスニファー法

    スニファー法とはどのようなものか? 一般的な方法、手順を教えてください。 また、他の方法との違い(利点、欠点)等も教えていただきたく。 宜しくお願い致します。

  • 10進法から2進法へ。

    こんにちは^^)今レポートをやっています。 2進法を10進法に直すやり方は、自分なりに理解できました。 ですが、10進法を2進法に直すとき、なぜ2で割り余りを明記していくのか、その理由がわかりません。しかも以下問題文の答えは、(101100)だと思うのですが、他の位は全て余りを明記してるのに、この数の一番大きい位の1だけは、3÷2=1あまり1の商を明記してるんですよね?なぜでしょうか? (問題) (108)10を2進法になおせ。 この問題で、わかりやすく説明していただけないでしょうか? よろしくお願いします。質問は、以下の2点です。 (1)10進法から2進法になおすとき、なぜ2で割りあまりを明記するのか? (2)なぜ、あまりだけを明記するのではなく商も明記するの??

  • 2進法や3進法について

    はじめまして。今日、情報Aで2進法や3進法のついて習い、練習問題のプリントをもらいました。そのプリントには答えもついているのですが、何度やっても書いてある答えと合いません。もしかしてとは思いますが、先生が間違えているという可能性もあると思い、みなさんにも解いていただけないでしょうか?解けたら、答えがあっているかどうか、変換のポイントなどを書いていただけるとうれしいです。 問)3進法で書かれた数を2進法に直せ 1)22211       答え 100111111 3)201211      答え  100001011 ちなみに私の答えは1)が11101110、3)が100010111となりました。また、2)もあったのですがこれは正解でした。 

  • 英語の学習法

    私は 英語を ある程度スラスラ読めるようにまではマスターしました。その間 色々学習方法を試行錯誤してきました。以下の代表的な学習法の利点と欠点をを自分なりに纏めてみました。それについて 補足、追加、反論がありましたら 回答お願いします。 (1)単語帳などで とにかく単語を覚える。 ☆利点…これは 例えば英語もある程度マスターしていて ドイツ語の医学書を読みこなせた少し昔の医師が、今度は英語の医学書を読む必要に迫れれた時などは、 英語の医学用語を整理するのには非常に合理的な方法だったと思います。 ★欠点…単語だけ 丸暗記するのは苦労する割には すぐに忘れます。たとえ 反射的に訳語が浮かぶようになったとしても、コロケーションとかつかめませんし、 あまり効果的な学習方法だとは思いません。 (2)練習問題を多くこなす。 ☆利点…今まで覚えたことを復習し、不確かな部分を認識できるので 確実な実力を養成できます。 ★欠点…これだけでは 新しい知識は増えにくいです。 (3)洋画を観る ☆利点…楽しく英語に親しむには格好の方法でしょう。 ★欠点…体系的な学習ができません。 (4)とにかく英語で書かれた文章を読み漁る ☆利点…これは重要だと思います。とにかく量をこなすことが重要ですね。 ★欠点…これだけでは 結構アバウトになりがちです。 (5)英会話教室に通う ☆利点…いい教室を選べば 会話を覚えるのには もってこいだと思います。 ★欠点…授業料が高いし、トラブルも多いですね。それに、教室の選び方、時間の確保など 問題点があります。 (6)英英辞典を活用する ☆利点…Thinking in Englishの習慣を養い、英語学習の頼もしいアイテムです。 ★欠点…最初は とっつきにくいですね。

  • 14進法の問題

    「14進法の、12の1.7乗を14進法の整数表記で表せ」 現在、こちらの問題をやっていて、答えは「48」とあるのですが、こちらの値の求め方が分かりません。 参考書を見ると、普通の10進法ではない「n進法」の計算問題は10進法の数にもどして行うとやりやすいと書かれているのですが、この問題の場合は「1.7乗」というのがひっかっかり、どう解いて良いのか分かりません。「2乗、3乗」などならイメージがつくのですが、「1.7乗」というように少数がつくとどういう数なのかイメージがつきません。 どなたか分かる方はいらっしゃいますでしょうか。

  • 回答を幾つも列挙したり、長く回答をするのは?

    ある質問に回答してたら、他の回答者の方が ”「バカみたいにたくさん列挙してしまってすみません」とか 「長々と申し訳ありませんでした」のひとの選”があるという事が 書いてあったのですが、それってどこのカテなんでしょうか。 私はどうしても興味分野に関しては長くなる傾向があるので、 ちょっと気になりました。(^^ゞ 例えば「おすすめの曲、ありませんか?」など、自分が興味がある カテゴリーに何か答えられそうな質問があると、つい嬉しくなって たくさん答えてしまいます。すごく詳しい方のように、まったく 知識もないので、ほんの紹介程度で書いてますが、それで、もし 質問した方に喜んでもらえると嬉しいだけです。 別に見返り??とか、そうゆうのではなく、ただ曲を知って ほしいんですよね。 私は以前、自分も何度かいろんなカテで質問をしましたが、沢山 情報を教えて下さった親切な回答者様が数名いました。 とても感激しましたし、得をした気分になったんですが…。 今、例に挙げたようなアンケート的な質問に回答を列挙するとか 長く回答するのは、タブーなのでしょうか? 皆様のご意見を伺いたいです。よろしくお願いします。

  • 進法について

    1、五進法で以下の問題を計算せよ。 ★(1)2102-223 ★(2)1342÷23(商と余りを求めよ) この問題の解法は (1) 5進法の10は、10進法ではいくつになりますか? (2) 5進法の100は、10進法ではいくつになりますか? (3) 8000秒は、何時間何分何秒ですか? n進法を10進法に直すには 一の位の数×nの0乗 十の位の数×nの1乗 百の位の数×nの2乗 千の位の数×nの3乗 万の位の数×nの4乗 …… (1)5進法の10は、10進法では 0×0+1×5=5 (2)5進法の100は、52×1+51×0+50×0=25 (3)8000秒は2時間13分20秒 (1)(2)は5進数から10進数への変換。(3)は10進法の数を60進法に直したことになります。 つまり、問題を一旦10進数に直して答えを出したたうえで、改めて5進数に戻すのだと思います。 ということはわかるのですが、数式ではどのように表せば良いのでしょうか。 どうか分かる方ご協力お願いいたします。

  • 8進法の問題です

    この2つの問題を自分なりに答えはだしてみたのですが、8進法の計算だけを用いてと言われると自分の解き方があっているのかよくわからないのです。どなたかできれば解き方を教えていただけませんか??お願いします。 1)8進法の計算だけを用いて(10進法の計算は用いずに)、以下の数を8進法で表しなさい。  A) 384(10進数)→?  B) 2B0(12進数)→?  C) 1BA(12進数)→?  D) 11C(16進数)→? 2)8進法の計算だけを用いて(10進法の計算は用いず)、以下の8進数を指定された進数で表しなさい。  A)326(8進数)→?(10進数)  B)135(8進数)→?(12進数)  C)642(8進数)→?(12進数)  D)635(8進数)→?(16進数) 1)についてはA)ならば3*8^2+5*8~1+6*8~0=3*54+46+6=214というようなやり方でいいのでしょうか?B)C)も同様に解いて79、2AAになりました。D)はよくわかりませんでした…。 2)は商が0になるまで割っていき余りが答えになり、A)600というようになるんですよね?しかし、B)C)D)のように記号が入るとわからなくなってしまいます。