DAA-はじめに
アルゴリズムは、計算、データ処理、および自動推論タスクを実行する問題を解決するための一連の操作ステップです。アルゴリズムは、有限の時間と空間で表現できる効率的な方法です。
アルゴリズムは、特定の問題の解決策を非常に単純で効率的な方法で表すための最良の方法です。特定の問題に対するアルゴリズムがある場合は、それを任意のプログラミング言語で実装できます。つまり、algorithm is independent from any programming languages。
アルゴリズム設計
アルゴリズム設計の重要な側面には、最小限の時間とスペースを使用して効率的な方法で問題を解決するための効率的なアルゴリズムの作成が含まれます。
問題を解決するために、さまざまなアプローチに従うことができます。それらのいくつかは時間の消費に関して効率的である可能性がありますが、他のアプローチはメモリ効率的である可能性があります。ただし、時間消費とメモリ使用量の両方を同時に最適化することはできないことに注意する必要があります。より短い時間でアルゴリズムを実行する必要がある場合は、より多くのメモリに投資する必要があり、より少ないメモリでアルゴリズムを実行する必要がある場合は、より多くの時間を必要とします。
問題の開発手順
次の手順は、計算上の問題の解決に関係しています。
- 問題の定義
- モデルの開発
- アルゴリズムの仕様
- アルゴリズムの設計
- アルゴリズムの正しさのチェック
- アルゴリズムの分析
- アルゴリズムの実装
- プログラムテスト
- Documentation
アルゴリズムの特徴
アルゴリズムの主な特徴は次のとおりです-
アルゴリズムには一意の名前を付ける必要があります
アルゴリズムには、入力と出力のセットを明示的に定義する必要があります
アルゴリズムは明確な操作で秩序立っています
アルゴリズムは有限の時間で停止します。アルゴリズムは無限に実行されるべきではありません。つまり、アルゴリズムはある時点で終了する必要があります
擬似コード
擬似コードは、平文に関連するあいまいさなしに、また特定のプログラミング言語の構文を知る必要なしに、アルゴリズムの高レベルの説明を提供します。
実行時間は、擬似コードを使用してアルゴリズムを基本的な操作のセットとして表すことにより、より一般的な方法で見積もることができます。
アルゴリズムと擬似コードの違い
アルゴリズムは、特定のタスクを実行するためにチューリング完全なコンピューターマシンによって実行できるプロセスを説明する、いくつかの特定の特性を備えた正式な定義です。一般に、「アルゴリズム」という言葉は、コンピュータサイエンスの高レベルのタスクを表すために使用できます。
一方、擬似コードは、アルゴリズムの非公式で(多くの場合初歩的な)人間が読める形式の記述であり、アルゴリズムの詳細が多く残されています。擬似コードの記述にはスタイルの制限はなく、その唯一の目的は、アルゴリズムの高レベルのステップを自然言語で非常に現実的な方法で記述することです。
たとえば、以下は挿入ソートのアルゴリズムです。
Algorithm: Insertion-Sort
Input: A list L of integers of length n
Output: A sorted list L1 containing those integers present in L
Step 1: Keep a sorted list L1 which starts off empty
Step 2: Perform Step 3 for each element in the original list L
Step 3: Insert it into the correct position in the sorted list L1.
Step 4: Return the sorted list
Step 5: Stop
これは、アルゴリズムInsertion-Sortで前述した高レベルの抽象プロセスをより現実的な方法で記述する方法を説明する擬似コードです。
for i <- 1 to length(A)
x <- A[i]
j <- i
while j > 0 and A[j-1] > x
A[j] <- A[j-1]
j <- j - 1
A[j] <- x
このチュートリアルでは、アルゴリズムは疑似コードの形式で提示されます。これは、C、C ++、Java、Python、およびその他のプログラミング言語と多くの点で類似しています。