बिग थीटा की जगह बिग ओ क्यों सिखाया जाता है?


21

बिग ओ नोटेशन एक फ़ंक्शन को ऊपरी बाउंड प्रदान करता है जबकि बिग थीटा एक तंग बाउंड प्रदान करता है। हालाँकि मुझे लगता है कि बिग ओ नोटेशन आमतौर पर (और अनौपचारिक रूप से) सिखाया जाता है और इसका उपयोग तब किया जाता है जब वे वास्तव में बिग थीटा का अर्थ करते हैं।

उदाहरण के लिए "क्विकॉर्ट्स ओ है (एन ^ 2)" बहुत मजबूत बयान में बदल सकता है "क्विकॉर्ट Θ है (एन 2")

जबकि बिग ओ का उपयोग तकनीकी रूप से सही है, बिग थीटा का अधिक प्रचलित उपयोग अधिक अभिव्यंजक नहीं होगा और कम भ्रम की स्थिति पैदा करेगा? क्या कुछ ऐतिहासिक कारण है कि इस बिग ओ का अधिक उपयोग किया जाता है?

विकिपीडिया नोट:

अनौपचारिक रूप से, विशेष रूप से कंप्यूटर विज्ञान में, बिग ओ संकेतन को अक्सर एक विषम स्पर्श सीमा का वर्णन करने के लिए कुछ हद तक दुरुपयोग की अनुमति दी जाती है जहां बिग थीटा संकेतन का उपयोग किसी संदर्भ में अधिक तथ्यात्मक रूप से उपयुक्त हो सकता है।


3
मुझे पता है कि यह वास्तव में सवाल से संबंधित नहीं है, लेकिन क्विकॉर्ट थीटा (एन ^ 2) नहीं है। यह ओ (एन ^ 2) है।
jsternberg

बिग ओ वही है जो शुरुआती / गैर-सीएस लोगों को जानना होगा। बिग थीटा वह है जो एल्गोरिदम में एक इंट्रो में कवर किया गया है, जिसे हर प्रमुख द्वारा नहीं लिया जाएगा। जिन लोगों के पास एक एल्गोरिदम क्लास है, वे चाहें तो बिग ओ नोटेशन में पढ़ सकते हैं। मुझे यकीन नहीं है कि विकिपीडिया उद्धरण क्या दर्शाता है। अकादमिक प्रकाशनों के साथ यदि आप बिग ओ और बड़े थेटा को भ्रमित करते हैं, तो आप एक सम्मेलन में अपना गला काट लेंगे। कुछ लोग थेटा का पीछा करते हुए अपना पूरा जीवन व्यतीत करते हैं और वे हार्ड कार्ड की समस्याएं हैं।
नौकरी

@jsternberg तकनीकी रूप से आप सही हैं। यह भी सच है, लेकिन व्यर्थ है: "क्विकॉर्टोर्ट किसी भी मामले में (सबसे खराब, सबसे अच्छा, ...) हे (एन ^ 100)। लेकिन मैं ओपी से सहमत हूं यह अधिक सटीक होना चाहिए: क्विकॉर्ट सबसे खराब स्थिति थीटा (एन) 2), quicksort सबसे मामले थीटा (NlogN) है क्योंकि प्रत्येक मामले में हम अलग अलग समारोह मिल
Eldar

जवाबों:


26

क्योंकि आप आमतौर पर केवल सबसे खराब स्थिति में रुचि रखते हैं जब प्रदर्शन का विश्लेषण करते हैं। इस प्रकार, ऊपरी सीमा को जानना पर्याप्त है।

जब यह किसी दिए गए इनपुट के लिए अपेक्षा से अधिक तेज़ी से चलता है - तो यह ठीक है, यह महत्वपूर्ण बिंदु नहीं है। यह ज्यादातर नगण्य जानकारी है।

कुछ एल्गोरिदम, जैसा कि @Peter टेलर ने उल्लेख किया है, बिल्कुल तंग नहीं है। उदाहरण के लिए क्विकॉर्ट देखें जो हे (n ^ 2) और ओमेगा (n) है।

इसके अलावा, तंग सीमा अक्सर गणना करना अधिक कठिन होता है।

यह भी देखें:


6
लेकिन बिग ओ जरूरी नहीं कि सबसे खराब स्थिति के अनुरूप हो। मैं कह सकता हूँ कि क्विकसर्ट O (2 ^ n) में चलता है और 100% सही है। यह बहुत अधिक सार्थक होगा अगर मैं कहता हूं कि एल्गोरिथ्म ओ (एन ^ 2) के बजाय थीटा (एन ^ 2) में चलता है।
tskuzzy

इसके अलावा, तंग सीमाएं लगभग हमेशा गणना की जाती हैं जब एल्गोरिदम का विश्लेषण केवल एक ऊपरी बाध्य के बजाय। मैं पूछ रहा हूं कि जब वे कर सकते हैं तो लोग केवल अधिक अभिव्यंजक थीटा नोटेशन का उपयोग क्यों नहीं करते हैं।
tskuzzy

9
मैंने आपको बताया कि अधिकांश प्रोग्रामर इसका उपयोग क्यों नहीं करते हैं। हम आलसी हैं और उतनी सटीकता की जरूरत नहीं है। यदि आप चाहें तो आपको कोई भी बड़ी थीटा का उपयोग करने से नहीं रोकता है। आगे बढ़ो, करो। आपकी एल्गोरिथ्म-पसंद सबसे अधिक संभावना है कि इससे लाभ नहीं होगा। मैंने कभी किसी प्रोग्रामर को बड़े ओ नोटेशन से भ्रमित होने के बारे में नहीं सुना है। मैं भी इसे भ्रामक नहीं मानता।
फाल्कन

9

एक कारण यह है कि ऐसे कई मामले हैं जिनमें known अभी ज्ञात नहीं है। उदाहरण के लिए, मैट्रिक्स गुणन हे (n ^ 2.376) है, लेकिन कोई ज्ञात तंग बाध्य नहीं है। बेशक, जहाँ तक मैं बता सकता हूँ, वहाँ है एक तंग मैट्रिक्स गुणन के लिए बाध्य है, लेकिन हम अपने मूल्य पता नहीं है।


लेकिन यह समस्या के चलने के समय की सीमा होगी, किसी विशेष एल्गोरिथ्म की नहीं। जबकि सामान्य रूप से मैट्रिक्स गुणा को घन समय की तुलना में तेजी से हल किया जा सकता है, भोली एल्गोरिथ्म lic (n ^ 3) है चाहे कोई भी हो।
tskuzzy

5
@tskuzzy, क्विकसॉर्ट लें। इसका कोई थीटा-बाउंड नहीं है, क्योंकि यह O (n ^ 2) और ओमेगा (n) है।
पीटर टेलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.