ジェネラティヴ・アート ガイロン

アルゴリズムとは何か?

投稿日:2019年5月23日 更新日:

 もともとはコンピュータ用語だったものが、最近ではその他の分野でも使われることが多い。例えば”インプット”。「この件に関しては部長にもインプットしておいてください」などと言う。(あまり言わないか。。。)あるいは「ぬるぽ」。これは2ちゃんねる用語なのかもしれないが、元々は”Null Pointer Exception(ヌル・ポインター・エクセプション)”というJavaというプログラミング言語でプログラムに不具合があるときに起こるもので、俗に「ヌルポ」と言っていたものがそのうち2ちゃんねるで普通に使われるようになった。(そんなに普通には使わないか。。。)
 そして最近よく耳にするようになったコンピューター用語に「アルゴリズム」がある。これは特に株式取引などで使われるようだ。我々プログラマーは株式取引のことをあまり知らなくても、「アルゴリズム取引」と聞くとだいたいどういうことを意味するのかが想像がつく。しかしそれ以外の分野の人が聞くと最初は何のことなのかまったくわからないだろうな、と思う。
さて、「アルゴリズム」という用語について。これはコンピューター分野以外の人に説明するのはかなり難しい言葉(概念)だ。それをむりやり言葉で説明するならば、「プログラムの考え方。論理的な手順。」ということになるのだろうが、うーん、もし僕が逆の立場だったとしたらちんぷんかんぷんだなあ。だいいち、”プログラム”が何なのかもまだ分かっていないのに。(という方は、「プログラムとは何か?」を参照)そこで、アルゴリズムとは何か、ということを説明するために、ある問題を出してみる。

【問題】
1から100までの間の適当な数字が書かれたカードが10枚ある。
この10枚のカードに書かれている数字の中で最大のものはいくつか?

というのをどう解けばいいか?というのがアルゴリズムだ。この場合の解き方には、ちゃんと考えれば効率の良い方法がいくつも浮かぶはずだが、とりあえずわかりやすくて確実な方法として「総当り方」というものについて考えてみよう。つまり、一枚ずつ順番に見ていく、というとても効率の悪い方法だ。この方法の手順を書くと、、、
1. 最大の数が書かれたカードを入れる箱をひとつ用意する。2. 一枚目のカードを引き、それを最大数の箱に入れる。3. 二枚目のカードを引き、もし箱の中のカードよりも大きな数だったら、今引いたカードと箱の中のカードを差し替える。4. もし引いたカードの方が小さな数だったら何もせずに次のカードを引く。5. 三枚目のカードを引き、もし箱の中のカードよりも大きな数だったら、今引いたカードと箱の中のカードを差し替える。6. もし引いたカードの方が小さな数だったら何もせずに次のカードを引く。7. 四枚目のカードを引き、もし箱の中のカードよりも大きな数だったら、今引いたカードと箱の中のカードを差し替える。8. もし引いたカードの方が小さな数だったら何もせずに次のカードを引く。。。。以下繰り返し。
これを十枚目まで繰り返すと、最後に箱の中にあるカードが一番大きな数字のカードである。
これがアルゴリズムだ。そしてこのアルゴリズム通りにコンピューターが処理をするようにその手続きを書いたものを「プログラム」という。本当はもっと高速に、効率よく最大の数を見つける方法はあって、そういうものを「より良いアルゴリズム」と言ったりする。


【今回のまとめ】

  • アルゴリズムとは、プログラムの動作を論理的に定義する手続きのことである。
  • そのアルゴリズム通りにコンピュータが処理を行うようにその手続きを書いたものが「プログラム」だ。

-ジェネラティヴ・アート ガイロン

執筆者:

関連記事

A Day In Asia 20200324

CG(コンピューターグラフィックス)の基礎 〜 アニメーション編

 小学生のころ、退屈な授業中に教科書の端にパラパラ漫画を描いた覚えはないだろうか?少しずつ変化する絵を描く必要があるため、それほどリアルな絵を描くわけにもいかず、だいたいはハリガネ人間が動くものだった …

A Day In Asia 20190209

CG(コンピューターグラフィックス)の基礎 〜 2D編

あなたが普段なにげなく使っているPCでは、ウィンドウを開いたり閉じたり、お絵描きソフトで何かを描いてみたり、とにかく画面上には何らかの「描画」がされている。 これは広い意味での「CG(コンピューターグ …

A Day In Asia 20190126

「ジェネラティヴ・アート」とは — あなたに新しい筆(あるいは風鈴)を与えよう

 だいたい何らかの新しいものごとを始めてみようと思って、初心者向けの本を開くと、「〇〇とは」という定義から入ることが多いが、たいていは読みとばすか、お堅い定義を読んでいるうちに眠くなってくるか、せっか …

A Day In Asia 20200319

CG(コンピューターグラフィックス)の基礎 〜 3D編

コンピューターの画面上に描画する際には、X-Y軸上の点の座標を指定することで、点、線、四角形、円などが描かれる、ということを前回説明した。 直線、四角形は二つの点の位置で一意に決定する。ひとつの点につ …

A Day In Asia 20190129

プログラムとは何か?

 前回の記事(「ジェネラティヴ・アート」とは — あなたに新しい筆(あるいは風鈴)を与えよう)で私は、「自分の手を動かすことなく」、「プログラミングだけで絵を描いたり、たまには動画を創った …

teshnakamura

ジェネラティヴ・アーティスト。プログラミング歴40年以上。(ただし、プログラム業界で「プログラミング歴」は何の意味もない。)


以下でteshnakamuraの作品が見れます。
  • Instagram
  • @teshnakamura
  • Amazon Kindle