何が操作としてカウントされますか?


8

初心者の質問にはお詫びしますが、アルゴリズムの時間の複雑さを計算するときに「単純な操作」として正確に何がカウントされるかについて少し混乱しています。特に、すべての操作が等しいと考えるのはなぜですか?

確かに、2つの非常に大きな数値を除算することは、数値に1を加えるよりも時間がかかります(forループの各反復の場合のように)。たとえば、乗算は小さな加算をいくつでも構成できます。それで、それらを単に加算する代わりに、演算のタイプ(加算、乗算など)と関連する数値のサイズに応じて、各演算にある種の重みを適用するべきではありませんか?

私の問題は、アルゴリズムの複雑さがO f (一部の関数fの場合)であることを証明するよう求められていることです。 「簡単な操作」。それで、私はこれについてどうしますか?O(f)f



@DW それらのどれも重複ではありませんか?(私はそうだと思います)
ラファエル

回答:


1

単純な操作とは、一定の時間がかかるものです。混乱は、分割に一定の時間がかかるようには見えないことであり、実際、一般的にはかかりません。だが!

たとえば、2つの32ビット整数を加算する場合、除算と加算はどちらも一定の時間を要します。これは通常の方法です。ただし、任意に大きな数値を追加する場合、それらは実際には一定時間ではありませんが、数値が超大きくならないように想定されているため、それがそのように扱われる場合があると思います。


1
O(logn)n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.