ビデオ: ゲームエンジン 2024
アルゴリズムが必要とする操作が増えるほど複雑になります。複雑さは、各操作に時間がかかるため、時間効率の点でアルゴリズム効率の尺度です。複雑なアルゴリズムは、より多くの時間を必要とするため、同じ問題があると、複雑なアルゴリズムは単純なアルゴリズムよりも一般にあまり好ましくありません。
医学または金融分野などの実行のスピードが異なる場合、または飛行機や宇宙ロケットの自動操縦機で飛行する場合を考えてください。アルゴリズムの複雑さを測定することは困難な作業ですが、適切なソリューションを採用したい場合は必要です。最初の測定手法では、ランダムアクセスマシン(RAM)のような抽象マシンを使用します。
<! - 1 - >RAMは、プログラム実行中にコンピュータが使用する内部メモリであるランダムアクセスメモリの略です。同じ頭字語を使用していますが、ランダムアクセスマシンはまったく異なるものです。
抽象機械は、実際のコンピュータではなく理論上のもので、機能していると想像されるコンピュータです。抽象マシンを使用して、実際にテストすることなく、使用するハードウェアの種類によって制約を受けることなく、コンピュータ上でアルゴリズムがどれほどうまく動作するかを検討します。 RAMコンピュータは基本的な算術演算を実行し、メモリ内の情報と相互作用します。 RAMコンピュータが何かをするたびに、時間ステップ(時間単位)がかかります。 RAMシミュレーションでアルゴリズムを評価する場合は、次の手順を使用して時間ステップをカウントします。 <! - 2 - >
各単純操作(算術演算)を時間ステップとして数えます。- 複雑な演算を簡単な算術演算に分割し、ステップ1で定義した時間ステップを数えます。
- メモリからのすべてのデータアクセスを1つの時間ステップとしてカウントします。
- このアカウンティングを実行するには、アルゴリズムの擬似コード版を作成し、紙と鉛筆を使用してこれらの手順を実行します。結局のところ、コンピュータの仕組みに関する基本的な考え方に基づいた単純なアプローチであり、使用するハードウェアやプログラミング言語の力や速度に関係なく、ソリューションを比較するのに便利な近似です。
<! - 3 - >
シミュレーションを使用することは、標準および事前定義された入力を使用するため、コンピュータ上でアルゴリズムを実行することとは異なります。実際のコンピュータ測定では、コードを実行し、コードを実行するのに必要な時間を確認する必要があります。実際にコンピュータ上でコードを実行することは、アプリケーションの環境(使用されるハードウェアの種類やソフトウェアの実装など)についても考慮する、効率測定の別のベンチマークです。ベンチマークは有用であるが一般化されていない。例えば、新しいハードウェアが以前のコンピュータで長年働いたアルゴリズムを迅速に実行する方法を考えてみましょう。