जैसा कि पिछले लेख में देखा गया है, Inverse Number Theoretic Transform (INTT) को NTT की तरह ही एक Vandermonde matrix का उपयोग करके निष्पादित किया जाता है। यह दर्शाता है कि NTT के माध्यम से मूल्यांकन (evaluation) और INTT के माध्यम से इंटरपोलेशन (interpolation) दोनों समान संचालन (operations) हैं।
मूल्यांकन या इंटरपोलेशन के लिए सीधे Vandermonde matrix का उपयोग करने में समस्या यह है कि एक k×k matrix को एक वेक्टर से गुणा करने में O(k2) समय लगता है। सौभाग्य से, जब k-th roots of unity का उपयोग किया जाता है, जहाँ k, 2 की घात (power of 2) है, तो एक तेज़ विधि का उपयोग किया जा सकता है जो मैट्रिक्स गुणन (matrix multiplication) पर निर्भर नहीं करती है, जिससे समय जटिलता घटकर O(klogk) हो जाती है।
NTT के लिए तेज़ विधि को अध्याय “NTT Algorithm by Hand.” में पेश किया गया था। इस अध्याय में, हम INTT के लिए तेज़ विधि का अध्ययन करेंगे।
विचार सरल है: बहुपद (polynomial) इंटरपोलेशन की व्याख्या एक मूल्यांकन के रूप में करना, जिससे NTT के लिए उपयोग की जाने वाली उसी विधि का उपयोग किया जा सके।
मूल्यांकन और इंटरपोलेशन (Evaluation and Interpolation)
संक्षेप में, NTT हमें अधिकतम k−1 डिग्री वाले एक बहुपद को उसके गुणांक (coefficient) रूप से,
a0a1...ak−1
उसके point-value रूप में बदलने की अनुमति देता है,
f(ω0)f(ω1)...f(ωk−1)
बहुपद का k-th roots of unity पर मूल्यांकन करके। इसे मूल्यांकन (evaluation) कहा जाता है।
इंटरपोलेशन (Interpolation) मूल्यांकन के विपरीत है: यह एक बहुपद को उसके point-value रूप से गुणांक रूप में बदलने की प्रक्रिया है।
मूल्यांकन के रूप में इंटरपोलेशन
k-th roots of unity पर मूल्यांकन और इंटरपोलेशन समान संचालन हैं क्योंकि दोनों एक Vandermonde matrix का उपयोग करके निष्पादित किए जाते हैं।
बेहतर ढंग से समझने के लिए, अधिकतम 3 डिग्री वाले एक बहुपद पर विचार करें,
f(x)=a+bx+cx2+dx3,
जिसका 4-th roots of unity पर मूल्यांकन किया गया हो
मूल्यांकन संरचना से प्रेरित होकर, हम 4f(1),4f(ω),4f(ω2) और 4f(ω3) को एक नए बहुपद f~(x) के गुणांकों के रूप में देख सकते हैं, जिसे इस प्रकार परिभाषित किया गया है:
f~(x)=41(f(1)+f(ω)x+f(ω2)x2+f(ω3)x3).
इन संदर्भों में, गुणांक a,b,c और d निम्नलिखित बिंदुओं पर f~(x) के मूल्यांकन हैं:
abcd=f~(1)=f~(ω−1)=f~(ω−2)=f~(ω−3)
इसलिए, हम इंटरपोलेशन की व्याख्या किसी अन्य बहुपद के मूल्यांकन के रूप में कर सकते हैं। महत्वपूर्ण अवलोकन यह है कि inverse NTT को किसी मौलिक रूप से अलग एल्गोरिदम की आवश्यकता नहीं होती है।
एक बार जब point-value निरूपण को एक नए बहुपद के गुणांक वेक्टर के रूप में फिर से व्याख्यायित किया जाता है, तो इंटरपोलेशन, roots of unity के एक क्रमपरिवर्तित (permuted) सेट पर मूल्यांकन बन जाता है। इस अर्थ में, मूल्यांकन और इंटरपोलेशन एक ही संचालन हैं।
Roots of unity के व्युत्क्रमों (inverses) के साथ काम करने से बचना
जैसा कि इस परिवर्तन (transformation) में दिखाया गया है
अधिकतम k−1 डिग्री वाले एक बहुपद, जहाँ k, 2 की घात है, का मूल्यांकन k-th roots of unity पर अध्याय NTT Algorithm by Hand में समझाई गई तेज़ विधि का उपयोग करके किया जा सकता है।
निम्नलिखित का
f~(x)=41(f(1)+f(ω)x+f(ω2)x2+f(ω3)x3)
बिंदुओं f~(1),f~(−1),f~(ω) और f~(−ω) पर मूल्यांकन नीचे दर्शाया गया है।
विचार यह है कि सम (even) और विषम (odd) घातों (powers) को इस प्रकार समूहीकृत किया जाए
f~(x)=41(f(1)+f(ω2)x2)+x(f(ω)+f(ω3)x2)),
और 1 पर f~(x) का मूल्यांकन किया जाए। सबसे अंदरूनी वर्गमूल (square root) के प्रत्येक मूल्यांकन पर, व्यंजक (expression) दो भागों में बंट जाता है, वर्गमूल के प्रत्येक मान के लिए एक। यह तब तक जारी रहता है जब तक कि कोई वर्गमूल नहीं बचता, जिस बिंदु पर प्रक्रिया समाप्त हो जाती है।
जो वही व्यंजक (expressions) हैं जो तेज़ एल्गोरिदम द्वारा प्राप्त किए गए थे।
मुख्य अंतर यह है कि तेज़ एल्गोरिदम O(klogk) समय में चलता है, जबकि सीधे मैट्रिक्स गुणन (matrix multiplication) में O(k2) समय लगता है।
k−1 डिग्री वाले बहुपद
हमने पिछले अनुभाग में 3 डिग्री के बहुपद के लिए जो किया, उसे किसी भी डिग्री के बहुपदों तक बढ़ाया जा सकता है।
मान लीजिए कि हमारे पास एक बहुपद f(x) है जिसका k-th roots of unity पर मूल्यांकन किया गया है, जहाँ k, 2 की घात है:
f(ω0),f(ω1),f(ω2),...,f(ωk−1)
अधिकतम k−1 डिग्री वाले बहुपद f(x) के गुणांकों को प्राप्त करने के लिए, जो इन बिंदुओं से होकर गुजरता है, हम एक नए बहुपद f~(x) को इस प्रकार परिभाषित करते हैं: