数学、コンピューターサイエンス、およびその他の関連する教義では、アルゴリズムは、計算の実行、特定の情報の処理、問題の解決策の提供、およびさまざまなアクティビティの実行を可能にする、確立された明確な教訓のセットとして定義されます。 。初期状態とエントリから開始すると、必要な手順に従って、最終状態に到達し、結果が得られます。アルゴリズムはアルゴリズムの調査の対象であり、多くの人はそれを信じていないかもしれませんが、日常生活のあらゆる側面で使用することもできます。
アルゴリズムとは
目次
コンピューティングでは、通常、一連の順次命令として定義され、特定の決定またはニーズに答えるためにいくつかのプロセスが実行されます。同様に、アルゴリズムは論理や数学で頻繁に使用されるだけでなく、ユーザーマニュアル、説明用パンフレットなどの開発の基礎にもなります。数学で最も著名なものの1つは、正の2つの整数の最大の共通除数に到達する幾何学者Euclidと、線形方程式のシステムを決定するためのよく知られた「ガウス法」に起因するものです。
コンピュータサイエンスに関連して、この計算は、コンピュータを使用して問題を特定するために従うべき一連のガイドラインとして知られています。
したがって、アルゴリズムは、アルゴリズムの分析と設計に焦点を当てた分野として理解されています。最初のことを考慮して、アルゴリズム的に解決できる問題を理解するために、時間と空間に関するその正確性や有効性などの特性を調べようとします。2つ目は、すでに確立されているパラダイムを研究し、新しい例を提案します。
アルゴリズムはコンピューティングの進歩の中心に位置し、そのさまざまな領域で重要です。このように、FacebookやGoogleのように成功したサービスは、アルゴリズムや特殊なデータ構造のコラボレーションなしに、それらが持つ情報の大きさを処理することは不可能です。しかし、日常生活のアルゴリズムも使用されており、その一例は、ストーブの点火です。これは、人が台所に行った瞬間に始まり、それを観察し、それが点火し始めたときに終わります。 。
アルゴリズムの特徴
アルゴリズムは、問題の解決につながるさまざまなステップの有限で順序付けられたセットとして知られているという事実にもかかわらず、これらの問題の性質は、それらが見つかったコンテキストによって異なると言われています。このように、問題があります。とりわけ、化学的、数学的、哲学的。このように、その性質は多様であり、コンピュータによる実行は必要ないと言えます。これまでに説明したすべてを超えて、アルゴリズムには、今日のアルゴリズムを決定するための基本的な特性があり、以下で説明します。
- アルゴリズムに含まれるガイドラインは、あらゆるタイプの混乱の余地を残さないように固有である必要があります。これは、対応する指示に適切に従う必要があることを意味します。逆に、登録するフローのグラフィック表現はソリューションを容易にしません。正しい。
- 同じ結果を得るために、可能な限りそれをたどり、逆のことが起こった場合、アルゴリズムは信頼できず、決定を下す際のガイドとして機能しないため、完全に定義されている必要があります。
- それらは有限であるという特殊性で知られており、通常はある時点で終了し、後で各ステップの終了時に結果を生成します。アルゴリズムが無期限に拡張され、解決できない初期ポイントに戻る場合は、パラドックスまたはよく知られている繰り返しの「ループ」が存在します。
- 最後に、アルゴリズムの読みやすさが重要な要素であると言われています。なぜなら、その議論が理解できない場合、対応する指示に従うことができず、さらに、それぞれに見られるテキストの直接的で明確で簡潔な表現が必要になるからです。
アルゴリズムの一部
すべてのアルゴリズム操作には、システムの基本構造に従う3つの異なる部分があり、これらは次のとおりです。
- 入力:ヘッダーまたは開始点とも呼ばれます。これは、アルゴリズムの起源を表す最初の命令であり、その読み取りを動機付けるものです。
- プロセス:宣言とも呼ばれます。これはアルゴリズムによって提供される正確な詳細であり、基本的には命令を作成するためのキーのトランクです。
- 出力:この最後のフェーズでは、コマンドや解像度など、アルゴリズムによって決定された特定の命令があります。
アルゴリズムの例
数学計算の一般的な例には、加算の場合は2 + 3 = 5、減算の場合は15-9 = 6が含まれます。単純なアルゴリズムを視覚化するもう1つの方法は、キッチンレシピにあります。これは、特定の整然としたプロセスを説明しているためです。たとえば、「最初に半分のポットの水を入れて加熱し、次に塩を少し加えて、最後にコショウは種と静脈を抽出するために分割されます。」このモデルでは、開始、プロセス、および終了が提示されます。これらは基本的にアルゴリズムを定義するものです。
アルゴリズムの種類
世界中に存在するさまざまなタイプのアルゴリズムの中で、記号のシステムに従って分類されるものと、その機能によって分類されるものに重点が置かれています。アルゴリズムは基本的に特定の問題を解決するための最もよく知られたソリューションであり、その戦略と機能に応じて、動的、逆、ブルートフォース、日和見、マーキングが際立つさまざまなタイプがあります。 、ランダムなど。上記のアルゴリズムに加えて、あらゆる分野の問題を解決するのに適した数千のアルゴリズムがあります。
あなたのサインシステムによると
定性的および定量的はこのカテゴリにあります。
- 定性的アルゴリズムは、口頭の要素を持つことを特徴とします。これらの例は、料理のレシピや手作業を実行するための手順など、口頭で与えられる指示または認識された「ステップバイステップ」です。
- 定量的アルゴリズムは、特定の数値要素が存在し、数学を使用して計算を実行するため、たとえば、平方根が見つかったときや方程式が解かれたときに、定性的なアルゴリズムとは完全に反対です。
この分類には、計算アルゴリズムと非計算アルゴリズムもあります。計算はコンピューターを使って行われ、機械の実行が必要になるほど複雑であることに加えて、最適化できる定量的アルゴリズムです。非計算的なものは、マシンまたはコンピューターによって実行される義務はありません。この明確な例は、テレビのプログラミングです。
その機能によると
この分類には以下が含まれます。
1.マーキングアルゴリズム
これは、ユーザーの行動などの要因に焦点を当てて、自動化を使用して入念に価格を設定することを特徴とし、ユーザーの利益を増やすために、コンポーネントの評価を下げるための価格を自動的に決定する機能としても知られています。売り手。1990年代初頭以来、航空業界の一般的な慣行において非常に重要な役割を果たしてきました。
マーキングアルゴリズムは、旅行代理店またはそれらのオンライン施設を参照して、競争の激しい業界で最も一般的な慣行の1つであることによって区別されます。多くの場合、特定のテストの継続性によって最適化または自己学習されるため、この種のアルゴリズムは非常に複雑または比較的単純になる可能性があります。さらに、個人は安定性と公平性の両方を重視する傾向があるため、タグ付けアルゴリズムは顧客に人気がなくなる可能性もあります。
2.確率的アルゴリズム
それらは、結果が得られる方法が確率に依存するものであり、これらは一般にランダムアルゴリズムとして知られています。
一部のアプリケーションでは、このタイプの操作の処理は一般的です。たとえば、既存または考案されたシステムの動作が時間の経過とともにシミュレートされ、その結果、偶然の解決策が得られます。他の状況では、解決しなければならない問題は通常決定論的ですが、確率アルゴリズムを適用することによってそれを解決するために、それを偶然の問題に変換する可能性があります。ランダムなものの良い点は、それらのアプリケーションが非常に高度な数学的研究を必要としないことです。
さらに、このグループには、数値として知られているモンテカルロとラスベガスの3つの主要なタイプがあります。
- 数値アルゴリズムは問題のおおよその結果を提供することができ、一般的にエンジニアリングに適用されます。
- モンテカルロアルゴリズムは、正しい解または間違った解を与える可能性があり、最後に一定の誤差があります。
- ラスベガスのアルゴリズムは、間違った答えを決して残さないことで区別されます。実際、正しい解決策を見つけたり、失敗の可能性を通知したりします。
動的プログラミングとは、アルゴリズムが結果を計算する方法を指します。問題のある特定の要素の解決策は、他の小さな問題の結果に依存する場合があります。したがって、これらを解決するには、同じ値を再計算して最小のサブ問題を解決する必要がありますが、これにより無駄なサイクルが発生する可能性があります。これを修正するには、動的プログラミングを使用できます。この場合、各サブ問題の解決策が記憶され、複数回繰り返すのではなく、同じ値を使用します。
3.ヒューリスティックアルゴリズム
それらは解決策を見つけることによって区別されますが、それでも最良の答えが見つかることを保証するものではありません。このため、それらはおおよそのアルゴリズムと見なすことができます。これらは、通常のルートで解決策を見つけることが不可能であると考えられる場合に使用できます。ヒューリスティックは、以下で説明する使用法を提供します。計画それらは電気的又はデジタルシステムを描写するために使用される設計では、それらは、時間の短い期間でスケジュール活動に使用され、シミュレーションでは、それらは特定の手順を確認するために使用されます。
4.バックトラッキングアルゴリズム
それらは、パズル、迷路、または同様のピースなどの問題を解決する再帰的戦略として知られており、可能な解決策を見つけるために詳細な検索が実行されます。その名前は、結果を見つけるために行われた問い合わせで、代替案をテストできるようにするために常に前のポイントに戻るという事実に由来しています。これらは通常、経済、市場、価格設定、特定の業務、さらには社会自体への影響を観察するために取り消されます。
5.貪欲なアルゴリズム
これはデストロイヤーまたはスイートトゥースとして知られており、最適化の問題に適用できます。このアルゴリズムの各ステップでは、論理的かつ最適な選択が行われ、最終的に最良のグローバルソリューションが得られます。ただし、一度判断が下されると、将来それを修正または変更することは絶対にできないことを考慮に入れる必要があります。この操作の名前は、各ステップで、後で何が起こるかを気にせずに「飲み込む」ことができる最良の部分が選択されるためです。
アルゴリズムのプロパティ
さまざまな著者が、数学モデルを使用しながら、正式な方法でアルゴリズムを定義しようとしました。ただし、これらの標本は、膨大な量のデータ分布を操作しながら、数字、記号、およびいくつかのグラフを含む特殊なタイプの情報と密接に関連しています。一般に、各定義の共通のシェアは、次の3つのプロパティに要約されます。
問題文
コンピュータによる問題解決は、問題を記述し、それを解決できるプログラムを開発することを可能にするプロセスからなることができる。このプロセスでは、問題の分析、アルゴリズムの設計とプログラムへの変換、およびパフォーマンスと検証が必要です。最初の2つのステップはこのプロセスで最も複雑ですが、問題を調べてそれを解決できるアルゴリズムを取得したら、タスクは主に目的のプログラミング言語への変換に基づいています。
一般的なソリューションの分析
問題が定義されたら、次のことを分析します。
- 彼らが私たちに提供するチケットの情報。
- 望ましい結果。
- 作業、ステートメント、またはその他の必要な要素のドメイン。
アルゴリズムの分析は、特定の計算問題を解決するために任意のアルゴリズムが必要とするリソースの理論計算を提供するため、より広範な計算の複雑さの理論の最も重要な部分として知られています。理論的な調査を行う場合、十分な大きさの入力サイズを取得するために、その複雑さを漸近的な意味で計算するのが一般的です。シータおよびオメガ表記とともに漸近的上限がこの目的のために使用され、非漸近的尺度を計算できることに注意する必要があります。
効率の正確な測定は、実際にアルゴリズムを使用する人にとって非常に役立ちます。これは、アルゴリズムの精度が高く、実行にかかる時間を決定できるためです。ビデオゲームクリエーターなどの一部の個人にとって、隠された定数は成功と失敗の大きな違いを意味する可能性があります。時間の評価は、特定のステップがどのように定義されているかに依存する可能性があり、分析が意味をなすためには、時間が定数によって著しく制限されることが保証されなければなりません。
アルゴリズムの精緻化
オペレーションの開発を実行するには、問題自体の解決に準拠するために一連の手順を実行することが重要です。まず、難易度の事前分析を実行する必要があります。これは、アルゴリズムが実行されるずっと前に、問題の実際の動作を実証する調査を通じて行われます。したがって、要件の定義が評価されます。このステップでは、2つの数値の合計、数値のリストの順序など、解決する問題を明確に把握する必要があります。
後で、モジュールのそれぞれの識別が実行されます。これは、アルゴリズムの正しい実装が、上記で識別された要件に対する可能なソリューションを提供するためにモジュールに依存しているためです。
最後に、計算はコンピューターが理解できるプログラミング言語で実装されているため、モデル化された命令を理解して実行し、期待される結果を得ることができます。この最後の手順では、次々に順序付けられ、確立された要件を解決するために管理される一連の命令で構成されるプログラムについて話すことができます。
シーケンシャルタイムでは、アルゴリズムは離散化された時間で機能を実行し、有効と見なされる各入力の計算状態のシーケンスを定義しようとすることに注意することが重要です。抽象状態では、これらの操作は独立した要素であり、それらの中で原始秩序構造は同形性の下で不変になる可能性があると考えられています。有界探索では、ある状態から別の状態への遷移は、永続的で有限の説明によって完全に確立されます。ある状態と次の状態の間では、現在の状態の限られた数の用語のみが考慮されます。
また、アルゴリズムは通常、プログラミング言語「疑似コード」、通常の言語、さらにはよく知られているフロー図によって表現されることも見逃してはなりません。同様に、アルゴリズムはデータをビットのシーケンスとして表現するため、コンピューティングにおいて基本的な役割を果たすことに言及することが重要です。別の見方をすれば、プログラムは、特定の活動を適切に遂行するために従わなければならない特定のステップをコンピューターに表現するアルゴリズムとして定義されます。一方、疑似コードの記述方法を学ぶとプログラミングが容易になるため、後で説明します。
プログラミング言語は、明確に定義された文法規則があるため、正式な言語または人工的な言語として知られています。プログラマーに、目的を持ってアルゴリズムの形で一連の命令または一連の規制をテキスト化する機能を提供する機能があります。コンピュータの物理的および論理的動作に関する制御を維持するために、このようにして、さまざまなタイプの情報に到達できます。プログラミング言語によって書かれた戒律のこのセットは、次のように指定されているプログラム。
プログラミング言語は通常、言語の現在の構造とその意味を定義する一連の記号と文法的および意味的な規則で構成されています。別の観点から見ると、コンピューター言語にはプログラミング言語も含まれています。これの明確な例はHTMLです。これは、さまざまなドキュメントのコンテンツを実行するための特定の指示を実行するものです。プログラミング言語を使用すると、さまざまな状況で特定のソフトウェアによって操作する必要のあるデータを正確に指定できます。
一方、疑似コードは、実際のプログラミング言語の基本的な規則を使用するアルゴリズム記述言語ですが、他のタイプからの独立性を維持しながら、機械を介して読み取るのではなく、人間が読み取るために設計されていますプログラミング言語。疑似コードは、システムコード、変数宣言、さらには一部のサブルーチンなど、アルゴリズムの人間の理解に不可欠とは見なされない詳細を無視します。このように、プログラミング言語は、自然言語での正確な説明またはコンパクトな数学的表記でそれ自体を補完しようとします。