हाल ही में एकरमैन फ़ंक्शन भाग से जुड़े एक प्रश्न का उत्तर देने के बाद जिसमें एक संख्या के टेट्रेशन की गणना करने के लिए एक फ़ंक्शन शामिल था। जिसने मुझे यह सोचने का नेतृत्व किया कि क्या ऐसा करने का एक और अधिक प्रभावी तरीका था। मैंने अपने आप पर कुछ परीक्षण किया लेकिन मैं मुख्य रूप से इस तथ्य से सीमित हूं कि 5 ^^ 3 = 5^3125 दिया गया 5^3 भी लगभग 10^2 है, जिसका अर्थ है 5^3125 ~ = 10^(3125 * 2/3) लगभग 2000 अंक।क्या टेट्रेशन का कोई प्रभावी कार्यान्वयन है?
समारोह में ही उधार नहीं करता विभाजित और कैसे घातांक किया जाता है की प्रकृति के कारण तरीकों, यानी जीत के लिए:
2 ^^ 5 = 2^(2^(2^(2^2)))) = 2^(2^(2^4)) = 2^(2^16) = 2^65536 ~ = 10^(65536 * 3/10) तो लगभग 20k अंक ...
समस्या की प्रकृति, क्योंकि यह बिजली के पेड़ के शीर्ष पर शुरू होती है और इसे नीचे काम करता है, मुझे तथ्यात्मक के रूप में मारता है। तेजी से एक्सपोनिएशन ऑपरेशन करने के लिए एक फास्ट पावर एल्गोरिदम का उपयोग किया जा सकता है, लेकिन मैं एक्सपोनिएशन ऑपरेशंस की संख्या को कम करने का कोई तरीका नहीं देख पा रहा हूं।
मामले में किसी को भी स्पष्ट नहीं है क्या मैं के बारे में यहाँ बात कर रहा हूँ wiki article है, अनिवार्य रूप से हालांकि tetration है:
एक ^^ b = एक^एक^एक ....^क, ख बार और फिर शुरू करने बिजली के पेड़ के शीर्ष तत्व पर exponentiation और नीचे काम कर रहा है।
एल्गोरिथ्म मैं वर्तमान में उपयोग कर रहा हूँ होगा (अगर मैं वास्तव में मूल्यों चाहते हैं, हालांकि मैं एक गहरे लाल रंग का संस्करण का उपयोग कर रहा हूँ):
long int Tetration(int number, int tetrate)
{
long int product=1;
if(tetrate==0)
return product;
product=number;
while(tetrate>1)
{
product=FastPower(number,product);
tetrate--;
}
return product;
}
किसी भी विचार की सराहना की जाएगी।
मुझे लगता है कि आपको इस बात पर निर्भर करता है कि आपको किस तरह के संख्यात्मक प्रतिनिधित्व की आवश्यकता है। क्या आपको सटीक पूर्णांक प्रतिनिधित्व की आवश्यकता है? या अनुमानित संख्यात्मक (फ़्लोटिंग-पॉइंट) प्रतिनिधित्व पर्याप्त है? – RBarryYoung
यह जिज्ञासा से पूरी तरह से एक प्रश्न है, इसलिए मैं यह देखने के लिए उत्सुक हूं कि आप फ्लोटिंग पॉइंट प्रस्तुति के साथ एक अधिक कुशल एल्गोरिदम कैसे लिख सकते हैं। – JSchlather
मैंने इस पर ध्यान दिया लेकिन जल्दी से एहसास हुआ कि पूर्णांक अंकों की लंबाई की समस्या (जो डेव नीचे बताती है) किसी भी टेट्रेशन फ़ंक्शन आउटपुट के एक्सपोनेंट को भी प्रभावित करती है, केवल एक रिकर्सन कम होती है। असल में, फ़्लोटिंग-पॉइंट एक्सपोनिएशन उत्पादों को संभाल सकता है क्योंकि यह एक LOG प्रारूपित प्रतिनिधित्व है। आईएमओ, कुशलतापूर्वक टेट्रेशन उत्पादों को संभालने के लिए, आपको एक सुपरलॉग आधारित प्रारूप विकसित करने की आवश्यकता होगी। यह मुश्किल लेकिन दिलचस्प लगता है, शायद यह भी योग्य है (मास्टर्स वैसे भी)। – RBarryYoung