サイトマップ / C言語講座>アルゴリズム研究室(トップ)

青い直線

アルゴリズム研究室(トップ)

青い直線

[研究室][初級(1)][初級(2)][中級(1)][中級(2)][上級][ソート]

このサイトで公開している教材へのリンクを貼って作っただけの研究室です。

アルゴリズム”とは

あまりなじみのある言葉ではありませんが、日本語では”算法”ということもあります。問題を解決するための手順のことです。

プログラムを作るということは、ある問題を解決することです。解決するためには、その問題を機能ごとに分解していき、最終的に最小の機能まで分解します。それぞれの最小の機能を解決するための手順を作って、今度は最小の機能を組み立てていきます。先人により考え出された優れたアルゴリズムを学ぶことにより、よりよいソースプログラムを書くことができるようになるかも知れません。また、論理的思考回路が強化され、新たによりよいアルゴリズムを考え出せるようになるかも知れません。

良いアルゴリズム、悪いアルゴリズム

良いアルゴリズムとは何でしょうか。例えば、計算が速い、コードが簡潔でバグが入り込み難い、メモリ容量が少なくて済む、誤差が小さいなどの特徴を兼ね備えていれば、良いアルゴリズムといえます。しかし、ここで強調しておきたいのは、それらの特徴はあくまでも相対的なものです。

例えば、数あるソート(数字や単語を一定の規則に沿って並び替えること)のアルゴリズムのなかに、有名なバブルソートというものがあります。バブルソートを使うと、並べ替えるデータがある限度を超えて増加すると、急速に実行時間が増加してしまいます。この場合はデータ数増加の影響を受けにくいクイックソートを使います。では、バブルソートは悪いアルゴリズムでしょうか。あらかじめデータの数が少ないことがわかっていれば、バブルソートはクイックソートに比べて簡潔に記述でき、バグの入り込む余地は少ないので、この場合にはクイックソートよりバブルソートの方が良いアルゴリズムといえると、私は思います。要は、ある特定の問題をどう解決するのが最良かという判断だと思います。

アルゴリズムの名前について

例えば、ビンソートビンとは、”セサミストリート”でよく見かけるゴミなどを入れておく大きな容器のことです。或いは、動的計画法とは、問題を分割し、分割された問題の解を蓄えておき、部分問題の再計算を避ける方法で、その動作の仕方から命名されました。

有名なアルゴリズムにつきましては、名前が付いています。そうでないものには、名無しのものもあります。ここでは、名前のないものにつきましては、勝手な命名による混乱を避けるため、名前を付けず、その機能を説明することで、名前の代わりにします。

[研究室][初級(1)][初級(2)][中級(1)][中級(2)][上級][ソート]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

−このサイトの背景色は鳥の子色です。−

青い直線

サイトマップ / C言語講座>アルゴリズム研究室(トップ)