सरल और व्यावहारिक नियतात्मक एल्गोरिथ्म, जटिल चलने का समय


18

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

क्या हमारे पास हड़ताली उदाहरण हैं जिनमें अंगूठे का यह नियम विफल है?

बेशक , एल्गोरिदम के उदाहरणों को खोजना आसान है , जिन्हें लागू करना बहुत मुश्किल है, भले ही वे बहुत सरल सबसे खराब स्थिति में चल रहे समय हो। लेकिन काफिले का क्या?

क्या हमारे पास बहुत ही सरल और व्यावहारिक नियतात्मक एल्गोरिदम के उदाहरण हैं जो लागू करना आसान है लेकिन बहुत ही जटिल अभिव्यक्ति के रूप में इसकी सबसे खराब स्थिति के रूप में चलने का समय है?

कृपया कीवर्ड "नियतात्मक" और "सबसे खराब स्थिति" पर ध्यान दें; सरल यादृच्छिक एल्गोरिदम का विश्लेषण काफी आसानी से जटिल अभिव्यक्ति की ओर जाता है।

बेशक "जटिल" क्या स्वाद का मामला है। वैसे भी, मैं एक अभिव्यक्ति देखना पसंद करूंगा जो आपके पेपर के शीर्षक में डालने के लिए बहुत बदसूरत है। और मैं एक प्राकृतिक पैरामीटर (इनपुट आकार, नोड्स की संख्या, आदि) का एक जटिल कार्य करना पसंद करूंगा ।


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


2
क्या एकेएस प्रीमलिटी टेस्टिंग एल्गोरिदम एक जवाब के रूप में योग्य है? मुझे संकोच हो रहा है क्योंकि इसके चलने के समय की "जटिलता" कुछ अर्थों में, primes के वितरण की छद्मता का परिणाम है ...
arnab

मेरी भावना यह है कि सबसे खराब स्थिति ज्यादातर मामलों में होती है, जो "सब कुछ खत्म हो जाता है" और सब कुछ वह चीज है जिसे हम रनटाइम में मापते हैं। इसलिए, स्वाभाविक रूप से, आसान एल्गोरिदम में आसान WC-runtimes होते हैं। यदि हम किसी चाल से एक छोटे से बिट को दाढ़ी बनाने की कोशिश करते हैं तो जटिल रनटाइम आते हैं। लेकिन आपका सवाल दिलचस्प है; मैं निश्चित रूप से उत्सुक हूं कि मैं देखूं कि मेरी भावना सही है।
राफेल

@ स्वर्ण: धन्यवाद, एकेएस एक अच्छा विचार है। लेकिन मुझे यकीन नहीं है कि क्या हम इसे "व्यावहारिक" कह सकते हैं?
जुका सुओमेला

क्या संदेश-प्रसार योजनाएं जैसे सर्वेक्षण प्रसार, बाधा प्रसार या अनुक्रमिक TRW को "एल्गोरिदम" के रूप में गिना जाता है? लागू करने के लिए आसान, रनटाइम भविष्यवाणी करना मुश्किल है
यारोस्लाव बुलटोव

उफ़, मैं हमेशा पोलार्ड की आरएच पद्धति को पसंद करता हूं, यह सरल और व्यावहारिक है, और विश्लेषण वास्तव में कठिन है, लेकिन एल्गोरिथ्म की यादृच्छिकता इसे पोस्ट के जवाब के रूप में अयोग्य बना देती है ...
ह्सियन-चीह चांग 張顯

जवाबों:


20

सबसे अच्छा उदाहरण मैं के बारे में सोच सकते हैं एक एल्गोरिथ्म (नीचे वर्णित) की गणना करने के लिए है का एक व्यवस्था में स्तर के एन विमान, यानी अंक कि वास्तव में है द्वारा गठित बहुभुज लाइन में लाइनों k खड़ी यह ऊपर लाइनों। यह समस्या के लिए ज्ञात सबसे कुशल एल्गोरिथम नहीं है। सरल जटिलताओं के साथ अधिक कुशल एल्गोरिदम हैं, लेकिन मेरा मानना ​​है कि यह उनमें से अधिकांश (यदि सभी नहीं) से अधिक व्यावहारिक है। विश्लेषण शायद इसलिए है क्योंकि इसे इस्तेमाल करता है, तंग नहीं है कश्मीर स्तर जटिलता है, जो एक प्रसिद्ध खुली समस्या (मुझे लगता है कि विश्लेषण में अन्य सभी शर्तों तंग कर रहे हैं) है। फिर भी, मुझे संदेह है कि k -vel के लिए बेहतर सीमाएँ चलने के समय को बहुत सरल बना देंगी। मैं k = मान लूंगाknkkk अकेले n के कार्य के रूप में जटिलता लिखने के लिए।k=n/2n

एल्गोरिथ्म लाइन स्वीप प्रतिमान पर आधारित है और दो का उपयोग करता है ) लॉग(logn) -री गतिज टूर्नामेंट को गतिज कतारों के रूप में । निवेशन और विलोपन प्रदर्शन कर रहे हैं जब एक लाइन के ऊपर या नीचे चला जाता है स्तर के, एक गतिज टूर्नामेंट से अन्य के लिए एक लाइन घूम रहा है। इसलिए, देखते हैं हे ( एन 4 / 3 ) सम्मिलन और विलोपन (डे के लिए बाध्य का उपयोग कर कश्मीर स्तर जटिलता)। प्रत्येक घटना में संसाधित किया जाता है हे ( लॉग एन ) समय और देखते हैं हे ( एन 4 / 3 α ( nkO(n4/3)kO(logn) घटनाओं ( α ( एन ) रेखा खंडों की व्यवस्था के ऊपरी लिफाफा की जटिलता से आता है, जबकि लॉग n / लॉग लॉग n एक की ऊंचाई से आता है ( लॉग एन ) -ary पेड़ )। कुल चलने का समय हैO(n4/3α(n)logn/loglogn)α(n)logn/loglogn(logn)

O(n4/3α(n)log2n/loglogn).

कृपया अधिक जानकारी और संदर्भों के लिए टिमोथी चैन की पांडुलिपि http://www.cs.uwaterloo.ca/~tmchan/lev2d_7_7_99.ps.gz देखें। कारक एक बाइनरी (के intead का उपयोग करके हटाया जा सकता है ( लॉग एन ) गतिज टूर्नामेंट -ary), लेकिन यह वास्तव में परीक्षण है कि मैं प्रदर्शन में गतिज प्राथमिकता कतार को गति। यदि एक गतिज टूर्नामेंट के बजाय एक गतिज ढेर का उपयोग किया जाता है (एक वर्गमूल के अंदर लॉग को दिखाना चाहिए ) तो जटिलता को थोड़ा बदसूरत और बदतर होना चाहिए (जबकि एल्गोरिथ्म अभी भी व्यावहारिक होगा )।1/loglogn(logn)log


बहुत बढ़िया उदाहरण, धन्यवाद! यह हरा देने के लिए आसान नहीं है। :)
जूका सूमेला

1
इस एल्गोरिथ्म से यादृच्छिक एल्गोरिदम, जो बहुत आसान कर रहे हैं किसी को है कि इन एल्गोरिदम में से एक (मेरे कागज "एक समतल व्यवस्था में टहलने ले रहा है" देख कार्यान्वित के रूप में (लागू करने के लिए व्यवहार में धीमी है)।
Sariel हर-Peled

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

24

संघ-खोज डेटा संरचना संचालन आपके मानदंडों को पूरा करते हैं:

http://en.wikipedia.org/wiki/Disjoint-set_data_structure


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

ठीक है, समय नहीं लगता है कि "जटिल" यदि आप इसे करने के लिए की तुलना हे ( एन 4 / 3 α ( एन ) के लिए लॉग इन 2 n / लॉगO(α(n)) गुइलहर्मे के जवाब में। :)O(n4/3α(n)log2n/loglogn)
जुका सुओमेला

संघ-खोज के लिए सबूत जटिलता के लिए एल्गोरिथ्म लंबाई का अनुपात संभवतः अपराजेय है - सभी तीन ऑपरेशन क्या हैं, कोड की नौ लाइनें?
नील कृष्णास्वामी

1
मुझे नहीं लगता कि प्रश्न जटिल विश्लेषण के साथ एक सरल और व्यावहारिक एल्गोरिदम के बारे में है । मुझे लगता है कि प्रश्न जटिल चलने के समय के साथ एक सरल और व्यावहारिक एल्गोरिथ्म के बारे में है , अर्थात, ऊपरी सीमा के लिए प्राप्त वास्तविक अभिव्यक्ति।
गुइलहर्म डी। डी। फोंसेका

6

सिम्पलेक्स एल्गोरिथ्म। लागू करने के लिए आसान और व्यवहार में अद्भुत काम करता है लेकिन सैद्धांतिक रूप से विश्लेषण करने के लिए एक गड़बड़ है।


हां, विश्लेषण करना कठिन है, लेकिन क्या एक विश्लेषण है जिसने निष्कर्ष निकाला है कि सिंपलेक्स का चलने का समय एक निश्चित जटिल कार्य से बंधा है ? n
जुका सुओमेला

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

1
शायद मुझे सिम्पलेक्स एल्गोरिथम के बजाय सिम्पलेक्स विधि कहना चाहिए था। क्ले-मिन्टी क्यूब और इसकी विविधताएं कुछ वेनिला धुरी नियमों के लिए काम करती हैं। लेकिन, उदाहरण के लिए, यादृच्छिक पहलू धुरी नियम का एक पागल ऊपरी और (हाल ही में) निचला हिस्सा है। हाल के परिणामों पर गिल कलाई की अच्छी ब्लॉग प्रविष्टि थी। gilkalai.wordpress.com/2010/11/09/…
मोहित सिंह

अच्छी बात है, मोहित। मैं भी उलझन में था।
सुरेश वेंकट

2

मुझे यकीन नहीं है कि आप इसे "व्यावहारिक" मानते हैं लेकिन यह एक प्रसिद्ध खुली समस्या है। पॉल एर्दोस ने Collatz अनुमान के बारे में कहा: "गणित अभी ऐसी समस्याओं के लिए तैयार नहीं है"

Collatz प्रक्रिया: जबकि (x! = 1) {यदि x विषम है, x = 3x + 1; और x = x / 2}। एक प्रसिद्ध अनुमान यह है कि प्रक्रिया हमेशा साथ समाप्त हो जाती हैx=1


और इस एल्गोरिथ्म द्वारा हल की गई समस्या क्या है ...?
जुका सुओमेला

यह उपन्यास रन-टाइम विश्लेषण तकनीकों की तलाश करने का सुझाव देता है।
मोहम्मद अल-तुर्कस्टनी

2
तब आप कह सकते हैं कि Collatz अनुमान के प्रमाण के लिए एक क्रूर-बल खोज "उपन्यास रन-टाइम विश्लेषण" भी प्रेरित करती है; दोनों ही मामलों में एल्गोरिथ्म केवल दिमागी तौर पर एक डिग्राफ की खोज कर रहा है। Collatz अनुमान मजेदार है, लेकिन मुझे नहीं लगता कि यह "एक एल्गोरिथ्म" का एक दिलचस्प उदाहरण है।
नील डी ब्यूड्रैप

2

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

http://en.wikipedia.org/wiki/Pancake_sorting

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

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