もっと効率的に動くコードを書きたい,もっと簡潔なコードを書きたい,そんな時に役立つのが数学です.
今回はプログラミングに直接適用できる数学についてご紹介します.
今後の勉強の指針になれば,と思います.
※この記事ではあくまでトピックの紹介に留めます.内容には深入りしません.
競技プログラミング
グラフ理論
グラフ理論というのは,点と辺で表現される「グラフ」というモデルに関する理論です.
有名な問題として,最短路問題や点被覆問題,最大フロー問題などがあります.
最短路問題なんかはそのまま出題されることもありますし,点被覆問題は作業割り当て問題に適用することができます.
アルゴリズムを学ぶ際にもグラフの用語がたくさん出てきますので,一度簡単に学習しておくことをおすすめします.
また,アルゴリズムの正当性についての証明などにも目を通しておくと,実装をバグらせた際にどこがおかしいのか目処をつけやすくなるかもしれません.
わかりやすい形で実社会へ応用されることの多い分野のため,比較的とっつきやすい数学ではないかと思います.
初等整数論
競技プログラミングでたまに出題される,mod=10^9+7が登場する問題は,初等整数論がよく使われます.
計算量見積もりにオイラーのトーシェント関数を使ったり,逆元の計算にフェルマーの小定理を使ったりします.
証明について必ずしも理解しなくても大丈夫ですが,定理の主張くらいは押さえておいた方が良いでしょう.
機械学習,AI
機械学習で対処できるタスクには次のようなものがあります.
- 不動産価格などの予測
- 画像データから特定の対象を識別する
- 新しく画像を作り出す
- 時系列データをもとにした需要予測
いずれのタスクにおいても,その正当性を評価するための損失関数を定義するために,確率・統計の考え方が必要になってきます.
そして,確率・統計の基礎になるのが線形代数と微分積分です.
いきなり統計の勉強から入ってもいいのですが,微分積分と線形代数の基礎知識を押さえた上で勉強したほうがスムーズかと思います.
したがって,
微分積分・線形代数→統計→多変量解析→深層学習・強化学習→論文などを読んでさらに進んだ技術の勉強
という順番で学習するのが一番確実だと言えます.
その他
数理論理学・・・新しい言語の開発や,論理プログラミングで活用されています.
それぞれについての詳細は今後別の記事にて解説していこうと考えています.
新しく学んだことがあれば随時追記していく予定です.
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント