回答:
アルゴリズムが時間よりも漸近的に使用する場合、追加する数値のすべての桁を読み取るのに十分な時間がありません。非常に大きな数(たとえば、8MBのテキストファイルに格納されている)を処理していると想像してください。もちろん、数値の値に比べて非常に迅速に加算できます。Nが合計値の場合、時間で実行されます。
これは、少し高速化できるという意味ではありません。プロセッサが各操作を32ビットで処理する場合、時間を使用しますが、それでもではなくです。 O(n)o(n)
複雑性分析が形式的に意味をなすためには、オブジェクト内のアルゴリズムが実行される形式的な計算モデル、または少なくとも、基本的な操作が何であるかを指定するコストモデルを指定する必要があります。彼らのコスト。
ほとんどのコンテキストでは、算術演算は時間かかると想定されています。関係する数値に関係なく、アルゴリズムの複雑さに関心があるため、これは通常妥当です。これは、均一コストモデルと呼ばれます。
数値が無制限に大きくなる可能性がある場合、または演算自体を分析することに関心がある場合、算術演算のコストは、入力のサイズに比例してになります。
さて、運用コストはそれよりも低いのでしょうか?しかし、おそらく、それが発生する可能性のある計算モデルを正式に定義する必要があります。
加算の入力は2つの任意の数値です。それらは任意であるため、各ビットを読み取る必要があるため、アルゴリズムはです。
アルゴリズムが各ビットを読み取らずに1010100110と0010010110を正常に追加すると想像してください。アルゴリズムが任意の入力を追加できるようにするために、これらのビットのいずれかをランダムにフリップでき、アルゴリズムは正しい(ただし異なる)加算を出力します。しかし、アルゴリズムがすべてのビットを読み取らない場合、反転された入力が元の入力と異なっていたことがどうしてわかるのでしょうか?