क्या एक एल्गोरिथ्म के लिए एक अवधारणा है जो पहले किसी अन्य एल्गोरिथ्म को खोजकर एक फ़ंक्शन की गणना करता है?


14

अगर मैं इसे सही ढंग से समझते हैं, एक एल्गोरिथ्म है कि एक असली फंक्शन का मान की गणना करता है कम्प्यूटेशनल जटिलता है यदि निम्न रखती है: जब हम गणना परिशुद्धता के लिए के आदेश पर की आवश्यकता है चरणों ।हे ( जी ( एन ) ) δ जी ( एन )fO(g(n))fδg(n)

हालाँकि, अगर हमारे पास एक एल्गोरिथ्म है जो पहले " गणना करने के लिए एक अधिक कुशल एल्गोरिथ्म पाता है ", और फिर गणना करता ?ff

दूसरे शब्दों में, अगर हम एक एल्गोरिथ्म है निम्न है:A

  1. एक कुशल एल्गोरिथ्म का पता लगाएं की गणना के लिए ।Bf

  2. उपयोग करने के लिए की गणना करें ।Bf

उस मामले में, हम अब उदाहरण के लिए गणना करने के लिए कम्प्यूटेशनल समय की बात नहीं कर सकते हैं , क्योंकि यह पूरी तरह से इस बात पर निर्भर करता है कि क्या एल्गोरिथ्म ने पहले से ही एल्गोरिदम पाया है । दूसरे शब्दों में, गणना करने के लिए आवश्यक कम्प्यूटिंग समय यदि है तो पहली कॉम्प्रोएटेड संख्या के पहले से गणना किए जाने के बाद गणना करने के लिए आवश्यक कम्प्यूटेशनल समय से कहीं अधिक है ।A B f ( 5 ) 5 f ( 5 ) f ( 3 )f(5)ABf(5)5f(5)f(3)

मेरा सवाल यह है कि क्या इस तरह के एल्गोरिथ्म के बारे में कोई अवधारणा / सिद्धांत है जो किसी फ़ंक्शन को कंप्यूटिंग करने से पहले दूसरे एल्गोरिथ्म को खोजता है? विशेष रूप से मैं इस तरह के एल्गोरिदम की कम्प्यूटेशनल जटिलता के विश्लेषण के बारे में सोच रहा हूं।


1
क्या आप कहेंगे कि गणितज्ञ मूल रूप से वही करता है जो आप पूछ रहे हैं? आप इसे हल करने के लिए समीकरण देते हैं और यह स्वचालित रूप से यह पता लगाता है कि उन समीकरणों को हल करने के लिए किस एल्गोरिथ्म का उपयोग करना है, फिर उन्हें हल करता है।
user541686

की जाँच करें itu.dk/people/sestoft/pebook , यह प्रासंगिक है।
नाथन रिंगो

जवाबों:


18

एक प्रसिद्ध एल्गोरिथ्म है, लेविन का सार्वभौमिक खोज एल्गोरिदम, जिसका संचालन का तरीका समान है। उदाहरण के लिए एक सूत्र के लिए संतोषजनक असाइनमेंट खोजने की समस्या पर विचार करें जो संतोषजनक होने की गारंटी है। लेविन की सार्वभौमिक खोज समानांतर में सभी संभावित एल्गोरिदम चलाती है, और यदि कोई एल्गोरिथम एक संतोषजनक असाइनमेंट आउटपुट करता है, तो इस असाइनमेंट को रोकता है और आउटपुट करता है। यदि समस्या के लिए इष्टतम एल्गोरिथ्म समय में चलता है , तो लेविन का एल्गोरिथ्म सही ढंग से लागू होने पर (संभवतः विशाल स्थिरांक के साथ समय में चलता है।( एफ ( एन ) )f(n)O(f(n))

जबकि लेविन का एल्गोरिदम अव्यावहारिक है (इसमें शामिल विशाल स्थिरांक के कारण), यह सैद्धांतिक रूप से बहुत दिलचस्प है। सार्वभौमिक खोज पर अधिक के लिए स्कॉलरपीडिया लेख देखें ।


10

मान लीजिए कि हमारे पास एक फ़ंक्शन है fजो xप्रकार का एक तर्क लेता है A, और दूसरे फ़ंक्शन को आउटपुट करता है जो yप्रकार का एक तर्क लेता है Bऔर प्रकार का एक परिणाम देता है C। आपके शब्दों में, fएक तर्क लेता है xऔर एक "एल्गोरिथ्म" लौटाता है जो टाइप के इनपुट लेता है और प्रकार के Bआउटपुट देता है C

फ़ंक्शन fका प्रकार है

A → (B → C)

वास्तव में, यह x : Aएक प्रकार का फ़ंक्शन लेता है और वापस करता है B → C। लेकिन इस तरह के एक fएक समारोह के बराबर है g : A × B → Cजो लेता है दोनों x और yएक ही बार में और आप अंतिम परिणाम देता है। दरअसल, प्रकार के बीच एक आइसोमोर्फिज्म है

A → (B → C)

तथा

A × B → C

क्योंकि हम gके fरूप में परिभाषित कर सकते हैं

g(x, y) := f(x)(y)

और हम fके gरूप में परिभाषित कर सकते हैं

f(x) := (y ↦ g(x,y))

से गुजर के आपरेशन gकरने के लिए fकहा जाता है currying और कार्यात्मक प्रोग्रामर हर समय इसे का उपयोग करें। कम्प्यूटेबिलिटी सिद्धांत में एक इनपुट लेने और एक फ़ंक्शन (एल्गोरिथम) को आउटपुट करने का विचार smn प्रमेय में सन्निहित है

आपके प्रश्न का उत्तर "हाँ, लोग हर समय ऐसा करते हैं"। लेकिन एक नैतिक भी है: एक एल्गोरिथ्म जो एक एल्गोरिथ्म पाता है वह अभी भी सिर्फ एक एल्गोरिथ्म है।


1
उस अंतिम वाक्य के लिए +1। ख़ूब कहा है।
जॉन कोलमैन

f(5)c+ccf(5)f(5)c1+c2c1c2c1>c2

@ Programmer2134 ऑप्टिमाइज़ेशन का अनुकूलन उन अवधारणाओं के बारे में होगा जिनकी आप रुचि रखते हैं? मैं इसके पीछे सिद्धांत के बारे में अनिश्चित हूं (विशेषकर जटिलता सिद्धांत के साथ इसकी बातचीत), लेकिन यह एक संभावित उदाहरण हो सकता है
मार्क

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