Big O 表記でのpythonの各セット操作の時間の複雑さは何ですか?
Pythonの set type を多数のアイテムの操作に使用しています。各操作のパフォーマンスがセットのサイズによってどのように影響されるかを知りたい。たとえば、 add 、およびメンバーシップのテスト:
myset = set()
myset.add('foo')
'foo' in myset
グーグルで調べてもリソースは見つかりませんでしたが、Pythonのセット実装の時間の複雑さを慎重に検討したのは当然のことです。
存在する場合、 this のようなものへのリンクは素晴らしいでしょう。このようなものが何もない場合、おそらくそれを解決できるでしょうか?
all集合演算の時間の複雑さを見つけるための追加マーク。
Python wiki:時間の複雑さ によると、setは ハッシュテーブル として実装されます。したがって、O(1)平均でルックアップ/挿入/削除することが期待できます。ハッシュテーブルの負荷係数が高すぎる場合を除き、衝突とO(n)に直面します。
追伸何らかの理由で、彼らはO(n)ミスタイプのように見える削除操作に対して.
P.P.S.これはCPythonにも当てはまります。pypyは 異なるストーリー です。
操作in
は、コンテナのサイズから独立している必要があります。 O(1)-最適なハッシュ関数が与えられた。これは、ほぼ Python文字列に対して真です。文字列のハッシュは常に重要です。Pythonほぼ最適な結果。