学校でアルゴリズムを習っているのですが、
アルゴリズムとは何なのでしょうか?
教科書として、
「新・明解 C言語によるアルゴリズムとデータ構造」という本を買ったのですが、
内容的には以前C言語を勉強するために読んだC言語の勉強本とあまり変わらないような気がします。
スタックやキュー、ソートに検索など確かにC言語を教わる本には書いてないことはありましたが、
要するにC言語の別の面ということだと思いました。
意味的にはアルゴリズムは数学でいう計算方法、
つまり答えを求めるための色々な方法というように考えたのですが、
実際アルゴリズムとはどのようなものと理解すればいいのでしょうか?
No.4ベストアンサー
- 回答日時:
あなたがプログラマとして社会に出た場合に色々な問題をプログラミングを通じて解決する場合が出てくるでしょう。
例えばQRコードが写っているカラーのビットマップ画像をたくさん渡されて、それぞれの写真の中のQRコードの位置を特定しなさいと言われた場合にあなたはどのように解決しますか。QRコードの外側の白枠を探すという方法で解決する人がいるかも知れません。またはQRコードの3隅の三重の四角い枠を検出するという人もいるでしょう。QRコードの多くが白黒で印刷されているということに注目する人もいるでしょう。このような場合それぞれの解決方法がアルゴリズムになります(三者三様のアルゴリズム)。
そしてそれらの多くは学校で教わったことだけでは解決できません。先輩が手取り足とり教えてくれるものではありません。多くは自分の頭でアルゴリズムを考える必要が出てきます。
ソートだとか二分検索だとかの本に記載されている手順だけがアルゴリズムではありません。それらはあなたが社会にでて問題を解決する際のベースにはなるでしょうけど、それだけで万能な訳ではありません。むしろあなたがプログラマとして社会に出てプログラマとして解決すべき問題の解決方法がすべてアルゴリズムのようなものです。
そしてその解決方法はC言語だから可能だとかFortranでは無理だというような言語に特有なものではなく色々な言語で共通に利用可能な解決手段ですから、C言語の別の面という訳ではありません。
No.6
- 回答日時:
5W1HのHow(どうやって)です。
ソートがWhatなら、その手順がアルゴリズムです。プログラム言語とアルゴリズムは別の概念です。いつかあなたがプログラマになったとして、技術的難題にぶつかり、頭を悩ませ、プログラムで実現できる斬新かつ高性能の解法を思いついたとしましょう。それは特許になるアルゴリズムかもしれません(お金はかかりますが)。それにはプログラムの書き方ではなく、新しいアルゴリズムを考え出すための十分な知識と応用力が必要です。
特許の話は別にしても、アルゴリズムとデータ構造はプログラミングする上で重要なので、学んでおけばきっと役に立つでしょう。
No.5
- 回答日時:
問題を解くための解決方法、効率的手順をまとめたものと言った感じでしょうか。
賢い人が考えたアルゴリズムを使えば効率的に処理できるものが世の中にはたくさんあるので、ありがたく使わせたいただきましょう。
「新・明解 C言語によるアルゴリズムとデータ構造」の載っているのは基本的なアルゴリズムで非常に応用が効く基本的なものばかりです。アルゴリズムはC言語という言語に限定されるものではありませんが、プログラムの組み方のコツはありますからC言語においての実装の参考にもなる本です。
No.3
- 回答日時:
「ある目的を達成するための手段や手順」でしょうか。
計算方法に近いと思います。
計算は数字や演算子などを組み合わせて記述します。
アルゴリズムは変数や制御文を組み合わせて記述します。
ただ、人によって最短の計算方法で答えを出す人もいれば、遠回りして答えを出す人もいます。
これはアルゴリズムも一緒です。
論理的に正しい導出が出来てればどれも正解です。
そうすれば自ずと計算時間(プログラミング時間)も変わります。
その違いは、知識や技術(とセンス)にあるのも同じです。
ただし、たまたま正解だったというのは認められません。
No.2
- 回答日時:
「処理手順」でもいいかも知れません。
バブルソートのやり方を手順として書き出せれば、
C言語以外のプログラミング言語でも同じような手順になるようにプログラミングすることでバブルソートが実装できるでしょう。
# まぁ、そのプログラミング環境にライブラリで用意されている。なんてこともあったりしますが。
そんなわけで…
>要するにC言語の別の面ということだと思いました。
とは違いますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
- その他(プログラミング・Web制作) プログラミングの能力とアルゴリズムの能力は別物だと言われたのですが、これは本当ですか? プログラミン 1 2023/03/09 02:37
- その他(プログラミング・Web制作) プログラミング能力とアルゴリズム能力って違うのでしょうか? プログラミングの能力の一部にアルゴリズム 10 2023/03/31 14:34
- AI・ロボット ChatGPTの文章作成アルゴリズムは、噂によると、ある単語や接続詞などがきたらその次に繋がる確率が 3 2023/06/05 21:19
- 教えて!goo 【回答が書きにくいのはなぜ】投稿内容に不適切な表現など・(中略)・投稿内容の修正をお願いいたします 9 2023/05/09 08:41
- 数学 日本語 学歴フィルター 1 2022/11/07 19:36
- 計算機科学 アルゴリズムについて 1 2023/01/01 19:43
- 教えて!goo ネットで、なぜ全く認知されてない英語を書き込むヤツが居るんですか? 例) 阪神は結局これがデフォルト 4 2022/12/27 18:08
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正しい五十音順について
-
アルゴリズムとプロトコールの違い
-
Dijkstraて
-
C言語初心者の質問失礼いたしま...
-
画像から文字を認識してテキス...
-
[ EXCEL VBA ] 図形を読み込む...
-
期間重複チェックがわかりません
-
プログラミング能力とアルゴリ...
-
「FFTW」についての質問です。
-
C# 再帰よるスタックオーバー...
-
連立方程式を解く
-
タテヨコで数字の被らない二次...
-
アルゴリズムが全くわからない
-
アルゴリズム オーダー記法 定...
-
対話型遺伝的アルゴリズムにつ...
-
BCDについて
-
ランダム関数を作りたい。
-
Vba 実数および実数タイプの変...
-
0除算して、落ちるプログラムと...
-
VBAで仕様書は書きますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
Dijkstraて
-
Stuck
-
[ EXCEL VBA ] 図形を読み込む...
-
BCDについて
-
アルゴリズムとプロトコールの違い
-
期間重複チェックがわかりません
-
グループを均等に分けるには?...
-
三次元形状曲面の導出法
-
あいまい検索(文字列一致率)
-
Visual studio2019 C#で生まれ...
-
gooという検索エンジンの後にGo...
-
フリーセルの難易度について
-
CRC-CCITT16の算出法
-
経路探索について
-
C♯で電卓を作成しています。演...
-
理系の高校生です。大学で情報...
-
OpenCVのライセンスについて
-
偏りのある乱数のアルゴリズム
-
詰め将棋をとくのは、アルゴリ...
おすすめ情報