• ベストアンサー

数学のアルゴリズム

コンピュータが数値を数学的に処理する際のアルゴリズムは人間が数学を解く時のアルゴリズムと同じ、端的にいえば「プログラムのアルゴリズム=数学の解法のアルゴリズム」なのでしょうか?

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

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

「どういう解法で、アルゴリズムを組むか」です。 数学の公式を知っている人なら、その公式を使ったアルゴリズムにする場合があります。 一方、公式を知らなければ、自分なりの解法で、アルゴリズムを作ることになる場合もあります。 机上の数式そのものを、プログラミング言語で表現できる訳ではないので、プログラミング言語で計算できる形に変えていきます。 また、コンピュータで計算する場合、何も考えないでプログラミングすると、表現できるデータに限度があり、浮動小数点だけでなく、大きな値と小さな値を早い段階で演算することで、小さい値の方が欠落してしまう場合があります。そのため、机上での算出順とは別の順序で演算していくといった工夫をします。 また、膨大な計算を行う場合、計算速度を上げるため、コンパイラの特性に合わせて、演算の種類や演算順序を変えるといった工夫もします。

gayaldy
質問者

補足

またまた、ご丁寧に有難う御座います。ただくどいようですが、広い意味では、「プログラムのアルゴリズム=数学の解法のアルゴリズム」で両者は一つの論理的なものの考え方になるのでしょうか?

その他の回答 (4)

回答No.5

「広い意味」、「一つの論理的なものの考え方」とは、具体的にどういうものを指しているのでしょうか? 同じ解を得るのに、求める方法は一つではありません。たとえば、既に公式が見つかっているものに対して、公式にそのまま当てはめたものと、地道に計算していったもの、これをgayaldyさんは、「広い意味」、「一つの論理的なものの考え方」では、同じと解釈するのでしょうか? また、具体的な解法が見つかっているものと、そうでないもので地道に計算するもの。これらを、どう判断するのでしょうか? 答えがないものは、質問とはされず、ここでは規約違反になります。具体的に説明できないなら、これ以上、回答を集めても無駄だと思いますけど?

gayaldy
質問者

お礼

そうかもしれません。有難う御座いました。

回答No.3

プログラムのアルゴリズム=数学の解法のアルゴリズム 理想に過ぎないと思います。 実際は物理演算などに使うことが多いため オーバーフロー(桁足らず)にならないように、 浮動小数点数(誤差あり)を使用することが多いです。 固定小数点数(誤差なし)は自分で作るとか、 アセンブリ等の低級言語プログラムを使ったりしなくてはなりません。 そのようにすれば常にオーバーフローの危険が付きまといます。 あるいは、浮動小数点数の誤差を軽減するために、 変数を保持する場合に小数でなくて 分数のようなオブジェクト(データの塊)にするとか、 色々やらなくてはなりません。 結果的には、数学の解法のアルゴリズムよりも複雑になると思います。

gayaldy
質問者

補足

早速の回答有難う御座います。再度確認させていただけるとすれば、逆に浮動小数点以下の処理等、限られたビット内での浮動小数点処理等を除けば、人間の解法とイコールということなのでしょうか?

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

コンピュータの数値解析には必ず誤差が付きまとってきます。 コンピュータで答えを出す場合、常に有効桁数を考慮する必要があります。コンピュータでアルゴリズムを考える場合、誤差が収束していく場合もあれば発散していく場合もあります。 せっかくコンピュータで答えを出したのに誤差が大きすぎて使えないということもあります。

gayaldy
質問者

補足

すみません。先の方に対する質問と同じですが、限られたビット内での浮動小数点といった問題での誤差以外は大筋は人の手によるものと同じ流れになるということなのでしょうか?

回答No.1

端的に言うと「必ずしもそうじゃない」です。 実行効率とか、アルゴリズムの組みやすさ、も関わってきますからね。 (人間が解きやすくても、必ずしもコンピュータにとって解きやすい方法論、とは限らないから、です)。

関連するQ&A

  • 数学のアルゴリズムについて

    初心者なので恥ずかしいのですが、コンピュータは四則演算から二次方程式、など中高で習う基礎的な数学をどのようにアルゴリズムで処理しているのでしょうか?何かいいサイト・本等もあればご教授頂きたいです。

  • 数学のアルゴリズムを扱っているML

    統計学,線型計画法,遺伝的アルゴリズムなど 数学のアルゴリズムを扱っているML(メーリングリスト)を探しております. プログラムを考える上でのアルゴリズムというよりは,数学の基礎となるアルゴリズムについて質問をしたいと考えております. もしそのようなMLがありましたらご教授下さい.

  • おもしろいアルゴリズム(数学初心者

     日曜プログラマーです。 自分で使うプログラムを作っているのですが、調べる事はあっても熟考することがあまりありません。 それほどまだ難しい事ができないので、練習のため数学の簡単なアルゴリズムを教えて欲しいです。 とりあえず、作ってみたのが素数を調べるソフト。 復号できない暗号の解析するソフト。 どちらも原理としては簡単なんですが、実際作る際に頭を使いました。 プログラムの事は分からなくても、数学でおもしろい考え方や法則があれば、教えてください。 フェルマーの定理とか、何重にも複雑な方程式を解くのではなく、簡単な数式で分かりやすい結果が出るものがいいのですが。 好きなのは、ランダム(サイコロ)なんですが、ランダムでなくてもかまいません。 素数の求め方とか数学的なものから、切符の4桁の数字で10ができるかどうかとか、そう言う簡単なもので結果の分かりやすいものでお願いします。

  • なぜ数学から電算機関連の内容が消えたのか

    高校数学の新課程では電子計算機に関する内容がありません。数学IIA という科目の中に,「アルゴリズムとコンピュータ」という選択項目として残すべきだったと考えています。なぜでしょうか。 【備考】アルゴリズムとコンピュータの内容 1.アルゴリズムと流れ図 2.アルゴリズムと計算 3.コンピュータの構成と機能 4.プログラムとその実行 ※プログラミング言語は BASIC を用いる。

  • 暗号化・復号化のアルゴリズムにはどんなものがありますか?

    Cでプログラミングを勉強しており、20文字ほどの文字列を暗号化・復号化するプログラムを考えていますが、ネットを検索しても暗号化アルゴリズムでなかなかいいものが見つかりません。 私のリクエストとしては ・暗号化対象は半角英数字、半角記号のみ。 ・単に文字コードを1つずつずらしたような簡単な暗号ではなく、複雑なアルゴリズムを使用したい。 ・アルゴリズムは複雑でもプログラムは簡潔にできるものがいい。(長くても数百行程度)。 ・アルゴリズム自体の仕様が公開されている。 ・アルゴリズムは数学式で表せるものがいい。 ・スーパーコンピュータを使わなければ解けないほど時間がかかる暗号化アルゴリズムでなくてもいい。 ・暗号化のライブラリファイルは使わず、自前で全部コードを書きたい。 ・公開鍵や秘密鍵を使わなくてもいい。 上記の条件を満たす暗号化アルゴリズムでいいものがありましたら、教えてください。 以上、よろしくお願いします。

  • アルゴリズムの説明について

    アルゴリズムを新人に教育するようにいわれ困っています。 下記の様な説明でよいか判断が付きません。又、DBの更新はフローチャート上表現できないのでどうしたらよいか悩んでいます。 宜しくお願いします。 アルゴリズムとはある問題を解決する手順。 プログラムを作成するときのロジックを構築しますが、 それらの処理手順すべてがアルゴリズムというわけです。 プログラムはアルゴリズムを表記するということになります。

  • アルゴリズムの信頼性を高くするためには?

    アルゴリズムの信頼性は、非常に重要な条件だと言われており、人間みたいに計算機が間違うことはほとんどありませんが、アルゴリズムの欠陥で「動作しなくなった」「間違った答えを表示する」等の結果的に間違った答えを出力することがあります。 そのようにならないようにプログラム及びアルゴリズムの信頼性を高くするにはどうすれば良いのでしょうか? よろしくお願いします。

  • アルゴリズムを変えるプログラム

    人工知能的な話です。プログラム自身に、プログラム自身へ(アルゴリズム的な)変更を加えることというのは可能でしょうか? (ある処理に対して、経験的な情報を元に処理の一部を経験に好ましいような処理に変更する) 具体的に実現が難しいとかいうことではなく、不可能であるか、カナリ厳しいかもれないが理論的には可能であるかということです。うまく説明できないのですがよろしくおねがいします。

  • C++でアルゴリズムの本を探しています。

    C++でアルゴリズムの本を探しています。 何かオススメの良い本はありますか? ガラーキン・スペクトル・差分法(陽・陰。。。) 空間離散化・時間進行系。 簡単にいいますと、ヘルムホルツ・粒子系・波動方程式・量子分子動力学法・2階の微係数の解法などの 支配方程式を数値的に解きたいので、色々な解法の載っているものを参考にしたいです。 宜しくお願いします。

  • ヒストグラム平均化のアルゴリズム

    画像をヒストグラム平均化処理するプログラムを 作成したいのですが,具体的なアルゴリズムが わかりません.どなたか,教えてください.

専門家に質問してみよう