एल्गोरिथ्म के अपेक्षित रनिंग टाइम और औसत रनिंग टाइम से इसका क्या मतलब है?


17

मान लें कि हम एल्गोरिदम के चलने के समय का विश्लेषण करना चाहते हैं। कभी-कभी हम कहते हैं कि हम एक एल्गोरिथ्म के चल रहे समय को खोजना चाहते हैं जब इनपुट आकार n है और सबसे खराब संभव स्थिति के लिए इसे O (n) द्वारा निरूपित किया जाता है। कभी-कभी यद्यपि मैं किताबें / कागजात यह कहते हुए देखता हूं कि हमें एक एल्गोरिथ्म का अपेक्षित समय खोजने की आवश्यकता है । इसके अलावा कभी-कभी औसत रनिंग समय का उपयोग किया जाता है।

"अपेक्षित समय" क्या है? किन मामलों में यह सबसे खराब स्थिति समय के बजाय अपेक्षित समय खोजने के लिए उपयोगी है ?

संपादित करें : मुझे लगता है कि अपेक्षित समय और औसत चलने के समय के बीच एक सूक्ष्म अंतर है, लेकिन मुझे यकीन नहीं है। इस पोस्ट के माध्यम से मैं सटीक अंतर जानना चाहता हूं यदि कोई हो।


1
संभवत: उनका मतलब औसत मामले से है ..
मार्टिज़न पीटर 16

4
उम्मीद मूल्य एक प्रायिकता वितरण समारोह की की x * नकारात्मक से f (x) सकारात्मक अनंत का अभिन्न अंग के रूप में वर्णित किया गया है। अपेक्षित समय सभी संभावित समय के वितरण को निर्धारित करके और फिर अपेक्षित मूल्य लेकर प्राप्त किया जाएगा। इस आपरेशन अधिक सामान्यतः के रूप में जाना जाता है मतलब की गणना या औसत की गणना
जोएल कॉर्नेट

1
@JoelCornett: यदि आप इसे पोस्ट करते हैं तो यह एक अच्छा जवाब देगा ..
मार्टिज़न पीटरर्स

@MartijnPieters: नहीं, औसत मामला इनपुट की संभाव्यता वितरण के बारे में एक धारणा बनाता है, अपेक्षित मामला नहीं करता है।
जोर्ज डब्ल्यू मित्तग

@ JörgWMittag: सही, यदि आप अपने इनपुट की वास्तविक-विश्व संभावना वितरण जानते हैं, तो आप औसत मामले को अनदेखा कर सकते हैं। दूसरे शब्दों में, अपेक्षित मामला वह समय है जब आपका एल्गोरिथ्म अपेक्षित इनपुट सेटों की संभावना वितरण देता है।
Martijn Pieters

जवाबों:


15

अपेक्षित समय एल्गोरिथ्म का औसत चल रहा है , अपेक्षित समय है, इच्छित इनपुट का उपयोग करके ।

मान लें कि आपके पास कुछ मिलियन उपयोगकर्ता रिकॉर्ड हैं और उन्हें क्रमबद्ध करना चाहते हैं, आप एक एल्गोरिथ्म का उपयोग करना चाह सकते हैं जो आपके इनपुट के लिए सबसे उपयुक्त है , और जैसे कि एक एल्गोरिथ्म के विपरीत सबसे अच्छा अपेक्षित समय देता है, जो बेहतर है बुरी से बुरी हालत चलने का समय है, लेकिन बदतर अपेक्षित समय चल रहा है।

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

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

यह सब इनपुट के लिए सही एल्गोरिदम का उपयोग करने के बारे में है।


बहुत बढ़िया जवाब। धन्यवाद । मुझे लगता है कि अपेक्षित और औसत के बीच का अंतर यह है कि जब हम आदानों के वितरण को जानते हैं और एल्गोरिथ्म को चलाते हैं तो इसे "औसत" कहा जाता है और जब हम इनपुट की अनुमति देने के लिए एक यादृच्छिक संख्या जनरेटर का उपयोग करते हैं, तो इसे अपेक्षित चलने का समय कहा जाता है। क्या आप इस आधार से सहमत हैं?
Geek

4

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

एक प्रसिद्ध उदाहरण क्विकॉर्ट है: अगर हम यादृच्छिक पर पिवोट्स लेते हैं, तो हम यह साबित कर सकते हैं कि इसका अपेक्षित समय चल रहा है ओ (एन लॉग एन), भले ही इसका सबसे खराब समय चल रहा है ओ (एन ^ 2)। एक उदाहरण जहां यादृच्छिकरण बहुत शक्तिशाली है, सबसे छोटी संलग्न मंडली समस्या है: एक सरल एल्गोरिथ्म है जिसका सबसे खराब समय चल रहा है O (n ^ 3), लेकिन अपेक्षा में, इसका चलने का समय केवल O (n) है।

औसत रनिंग टाइम का उपयोग आमतौर पर एल्गोरिथ्म के व्यवहार के बारे में बात करते समय किया जाता है 'अधिकांश इनपुट के लिए'। हम बेतरतीब ढंग से इनपुट बनाने के कुछ तरीके को परिभाषित करते हैं, उदाहरण के लिए, हम यादृच्छिक संख्याओं के साथ एक सरणी भरते हैं, या हम यादृच्छिक रूप से n (इसलिए कोई डुप्लिकेट) के माध्यम से नंबर 1 की अनुमति नहीं देते हैं, या हम एक सिक्का फ्लिप करते हैं और या तो एक अवरोही या आरोही सेट प्राप्त करते हैं। संख्या। एल्गोरिदम के उस यादृच्छिक वितरण के लिए एक एल्गोरिथ्म का औसत रनिंग टाइम तब एल्गोरिथ्म का अपेक्षित रनिंग समय होता है (जिस स्थिति में एल्गोरिदम को यादृच्छिक नहीं किया जा सकता है, लेकिन इनपुट है)।

एक उदाहरण के रूप में: ज्यामितीय समस्याएं हैं जिनके लिए एल्गोरिदम मौजूद हैं जो पहली नजर में अच्छी तरह से काम करते हैं, जब तक कि आप वितरण लाइनों के कुछ बहुत ही अजीब तरीके की खोज नहीं करते, कहते हैं, इनपुट लाइनें। यदि आप मानते हैं कि लाइनें बेतरतीब ढंग से वितरित हैं, तो ऐसा हो सकता है कि ये अजीब परिदृश्य होने की संभावना नहीं है, इसलिए आपका एल्गोरिथ्म अच्छा होने के साथ समाप्त होता है।

कंट्रास्टिंग: अपेक्षित रनिंग टाइम इस बारे में है कि एक एल्गोरिथ्म कैसे करता है 'जब तक कि आपका भाग्य खराब न हो' - एक ही एल्गोरिथ्म को एक ही इनपुट पर पुन: प्रयास कर रहा है, लेकिन विभिन्न यादृच्छिक विकल्पों के साथ इसे बहुत तेजी से हल किया जा सकता है। औसत रनिंग टाइम इस बारे में बात करता है कि एक एल्गोरिथ्म 'अधिकांश इनपुट्स के लिए कितना अच्छा प्रदर्शन करता है' - उसी इनपुट पर फिर से एक ही एल्गोरिदम की कोशिश करने से आपको मदद नहीं मिलेगी (सिवाय इसके कि शायद एल्गोरिथम को यादृच्छिक भी किया जाए)।

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