2016-10-12 10 views
5

मान लीजिए चलाने में स्थिरांक पर विचार करने की क्या ज़रूरत है। हालांकि दोनों एल्गोरिदम वर्गबद्ध समय में चलते हैं, क्या हम कह सकते हैं कि एल्गोरिदम बी तेजी से चलता है?मैं दो एल्गोरिदम <code>A()</code> और <code>B()</code> ऐसे जबकि एल्गोरिथ्म <code>B()</code><code>O(n^2)</code> लेता है कि एल्गोरिथ्म <code>A()</code> बिल्कुल <code>O(3n^2)</code> जाता है जब हम समय

मैं समझता हूं कि हम एल्गोरिदम के चलने वाले समय का विश्लेषण करते समय स्थिरांक को अनदेखा करते हैं, लेकिन मैं इस मामले के बारे में पूछना चाहता हूं जब हमें एल्गोरिदम का विश्लेषण करते समय स्थिरांक पर विचार करने की आवश्यकता होती है।

आप

+0

"बिल्कुल ओ (3 एन^2)" द्वारा, शायद आप का मतलब है "बिल्कुल 3 एन^2 कदम (किसी विशेष प्रकार के कंप्यूटर पर विशेष कार्यान्वयन का उपयोग करके जो हमें रूचि है)"? यदि इस कंप्यूटर पर चल रहे कार्यान्वित कार्यक्रम के प्रत्येक चरण में एक ही समय लगता है (उदाहरण के लिए, क्योंकि प्रत्येक चरण एक ही प्रकार का है) तो n> = 1 के लिए, 3 एन^2-चरण एल्गोरिदम हमेशा एन से धीमा होगा^2-चरण एल्गोरिदम * इस कंप्यूटर पर इन कार्यान्वयन का उपयोग *। लेकिन इनमें से कई धारणाएं अभ्यास में विफल होती हैं: उदाहरण के लिए, एक एल्गोरिदम को अक्सर "तुलना करें" चरणों और "स्वैप" चरणों की आवश्यकता होती है, और ये अलग-अलग समय ले सकते हैं। –

+0

लगभग किसी भी आधुनिक कंप्यूटर पर, एक ही मूल "प्रकार" के चरण भी अलग-अलग समय ले सकते हैं - उदाहरण के लिए, "इसके बाइट को उस बाइट पर कॉपी करें" चरण तेज होगा यदि उसके कुछ ऑपरेशंस कैश में होते हैं। या तो आप इस तरह के विवरण अपने मॉडल में शामिल कर सकते हैं, या नहीं; यदि आप करते हैं, तो आपको अधिक * सटीक * निष्कर्ष मिलेगा (कंप्यूटर पर जो मॉडल को बारीकी से फिट करते हैं), लेकिन कम * सामान्य * निष्कर्ष (वे अन्य मॉडलों पर लागू नहीं होंगे)। बिग-ओ सबसे खराब-मामले सीमा स्पेक्ट्रम के सबसे सामान्य छोर के पास हैं: बड़े पर्याप्त इनपुट दिए जाने पर, वे * किसी * कंप्यूटर के लिए सही निष्कर्ष देते हैं। –

उत्तर

3

आप this SO answer पर एक नज़र लेने के लिए चाहते हो सकता है धन्यवाद।

है कि इसका जवाब से:

सारांश में - के बाद से बड़े-ओ केवल विकास दर के रिश्तेदार कक्षाओं के बारे में बात करती है, यह निरंतर कारक ध्यान नहीं देता। हालांकि, उन स्थिरांक बिल्कुल महत्वपूर्ण हैं; वे सिर्फ एक एसिम्प्टोटिक विश्लेषण के लिए प्रासंगिक नहीं हैं।

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

+0

अब आप मेरे लिए कुछ लाए हैं, क्या आपको लगता है कि हमें स्थिरांक पर विचार करना चाहिए जब मुझे पहले से ही पता है कि मेरे एल्गोरिदम का इनपुट आकार बहुत बड़ा होगा? – Kris

+0

मुझे लगता है कि यदि आप सी * एन या जी * एन^2 के बीच कोई विकल्प बना रहे हैं (जहां जी और सी स्थिरांक हैं और जी सी से बहुत छोटा है) तो आपको स्थिरांक को अनदेखा करना चाहिए और यह एक घातीय या रैखिक पर ध्यान केंद्रित करना चाहिए। यदि इसके बजाय आपके पास 2 एल्गोरिदम के मामले (जैसे आपका उदाहरण) है जो एक ही दर पर बढ़ता है (स्थिरांक को अनदेखा कर रहा है), तो आपको अपने स्थिरांक को ध्यान में रखना चाहिए। –

+0

आपको बहुत बहुत धन्यवाद ... – Kris

2

आपके दो एल्गोरिदम में एक ही एसिम्प्टोटिक जटिलता है, लेकिन कोई निश्चित रूप से दूसरे की तुलना में तेज़ हो सकता है।

इस मामले में, A में एक बड़ा स्थिरता है इसलिए यह शायद धीमा है, लेकिन खेल में अन्य कारक हो सकते हैं (जैसे कि एल्गोरिदम कार्यान्वयन और हार्डवेयर जो चल रहा है) में कार्यान्वयन विवरण हो सकता है जो कि हो सकता है संतुलन किसी भी तरह से।

संबंधित मुद्दे