Data Scientistを目指してた元学生のblog

Data Scientistを目指した元学生のblogです。今は機械学習エンジニアのようなことやってます.統計分析や機械学習から最適化、英語などの勉強過程も書いていこうと思います。

アルゴリズムとは? データ構造とは? (0/100) ~アルゴリズム編~

 はい。

少し時間がたってしまいましたが100個書くやつ(以後、100シリーズ)やっていきたいと思います

以前書いた100個書くという内容の初めの初め

 

そもそもアルゴリズムって?

 

データ構造って?

 

ということから入ろうと思います。

 

今回は特に実装することはないので、0番目ということで!

 

 

では、内容に入っていきたいと思います。

 

 

 

 

今回の参考にしたのは、

 

Cによるアルゴリズムとデータ構造

Cによるアルゴリズムとデータ構造

 

 (前使ってたやつ,)

 

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

 

(図書館にあったやつ) 

 

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

 

 (研究室にあったやつ)

 

この3冊です。

 

この3冊+私の考え方で今回は書かせていただきます。

 

 

まず、『アルゴリズム』について、

 

情報系に進んだ人なら、まずこの言葉に出会うことだろうと思います。

アルゴリズムってなに?」

その疑問から、始めていきます。

 

広辞苑では、

① アラビア表記

② 問題を解決する定型的な手法・技法。コンピュータなどで、演算手続きを指示する規則。算法

 

と書いてありました。

 

アルゴリズム図鑑には、

「計算や作業を遂行するための手順のこと。」

 

Cによるアルゴリズムとデータ構造(以下、Cによる と略します)では、

「与えられた問題を解くための、機械的操作からなる有限の手続き」

 

アルゴリズムイントロダクション(以下、イントロダクション と略します)では、

「ある値または値の集合を入力(input)として取り、ある値または値の集合を出力(output)として生成する、明確に定義された計算手続きである。」

 

と書かれています。

また、定義として、Turing machine(チューリングマシン)で計算可能*1であることをアルゴリズムの定義と書いてある場合もありますが、上にあげたアルゴリズムの定義と同等の意味をなしています。

 

 

「C」によると「イントロダクション」の定義が、情報系の人なら知っておくべき考え方ですかね。

 

アルゴリズム図鑑の定義は、初めての人に簡単に雰囲気を教える感じならいいと思います。

 プログラムを組んだことのない人は少しわかりにくい言葉かもしれませんが、

実際に組んでいくと定義の意味がしっくり理解できると思います。

以上、アルゴリズムという言葉の定義についてでした。

 

長くなってしまったので、データ構造は次書きます。

 

*1:計算可能とは、Turing machineを有限ステップ働かせて計算できること