(単位コストではなく)ビットコストに関してアルゴリズムの時間計算量を研究するという概念に頭を悩ませようとしていますが、このテーマについては何も見つけることができないようです。
これが私がこれまでに持っているものです:
nビットの2つの数値の乗算と除算のビットコストは、任意の算術演算ではO(n ^ 2)です。
したがって、たとえば:
int number = 2;
for(int i = 0; i < n; i++ ){
number = i*i;
}
O(log(n)^ 2 * n)のビットコストに関して時間計算量があります。これは、n回の乗算を実行し、ビットをi
持っているためです。log(i)
しかし、通常のシナリオでは、入力に関して時間計算量が必要です。では、そのシナリオはどのように機能しますか?のビット数はi
定数と見なすことができます。これにより、定数が大きくなることを除いて、時間計算量はユニットコストと同じになります(したがって、両方とも線形になります)。
加算、減算、比較、および変数の割り当てはすべてO(n)であり、任意精度の算術演算の場合、nはビット数です。