https://www.jstage.jst.go.jp/article/torsj/54/0/54_KJ00007756657/_article/-char/ja/
もちろん素数判定・素因数分解を基礎にした, 暗号の理論もゴリゴリの実用的なアルゴリズムの問題です.
実用性の観点からもう一つ紹介します. あとで詳しく紹介する競技プログラミングに関わります. 暴力的に単純化すると, 与えられた問題を解くプログラムを提出する競技です. この中で問われるのがまさにアルゴリズム構築力です.
そして競技プログラミングで優秀な成績をおさめていると, それが仕事をする上でアピールポイントになる事実があります. 例えば次のAtCoder Jobsで実際の求人を見てみてください.
ベンチャー系の企業もあれば, 名だたる大企業や関連会社があります. 競プロで鍛えたアルゴリズム構築力を強く評価する企業もたくさんあるのです.
単純に馬鹿みたいに大量に計算できて楽しい! 話から, 身近に多彩な応用があり実用性に満ちた話もあり, 学術的な深く広い話もあります. その分いろいろなアプローチがあり, いろいろな楽しみ方が考えられます.
ここでは算数・数学・プログラミングに関して高いレベルは仮定していないため, あくまで入門レベルの内容・アプローチを紹介します. もちろん私が提案するのは一つの道に過ぎません. もっとあなたにとってよいアプローチもあるかもしれません. ぜひ何が自分の気に入るか, 楽しみながら探してみてください.
さて, データ構造とアルゴリズムの話をすぐにしたいところですが, 一つ注意があります. それはデータ構造とアルゴリズム系の勉強と, 世間でよく言われるアプリ開発やゲーム開発の勉強は食い合わせがよくありません. 今回はまずこの点に関して注意します.
アプリ開発・ゲーム開発で重要なのは, 既存の資産をどれだけうまく使うかです.
それらがやりやすいプログラミング言語を選び, ライブラリを調べ, それらを使いこなすのが重要です. プログラミング言語についても, 採用した各言語についてできる限り深い知見を持つべきです. ここで大事なのはいわば初学者が想像するふつうの勉強と言ってもいいでしょう.
まずはあなたが興味のある領域に適したプログラミング言語に関して, 最近出版された本で基本を一通り勉強するのをお勧めします.
そして一通り勉強したら, あとは作りたいモノを作りはじめてしまってください. 足りていない知識や技術がたくさんあるのに気付くはずです. これをいちいち基礎から勉強しようと思わないのがポイントです. 使えるようにすることを第一目標に, 必要なモノを必要な範囲で勉強して, いろいろなモノをどんどん作ってみてください.
ここではアプリ開発には深入りしないので, このくらいで簡単に終わらせます.
次回からはデータ構造やアルゴリズム, 特に競技プログラミングに関して, 具体的な本やサービスなどを紹介します. ぜひ楽しみにしていてください.
改めてミニ講座三回分のコンテンツをまとめます. 必要に応じて何度でも復習してください.
最後に私の本家メルマガを案内しておきます.
数学・物理・プログラミング, そしてそれらを学ぶ上で大事な英語を中心とした語学の情報を発信しています. もしあなたが私の活動や私からの情報に興味があるなら, ぜひ登録しておいてください. 新しいコンテンツを作ったときにもこのメルマガで案内します.
何かご意見や感想があれば次の読者アンケートまでお願いします.
回答は確約できませんが, 直接返事をご希望ならこのメールへの返信でも構いません.
またメールします.
Previous: 中高数学学習コンテンツの案内/中高数学駆け込み寺 素数判定の巻 Next: 競プロで遊ぼう: AtCoderの紹介/中高数学駆け込み寺 素数判定の巻 back to top