• ベストアンサー

動的計画法を記述する言語とは?

プログラムについては素人です. ナップサック問題など,動的計画に適している言語としてなにから勉強すればよいでしょうか? まずは,C++でしょうか? それからjavaなんでしょうか?

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

  • ベストアンサー
回答No.1

ナップサック問題等は、結果を文字,数字で表示すれば事足りるので、C++のようなオブジェクト指向言語は必要ありません。 FORTRANかC言語のような基本言語でじゅうぶんです。 javaのようなネット系言語は計算に向いていません。 ちなみに、私は新人研修の折に、C言語を用いてナップサック問題を解かせました。この問題は、プログラムする以前に問題の分析に比重が置かれます。

iwow
質問者

お礼

たいへんよく分かりました. ありがとうございます. ただ,以下のJavaで動的計画をプログラムする本が売られているのですが,なぜにJavaとなるのでしょうか? もしよろしければ,Cで動的計画を勉強できるおすすめの本があれば教えていただきたいです. http://www.amazon.co.jp/exec/obidos/ASIN/4774112402/qid=1124962793/sr=8-10/ref=sr_8_xs_ap_i10_xgl14/249-1812857-5379532

その他の回答 (1)

回答No.2

No.1のお礼に対する回答 ダイナミックプログラミングは、javaが世に出る30年以上も前から存在しましたので、何もjavaに拘る必要はないんです。無理してjavaを選択すると、計算面で苦労しますよ(javaは計算が不得手ですし、また処理速度も遅いです)。 「Javaで動的計画をプログラムする本」は、かなり無理して特定の範囲に限ったダイナミックプログラミング手法を紹介していると見ます。つまり、「javaでもできる」という新奇性をねらって書かれたものとおもいます。 そんなことより、ダイナミックプログラミング手法の解説書を読み、そこに紹介されている言語で試してみるのが近道です。 繰り返しますが、ダイナミックプログラミング手法は記述言語を問題にするのではなく、その解決手法が問題になります。 解決手法を考えついたら、その時点から記述言語の選択をしても遅くありません。 ですから、言語よりも、コンピュータで何ができるかを学んだ方がいいと思います。 参考URLを見るかぎりでは、FORTRANが適していると思われます。 javaではとても、とてもです。 C言語だと、計算誤差を気にしながらプログラミングする必要があります。

参考URL:
http://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/opt/dynamic/dynamic.htm
iwow
質問者

お礼

再び回答をありがとうございました. とても参考になりました. JAVAを無理にやることはないと分かっただけでも今回質問してよかったと思いました.

関連するQ&A