• ベストアンサー

アルゴリズムとは何なのでしょうか?

学校でアルゴリズムを習っているのですが、 アルゴリズムとは何なのでしょうか? 教科書として、 「新・明解 C言語によるアルゴリズムとデータ構造」という本を買ったのですが、 内容的には以前C言語を勉強するために読んだC言語の勉強本とあまり変わらないような気がします。 スタックやキュー、ソートに検索など確かにC言語を教わる本には書いてないことはありましたが、 要するにC言語の別の面ということだと思いました。 意味的にはアルゴリズムは数学でいう計算方法、 つまり答えを求めるための色々な方法というように考えたのですが、 実際アルゴリズムとはどのようなものと理解すればいいのでしょうか?

noname#177863
noname#177863

質問者が選んだベストアンサー

  • ベストアンサー
  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.4

あなたがプログラマとして社会に出た場合に色々な問題をプログラミングを通じて解決する場合が出てくるでしょう。例えばQRコードが写っているカラーのビットマップ画像をたくさん渡されて、それぞれの写真の中のQRコードの位置を特定しなさいと言われた場合にあなたはどのように解決しますか。 QRコードの外側の白枠を探すという方法で解決する人がいるかも知れません。またはQRコードの3隅の三重の四角い枠を検出するという人もいるでしょう。QRコードの多くが白黒で印刷されているということに注目する人もいるでしょう。このような場合それぞれの解決方法がアルゴリズムになります(三者三様のアルゴリズム)。 そしてそれらの多くは学校で教わったことだけでは解決できません。先輩が手取り足とり教えてくれるものではありません。多くは自分の頭でアルゴリズムを考える必要が出てきます。 ソートだとか二分検索だとかの本に記載されている手順だけがアルゴリズムではありません。それらはあなたが社会にでて問題を解決する際のベースにはなるでしょうけど、それだけで万能な訳ではありません。むしろあなたがプログラマとして社会に出てプログラマとして解決すべき問題の解決方法がすべてアルゴリズムのようなものです。 そしてその解決方法はC言語だから可能だとかFortranでは無理だというような言語に特有なものではなく色々な言語で共通に利用可能な解決手段ですから、C言語の別の面という訳ではありません。

noname#177863
質問者

お礼

なるほど、よくりかいすることができました。 他の回答者様もとても分かりやすかったです。 ありがとうございました。

その他の回答 (5)

noname#208507
noname#208507
回答No.6

5W1HのHow(どうやって)です。ソートがWhatなら、その手順がアルゴリズムです。プログラム言語とアルゴリズムは別の概念です。 いつかあなたがプログラマになったとして、技術的難題にぶつかり、頭を悩ませ、プログラムで実現できる斬新かつ高性能の解法を思いついたとしましょう。それは特許になるアルゴリズムかもしれません(お金はかかりますが)。それにはプログラムの書き方ではなく、新しいアルゴリズムを考え出すための十分な知識と応用力が必要です。 特許の話は別にしても、アルゴリズムとデータ構造はプログラミングする上で重要なので、学んでおけばきっと役に立つでしょう。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

問題を解くための解決方法、効率的手順をまとめたものと言った感じでしょうか。 賢い人が考えたアルゴリズムを使えば効率的に処理できるものが世の中にはたくさんあるので、ありがたく使わせたいただきましょう。 「新・明解 C言語によるアルゴリズムとデータ構造」の載っているのは基本的なアルゴリズムで非常に応用が効く基本的なものばかりです。アルゴリズムはC言語という言語に限定されるものではありませんが、プログラムの組み方のコツはありますからC言語においての実装の参考にもなる本です。

  • gao07
  • ベストアンサー率61% (11/18)
回答No.3

「ある目的を達成するための手段や手順」でしょうか。 計算方法に近いと思います。 計算は数字や演算子などを組み合わせて記述します。 アルゴリズムは変数や制御文を組み合わせて記述します。 ただ、人によって最短の計算方法で答えを出す人もいれば、遠回りして答えを出す人もいます。 これはアルゴリズムも一緒です。 論理的に正しい導出が出来てればどれも正解です。 そうすれば自ずと計算時間(プログラミング時間)も変わります。 その違いは、知識や技術(とセンス)にあるのも同じです。 ただし、たまたま正解だったというのは認められません。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

「処理手順」でもいいかも知れません。 バブルソートのやり方を手順として書き出せれば、 C言語以外のプログラミング言語でも同じような手順になるようにプログラミングすることでバブルソートが実装できるでしょう。 # まぁ、そのプログラミング環境にライブラリで用意されている。なんてこともあったりしますが。 そんなわけで… >要するにC言語の別の面ということだと思いました。 とは違いますね。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「計算方法」と思っていいです.

関連するQ&A

  • アルゴリズムについて

    今、c言語のアルゴリズムの勉強をしています。 入門書が3、4冊を読みました。c言語によるアルゴリズム辞典っていう本を見たら、ほんの少ししかならないです。 将来、プログラマになりたいです。アルゴリズムがプログラマにとって非常に重要ですので。そこで今プログラムの仕事をしている方に聞きたいです。アルゴリズムってどの程度勉強したらいいですか?入門書の場合は、精精木構造までですね。

  • ☆★大学院入試のアルゴリズムに関する科目について★☆

     ご覧頂きありがとうございます、私は大学の機械科に在籍している3年生です。  来年の8月に電気通信大学の大学院(IS)を受験する予定なのですが、入学試験科目の中にデータ構造とアルゴリズムという本格的には勉強したことのない科目があります。  そこでこの科目についてお勧めな参考書、勉強法などがありましたら教えて下さい、私はC言語は使えるのでC言語で説明されている参考書でも構いません、よろしくお願いします。 -----------------------------詳しい範囲-------------------------------    [データ構造とアルゴリズム] 計算機のプログラミングで用いられるアルゴリズムとデータ構造についての理解を問う。具体的には、線形リスト,スタック、キュー、探索、整列、グラフアルゴリズム、アルゴリズム解析などから出題する。基本的なプログラミングの素養を必要とする。

  • アルゴリズムが全くわからない

    「Javaによるはじめてのアルゴリズム」や、「Cプログラマのためのアルゴリズムとデータ構造」という本を買ったのですが、 数式や図表が難しくて理解できません。 (中学並の数学の知識しかないので・・) 私のような初心者でもアルゴリズムが理解できるようになるような、 数学やアルゴリズムの、本やウェブサイトなどがあれば教えてください。 方法論とかでも構いません。 よろしくお願いします。

  • アルゴリズム系の問題知りませんか?

    再来週大学院試験を控えている者です。 入試の項目に「プログラミング(アルゴリズム)」と書いてあり、ある程度複雑なアルゴリズムを考えるような問題が出る事が予想されます。 きっと二分探索木やクイックソートのような問題が出るように思います。 アルゴリズムを考えるような問題としていい問題ご存じないでしょうか? アルゴリズムを考えるような問題としてはハノイの塔とかよいように思いますが ちょっと入試の問題としては出ないような気がします。 自分では他に線形リストやスタックなども勉強したんですが、 C,JAVA,Pascal,フォートランなどどの言語で回答してもよい事になっているので言語に限定した問題は出ないように思います。 90分で解く3問あるうちのプログラムは1つですから30分以内に解けるような問題のはずです。 (出題される可能性も考えていただければ幸いです)よい問題をご存知でしたら教えてください。 よろしくお願いします。

  • 動的計画法、ナップサック問題などのアルゴリズム

    を独学で勉強したいのですが、お薦めの教科書はありますでしょうか?C言語やJavaといったプログラミング言語のコーディングの比重が高いものよりはもっと理論に重点をおいた本がよいです。(疑似コードで書かれていてもいいくらいですが、日本の書物でそんなの存在するのでしょうか) いくつか大学の情報系のシラバスを参照したところ、「アルゴリズムとデータ構造 改訂C言語版(電気工学入門シリーズ)」というのを使っているところが2つほどあったので試しにまずはこれを買ってみようと思っていますが、もし他にも理論的な本を知っている人がいたら教えて下さい。

  • データ構造とアルゴリズム

    C言語の勉強をしているんですが最近はアルゴリズムについての勉強をしたくAmazon等で検索しています。 現在手持ちの本ではCのプログラムの解説(書き方)が主でアルゴリズムについての解説がとてもすくないです。 やっぱりCのソースがあったほうがいいのですが、詳しく解説(証明)している本が欲しいです。 お勧めの本がありましたら紹介してください。

  • アルゴリズム いい本

    こんにちは、 プログラムのアルゴリズムについて勉強したいのですが、何かいい本はないでしょうか? プログラム言語に拠らない、基本的な考え方をマスターできればと考えています。 よろしくお願いします。

  • Cプログラミングの関数電卓のアルゴリズムについてですが、

    Cプログラミングの関数電卓のアルゴリズムについてですが、 標準入力からの文字列式を、トークンに区切り、先頭から配列型スタックに格納して、計算を行う処理を考えていて、 a-b-cという処理のアルゴリズムに困っています。 どういった解決策があるのか教えて頂けませんか?? お願いします!! フローチャートを書くほどの事でも無いと思うので、僕が考えていたアルゴリズムを、文で記載しますが、できれば、このアルゴリズムからどうすれば解決できるかを考えて頂けたらとても助かります!! 1. 別のスタックを用意して、元々のをstack1,コピー用をstack2とし、stack1のトップからstack2に格納。(スタックの構造は二次元文字型配列) この場合、cからstack2に格納される。 2. 演算子を見つけると、その前後の数字をその演算子によって処理。 この場合なら、c-bという処理。 3. 計算結果を、cが格納されていた、演算子の前に格納。 4.引き続き、この操作を繰り返す。 これを考えてたんですが、実行すると、(c-b)-aという式になり、違う答えが出てしまいます。加算ならば影響はでません。 きちんと(-c-b)+a の処理をさせるにはどうしたら良いかがわからないです。 お願いします!! ※返事が多少遅れるかもしれませんが、すみません!!

  • 擬似言語とアルゴリズム

    宜しくお願いします。 基本情報処理技術者試験 午後の擬似言語およびアルゴリズムが不得手なんですが、良い勉強方法及び良い教材はないでしょうか。 大滝みや子さん著の擬似言語とアルゴリズム本は持っておりますので、それ以外でご教示お願い致します。

  • プログラマにとって「アルゴリズム」や「データ構造」の知識は必須ですか?

    最近の、いわゆるパッケージソフトウェアや、Webアプリケーションの開発においては、 必要なコンポーネントをインポートして部品を組み立てていくイメージで コードを書いていくというのが主流だと思います。 ほとんどのプログラミング言語には、すでに便利な関数やパッケージが用意されており、「アルゴリズム」や「データ構造」といった知識はあまり必要になりません。 例えば、データをソートしたい場合、クイックソートなどで自分で実装しなくても、すでにソート関数が用意されているので、その関数を使用すれば良いわけです。 そのような環境においても、プログラマにとって「アルゴリズム」や「データ構造」の知識はやはり必須ですか? 時々、 ・「優先順位付き待ち行列」くらいは、スラスラ実装できなければ、プログラマとしては半人前 ・「離散数学」をしっかり理解していないと、プログラマとしては致命的 などという話も聞くのですが、皆さんの意見を聞かせてください。

    • ベストアンサー
    • Java

専門家に質問してみよう