क्या कोई अन्य एल्गोरिदम है जिसका सबसे खराब समय चल रहा है, इस बीच घातीय है यह सिम्पलेक्स एल्गोरिथम के अलावा अन्य अभ्यास में बहुत अच्छी तरह से काम करता है?


9

हम आम तौर पर एक एल्गोरिथ्म को "अच्छा एल्गोरिथ्म" कहते हैं, अगर यह सबसे खराब समय में बहुपत्नी है। लेकिन कुछ मामलों में (उदाहरण के लिए सिम्प्लेक्स एल्गोरिथम), अंतिम रूप से एल्गोरिथम का सबसे खराब मामला घातीय है, यह व्यवहार में बहुत अच्छा काम कर सकता है।

क्या सिम्प्लेक्स एल्गोरिथम के अलावा इस स्थिति में कोई (निर्धारक) उदाहरण हैं?


1
आप एक संबंधित प्रश्न में दिलचस्पी ले सकते हैं: cstheory.stackexchange.com/questions/305/…
Radu GRIGore

जवाबों:


13

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


13

विमान में भी क्लस्टरिंग के लिए माइनस एल्गोरिथ्म काफी घातीय है, लेकिन यह अभ्यास में बहुत अच्छी तरह से काम करता है।


13

Hindley-Milner प्रकार का निष्कर्ष EXPTIME- पूरा है, लेकिन उन कार्यक्रमों पर लोग आमतौर पर लिखते हैं जो रैखिक के बहुत करीब हैं।


1
हालांकि यह थोड़ा अलग नहीं है? मेरा स्मरण यह है कि हम हिंडले-मिलनर के लिए एक बुरी स्थिति का वर्णन कर सकते हैं जो बुरी तरह से (गहरी नेस्टेड देता है) और इसलिए एचएम अभ्यास में अच्छा है कि यह नेस्टिंग अभ्यास में है, बहुत कम बाउंडेड है (आमतौर पर हम जितना हम जाते हैं उतना अधिक इंडेंट करते हैं दी बाइंडिंग में गहरी और स्क्रीन के सबसे दाहिने किनारे की ओर सिर करते हुए घबरा जाते हैं ...) दी, मैंने पहले भी स्मृति से यह दावा किया है और मैं हाल ही में इसके लिए संदर्भ को पुनर्प्राप्त करने में असमर्थ था।
रोब सिमंस

2
नहीं, यह एक आवश्यक शर्त नहीं है। आप लेट-बाइंडिंग का क्रम दे सकते हैं (बिना किसी घोंसले के साथ!) ऐसा है कि यह अनुक्रम में प्रत्येक अतिरिक्त प्रविष्टि के साथ अनुमान प्रकार के आकार को चुकता करता है। उदाहरण के लिए cstheory.stackexchange.com/questions/2428/… देखें ।
नील कृष्णस्वामी

उदाहरण एसएमएल में है, और मैं काम करने के OCaml के रास्ते से अधिक परिचित हूँ, लेकिन अगर बाइंडिंग की है कि अनुक्रम थे s "चलो", तो मुझे लगता है कि वे चाहते हैं नेस्ट किया। यह केवल इसलिए है क्योंकि वे वैश्विक कार्यों को परिभाषित करते हैं कि वे नहीं हैं, लेकिन यहां एक निहित घोंसला है: एक दी गई परिभाषा में इसके ऊपर की सभी परिभाषाओं तक पहुंच है और इनमें से कोई भी नीचे नहीं है।
अमन २०'१६

1
@nnn: जिस नेस्टिंग को संदर्भित किया गया था, वह घोंसले के निर्माण में बाध्य है - यानी let z = (let y = e in e') in e''की तुलना में let y = e in let z = e' in e''
नील कृष्णस्वामी

9

ब्रेंडन मैके की नाओट (नो ऑटोमोमेफिज्म, यस?) प्रोग्राम ग्राफ की कैनोनिकल लेबलिंग समस्या को हल करती है (साथ ही ग्राफ आइसोमॉर्फिज्म और ग्राफ ऑटोमोर्फिज्म की समस्याओं को हल करती है) और घातीय सबसे खराब प्रदर्शन (मियाजाकी, 1996) है। हालांकि, यह ज्यादातर ग्राफ़ के लिए बहुत जल्दी काम करता है, विशेष रूप से उन कुछ ऑटोमोर्फिज़्म के साथ।

विशेष रूप से, एल्गोरिथ्म कोने से कोने को विभाजित करके शुरू होता है, फिर प्रत्येक भाग के बीच की डिग्री से। जब यह प्रक्रिया स्थिर हो जाती है, तो गैर-तुच्छ भाग में एक शीर्ष को भेद करने के लिए एक विकल्प बनाया जाना चाहिए, और यह घातीय व्यवहार की ओर जाता है। अधिकांश रेखांकन में, इस शाखा प्रक्रिया की गहराई छोटी है।


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

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

1
इस शीर्ष-इनवेरिएंट की तुलना सिम्पलेक्स एल्गोरिथ्म के एंटी-साइक्लिंग नियमों से की जा सकती है।
डेरिक स्टोले

4

साधारण स्टोकेस्टिक गेम के लिए कई एल्गोरिदम अभ्यास में अच्छी तरह से काम करते हैं, भले ही उनके पास घातीय सबसे खराब स्थिति है। बेशक, यह समस्या रैखिक प्रोग्रामिंग से संबंधित कुछ अर्थों में है, हालांकि यह बहुपद समय में होने के लिए ज्ञात नहीं है।


1

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


क्या आप का मतलब है Lemke-Howson एल्गोरिथ्म?
राहुल सवाणी 20

1

बिन पैकिंग (कई प्रकार) एक समस्या है जिसकी जटिलता को एनपी-हार्ड के रूप में जाना जाता है:

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

हालांकि, "व्यावहारिक" संस्करणों पर लागू होने वाले कई अनुमान बहुत अच्छी तरह से करते हैं। 1-आयामी बिन के लिए इनमें से कुछ विशेषताओं को पैक करना, जैसे पहले फिट; पहला-फिट घटाना; सर्वोत्तम योग्य; छात्रों को दिखाने के लिए विषय के रूप में सर्वश्रेष्ठ-फिट घटते हैं। छात्र अक्सर अपने लिए कुछ मूल उत्तराधिकार खोज सकते हैं।


कई उदाहरण हैं कि समस्या एनपी-पूर्ण है, सरल एलगॉर्टिहम्स इससे निपट सकते हैं। वास्तव में अनुमानित एल्गोरिदम के साथ। लेकिन मैं वास्तव में घातीय-समय एल्गोरिदम की तलाश कर रहा हूं, आपका उदाहरण एक कठिन समस्या से संबंधित है जिसे सरल एल्गोरिदम के साथ हल करना आसान है। शायद बिन पैकिंग (या एक अन्य समस्या) को हल करने के लिए एक घातीय समय एल्गोरिथ्म है; और व्यवहार में यह बहुपद समय लेता है।
अरमान

0

दृढ़ता एल्गोरिथ्म (मूल। एडेल्सब्रनर-लेटेसर-ज़ोमोरोडियन से, जिसमें से बहुत भिन्नताएं हैं) सबसे खराब मामला है, लेकिन आमतौर पर रैखिक समय में चलने के लिए प्रयोग से लगता है।

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