自分用メモ
言葉の定義やプログラミングとの関係、
記述方法などを確認する
目次
アルゴリズムとは?
コンピュータによる問題解決の手順のこと
あくまで「コンピュータにとっての解決手順」であることが条件
コンピュータにして欲しいことを達成させるための一連の手順と言える
「正しいロジックとは何か、どういう基準なのか」
これを記述するものとも言える。
物事のやり方や解き方を工夫して、手間をかけずに
結果を得る方法のこと。「最適な解き方で解こう」という感じ
また、アルゴリズムを考えるとは、以下の行動を指す
「どのように命令を与えれば、コンピュータである問題を解決できるか」
※参考:クリエイティブ、プログラミング用語まとめ
アルゴリズムの種類
アルゴリズムには様々な種類がある
「小さい順に並べ替えるアルゴリズム」だけでも数十個の種類がある
わかりやすいが遅いアルゴリズムや、素早いが複雑なアルゴリズムなど
例えば、ディープラーニングや機械学習は、
「コンピュータが学習するためのアルゴリズム」
→コンピュータが「猫の画像」を見て、猫が映っていることを判断できるようになる
ソートアルゴリズム(整列アルゴリズム)
バラバラの数字を小さいor大きい順に並べ替える自分の探したい数字を見つけ出すアルゴリズム
バブルソートが具体例、隣り合う2つの要素の
値を比較して条件に応じた交換を行う
ソートアルゴリズムの中では最も遅いが記述が簡単、
大きい数字がどんどん右側に移動していく
「大きい泡」がどんどん上がっていく=バブルソート
サーチアルゴリズム(探索アルゴリズム)
ランダムな数値から指定した値を探し出すアルゴリズムリニアサーチ(線形探索)が具体例→一直線に探索していく
自分の提示した数値と同じなのかをチェックする
目的の数値が見つかるまで
配列のすべての要素と直接比較する
簡単だが処理量は多くなりがち
サーチアルゴリズムには他にも
「2分探索=バイナリサーチ」というものがある
なお、サーチとは探索のこと
特定の制約条件を満たす物を見つけ出す行動
問題を入力して考えられる
いくつもの解を評価した後、解を返すアルゴリズムのこと
故に、サーチアルゴリズムは探索アルゴリズムとも呼ばれる
アルゴリズムとプログラミングの関係
アルゴリズムを考え、思い付くことがプログラミングの核となる
アルゴリズムを考えることがプログラミングにおける「設計」の全て
「プログラミングの5段階」の2番目である「設計」とは、
「アルゴリズムを考えること」と言い換えられる
アルゴリズムを改良することをプログラミング的に言えば、
「計算量0の最適化」と表現している
アルゴリズムが思い付けば、ほぼその問題は解決したようなもの
アルゴリズムを考える=実装(コーディング)ではないので、
必ずしもプログラミング言語で書かなくても良い
「実装」は「プログラミングの5段階」の3つ目の「コーディング」のこと
コーディングとは、思いついたアルゴリズムをプログラムへ落とし込む作業
プログラムは全て「アルゴリズムの実装」という形で記述される
※参考:プログラミングの基礎知識。言語や仕組み、開発について
アルゴリズムを表現する方法とは?
プログラミング以外にも、
「擬似コード」や「フローチャート」がある
処理とは、プログラムを上から下へと実行していくこと、
これだけでは「単純なこと」しか出来ない
そこで制御の流れをコントロールする
2つの概念が必要となる:条件分岐、繰り返し(ループ)
①擬似コード
日本語などを織り交ぜた架空の言語で
アルゴリズムを記述すること
(プログラミング言語で実装するのではない)
②フローチャート
図式的な表現でアルゴリズムを表現する方法
(言語として表現するのではない)
※参考:フローチャートとは?条件分岐や繰り返しなど
この記事へのコメントはありません。