最終更新日:
競技プログラミングと機械学習
こんにちは。スキルアップAIの坂元です。私は趣味で競技プログラミングをしています。
今回は競技プログラミングをしていて良かったこと、また競技プログラミングと関連性のある実用例について紹介をします。
(注) 個人の意見ですが、競技プログラミングはネットゲームという側面が強く、最短でスキルアップを目指すというよりは趣味で楽しくおこなうものであると思っています。
1.競技プログラミングの概要
競技プログラミングでは出題される問題に対して、より早く正確にプログラムを記述できるかどうかを競います。アルゴリズム・数学の知識を必要とする問題が出題されるコンテストが多いですが、ヒューリスティックな問題を扱うコンテストもあります。国内ではAtCoder[1]、世界ではTopCoder[2]などのサイトがあります。
2.競技プログラミングを行うことの利点
-
学生や初学者がプログラミングをおこなう経験をすることができる
大規模なプログラミングを書いたことのない人が、毎日過去問を解いて週末にコンテストに参加することで、習慣づけてプログラミングをおこなうことができます。
-
計算量について意識を持つことができる
競技プログラミングでは、サイト側の計算時間に制限があり、計算量を意識しないといけない場面があります。そこで計算量を意識することで、日常的にも計算負荷のかかるコーディングを避けることができます。
例えば、計算負荷がかかるものとして、無駄な複数forループが挙げられます。 -
過去の自分や他者と競い合うことでモチベーションを維持することができる
競技プログラミングサイトでは、定期的にコンテストが開催されます。それゆえ、自分のレート(自分の現在のレベルを数値で表したもの) の推移を確認することや、同じレート帯の人達と切磋琢磨することでモチベーションの維持につながります。
3.競技プログラミングの経験が有効に働く実用例
競技プログラミングでは、グラフ問題が出題されることもあります。
グラフ問題に対しては、ダイクストラ法や幅優先探索、深さ優先探索などのアルゴリズムを用いて解くことがあります。また機械学習には、画像認識・自然言語処理・最適化などの分野がありますが、「行動の最適化」の分野において競技プログラミングの経験が活躍する場合があります。
具体的な実用例として『配送計画問題』での組み合わせ問題があります。[3]
4.まとめ
競技プログラミングでは出題される問題に対して、より早く正確にプログラムを記述できるかを競います。趣味として楽しむ側面も大きいですが、プログラミングする経験を通して計算量やアルゴリズムの知見を得ることができます。
5.おわりに
スキルアップAIでは、関連講座として「機械学習のためのPython入門講座」を開講中です。
本講座では、Pythonプログラミング未経験レベルから、scikit-learnを用いて機械学習モデルを構築できるようになることを目指します。
また、毎週水曜日に実践的AI勉強会「スキルアップAIキャンプ」を開催しています。勉強会では、様々な実践的テーマを取り上げ、データ分析・AI開発の実務力アップにつながるヒントをご提供します。講師が参加者の皆さんからの質問や悩みに答えるコーナーもあります。
興味がある方はぜひ参加してみてください!
6.参考文献
【監修】スキルアップAI 取締役CTO 小縣信也
AI指導実績は国内トップクラス。「太陽光発電発電量予測および異常検知」など、多数のAI開発案件を手掛けている。日本ディープラーニング協会主催2018E資格試験 優秀賞受賞、2019#1E資格試験優秀賞受賞。著書「徹底攻略ディープラーニングE資格エンジニア問題集」(インプレス)。
配信を希望される方はこちら
また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
公開日: