अजगर सेट ऑपरेशन की समय जटिलता?


85

बिग ओ नोटेशन में अजगर के सेट ऑपरेशन में से प्रत्येक की समय जटिलता क्या है ?

मैं बड़ी संख्या में वस्तुओं के संचालन के लिए पायथन के सेट प्रकार का उपयोग कर रहा हूं । मैं जानना चाहता हूं कि प्रत्येक ऑपरेशन का प्रदर्शन सेट के आकार से कैसे प्रभावित होगा। उदाहरण के लिए, सदस्यता के लिए परीक्षा जोड़ें , और:

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

आसपास घूमने से कोई संसाधन नहीं बने हैं, लेकिन यह उचित प्रतीत होता है कि पायथन के सेट कार्यान्वयन के लिए समय की जटिलता को सावधानीपूर्वक माना जाएगा।

यदि यह मौजूद है, तो इस तरह से कुछ के लिए एक लिंक बहुत अच्छा होगा। अगर ऐसा कुछ नहीं है, तो शायद हम इसे बाहर काम कर सकते हैं?

सभी सेट परिचालनों की समय जटिलता खोजने के लिए अतिरिक्त अंक ।


2
जबकि GWW का लिंक बहुत जानकारीपूर्ण है, आप यह समझकर कि अजगर के शब्दकोश (कुंजी, लेकिन कोई मूल्य नहीं) के विशेष मामलों के बारे में अजगर के सेट की जटिलता के कारण हो सकते हैं। इसलिए, यदि आपको हैश मानचित्र पर संचालन की समय जटिलता पता है, तो आप बहुत अधिक हैं।
वाइल्डक

जवाबों:


73

पायथन विकी के अनुसार : समय जटिलता , सेट को हैश तालिका के रूप में लागू किया जाता है । तो आप ओ (1) औसत में देखने / सम्मिलित करने / हटाने की अपेक्षा कर सकते हैं । जब तक आपके हैश टेबल का लोड फैक्टर बहुत अधिक नहीं होता है, तब तक आप टकराव और O (n) का सामना करते हैं।

PS किसी कारण से वे डिलीट ऑपरेशन के लिए O (n) का दावा करते हैं जो एक गलत तरह से दिखता है।

पीपीएस यह CPython के लिए सच है, pypy एक अलग कहानी है


अजगर में सेट भी ऑटो छँटाई करते हैं। तो क्या आपको लगता है कि नई वैल्यू डालना अभी भी O (1) समय की जटिलता है
नरेश ठाकुर

3
@thakurinbox क्या आप एक लिंक के साथ अपने बयान का समर्थन कर सकते हैं?
सेर्गेई रोमानोव्स्की

5

ऑपरेशन inको कंटेनर के आकार से स्वतंत्र होना चाहिए, अर्थात। O (1) - एक इष्टतम हैश फ़ंक्शन दिया गया। यह पायथन स्ट्रिंग्स के लिए लगभग सही होना चाहिए । स्ट्रैचिंग स्ट्रिंग्स हमेशा क्रिटिकल होती है, पाइथन को वहां चतुर होना चाहिए और इस तरह आप निकट-इष्टतम परिणामों की उम्मीद कर सकते हैं।


2

अन्य उत्तर सेट पर 2 महत्वपूर्ण संचालन के बारे में बात नहीं करते हैं: यूनियनों और चौराहों। सबसे खराब स्थिति में, संघ O (n + m) लेगा जबकि चौराहा O (min (x, y)) लेगा, बशर्ते कि एक ही हैश के साथ सेट में कई तत्व न हों। आम परिचालन की समय जटिलताओं की एक सूची यहां देखी जा सकती है: https://wiki.python.org/moin/TimeComplexity

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.