व्युत्क्रम की तुलना में धीमी वृद्धि के साथ क्या कार्य एकरमैन रनटाइम सीमा में दिखाई देते हैं?


20

कुछ जटिल एल्गोरिदम ( संघ-खोज ) में लगभग-निरंतर प्रतिलोम एकरमन फ़ंक्शन होता है जो कि स्पर्शोन्मुख समय जटिलता में प्रकट होता है, और सबसे खराब समय का मामला इष्टतम होता है यदि लगभग निरंतर व्युत्क्रम एकरमैन शब्द को अनदेखा किया जाता है।

क्या रनिंग टाइम के साथ ज्ञात एल्गोरिदम के ऐसे कोई उदाहरण हैं जिनमें ऐसे कार्य शामिल हैं जो व्युत्क्रम एकरमैन की तुलना में मौलिक रूप से धीमी गति से बढ़ते हैं (जैसे कि कार्यों के व्युत्क्रम जो बहुपद या घातीय आदि परिवर्तनों के तहत एकरमैन के बराबर नहीं हैं), जो सबसे खराब ज्ञात सबसे खराब समय देते हैं। अंतर्निहित समस्या को हल करने के लिए जटिलता?


2
ω ( 1 ) ( α ( एन ) ) एक ( एन ) ( एन )O(1) समय एल्गोरिदम? आप एक ज्ञात समस्या के बारे में पूछ रहे हैं जिसका सबसे अच्छा ज्ञात एल्गोरिथ्म है और ? पहले आपको , जैसे TREE तुलना में "मूलभूत रूप से तेज़" बढ़ते हुए एक फ़ंक्शन को खोजने की आवश्यकता है , और फिर इसका उलटा ले लो, और फिर एक समस्या का पता लगाएं जो इसे फिट करता है! ω(1)o(α(n))A(n)(n)
पाल जीडी

1
वहाँ मनमाने ढंग से
वंचित

2
@vzn: कोई भी समय निर्माण योग्य नहीं है (जिसमें Alpha शामिल है )। तो समय पदानुक्रम प्रमेय यहाँ इस्तेमाल नहीं किया जा सकता है। α ( n )f(n)=o(n)α(n)
mdxn

@mdx को खुशी हुई कि किसी ने इशारा किया, बस आप पलक झपकते ही परीक्षण कर रहे हैं। हाँ हाल ही में सोच रहा था कि उप- कार्यों के लिए समय पदानुक्रम थीम का सामान्यीकरण हो सकता है । लेकिन वैसे भी सीमा इसलिए है क्योंकि एक समय रचनात्मक टीएम को सभी इनपुट को पढ़ना चाहिए, लेकिन क्या हम इन अन्य एल्गोरिदम को उलटा एकरमैन समय जटिलता के साथ कह रहे हैं? यह कल्पना करने में परेशानी हो रही है! महसूस करें कि प्रश्न उप- भाषाओं के अस्तित्व के बारे में अधिक है .... क्या किसी तरह का सर्वेक्षण या विवरण कहीं हो सकता है ....o ( n ) o ( n )o(n)o(n)o(n)
vzn

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

जवाबों:


8

सेठ Pettie के साथ आया था की गणना के लिए एक एल्गोरिथ्म संवेदनशीलता कम से कम पेड़ फैले के समय में , पर सुधार के Tarjan के एक एल्गोरिथ्म जो समय में एक ही गणना करता । (इसकी तुलना चेजेल के एल्गोरिथ्म में न्यूनतम फैले हुए पेड़ की गणना करने के लिए करें।) संवेदनशीलता की समस्या गणना करने के लिए, किसी दिए गए ग्राफ और दिए गए न्यूनतम फैले हुए पेड़ के लिए, प्रत्येक किनारे के वजन से कितना अधिक है न्यूनतम फैले पेड़ को बदले बिना बदल सकता है।O ( m α ( m , n ) ) O ( m α ( m , n ) )O(mlogα(m,n))O(mα(m,n))O(mα(m,n))

(इस संदर्भ के लिए Tsvi Kopelowitz का धन्यवाद।)


1
मुझे नहीं पता कि लॉग इन एकरमैन व्युत्क्रम एकरमैन की तुलना में "मौलिक रूप से धीमा" है, लेकिन मुझे इस तरह का रनिंग टाइम आश्चर्यजनक लगा।
युवल फिल्मस Yu

4

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


-1

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

अब, मुझे नहीं लगता कि कोई व्यावहारिक समस्या है जो आपके प्रश्न से मेल खाती है, लेकिन शायद हम एक निर्माण कर सकते हैं। हमें इनपुट पर अड़चनें डालने की जरूरत है। चूँकि हम O (n) का उपयोग नहीं कर सकते हैं, हम पूरे इनपुट की जाँच नहीं कर सकते हैं। वास्तव में, हम इनपुट की लंबाई की जांच भी नहीं कर सकते हैं क्योंकि यह ओ (लॉग एन) होगा। इसलिए, हमें पहले पैरामीटर की आवश्यकता है बाकी इनपुट की लंबाई का प्रतिनिधित्व, उदाहरण के लिए c जैसे कि Ackermann (c) इनपुट की लंबाई है। चूंकि यह भी उपयुक्त नहीं है, हम अपने इनपुट में पहले मान के रूप में मांग करते हैं पैरामीटर c, जैसे कि bb (c) इनपुट की लंबाई के बारे में है, जहां bb व्यस्त बीवर फ़ंक्शन है। यह कार्य अविश्वसनीय है लेकिन बी बी (सी) निश्चित रूप से मौजूद है। फिर, एल्गोरिथ्म पसंद आता है:

for (int i=0; i<c; i++) {
    if (input[i] == null) {
        return false;
    }
}
return true;

एल्गोरिथ्म का उद्देश्य यह जांचना है कि यदि c, bb का विलोम है, तो यदि इनपुट लंबाई bb (c) से अधिक है।

यदि एक कम्प्यूटेशनल फ़ंक्शन है जो एकरमन फ़ंक्शन की तुलना में तेज़ी से बढ़ता है, तो मुझे लगता है कि हम एल्गोरिथ्म बनाने के लिए इसका उपयोग कर सकते हैं जो किसी भी इनपुट पर आपके प्रश्न का उत्तर देता है।


निश्चित रूप से मौजूद फ़ंक्शन हैं जो टिप्पणियों में बताए गए Ackermann फ़ंक्शन की तुलना में तेज़ी से बढ़ते हैं (TREE (n))। प्रश्न का मुश्किल हिस्सा एक एल्गोरिथ्म का निर्माण कर रहा है जो उस फ़ंक्शन के व्युत्क्रम से एक रन-टाइम बाउंड है। इस तरह की मशीन में पहली बार फ़ंक्शन के व्युत्क्रम की गणना करने के लिए पर्याप्त समय नहीं है, इसलिए एक टीएम का निर्माण जो इसे प्राप्त करता है, सीधे आगे नहीं है।
mdxn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.