O और do सबसे खराब और सबसे अच्छे मामले से कैसे संबंधित हैं?


33

आज हमने एक व्याख्यान में द्विआधारी खोज का उपयोग करके क्रमबद्ध सरणी में एक तत्व खोजने के लिए एक बहुत ही सरल एल्गोरिथ्म पर चर्चा की । हमें तत्वों की एक सरणी के लिए इसकी विषम जटिलता निर्धारित करने के लिए कहा गया था ।n

मेरा विचार यह था, कि यह , या है, क्योंकि यह अधिक खराब है क्योंकि सबसे खराब स्थिति में ऑपरेशन की संख्या है। लेकिन मैं बेहतर कर सकता हूं, उदाहरण के लिए यदि मैंने पहली बार खोजा गया तत्व मारा है - तो निचली सीमा ।O(logn)O(log2n)log2nΩ(1)

व्याख्याता ने समाधान को रूप में प्रस्तुत किया क्योंकि हम आमतौर पर एल्गोरिदम के लिए केवल सबसे खराब स्थिति इनपुट पर विचार करते हैं।Θ(logn)

लेकिन जब केवल सबसे खराब मामलों पर विचार किया जाता है, तो और नोट होने की बात क्या है जब दिए गए समस्या के सभी सबसे खराब मामलों में एक ही जटिलता है ( हम सभी की आवश्यकता होगी, ठीक है?)।OΩΘ

मुझे यहां क्या समझ नहीं आ रहा है?


@ शमाजी: "आपका क्या मतलब है" लेकिन जब केवल सबसे खराब मामलों पर विचार किया जाता है, तो बड़े ओ और बड़े ओमेगा संकेतन के बिंदु क्या हैं जब सभी सबसे खराब मामलों में + - एक ही जटिलता (थीटा हम सभी की आवश्यकता होगी, ठीक है?)। कृपया इसे स्पष्ट करें।
तन्मय

@ सूरज: मुझे लगता है कि आपका सवाल यह है: एल्गोरिथम विश्लेषण में बिग ओ और बिग ओमेगा संकेतन की क्या आवश्यकता है? क्या मैं सही हूँ?
तन्मय

5
O(log2n) से अधिक विशिष्ट नहीं है , वे एक ही वर्ग के कार्यों को दर्शाते हैं। O(logn)
राफेल

log2(n) के रूप में ही है इसलिए 2 सिर्फ एक पहलू को इंगित करता है, (बड़े-ओ में अन्य कारकों की तरह निकालने के हो सकता है।log(b)/log(2)×logb(n)
Ctrl-Alt-delor

जवाबों:


39

Landau अंकन कार्यों पर स्पर्शोन्मुख सीमा को दर्शाता है । , और बीच अंतर की व्याख्या के लिए यहां देखें ।OΩΘ

सबसे खराब-, सबसे अच्छा-, औसत या आप-नाम-यह-केस समय अलग-अलग रनटाइम फ़ंक्शन का वर्णन करता है: किसी भी दिए गए के उच्चतम रनटाइम के अनुक्रम के लिए, सबसे कम के लिए एक, और इसी तरह ।।n

प्रति से, दोनों का एक-दूसरे से कोई लेना-देना नहीं है। परिभाषाएँ स्वतंत्र हैं। अब हम आगे बढ़ सकते हैं और रनटाइम फ़ंक्शंस पर असममित सीमाएं तैयार कर सकते हैं: ऊपरी ( ), निचला ( ) या दोनों ( )। हम या तो सबसे खराब-, सबसे अच्छा- या किसी अन्य मामले के लिए कर सकते हैं।Ω ΘOΩΘ

उदाहरण के लिए, द्विआधारी खोज में हमें एक सर्वश्रेष्ठ-केस रनटाइम एसिम्पटिक और एक सबसे खराब मामला asymptotic of ।Θ ( लॉग एन )Θ(1)Θ(logn)


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

1
@ पैट्रिक काफी नहीं है। FIrst, आप तय करते हैं कि आप सबसे खराब विश्लेषण करना चाहते हैं-, औसत- या सबसे अच्छा मामला। फिर आप लागत फ़ंक्शन (या जितना संभव हो उतना अच्छा सन्निकटन) के साथ आते हैं। केवल तब आप, asymptotics लेने पर यदि सभी करते हैं।
राफेल

17

निम्नलिखित एल्गोरिथ्म पर विचार करें (या प्रक्रिया, या कोड का टुकड़ा, या जो कुछ भी):

Contrive(n)
1. if n = 0 then do something Theta(n^3)
2. else if n is even then
3.    flip a coin
4.    if heads, do something Theta(n)
5.    else if tails, do something Theta(n^2)
6. else if n is odd then
7.    flip a coin
8.    if heads, do something Theta(n^4)
9.    else if tails, do something Theta(n^5)

इस फ़ंक्शन का स्पर्शोन्मुखी व्यवहार क्या है?

सर्वोत्तम स्थिति में (जहाँ सम है), रनटाइम और , लेकिन किसी भी चीज़ के नहीं।Ω ( एन ) हे ( एन 2 )nΩ(n)O(n2)Θ

सबसे खराब स्थिति में (जहाँ विषम है), रनटाइम और , लेकिन किसी भी चीज़ का नहीं।nΩ(n4)O(n5)Θ

मामले में , रनटाइम ।n=0Θ(n3)

यह एक संक्षिप्त उदाहरण है, लेकिन केवल बाउंड और केस के बीच के अंतर को स्पष्ट रूप से प्रदर्शित करने के उद्देश्यों के लिए। यदि आप जो क्रियाकलाप कर रहे हैं उसका कोई ज्ञात सीमा नहीं है, तो आप पूरी तरह से निर्धारक प्रक्रियाओं के साथ अर्थपूर्ण हो सकते हैं ।Θ


1
इस निर्धारक को बनाने के लिए, मामलों के साथ विभाजित करें । nmod4
वॉनब्रांड

4

जरुरी नहीं। इस मामले में, क्रमबद्ध सरणी पर द्विआधारी खोज, आप देख सकते हैं कि: (ए) द्विआधारी खोज सबसे अधिक कदम उठाती है; (b) ऐसे इनपुट हैं जो वास्तव में इस पर कई कदम उठाते हैं। इसलिए यदि द्विआधारी खोज के लिए सबसे खराब स्थिति में चल रहा समय है, तो आप कह सकते हैं कि ।[logn+1]T(n)T(n)=Θ(logn)

दूसरी ओर, अन्य एल्गोरिदम के लिए, आप ठीक से काम करने में सक्षम नहीं हो सकते हैं, जिस स्थिति में सबसे खराब स्थिति इनपुट पर चल रहे समय के लिए ऊपरी और निचले सीमा के बीच अंतर हो सकता है।T(n)

अब, एक सॉर्ट किए गए सरणी को खोजने के लिए, कुछ और सच है, जो कि किसी भी एल्गोरिथ्म में सॉर्ट किए गए सरणी को खोजने के लिए का निरीक्षण करने की आवश्यकता है । इस तरह की निचली सीमा के लिए, आपको समस्या का विश्लेषण करने की आवश्यकता है, हालांकि। (यहाँ विचार है: किसी भी समय, एक खोज एल्गोरिथ्म कुछ सेट की संभावना से इनकार नहीं किया है जहां तत्व यह की तलाश में हो सकता है पदों की एक सावधानी से तैयार इनपुट तो है कि गारंटी ले सकते हैं। है अधिकांश कारक द्वारा कम किया गया ।)[logn+1]S[n]|S|2


1

आप सही हैं, बहुत से लोग उपयोग तब करते हैं जब उन्हें उपयोग करना चाहिए । उदाहरण के लिए, एक एल्गोरिथ्म विश्लेषक समय समारोह समाप्त हो सकता है और तुरंत निष्कर्ष निकाल सकता है कि , जो तकनीकी रूप से सही है , लेकिन एक तेज जोर । मैं दो कारणों से इस अनजान व्यवहार का श्रेय देता हूं। सबसे पहले, कई को अधिक लोकप्रिय और स्वीकार्य मानते हैं, संभवतः इसके लंबे इतिहास के कारण। स्मरण करो कि यह एक सदी से भी अधिक समय पहले पेश किया गया था, जबकि (और ) केवल 1976 में (डोनाल्ड नुथ द्वारा) पेश किए गए थे। दूसरा, यह हो सकता है क्योंकिOΘT(n)=n2+n+2T(n)=O(n2)T(n)=Θ(n2)OΘΩOकीबोर्ड पर आसानी से उपलब्ध है, जबकि नहीं है!Θ

देखने की एक तकनीकी बिंदु से, तथापि, मुख्य कारण सावधान विश्लेषकों का उपयोग करना पसंद अधिक है कि पूर्व कवर "अधिक से अधिक क्षेत्र" बाद से। यदि हम द्विआधारी खोज का अपना उदाहरण लेते हैं और का उपयोग करना चाहते हैं , तो हमें दो दावे करने होंगे: \ _ सबसे अच्छे मामले के लिए, अर्थात् , और दूसरा सबसे खराब मामले के लिए, अर्थात् । साथ , हम केवल एक अभिकथन करते हैं, जिसका नाम । गणितीय रूप से, द्वारा कवर किए गए फ़ंक्शंस भी द्वारा कवर किए गए हैं , जबकि कांसेप्ट जरूरी नहीं है।OΘΘΘ(1)Θ(logn)OO(logn)ΘO


आपका स्वागत है, और उत्तर पोस्ट करने के लिए समय निकालने के लिए धन्यवाद! हालाँकि, मैं नहीं बता सकता कि आपकी बात यहाँ क्या है। पहले पैराग्राफ में, आप कुछ अटकलें लगाते हैं। दूसरे में, आप एक ऐसे दृष्टिकोण का प्रस्ताव रखते हैं जो स्वयं "मैला" होता है: यह कहना कि "यह औसत मामला है" सबसे अच्छे मामले के बारे में कुछ भी नहीं कहता है, सिवाय इसके कि उसी कक्षा में। "यह औसत केस" है , कहने का तात्पर्य है एक ही ऊपरी सीमा! यदि आप सर्वश्रेष्ठ मामले के बारे में अतिरिक्त जानकारी प्रदान करना चाहते हैं, तो आपको इसे स्पष्ट रूप से देना होगा। इसलिए, मैं यह नहीं देखता कि आप O I का उपयोग करने के लिए एक बिंदु कैसे बना रहे हैं। O(logn)Θ(logn)
राफेल

@ राफेल मैं आपको दो अधिसूचनाओं की परिभाषाओं से परिचित कराता हूं। इसके अलावा, यह महसूस करें कि उनका उपयोग चल रहे समय की स्पर्शोन्मुख "विकास दर" को वर्गीकृत करने के लिए किया जाता है, न कि आपके विभिन्न उत्तरों और टिप्पणियों द्वारा चल रहे समय के रूप में।
हमार नासर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.