"तेज़ एल्गोरिथम" क्या है, इसकी एक एकीकृत परिभाषा नहीं है। एक शासी निकाय नहीं है जो यह तय करता है कि एक एल्गोरिथ्म दूसरे की तुलना में तेज़ है या नहीं।
यह इंगित करने के लिए कि यह क्यों है, मैं दो अलग-अलग परिदृश्यों की पेशकश करना चाहता हूं जो इस नकली अवधारणा को प्रदर्शित करते हैं।
पहला उदाहरण एक एल्गोरिथ्म है जो अनियोजित डेटा की एक लिंक की गई सूची को खोजता है। यदि मैं एक सरणी के साथ एक ही ऑपरेशन कर सकता हूं, तो मुझे प्रदर्शन के बड़े ओह माप पर कोई बदलाव नहीं है। दोनों खोजें O (n) हैं। अगर मैं सिर्फ बड़े ओह मूल्यों को देखता हूं, तो मैं कह सकता हूं कि मैंने कोई सुधार नहीं किया। हालांकि, यह ज्ञात है कि सरणी लुकअप अधिकांश मामलों में लिंक की गई सूची को चलाने की तुलना में तेज़ है, इसलिए कोई यह तय कर सकता है कि एक एल्गोरिथ्म "तेज" बना, भले ही बड़ा ओह नहीं बदला।
अगर मैं पीबीजे सैंडविच बनाने के लिए रोबोट को प्रोग्रामिंग करने के पारंपरिक उदाहरण का उपयोग कर सकता हूं, तो मैं यह दिखा सकता हूं कि मेरे दूसरे तरीके का क्या मतलब है। केवल उस बिंदु पर विचार करें जहां कोई मूंगफली का मक्खन का जार खोल रहा है।
Pick up the jar
Grab the lid
Unscrew the lid
बनाम
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Grab the lid
Unscrew the lid
यहां तक कि सबसे अकादमिक सैद्धांतिक सेटिंग में भी, आप पाएंगे कि लोग स्वीकार करते हैं कि पहला एल्गोरिथ्म दूसरे की तुलना में तेज है, भले ही बड़े ओह संकेतन परिणाम समान हों।
इसके विपरीत, हम RSA एन्क्रिप्शन को तोड़ने के लिए एक एल्गोरिथ्म पर विचार कर सकते हैं। फिलहाल, यह माना जाता है कि यह प्रक्रिया संभवतः O (2 ^ n) है, जहां n बिट्स की संख्या है। एक नए एल्गोरिथ्म पर विचार करें जो n ^ 100 तेजी से चलता है इसका मतलब है कि मेरी नई प्रक्रिया O (2 ^ n / n ^ 100) में चलती है। हालांकि, क्रिप्टोग्राफी की दुनिया में, बहुपद एल्गोरिथ्म के लिए एक बहुपद स्पीडअप पारंपरिक रूप से एक सैद्धांतिक गति के रूप में बिल्कुल नहीं सोचा गया है। सुरक्षा प्रमाणों को करते समय, यह माना जाता है कि एक हमलावर इनमें से एक गति अप की खोज कर सकता है, और इसका कोई प्रभाव नहीं होगा।
तो एक परिस्थिति में, हम O (n) को O (n) में बदल सकते हैं, और इसे तेज़ी से कॉल कर सकते हैं। एक अलग परिस्थिति में, हम एक O (2 ^ n) को O (2 ^ n / n ^ 100) में बदल सकते हैं, और दावा करते हैं कि कोई सार्थक गति नहीं थी। यही कारण है कि मैं कहता हूं कि "तेज एल्गोरिथ्म" के लिए कोई एकीकृत परिभाषा नहीं है। यह हमेशा प्रासंगिक रूप से निर्भर होता है।