कृपया कथन की व्याख्या करें कि फ़ंक्शन a + b O (n ^ 2) और n (n) से संबंधित है?


12

मान लीजिए कि मेरे पास एक रैखिक फ़ंक्शन है f(n)= an+b, यह साबित करने का सबसे अच्छा तरीका क्या है कि यह फ़ंक्शन O (n 2 ) से संबंधित है और Θ(n)?

मुझे यहां गणितीय कठोरता की आवश्यकता नहीं है। मुझे एक प्रोग्रामर के उत्तर की आवश्यकता है। समझाने का कुछ तार्किक तरीका।

यह ठीक है कि मैंने गणित प्रश्नोत्तर में प्रश्न क्यों पोस्ट किया और इसके बजाय प्रोग्रामर प्रश्नोत्तर में।


2
@EmmadKareem साहित्य में अक्सर बिग ओ संकेतन का उपयोग अक्सर लापरवाही से तंग सीमाओं का प्रतिनिधित्व करने के लिए किया जाता है जो मूल रूप से are (n) है। बिग ओ वास्तव में ऊपरी सीमा है।
गीक

1
@EmmadKareem "O (n) की ऊपरी सीमा n * n" नहीं है, ,, O (n) की कोई ऊपरी सीमा नहीं है। O (n) स्वयं ऊपरी सीमा को परिभाषित करता है। इसमें वास्तव में फ़ंक्शंस का एक सेट हो सकता है जो स्थिति को संतुष्ट करता है: f (x) g O (g (x)) जैसा कि वहाँ मौजूद है c> 0 (जैसे c = 1) और x0 (जैसे x0 = 5) जैसे कि f (x) ) <cg (x) जब भी x> x0।
गीक

2
@EmmadKareem वास्तव में O (n) \ subset O (n ^ 2) \ subset O (n ^ 3) इत्यादि, इस प्रकार f \ _ O (n ^ 2) में \ subset की ट्रांज़िटिविटी द्वारा। ध्यान दें कि \ subset \ subseteq नहीं है।
स्कारफ्रिज

6
"मुझे एक प्रोग्रामर के जवाब की आवश्यकता है। समझाने का कुछ तार्किक तरीका।" - अच्छी तरह से आप "तार्किक" कैसे परिभाषित करते हैं? गणित तार्किक है। कठोर सोच से कम कुछ भी यहाँ गलत है। आप इस विषय को समझाने की कोशिश कर सकते हैं, लेकिन इसके बिना (अन्यथा कठिन नहीं) गणित को पचाए बिना आप वास्तव में इसे प्राप्त नहीं कर पाएंगे - आपको केवल इसका एक धूमिल अर्थ होगा।
तमसे सजेलेई

2
@ Geek: मुझे लगता है कि आप गणित का मतलब है ? cs.SE भी एक अच्छा पता होगा।
राफेल

जवाबों:


20

बिग ओह नोटेशन (ओ, थीटा, ओमेगा) कार्यों की वृद्धि दर के बारे में है।

जब आप एक एल्गोरिथ्म को लागू करते हैं, तो यह एक निश्चित विशेषता है कि जब आप डेटासेट बढ़ाते हैं तो रनटाइम कैसे बदलता है। अब, आप एल्गोरिथ्म का अनुकूलन कर सकते हैं इसलिए यह 100 के एक कारक द्वारा तेजी से चलता है। निश्चित रूप से, यह बहुत अच्छा है, लेकिन अनिवार्य रूप से, यह अभी भी एक ही एल्गोरिथ्म है। इसी तरह, कुछ वर्षों में, कंप्यूटर आज की तुलना में दोगुना हो सकता है।

Landau संकेतन सार इन स्थिर कारकों को दूर करता है। यह इस बात की परवाह नहीं करता है कि एक एल्गोरिथ्म fहमेशा दूसरे एल्गोरिथ्म से दोगुना तेज़ होता है g: शायद g4 गुना तेजी से चलाने के लिए अनुकूलित किया जा सकता है, या आप इसके बजाय तेजी से हार्डवेयर खरीदने में सक्षम हो सकते हैं। यदि आप इसे इस दृष्टिकोण से देखते हैं, तो आप कह सकते हैं कि वे "समान" हैं। (यह कहना है कि आप कर सकते हैं (हमेशा) व्यवहार में निरंतर कारकों की उपेक्षा करें।)

बिग ओह एक ऊपरी सीमा को निर्दिष्ट करता है, यह <=संबंध के समान है ।

आप सहमत होंगे कि 1 < 2यह सच है। इसका मतलब यह है कि 1किसी भी अन्य संख्या से कम नहीं हो सकता है? हरगिज नहीं। अनंत संख्या है जो संख्या से बड़ी है 1

विकास दर के साथ, यह समान है। O(n)सभी कार्यों के सेट को दर्शाता है, जो रैखिक रूप से (या अधिक धीरे-धीरे) बढ़ते हैं। O(n^2)दूसरी ओर उन सभी कार्यों को दर्शाता है, जो द्विघात संकलक (या धीमे) के साथ बढ़ते हैं। मुझे यकीन है कि आप इस बात से सहमत होंगे कि एक रैखिक फ़ंक्शन द्विघात फ़ंक्शन की तुलना में अधिक धीरे-धीरे बढ़ता है।

यही कारण है कि एक फ़ंक्शन एक से अधिक "बिग-ओह" वर्ग में हो सकता है।

यहाँ विभिन्न कार्यों की तुलना है की कमी: (नथ के ठोस गणित से)

विकास दर की तुलना

बाएं से दाएं, कार्य तेजी से बढ़ते हैं।

इसके अलावा, यहाँ छवि विवरण दर्ज करेंअर्थ n ^ 2 n ^ 1 की तुलना में तेजी से बढ़ता है क्योंकि 2> 1।

परिभाषाएं

परिभाषा ओमेगा

"f तेजी से बढ़ता है या जी जितना तेज़ होता है"

परिभाषा बड़ी ओह

"च धीमी या समान रूप से तेजी से बढ़ता है जी"

परिभाषा थीटा

उपरोक्त दोनों का मेल। यह कहता है कि फ़ंक्शन f"समान रूप से तेज़" बढ़ता है g। यह एक तुल्यता संबंध है।

व्याख्या

मान लें कि आपके पास दो एल्गोरिदम हैं, fऔर g

ओमेगा

मान लें कि f जी के थेटा में नहीं, g के ओमेगा में fआपके बजट से कोई फर्क नहीं पड़ता, कंप्यूटिंग शक्ति की कोई निरंतर मात्रा नहीं है जिसे आप अपने सिस्टम में जोड़ सकते हैं, जैसे कि fहमेशा की तरह तेजी से चलेगा g

बड़ा ओह

मान लें f जी के थेटा में नहीं, f में g का ओहयदि आपके पास पर्याप्त डेटा है, fतो हमेशा की तुलना में तेजी से चलेगा g, चाहे आप अपने सिस्टम में कितनी भी कंप्यूटिंग शक्ति जोड़ लें।

सबूत

यदि आप वास्तव में यह साबित करने की कोशिश कर रहे हैं, तो आपको लैंडौ नोटेशन की परिभाषाओं का उपयोग करके दिखाना होगा कि आपका फ़ंक्शन आवश्यक शर्तों को पूरा करता है।

तो अगर आप के लिए मूल्यों को खोजने की जरूरत c, d, n_0ऐसा है कि हालत रखती है।

यहां बताया गया है कि आप निम्न के साथ कैसे कर सकते हैं c:

सबूत

यह महसूस करना महत्वपूर्ण है, कि मुझे मनमाने ढंग से परिभाषित करने की cतुलना a-1में छोटा होने के कारण पूरी तरह से ठीक है। थीटा (जी) की परिभाषा कहती है कि "वहां मौजूद है c"। इसका कोई भी मूल्य हो सकता है जब तक कि यह 0. से बड़ा हो (यदि aएक सकारात्मक वास्तविक संख्या है, तो आपको प्रमाण को थोड़ा बदलना होगा, क्योंकि a - 1वास्तव में नकारात्मक हो सकता है)

(मैं aसकारात्मक मान रहा हूं , अन्यथा फ़ंक्शन हमेशा बड़े मूल्यों के लिए नकारात्मक होगा n, जो रनटाइम को दर्शाते हुए फ़ंक्शन के लिए कोई मतलब नहीं है।)

आप इसे ऊपरी बाउंड के लिए करने की कोशिश कर सकते हैं, यह काफी समान है। यदि आप नहीं जानते कि कैसे, मैं आपके लिए एक प्रमाण प्रदान कर सकता हूं।

संकेत: से शुरू करें d > a + 1

ध्यान

यह महत्वपूर्ण है कि आप इसे गलत तरीके से साबित न करें। यदि आप यह मानते हैं कि (a + b) O (n) में है और वहां से जाते हैं, तो आपने साबित नहीं किया है कि आप क्या चाहते थे। आपको यह सत्यापित करने की आवश्यकता होगी कि आपके सभी चरण दोनों तरह से चलते हैं, यानी =>आपके पास <=>


2
बस। गणित के कारण बहुत बुरे लोग बाहर निकलते हैं, यह वास्तव में बहुत सरल है।
तमसे सजेलेई

प्रश्न में कहा गया है: "मुझे यहां गणितीय कठोरता की आवश्यकता नहीं है। मुझे एक प्रोग्रामर के उत्तर की आवश्यकता है ..." इस उत्तर में प्रयुक्त संकेतन प्रश्न के लिए एक अच्छा फिट नहीं लगता है
gnat

1
@ हेमट हम्म, मैंने सोचा था कि सवाल ने एक बिंदु पर "साबित" कहा। वैसे भी, मैंने गणितीय परिभाषाओं के लिए व्याख्याएं जोड़ दी हैं।
प्रेत ० मी।

@ pant0m शानदार जवाब। ठीक वही जो मेरे द्वारा खोजा जा रहा था । उत्तर में गणित ने इसे और अधिक ठोस बना दिया, भले ही "गणित" मूल प्रश्न में विशेष रूप से नहीं पूछा गया था। अनेक अनेक धन्यवाद।
गीक

@ Geek, मुझे खुशी है कि आप इसे पसंद करेंगे। यदि आपके कोई और प्रश्न हैं, तो बेझिझक पूछें और मैं अपने उत्तर को स्पष्ट / विस्तारित कर सकता हूं।
प्रेत ० मी।

5

जब आप बहुपद के साथ काम कर रहे होते हैं, तो आप केवल बहुपद की डिग्री के बारे में परवाह करते हैं। यह है, के लिए an + b, आप केवल के बारे में परवाह है n। यदि ऐसा an^3 + bn^2 + cn + dहोता, तो आप केवल परवाह करते n^3

तो डिग्री डी के साथ एक बहुपद हमेशा अंदर रहेगा Θ(n^d)। सरल।

अब हमें Θ और O के बीच के अंतर के बारे में बात करनी होगी। यह अनिवार्य रूप से ==और <=क्रमशः के बीच का अंतर है। तो Θ(n)इसका मतलब है कि यह है की एक निरंतर कारक के भीतर हमेशा nO(n)इसका मतलब है कि यह हमेशा या तो एक स्थिर कारक के भीतर nया उससे कम है n

इसका मतलब यह है कि किसी भी Θ(s), के लिए किसी भी समारोह में sभी होगा O(s)। साथ ही, यदि कोई फंक्शन अंदर है Θ(s)और sहमेशा किसी अन्य फंक्शन से कम है t, तो वह फंक्शन है O(t)लेकिन नहीं Θ(t)

पूर्णता के लिए, वहाँ भी है Ω(n)। यदि Θप्रतिनिधित्व करता है ==और Oप्रतिनिधित्व करता है <=, का Ωप्रतिनिधित्व करता है >=। तो an + bमें है Ω(1), Θ(n)और O(n^2)

जैसा कि मैंने पहले कहा था, यह पता लगाना बहुत आसान है कि बहुपद क्या हैं - आप सिर्फ डिग्री को देखते हैं। कुछ अन्य कार्य हैं जो आसानी से काम कर सकते हैं।

a^bnमनमानी के लिए कोई भी कार्य aऔर में bहैं Θ(a^n)। किसी भी मूल्य के लिए c >= a, वे अंदर हैं O(c^n)। हर बहुपद में है O(2^n)। अनिवार्य रूप से यह सिर्फ इतना कहता है कि घातीय कार्य हमेशा बहुपद को हराते हैं और यह घातीय कार्य का आधार मायने रखता है।

लघुगणक इसके विपरीत हैं। एक के लिए, log_b nमें है Θ(log n)किसी के लिए b। इसका मतलब यह है कि आधार लघुगणक के लिए मायने नहीं रखता है। यह समझ में आता है क्योंकि लॉगरिदम में विभिन्न आधारों के बीच स्विच करना केवल एक स्थिरांक से गुणा करना है। लॉगरिदमिक फ़ंक्शन भी हैं O(n)- यह है, एक लॉगरिदमिक फ़ंक्शन किसी भी बहुपद (कम से कम डिग्री 1) से छोटा है।

इन कार्यों के योग को देखते हुए, सबसे बड़ी "जीत" है। ऐसा इसलिए n + log nहै Θ(n)क्योंकि यह nशब्द इस शब्द पर हावी है log n। गुणन अधिक जटिल है। सीएस के लिए, केवल एक चीज जिसे आपको जानना आवश्यक है, वह nlog nहै बीच nऔर n^2


1
काफी अच्छा। स्पष्टीकरण के अनुसार मेरे स्मरण के अनुसार शास्त्रीय एल्गोरिथ्म डिज़ाइन मैनुअल के करीब है क्योंकि यह प्राप्त होता है
gnat

1
@ टिखलोन अच्छा लिखो। लेकिन मैंने जो स्वीकार किया वह और भी बेहतर था।
गीक

-2

ज्यादा गणित का उपयोग किए बिना, आप फंक्शन f (n) = a + b लेते हैं और सभी स्थिरांक को गिरा देते हैं, इसलिए ऐसा प्रतीत होता है कि यह f (n) = n है, तो आप "n" को उच्चतम डिग्री के साथ अपने उत्तर के रूप में लेते हैं। Θ (एन)

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