ソート・探索・計算量 ― プログラムとアルゴリズムの基礎を身につける【データサイエンスを支える情報工学入門②】
前回は、コンピュータの基本的な仕組みとデータベースについて紹介しました。第2回となる今回は、データを扱うための基礎技術として、「アルゴリズム」と「プログラミング」の基本を見ていきます。地味に思えるかもしれませんが、この2つは「アルゴリズムとデータ構造をどうするか」がプログラミングの本質だと言われるくらい、コンピュータサイエンスの土台になる考え方です。アルゴリズムとは何かアルゴリズムとは、問題一般に対して、指示通りに実行すれば有限回数で解が得られる(解がない場合は、解がないことが示される)手順のことです。ちなみにこの「アルゴリズム」という言葉自体、9世紀のペルシャの数学者アル・フワーリズミー(al-Khwarizmi)という人名が語源になっているそうです。もっとも古いアルゴリズムの一つとされるのが、紀元前300年ごろに登場したとされる「ユークリッドの互除法」です。これは、2つの整数の最大公約数(GCD)を求めるアルゴリズムで、手順は次の通りです。入力を数 m, n とするもし n = 0 ならば、解は m として停止m を n で割った余りを a とすると、m を n に、n を a に更新し、1に戻るこの手順のポイントは、「任意の数に対して動作する」「必ず停止する」という2点です。実際に、48と18の最大公約数を求めてみましょう。m=48, n=18 → 48÷18の余りは12 → m=18, n=12に更新m=18, n=12 → 18÷12の余りは6 → m=12, n=6に更新m=12, n=6 → 12÷6の余りは0 → m=6, n=0に更新n=0になったので停止。答
0