アルゴリズムと数学には,深い関係があります。
何点かに分けて解説します。
(1)アルゴリズムの基礎を理解するためには,数学的で論理的な思考が必要です。
帰納法,再帰的,集合を使った条件の判定など,
数学の分野で学ぶ基礎事項に基づいて
処理や手続きの流れを論理的に考える。
それがアルゴリズムです。
たとえば,「名簿に載っている人のデータを年齢順に並び替える」
というアルゴリズムを考えると,
これはソートアルゴリズムです。
バブルソートやクイックソートなどの手続きを実行した結果,
どうして並び替えが正しく実行されるのか
ステップを1つずつ追いかけて処理の流れを把握するためには,
論理的な思考が必要です。
このような考え方は,文系の人にも理系の人にも必要です。
(1)に限って言えば,アルゴリズムと数学に関係がある理由は
「論理的な考え方をするから」
と言えます。
(2)数学そのものを深く調べるために必要なアルゴリズムもあります。
この場合,ただ単にアルゴリズムを理解するために数学が必要ということではなく,
アルゴリズムの「対象」そのものが数学です。
たとえば,ある数が素数かどうかを判定するアルゴリズム,
円周率を高精度ですばやく計算できるアルゴリズム(つまり計算の方法や手続き)
などは,
数学という研究分野を深めてゆくために利用されるアルゴリズムです。
この場合,(1)とは異なり,数学を専門にする人たちが主に使います。
(3)アルゴリズムの性能を評価するためには,数学的なモデル化や計算が必要です。
あるアルゴリズムが速いか遅いか,データの使い方が効率が良いか
などを定量的に評価するためには,
そのアルゴリズムのスピードを何らかの数学的な関数に当てはめて計算を行い,評価の結論を出します。
たとえば数学では指数関数について学びますが,これは増加がとても速い関数です。
なので,あるアルゴリズムの実行にかかる時間が指数関数的である,と評価した場合には,
そのアルゴリズムの実行にはとても時間がかかるということになります。
バブルソートよりもクイックソートのほうが速いのはどうしてか
具体的にそのスピードの差を計算するために,
このようなモデル化が必要です。
詳しくは,計算量理論(計算複雑性理論)や,アルゴリズムのオーダー,P≠NP問題について調べてください。
(4)少し難しいですが,
アルゴリズムの存在を証明したり,存在しないことを証明したりする場合には,
数学でおこなうような証明の手続きを踏んで結論を出すので,
やはり数学的な考え方が必要です。
つまり,ある複雑な計算を短時間で済ませることが可能かどうか
についてジャッジを下したい場合,
そのような計算の手続きつまりアルゴリズムが存在するかしないか
厳密で論理的な証明が必要になります。
詳しくは,計算可能性理論についてお調べください。
(5)厳密な境目はありません。
うえで述べた事柄は,情報科学,計算機科学,数理科学,シミュレーションなどの理工系の分野に分類されます。
そして,すべての理工系の分野について,初歩の基礎・土台となるのが数学です。
だから,理工系の分野に関わる以上は,
数学に全く関係のない事柄などない,と考えてください。
「アルゴリズムが数学的な考え方に基づいている」というのも同じことです。
部分集合とか絶対条件とか十分条件とか、そういった考え方を基準にしなければ現実を規定できない。
帰納法で否定要因を虱潰しに当たる。。。。・・って手もありますけどね。