6

遅かれ早かれ、単純なif / elseステートメントではなく、より適切な意思決定を行う、より複雑なアプリケーションを構築したいと思うようになりました。

私の現在の数学のバックグラウンドは基本的な三角法です。アルゴリズムを作成して理解するために必要なスキルを身に付けたいと思います。

私が調査したことから、私は次の主題を理解し、学ぶ必要があるでしょう:

  1. 高度な代数
  2. 微積分
  3. 離散数学

これが私が到達した結論です。また、この種の数学を練習して進捗状況を追跡できるサイトがあるのではないかと思いました。

ありがとう。

4

5 に答える 5

5

いくつかの分野と、それらを学ぶ必要がある理由をリストアップしましょう。

代数/数論:そこには多くの有用な理論的アルゴリズムがあり、ある時点で既存のものを使用/変更する必要があるかもしれません。それらが機能する理由の背後にある理論を知ることで、それらを覚えるのが非常に簡単になります(そして、忘れた場合はそれらを再作成する;))。このようなアルゴリズムの古典は、2つの数の最大公約数を見つけるためのユークリッドアルゴリズムです。二次ふるい法などのより高度なアルゴリズムは、暗号化で多くの用途があります。

グラフ理論:これをあまり説明する必要がないことを願っています。グラフは、コンピュータサイエンスにおける非常に多くのさまざまな問題を解決するために使用されます。これらは、ネットワーク、オブジェクト間の関係、およびアドホックな用途の膨大なクラスを表すために使用されます。アルゴリズムには、最短経路、ネットワークフロー、カラーリングなどが含まれます。

線形代数:繰り返しますが、線形代数には多くの科学的用途があります。線形代数の主な用途は連立方程式を解くことであると私は安全に言うことができると思います。複雑な微分方程式は、線形代数を使用して解かれます。巨大な行列を乗算し、線形方程式の巨大なシステムを解く方法を知ることは、多くのコンピューターシミュレーションの中心です。日常のコンピューティングとより密接に関連しているコンピュータグラフィックス(特に3Dグラフィックス)は、すべて線形代数に基づいています。

微積分:これも自明のはずです。微積分を知らなければ、数学や科学に関連することをするのにそれほど遠くはありません。大学生の悩みの種ですが、それは本当に現代科学のいたるところにあります。

確率:汚い仕事をする確率に依存する確率的アルゴリズムがいくつかあります。また、シミュレーションでは、ランダム性と確率を使用して、良好な結果を得ることができます。あなたが本当に必要とするすべてである確率の基礎を学ぶことはそれほど難しいことではありません。

統計:統計を計算して統計テストを行うプログラムを作成している場合でも、自分で統計を使用している場合でも、情報を解読して解釈するのに非常に役立つツールです。数学者や科学者だけでなく、実際には誰でも、少なくとも統計の基本的なハンドルを持っている必要があります。

数値解析:これは一種のキャッチオールです。これが数学とコンピュータサイエンスを結びつけるものです。数学は紙の上ではうまく機能しますが、実数の離散化と境界設定を開始すると、問題が発生します。これが数値解析の目的です。これらの数学的アルゴリズムを実行する際に直面する可能性のあるさまざまな数値問題と、それらを回避/修正するために使用できる数学的/コンピューターサイエンスのトリックについて説明します。

于 2011-07-12T12:11:51.283 に答える
3

これは非常に主観的な質問であり、回答の正しさを適切に評価することはできませんが、ここにいくつかの指針があります。

  • ほとんどのアルゴリズムは、数学の1つのブランチのみを必要とします。特定の問題ドメインでアルゴリズムを構築しようとしている場合は、これらすべてのブランチを学ぶ必要はないかもしれません。(それのために改善したいだけなら、明らかにあなたが学ぶすべてが価値があるので、答えはさらに難しくなります。)

  • アルゴリズムの競合サイトを確認してください。プロジェクトオイラーのように、それらのいくつかは主に数学の問題に焦点を当てています。その他(TopCoder、ACM ICPC、spoj、...)は、あらゆる種類のアルゴリズムに焦点を当てています。

于 2011-07-12T09:50:10.867 に答える
3

あなたはあなたのリストからいくつかの重要なものを残しました:

  1. 確率
  2. 統計学
  3. 線形代数

金持ちになったり、痩せすぎたり、数学を知りすぎたりすることはできませんが、この道を進む必要があるかどうか疑問に思います。微積分や線形代数を使用せずに、比較的複雑でやりがいのあるプログラミング作業をたくさん行うことができます。ピクサーの科学計算やグラフィックスは含まれません。

また、これと同じくらい厳格なことが自習でできる可能性がどれほどあるのか疑問に思います。あなたは正式な学校教育を終えた後、自分で微積分を習得した珍しい個人になるでしょう。数学は通常、一方通行のドアです。早い段階で数学を理解しないと、後で戻るのは困難です。

于 2011-07-12T09:53:05.440 に答える
2

数学的帰納法は、多種多様なアルゴリズムの設計と理解に非常に役立つことがわかりました。このアイデアをかなり遠ざける素晴らしい本があります:http://www.amazon.com/Introduction-Algorithms-Creative-Udi-Manber/dp/0201120372

于 2011-07-12T09:51:49.230 に答える
2

コンピュータサイエンスに役立つトピックの概要は、MITのOpenCourseWareにあります。クラス6.042(コンピュータサイエンスの数学)のシラバスを見ると、どのトピックが役立つかがわかります。http: //ocw.mit.edu/courses/electrical-engineering-and-computer-science/6 -042j-mathematics-for-computer-science-fall-2010 / readings /

そのリンクは、優れた教育ツールであるクラスのオンラインコースノートにつながります。コースの試験と回答はOCWでも入手できます。MITのすべてのCS学生に必要なため、私は間違いなくこの資料のいくつかに取り組むことから始めます。

于 2011-07-12T12:19:10.033 に答える