एल्गोरिदम की जटिलता विश्लेषण के लिए प्रतिमान


16

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

मेरा सवाल है - क्या एल्गोरिथ्म की जटिलता को मापने के लिए कोई अन्य प्रतिमान हैं? मैं विशेष रूप से उन लोगों में दिलचस्पी रखता हूं, जो यह बताने का प्रयास करते हैं कि कुछ एल्गोरिदम जिनके पास सबसे खराब स्थिति है, व्यवहार में अच्छी तरह से काम करते हैं।

जवाबों:


21

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

उदाहरण के लिए, मान लें कि आप ग्राफ़ के कुछ वर्ग पर अधिकतम स्वतंत्र सेट को हल करना चाहते हैं, और एक दिलचस्प एल्गोरिथ्म विकसित करें जो आश्चर्यजनक रूप से तेज़ हो। अपने आप को रेखांकन के वर्ग में आगे की जांच करते हुए, आप पाते हैं कि आपके द्वारा जांचे गए सभी ग्राफ़ में केवल से अधिकांश के लिए ट्रेविद होता है । खैर, बोडलेंडर (cf. Neidermeier [1]) ने दिखाया कि जब treewidth k होता है, तो मैक्स इंडिपेंडेंट सेट निश्चित पैरामीटर ट्रैक्टेबल होता है : इसे O ( 2 k ( | E | + | V | ) ) समय में हल किया जा सकता है । यह कुछ स्पष्टीकरण देता है कि आपका एल्गोरिथ्म क्यों अच्छा काम करता है।10हे(2(||+|वी|))

[१] आर। निडरमियर, फिक्स्ड-पैरामीटर एल्गोरिदम को निमंत्रण। गणित और उसके अनुप्रयोगों में ऑक्सफोर्ड व्याख्यान श्रृंखला, ऑक्सफोर्ड यूनिवर्सिटी प्रेस, ऑक्सफोर्ड, 2006।


15

परिशोधन जटिलता है - क्यों कुछ ऑपरेशन सबसे खराब स्थिति में महंगा हो सकते हैं, लेकिन अगर आप कई ऑपरेशनों पर विचार करते हैं, तो प्रति ऑपरेशन औसत लागत अच्छी है।

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

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