2012-10-18 22 views
5

संभव डुप्लिकेट:
Big O when adding together different routinesयोग

क्या O(n) + O(log(n)) को कम करता है? मेरा अनुमान O(n) है लेकिन एक कठोर तर्क नहीं दे सकता है।

मुझे लगता है कि O(n) + O(1) को O(n) से कम करना चाहिए क्योंकि O(1) केवल स्थिर है।

+0

आप अपने खुद के होमवर्क नहीं करना चाहिए? –

+0

@Yuck क्षमा करें मुझे उस पोस्ट को नहीं मिला .. धन्यवाद –

उत्तर

9

खैर O(f(n)) + O(g(n)) = O (f(n) + g(n)) के बाद से हम सिर्फ एक f(n) ऐसी है कि f(n) > n + log(n)

के रूप में एन पर्याप्त log(n) < n बढ़ता है हम कह सकते हैं के बाद से गणना करने के लिए कोशिश कर रहे हैं कि f(n) > 2n > n + log(n)

इसलिए O(f(n)) = O(2n) = O(n)

एक अधिक सामान्य अर्थ में, O(f(n)) + O(g(n)) = O(f(n)) अगर कुछ स्थिर सी के लिए c*f(n)>g(n)। क्यूं कर? क्योंकि इस मामले में f(n) हमारे एल्गोरिदम पर "हावी" होगा और इसकी जटिलता को निर्देशित करेगा।

0

उत्तर ओ (एन) है। ओ (लॉग एन) ओ (एन) से कम है। इसलिए उनके अतिरिक्त अधिकतम मूल्य है जो ओ (एन) है।

3

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

उदाहरण के रूप में,

let n = 100, then n^2 = 10000 
means n is 0.99% and n^2 is 99.01% of total running time. 
What would you consider for runtime? 
if n is increased then this difference is clearer. 

मैं तुम्हें अब समझ में लगता है,