2009-09-14 10 views
9

मेरे विश्वविद्यालय में हमारे अलग गणित पाठ्यक्रम में, शिक्षक अपने छात्रों को Ackermann function दिखाता है और छात्र को कागज पर कार्य को विकसित करने के लिए असाइन करता है।एकरमेन फ़ंक्शन का उपयोग करता है?

रिकर्सन ऑप्टिमाइज़ेशन के लिए बेंचमार्क होने के अलावा, क्या एकरमेन फ़ंक्शन का कोई वास्तविक उपयोग है?

+0

https://en.wikipedia.org/wiki/Hyperoperation – starblue

उत्तर

15

हां। (व्यस्त) एकरमेन फ़ंक्शन एल्गोरिदम के जटिलता विश्लेषण में प्रकट होता है। जब ऐसा होता है, तो इसका मतलब है कि आप उस शब्द को लगभग अनदेखा कर सकते हैं क्योंकि यह धीरे-धीरे बढ़ता है (लॉग जैसे बहुत (लॉग ... लॉग (एन) ...)) यानी एलजी * (एन)। उदाहरण के लिए: Minimum Spanning Trees (here) और Disjoint Set वन निर्माण।

इसके अलावा

: Davenport-Scinzel sequences

+2

विशेष रूप से संघ को उदाहरण के लिए एल्गोरिदम मिलते हैं। http://www.yucs.org/~gnivasch/alpha/index.html – Joshua

+0

लेकिन यह फ़ंक्शन के विपरीत है, असली फ़ंक्शन के बारे में क्या है? –

3

मैं अन्य जवाब (wrang-wrang द्वारा) "सिद्धांत में" के साथ सहमत हैं।

अभ्यास में एकरमैन बहुत उपयोगी नहीं है, क्योंकि व्यवहार में केवल एक ही एल्गोरिदम जटिलताओं का सामना करना पड़ता है जिसमें 1, एन, एन^2, एन^3, और उनमें से प्रत्येक लॉगएन द्वारा गुणा किया जाता है। (और चूंकि लॉगएन 64 से अधिक नहीं है, इसलिए यह प्रभावी रूप से निरंतर शब्द है।)

बिंदु "अभ्यास में" है, जब तक कि आपकी एल्गोरिदम जटिलता "एन बार बहुत बड़ी न हो", आपको जटिलता की परवाह नहीं है , क्योंकि वास्तविक दुनिया के कारक हावी होंगे। (ओ (इनवर्क्स-एकरमेन) में निष्पादित एक फ़ंक्शन ओ (लॉगएन) समय में निष्पादित फ़ंक्शन से सैद्धांतिक रूप से बेहतर है, लेकिन व्यावहारिक रूप से, आप वास्तविक दुनिया के डेटा के विरुद्ध दो वास्तविक कार्यान्वयन को मापेंगे और जो भी वास्तव में बेहतर प्रदर्शन करेंगे इसके विपरीत, जटिलता सिद्धांत "अभ्यास में मायने रखता है" उदाहरण के लिए एन बनाम एन^2, जहां एल्गोरिदमिक जटिलता प्रभाव वास्तव में किसी भी "वास्तविक दुनिया" प्रभाव को सशक्त करते हैं। मुझे लगता है कि "एन" अभ्यास में महत्वपूर्ण सबसे छोटा उपाय है ।)

+0

दरअसल, सिद्धांत विश्लेषण केवल आपको प्रदर्शन विश्लेषण के लिए आधार प्रदान करता है। –

+0

क्या आप समझा सकते हैं कि लॉगएन 64 से अधिक नहीं है? –

+4

आमतौर पर "लॉग" आधार 2 है। अगर लॉग (एन) 64 है तो इसका मतलब है कि आपके पास डेटा के 2^64 आइटम हैं। अभ्यास में आपके पास जितना अधिक होगा; वास्तव में 64-बिट कंप्यूटर पर आपके पास 64-बिट पॉइंटर्स हैं ताकि आप 2^64 बाइट्स से अधिक आसानी से प्रतिनिधित्व न कर सकें। – Andrey

10

एकरमेन फ़ंक्शन का मूल "उपयोग" यह दिखाने के लिए था कि ऐसे कार्य हैं जो आदिम रिकर्सिव नहीं हैं, यानी पूर्व निर्धारित सीमाओं के साथ केवल लूप के लिए उपयोग करके गणना नहीं की जा सकती है।

एकरमेन फ़ंक्शन ऐसा कार्य है, यह आदिम रिकर्सिव होने के लिए बहुत तेजी से बढ़ता है।

मुझे नहीं लगता कि वास्तव में व्यावहारिक उपयोग हैं, यह उपयोगी होने के लिए बहुत तेजी से बढ़ता है। आप उचित स्थान पर (4,3) से अधिक संख्याओं को स्पष्ट रूप से प्रतिनिधित्व भी नहीं कर सकते हैं।

संबंधित मुद्दे