मैंने आज सीखा कि एल्गोरिथम विश्लेषण कम्प्यूटेशनल मॉडल के आधार पर भिन्न होता है। यह ऐसा कुछ है जिसके बारे में मैंने कभी नहीं सोचा या इसके बारे में नहीं सुना।
एक उदाहरण मुझे दिया गया है, जो कि उपयोगकर्ता @chi द्वारा इसे आगे चित्रित करता है :
जैसे कार्य पर विचार करें: दिया वापसी x i । रैम में इसे में हल किया जा सकता है क्योंकि सरणी पहुंच स्थिर-समय है। TM का उपयोग करते हुए, हमें पूरे इनपुट को स्कैन करने की आवश्यकता है, इसलिए यहO ( n )
इससे मुझे कार्यात्मक भाषाओं के बारे में आश्चर्य होता है; मेरी समझ से, "कार्यात्मक भाषाएं लंबोदर कलन से संबंधित हैं" ( यहाँ पर युवल फिल्मस की एक टिप्पणी से )। इसलिए, यदि कार्यात्मक भाषाएं लैम्ब्डा कैलकुलस पर आधारित हैं, लेकिन वे रैम आधारित मशीनों पर चलते हैं, तो विशुद्ध रूप से कार्यात्मक डेटा संरचनाओं और भाषाओं का उपयोग करके कार्यान्वित एल्गोरिदम पर जटिलता विश्लेषण करने का उचित तरीका क्या है?
मुझे विशुद्ध रूप से कार्यात्मक डेटा संरचनाओं को पढ़ने का अवसर नहीं मिला है, लेकिन मैंने इस विषय के लिए विकिपीडिया पृष्ठ को देखा है, और ऐसा लगता है कि कुछ डेटा संरचनाएं पारंपरिक सरणियों को प्रतिस्थापित करती हैं:
"एरेज़ को मैप या रैंडम एक्सेस लिस्ट से बदला जा सकता है, जो विशुद्ध रूप से कार्यात्मक कार्यान्वयन को स्वीकार करता है, लेकिन एक्सेस और अपडेट का समय लॉगरिदमिक है।"
उस मामले में, कम्प्यूटेशनल मॉडल अलग, सही होगा?