アルゴリズムとは、アルゴリズムとはどういう意味ですか? Wordを少し理解すると、それは特定の言語やデザインパターンに固有のものではなく、最も基本的な原則の1つであるということです(そのため、この質問で私は愚かに見えると思います)。
私が理解している「オプション」の1つは、何かを実行する方法を意味し、疑似コードのリストとして記述できることです。
もっと複雑なコードを書くときは、何をしなければならないか、何をどのようにして達成する必要があるか(プログラミング言語ではない)を考え、それをコードで記述します。それを行うのに良い方法ですか、それはアルゴリズムと何か関係がありますか?
(私はここでStackoverflowについて質問したかったのは、特定の問題/言語についてではなく、Stackoverflowではなく、大多数の人が「理由」を知っている、または少なくともここでの回答がより詳細であると感じているからです。それが違うところ、私がそこに尋ねるべきだったのならすみません)
アルゴリズムは、明確に定義された終了状態で終了する関数を計算する(またはプロシージャを実行する)ための明確に定義された命令の有限シーケンスです。
これは実際にはかなり興味深い質問であり、実際には未解決の研究質問です。
アルゴリズム理論の巨人の1人であるYuri Gurevichは、MicrosoftのコミュニティWebサイトChannel9で一連のビデオ講義を行っています。
ご覧のとおり、実際の質問は2番目の講義のタイトルです。ただし、これら3つすべてを監視することを強くお勧めします。
特に、最初の例には、ここでの他のほとんどの回答で与えられている定義のほとんどすべてを無効にするアルゴリズムの例がいくつか含まれています。
アルゴリズムは優れた調理レシピのようなものです。いくつかの入力、いくつかの明確に定義された中間ステップがあり、最終的な結果が得られます。
プログラミングに適用すると、特定の問題を解決するために必要なステップの明確な説明になります。選択したプログラミング言語で書き込めるものはすべてアルゴリズムと見なすことができますが、通常、この用語は、並べ替えや検索などの一般的な論理的または数学的なタスクにのみ使用されます。
アルゴリズムは、問題の解決に使用される一連のルールまたはプロセス(計算)です。基本的に、問題があり、解決策が必要です。この解決策のプロセスはアルゴリズムです。アルゴリズムには、ソリューションに到達するためのルール/プロセスの有限セットがあります。
Edsger W. Dijkstra のようになったら、アルゴリズムを紙に書いて、アルゴリズムを紙に書き出すか、洗練していきます。アルゴリズムに満足しています。それ以外の場合(特にドキュメントを作成する場合)、 flowchart を使用して、アルゴリズム/プロセスのフローを図式的に表します。これにより、他のユーザーがフローチャートを批評し、必要に応じて(必要なプログラミング言語を気にすることなく)改善できます。
それがあなたの質問に答えるかどうかはわかりません。
アルゴリズムこれは、非常に単純で効率的な方法で問題を解決するために使用される一連のステップ(これらのステップは、計算、データ処理、および推論タスクである場合があります)の組み合わせです。
有限の空間と時間内で表現できるように最も効率的に設計されています。任意のプログラミング言語で実装できます。
アルゴリズムのプロパティ:アルゴリズムの主なプロパティは次のとおりです。
アルゴリズムには一意の名前が必要です。入力と出力のセットが明示的に定義されている必要があります。アルゴリズムは、明確な操作を伴う連続した順序である必要があります。エンドポイントが必要です。つまり、有限の時間で停止します。 アルゴリズムの設計と分析については、ここをクリックしてください
アルゴリズム:1)明確であり、2)最初から操作を実行して有限数の操作の後に結果を生成するように効果的に計算できる、秩序だった操作のセット。
IMO誰もよく知りません:)私は、数学計算関数、入力を受け取り出力を生成する関数any、および入力を受け取りanythingにのみ適用される用語を見てきましたなんらかの操作を実行します。
次のいずれか/すべてをアルゴリズムと見なしますか?
Finder
関数アルゴリズムは、有限時間で結果を生成する明確に定義された一連のステップです。
明確に定義されたステップ:これは、正確に定義された、実行または計算できることです。ステップを読むだけで、何をしなければならないか、どのように実行するかがわかります。具体的には、あなたが知っているプログラミング言語でそれを書くことができ、プログラムの断片がステップと正確に一致することを確認してください。
シーケンス:ステップは指定された順序で実行されます。ステップは、データ(ループ)によっては複数回実行される場合と、データ(ifステートメント)によってまったく実行されない場合があります。並列アルゴリズムはステップに部分的な順序のみを課すので、ここでは過度に単純化しています。それをシーケンスよりも部分的に順序付けられたセットとして説明する方が正しいでしょうが、私は単語を少し単純にしたかったのです。さらに、部分的に注文されたセットを完全な順序で埋め込むことは簡単に可能です。
結果:終了状態または値。事前に予測可能である必要はありませんが、何らかの条件を満たす明確な目的である必要があります。つまり、オペレーティングシステムはアルゴリズムの多くを使用しますが、アルゴリズムではありません。
有限:アルゴリズムは、少なくとも十分に長く実行できるマシンでは、いつか停止することが保証されています。必ずしも予測可能な時間で停止することが保証されているわけではありません。また、既存のマシンで太陽が膨張して赤くなる前に停止することも保証されていません。これはまた、理想的には永久に実行されるため、オペレーティングシステムはアルゴリズムではないことも意味します。 「手順」という言葉が、いつか止まることが確実な場合にアルゴリズムとなるものを説明するために使用されるのを見てきました。 (未知の時間で停止するアルゴリズムがある可能性があります。たとえば、ゴールドバッハの推測が非構成的な証明で数学的に偽であることが証明されたとすると、2つの素数の合計ではない> 2の偶数があったとします。 。偶数をテストするだけのアルゴリズムは、いつだか誰にもわからないが、最終的には終了する。
アルゴリズムは意図的に抽象的な種類のものであるため、「宇宙の熱死の前にこれを物理的に実行することは物理的に可能ですか?」のような質問は考慮しません。彼らは答えるのが難しすぎるでしょう。コンピュータの操作に関連するものであれば、プログラミング言語で実装するのは簡単です。
アルゴリズムとは、本質的に抽象的なタスクの計算または実行のための「スマート」なアイデア、メソッド、手法ですが、現実世界のコンピューターで実行されると、aspireできるだけ少ないリソースを使用します。これは、コンピュータの世界では、時間とメモリです。
一般的な定義をしなければならないのであれば、アルゴリズムは、明白な/総当たりの解決策よりも複雑で、最終的にはより効率的な計算問題を解決するための式だと思います。
また、アルゴリズムは特定のソースコードではないことに注意してください。それは計算そのものです。特に、これは、どのチューリング完全言語でも、他のどのチューリング完全言語でも実装できるアルゴリズムを実装できることを意味します。
特定の問題を解決するための式を表すのにこの用語を使用します。数式は必ずしも数学で記述する必要はなく、メソッドと1対1の関係にある必要もありません。学校のアルゴリズムとデータ構造は密接に関連しており、数式として記述したり、証明を使用して証明したりできます。
アルゴリズムはコンピュータープログラムを抽象化したものであり、有限数のステップでいくつかの明確に定義されたタスクを達成するための一連の命令で構成されますが、ステップ数の制限は非常に大きく、個々のステップは複雑な場合があります(有限)タスク自体。全体的に非アルゴリズムであることがわかっている(正しい)プログラムがありますが、すべてのパターンでアルゴリズムの一部を繰り返すことで機能します。 (より興味深いのは、終了ステータスが不明なプログラムですが、ほとんどのプログラマーは実際にはそのようなことを意図的に扱っていません。私は知らないのです!)