アルゴリズムの代表的な種類一覧|それぞれの特徴を徹底的に解説
「アルゴリズムにはどんな種類があるんだろう?」
「アルゴリズムの一覧ってないのかな?」
と思うことはありませんか?
アルゴリズムを学習しようとしても、たくさんの種類があるので迷ってしまいますよね。
では、アルゴリズムの種類はどのようなものがあるのでしょうか?
そこで今回は、
- アルゴリズムの基本
- アルゴリズムの種類一覧
- アルゴリズム学習におすすめのサイト・書籍
について詳しく解説します。
この記事を見ればアルゴリズムにはどんな種類があるのが理解できます。
ぜひ最後まで読んでみてくださいね。
アルゴリズムの基本
アルゴリズムの一覧を見ていく前に、アルゴリズムの基本として、
- アルゴリズムとは
- 日常におけるアルゴリズムの例
を説明していきます。
正しくアルゴリズムの基本を理解したうえで、さまざまなアルゴリズムの種類を見ていきます。
1.アルゴリズムとは
アルゴリズムとは、問題を解決するための手順のことをいいます。
広義では、問題や手法に縛りはなく、解決のための手順全般のこといいます。
ただし一般的には、コンピューターを使った問題解決手順として使われることが多いです。
つまり、コンピューターで問題を解決する基礎をなしているのが、アルゴリズムになります。
2.日常におけるアルゴリズムの例
日常生活でのアルゴリズムの例として、買い物があげられます。
買い物の目的は、買うべきものを全て買って帰ることです。
プログラミングに置き換えると、買うべきものはリスト型のデータ構造で、買い物の順番には指定がないため、複数のアルゴリズムが見つかります。
この中でも負担が少なく、時間が短い手順こそが良いアルゴリズムといえるでしょう。
エンジニアを目指したいと思った方には、初心者でも確実にプログラミングが身に付く【DMM WEBCAMP】がおすすめ。
プログラミング初心者の受講生が97%以上の【DMM WEBCAMP】では、未経験者コースも用意もされており、安心して学習を進めていくことが可能です。
あなたのライフスタイルに合わせて好きなコースを選択してみてください。
「今の働き方に不満はあるけど、日々の業務が忙しくてゆっくり考える時間がない…」
そんな悩みを持つ方に向けて【DMM WEBCAMP】では無料のキャリア相談を実施しています。
ビデオ通話で相談をすることができるため、仕事で忙しい方でもスキマ時間に気軽にカウンセリングを受けることも可能です!
プロのキャリアカウンセラーと一緒に、今後のキャリアについて考えてみませんか?
アルゴリズムの種類一覧
プログラミングにおけるアルゴリズムにはどのような種類があるのでしょうか。
こちらでは主な4種類のアルゴリズムをご紹介します。
- ソートアルゴリズム
- 探索アルゴリズム
- 暗号化アルゴリズム
- 機械学習のアルゴリズム
それぞれを理解することで、どの場面で、どのアルゴリズムが適しているのかがわかります。
アルゴリズム名 | 特徴 |
---|---|
ソートアルゴリズム |
|
探索アルゴリズム |
|
暗号化アルゴリズム |
|
機械学習のアルゴリズム |
|
ソートアルゴリズム6種
ソートアルゴリズムの全6種類を解説していきます。
種類が多いので、課題解決に最適なアルゴリズムを選択できる知識を身に付けましょう。
- バブルソート
- クイックソート
- マージソート
- 選択ソート
- 挿入ソート
- ヒープソート
1.バブルソート
バブルソートとは、隣同士の値を比較して交換を繰り返すことで整列させる方法です。
実装はとてもシンプルですが、処理が重たいのが特徴の方法になります。
計算回数は、O(n^2)です。
2.クイックソート
クイックソートとは、基準値を設けて、基準値より大きいブロックと小さいブロックに分けて並び替える処理により整列させる方法です。
外部のメモリ領域を使用せず完結するため、スピードが速い特徴があります。
計算回数は、O(n log n)です。
3.マージソート
マージソートとは、対象のデータを分割し、分割後の小さいブロック内で整列、統合することで全てを整列させる方法です。
外部メモリを利用する方法ながらも、処理スピードが早いのが特徴です。
計算回数は、O(n log n)です。
4.選択ソート
選択ソートとは、データ内の最小値(最大値)の値を見つけて、左から順番に並び替えるという方法です。
交換回数が少ないため、バブルソートよりも高速になります。
計算回数は、o(n^2)です。
5.挿入ソート
挿入ソートとは、左から順番に要素を比較しながら入れ替えていく方法です。
処理は遅いですが、実装が簡単という特徴があります。
計算回数は、最大でn(n-1)/2です。
6.ヒープソート
ヒープソートとは、ヒープ構造という二分木の一種を構築して並べ替えをおこなう方法です。
高速に処理できるという特徴があります。
計算回数は、O(n log n)です。
プログラミング未経験でエンジニアを目指すことに不安を感じますよね。
そんな方には、基礎からプログラミングが学べる【DMM WEBCAMP】がおすすめです。
【DMM WEBCAMP】では、初心者のために開発した独自のカリキュラムが用意されており、基礎から確実にプログラミングスキルを身につけられます。
また転職保証付きのプランもあり、プログラミング学習も転職活動も安心して取り組めます。
厚生労働省認定のコースでは、高いスキルが身につく上、受講料最大56万円のキャッシュバックもついてきます。
是非あなたのライフスタイルに合ったプランを見つけてください。
「今の働き方に不満はあるけど、日々の業務が忙しくてゆっくり考える時間がない…」
そんな悩みを持つ方に向けて【DMM WEBCAMP】では無料のキャリア相談を実施しています。
ビデオ通話で相談をすることができるため、仕事で忙しい方でもスキマ時間に気軽にカウンセリングを受けることも可能です!
プロのキャリアカウンセラーと一緒に、今後のキャリアについて考えてみませんか?
探索アルゴリズム4種
探索アルゴリズムとは、Google検索や広告のレコメンド機能などで使われている汎用性の高いアルゴリズムです。
こちらでは、主な4種類を解説します。
- 線形探索アルゴリズム
- 二分探索アルゴリズム
- ハッシュ法による探索アルゴリズム
- ハッシュチェイン法による探索アルゴリズム
1.線形探索アルゴリズム
線形探索アルゴリズムは、配列の要素を先頭から順番に探索していくという、最もシンプルな探索アルゴリズムです。
もしデータが見つかった場合は見つかった時点で、見つからない場合はデータを全て確認した時点で、探索は終了となります。
シンプルな点は良いものの、一つ一つ調べるため処理が遅いのが難点である探索アルゴリズムです。
2.二分探索アルゴリズム
二分探索アルゴリズムは、配列の要素を、端、中心などの点で検証していく、高速処理が可能な探索アルゴリズムです。
配列の左端、中心、右端の要素を見比べて、目的の要素群を洗い出していきます。
ソートしている配列でなければ成り立たないことが難点ですが、一つ一つの検証が不要なので高速でわかりやすい探索アルゴリズムです。
3.ハッシュ法による探索アルゴリズム
ハッシュ法は、ハッシュ関数という計算式を使い、データが格納されている位置を特定するアルゴリズムです。
ハッシュ関数で作られた配列では、ハッシュ関数を使い要素の位置が特定できるので、要素の中身を一つ一つ調べる必要がありません。
ハッシュ法により、コリジョン(計算結果が同じになってしまう現象)が発生した場合は、オープンアドレス法という結果+1をすることでコリジョンを避ける方法が使われます。
4.ハッシュチェイン法による探索アルゴリズム
ハッシュチェイン法は、ハッシュ法による探索アルゴリズムで、コリジョンのルールをチェイン法と定めています。
オープンアドレス法とは違い、ハッシュ関数での計算結果が同様となった場合には、既存の要素とリストにして繋いでいく(チェイン)方法です。
ハッシュチェイン法が存在する理由は、要素の数が多い配列では、オープンアドレス法でもコリジョンが避けられないケースが出てくるからです。
ハッシュチェイン法では、メモリに余裕がある限り、データを格納できる点がメリットといえるでしょう。
暗号化アルゴリズム3種
暗号化アルゴリズムも、プログラミングにおいて重要なアルゴリズムの一つです。
暗号化アルゴリズムの主な3種、
- 共通鍵暗号方式
- 公開鍵暗号方式
- ハイブリッド暗号方式
について解説します。
1.共通鍵暗号方式
共通鍵暗号方式とは、別名を秘密鍵暗号方式といい、データをやりとりする二者間で暗号化・復号化のための鍵を共有する手法です。
メリットは処理速度が早いことで、鍵の生成・送信の手間や送信時のハッキングリスクがデメリットといえます。
代表的な共通鍵暗号方式は以下のとおりです。
- RC4(ストリーム暗号方式)
- DES(ブロック暗号方式)
- AES(ブロック暗号方式)
2.公開鍵暗号方式
公開鍵暗号方式は、暗号化に使う公開鍵と復号化に使う秘密鍵を別で作成する手法です。
データの受信者があらかじめ秘密鍵をもっているため、いちいち鍵を生成・送信する必要がないのがメリットです。
ただし、処理速度が遅いデメリットがあります。
代表的な公開鍵暗号方式は、RSA方式です。
3.ハイブリッド暗号方式
ハイブリッド暗号方式は、共通鍵暗号方式と公開鍵暗号方式をミックスした暗号化・復号化の手法です。
具体的な手順は以下のとおりです。
- 送信者が共通鍵aを生成する
- 受信者が公開鍵bと秘密鍵cを生成して、送信者に公開鍵bを送信する
- 送信者が送信するデータと共通鍵aの2つを公開鍵bで暗号化する
- 送信者が暗号化したデータと共通鍵を送信する
- 受信者は秘密鍵cで共通鍵aを複合し、共通鍵aで受信したデータを複合する
代表的なハイブリッド暗号方式は、HTTPS通信です。
機械学習のアルゴリズム
機械学習でよく使われる計算方式を機械学習のアルゴリズムといいます。
こちらでは、
- 線形回帰
- 決定木
- ランダムフォレスト
- k近傍法
- サポートベクターマシン(SVM)
の5つについて解説していきます。
1.線形回帰
線形回帰とは、一つ以上の要素(予測子変数)と結果(応答変数)の関係性を予測するためのアルゴリズムです。
例えば、お米の収穫量と雨量の関係性を予測する場合、お米の収穫量を結果(y)、雨量を予測子変数(X)として、計算式で関係性を表します。
ビジネスや学術研究などのさまざまな分野で適用できる、比較的単純でわかりやすいアルゴリズムです。
2.決定木
決定木は、別名回帰木や分類木と呼ばれ、問題解決への選択肢を木構造で可視化できるアルゴリズムです。
例えば、目的地へ到達するために、電車とバスでの方法を記載し、それぞれの時間や料金などをグラフ化します。
グラフ化することで、電車が混雑しているケースならバス、バスが来ない時間帯なら電車など、複雑な意思決定を論理的に決定しやすくする方法です。
3.ランダムフォレスト
ランダムフォレストとは、複数の決定木を用いて、平均や多数決を計算するためのアルゴリズムです。
計算処理が早いことと、複数の決定木を使うことでより精度の高い予測ができるメリットがあります。
ただし、使用する決定木が類似しているとあまり効果が出ないので、データに多様性が必要です。
4.k近傍法
k近傍法とは、新たなデータと学習済みのデータを比較し、距離の近いデータをk個取得し、適切に分類するアルゴリズムです。
教師あり学習方法のため、多大なデータセットが必要になることがデメリットです。
適切なデータがあれば、非常に高精度な結果が期待できるアルゴリズムになります。
5.サポートベクターマシン(SVM)
サポートベクターマシンとは、教師あり学習で、分類と回帰を扱うことのできるアルゴリズムです。
デメリットとしては、学習データ量に応じて計算量が膨大になることや、基本的には2クラス分類に特化していることがあげられます。
データの次元が大きくなっても精度の高い認識性能をもつアルゴリズムです。
良いアルゴリズムの定義
さまざまなアルゴリズムを見てきましたが、良いアルゴリズムには共通点があります。
良いアルゴリズムを作るための
- 効率
- メモリ使用量
- 安定性
について解説していきます。
1.効率
アルゴリズムの効率の良さは、計算量という指標で表されます。
計算量とは、速さではなく、手間のことです。
計算量はオーダー記法と呼ばれる表記が用いられ、データ量に対して計算量がどのくらい増えていくかがわかります。
計算量が少ないアルゴリズムが良いアルゴリズムです。
2.メモリ使用量
プログラム実行時には、コンピューターのメモリが使われます。
メモリは、各コンピューターで容量が異なり、有限であることからメモリ使用量が少ないアルゴリズムが良いとされます。
ただしメモリを使って処理速をあげることもできるので、メモリ使用量と処理速度のバランスをよく考えるのが大切です。
3.安定性
良いアルゴリズムは、安定性があります。
安定性があることで、どのような状況でも同じように処理ができるということです。
最悪のケースでは計算量が膨大になる、など状態により大きく変動してしまう確率が高いアルゴリズムは良いアルゴリズムとはいえません。
アルゴリズム学習におすすめのサイト3選
アルゴリズムの種類から定義まで見てきましたが、知識をいれるだけでなく、実際に手を動かすことも大切です。
こちらでは、アルゴリズムを学習できるサイト3つ、
- アルゴロジック
- VISUALGO
- アルゴリズム専門講座
を解説していきます。
1.アルゴロジック
アルゴロジックは、ゲーム感覚でプログラミングが体験できるサイトです。
未経験者から上級者まで幅広く利用でき、プログラミングに大切なアルゴリズムを体験するためのゲームが揃っています。
2.VISUALGO
VISUALGOとは、2011年にシンガポール国立大学の教授が学生向けに開発したツールをネット上で公開したサービスです。
英語なのが難点ですが、さまざまな種類のアルゴリズムを目で見て体験できるのがおすすめのポイントになります。
3.アルゴリズム専門講座
アルゴリズム専門講座は、スタンフォード大学が提供しているアルゴリズム学習のための講座です。
さまざまなで演習が体験できるので、順を追っていくだけで一定のレベルまで達することができるのがおすすめのポイントになります。
【初心者必見】基本情報技術者試験のおすすめ参考書7選と勉強法を紹介アルゴリズム学習におすすめの書籍5選
より詳しくアルゴリズムについて学びたい方のために、おすすめの書籍をご紹介します。
- アルゴリズムを、はじめよう
- 問題解決力を鍛える!アルゴリズムとデータ構造
- 入門 データ構造とアルゴリズム
- アルゴリズムクイックリファレンス
- アルゴリズム思考術
それぞれ見ていきましょう。
1.アルゴリズムを、はじめよう
本書は、アルゴリズム初心者へ向けたアルゴリズムの入門書です。
解説事項を重要なものに絞りつつ、それぞれを丁寧に説明しています。
フローチャートも一緒に作っていけるので、初心者の方におすすめです。
2.問題解決力を鍛える!アルゴリズムとデータ構造
アルゴリズムとデータ構造は、アルゴリズム初心者で、実践を通じて学習したい方に向けた書籍です。
著者は競技プログラミングの経験者なので、効率の良いアルゴリズムに重点をおき解説しています。
例題もたくさん載っているのが特徴で、生涯使える一冊が欲しい方におすすめです。
3.入門 データ構造とアルゴリズム
データ構造とアルゴリズムは、さまざまなプログラミング本を手がけるオライリージャパンが出版している書籍です。
アルゴリズムの基本的なことだけでなく、600弱の練習問題と解答が記載されています。
データ構造やアルゴリズムをじっくりとマスターしたい方におすすめです。
4.アルゴリズムクイックリファレンス
オライリージャパンが出版する、実践的側面を重視したアルゴリズム辞典とも呼べる書籍です。
さまざまな言語での実例付きで、どのようなアルゴリズムを使うべきか、それぞれの実装方法などを解説しています。
自分で手を動かしながら、必要な情報だけ調べたいという方におすすめです。
5.アルゴリズム思考術
アルゴリズム思考術は、プログラミングの場面に限らず、論理的思考を鍛えるツールとしてアルゴリズムを解説した書籍です。
ビジネス売却のタイミングや車をどのスペースに停めるのが最適であるかなど、さまざまな実例とともに思考力を鍛えられる一冊です。
プログラミングはもちろん、思考方法を一から学びたい方におすすめです。
まとめ:アルゴリズム一覧から特徴を覚えて、知識を深めよう
本記事では、アルゴリズムのさまざまな種類について、一覧を元に解説してきました。
- 一般的なアルゴリズムとは、コンピューターを使う問題解決手順である
- アルゴリズムにはさまざまな種類があり、場面により使い分けよう
- 学びながら手を動かし、バランスよくアルゴリズムを学習しよう
アルゴリズムと一言で言っても、さまざまな種類が存在します。
各種類の特徴を理解して、適切な場所で適切なアルゴリズムを使えるようになりましょう。