2011-09-08 5 views
32

それぞれのpythonのセット操作の複雑さは、Big O表記になりますか?Pythonセット操作の時間の複雑さ?

私はPythonのset typeを使用して多数のアイテムを操作しています。私は、各操作のパフォーマンスがセットのサイズによってどのように影響を受けるかを知りたい。例えば、会員のためのadd、およびテスト:

myset = set() 
myset.add('foo') 
'foo' in myset 

が周りグーグルでは、すべてのリソースが提供されていませんが、Pythonの集合の実装のための時間の複雑さを慎重に考慮されていたであろうという合理的なようです。

もし存在すれば、thisのようなものへのリンクは素晴らしいでしょう。もしこのようなものがないなら、恐らく私たちはそれを解決することができますか?

すべてのの時間複雑さを見つけるための余分なマーク。

+2

GWWのリンクは非常に有益ですが、Pythonの辞書の特殊なケース(キーは値ですが、値はありません)であることを理解することで、Pythonのセットの時間の複雑さを判断できます。だから、ハッシュマップ上の操作の時間の複雑さを知っていれば、あなたはかなり多く存在します。 – Wilduck

答えて

3

操作inは、コンテナのサイズとは独立している必要があります。 O(1) - 与えられた最適なハッシュ関数。これは、で、Python文字列の場合はほぼになります。文字列をハッシュすることは常に重要です。Pythonはそこでは賢明でなければならないので、最適な結果を期待できます。

10

Python wiki: Time complexityによると、セットは、hash tableとして実装されています。したがって、参照/挿入/削除は、O(1)で期待できます。ハッシュテーブルの負荷率が高すぎないかぎり、衝突とO(n)に直面します。

P.S.何らかの理由で彼らはミスタイプのように見える削除操作のためにO(n)を主張する。

P.P.S.これはCPythonでは当てはまりますが、pypyはdifferent storyです。

関連する問題