アルゴリズムを記述し、それらを証明し、分析する方法は?
The Art of Computer Programming(TAOCP)を読む前に、これらの質問を深く考えたことはありません。擬似コードを使用してアルゴリズムを記述し、それらを理解し、成長の順序についてのみ実行時間を推定します。TAOCPは徹底的に私の心を変更します。 TAOCPは、ステップとgotoを組み合わせた英語を使用してアルゴリズムを説明し、フローチャートを使用してアルゴリズムをより簡単に描写します。低レベルのように見えますが、特にフローチャートにはいくつかの利点があることに気付きました。計算がその矢印をたどるときの現在の状態についてのアサーションで各矢印にラベルを付け、アルゴリズムの帰納的証明を行うことができます。著者は言う: 著者の主張は、図4で行われたように、すべてのアサーションが暗黙的に満たされた点に到達した場合にのみアルゴリズムが有効である理由を本当に理解しているということです。 私はそのようなことを経験していません。別の利点は、各ステップが実行される回数をカウントできることです。キルヒホッフの最初の法則で確認するのは簡単です。実行時間を正確に分析していないため、実行時間を推定するときに一部が省略された可能性があります。±1±1\pm1 成長の順序の分析は役に立たない場合があります。たとえば、クイックソートとヒープソートはすべてであるため区別できません。ここで、はランダム変数予想数です。したがって、定数を分析する必要があります。およびしたがって、と良い。また、場合によっては、分散などの他の量を比較する必要があります。実行時間の増加順序の大まかな分析だけでは十分ではありません。TAOCPとしてE(T(n))=Θ(nlogn)E(T(n))=Θ(nログn)E(T(n))=\Theta(n\log n)EXEバツEXXバツXE(T1(n))=A1nlgn+B1n+O(logn)E(T1(n))=A1nlgn+B1n+O(ログn)E(T_1(n))=A_1n\lg n+B_1n+O(\log n)E(T2(n))=A2lgn+B2n+O(logn)E(T2(n))=A2lgn+B2n+O(logn)E(T_2(n))=A_2\lg n+B_2n+O(\log n)T1T1T_1T2T2T_2 アルゴリズムをアセンブリ言語に変換し、実行時間を計算します。私にとっては難しすぎるので、実行時間をもう少し大まかに分析するためのテクニックを知りたいと思います。これは、C、C ++または擬似コード。 そして、主に研究活動で使用されている記述スタイルと、これらの問題の処理方法を知りたいです。