web-dev-qa-db-ja.com

O(1)スペースの複雑さは何ですか?

O(1)空間の複雑さを理解するのに苦労しています。これは、アルゴリズムが必要とする空間が、入力またはデータのサイズによって増加しないことを意味しますアルゴリズムを使用していますが、正確にはどういう意味ですか?

リンクリストで1-> 2-> 3-> 4などのアルゴリズムを使用する場合、リストを走査して "3"に到達するには、一時的なポインターを宣言します。そして、3に達するまでリストを走査します。これは、まだO(1)余分なスペースがあることを意味しますか?それとも完全に異なるものを意味します。 。私は少し混乱しています。

18
coder123

質問に答えるために、ポインターがあり、リストを走査する場合、それはO(1) space complexityとしてカウントされます。 10個または100個、さらには1000個のポインターがある場合、スペースの複雑さはO(1)です。ただし、「N」ポインタが必要であり、「N」が1ほど小さい場合でも、スペースの複雑さはO(N)です。

O(1)は定数(10、100、および1000が一定)スペースを示し、入力サイズ(Nなど)によって変化しないことを理解してください。

27
Ajay Kumar

固定サイズのデータ​​構造を作成したとします。データ構造に対して何を実行しても、常に同じ固定サイズになります。したがって、このデータ構造で実行される操作はO(1)です。

例として、固定サイズ100の配列があるとしましょう。配列から読み取るか要素を更新するかにかかわらず、私が行う操作はすべて、O(1)配列:配列のサイズ(および使用するメモリの量)は変化していません。

別の例として、要素を追加するLinkedListがあるとします。 LinkedListに要素を追加するたびに、それはO(N)=リストへの操作です。すべての要素を一緒に保持するために必要なメモリ量が増えているためです。

お役に立てれば!

0
Matthew S