पिछले अध्यायों में, हमने Number Theoretic Transform (NTT) का अध्ययन किया, जो एक पॉलीनोमियल (polynomial) का उसके k-th roots of unity पर मूल्यांकन (evaluate) करता है। इसे एक पॉलीनोमियल को उसके कोएफिशिएंट फॉर्म (coefficient form) से उसके पॉइंट-वैल्यू फॉर्म (point-value form) में बदलने के रूप में समझा जा सकता है।
NTT को एक डिग्री-(k−1) पॉलीनोमियल के कोएफिशिएंट वेक्टर को Vandermonde मैट्रिक्स से गुणा करके किया जा सकता है, जिसकी टाइम कॉम्प्लेक्सिटी (time complexity) O(k2) होती है। इस ट्रांसफॉर्मेशन के एक तेज़ और रिकर्सिव (recursive) वर्ज़न का उपयोग करना भी संभव और अधिक दिलचस्प है, जो टाइम कॉम्प्लेक्सिटी को O(klogk) तक कम कर देता है।
इस अध्याय में, हम NTT के इन्वर्स ट्रांसफॉर्मेशन का अध्ययन शुरू करते हैं, जिसे Inverse Number Theoretic Transform, या INTT कहा जाता है। इसका उपयोग किसी पॉलीनोमियल को उसके पॉइंट-वैल्यू फॉर्म से वापस उसके कोएफिशिएंट फॉर्म में बदलने के लिए किया जा सकता है। इस प्रक्रिया को interpolation कहा जाता है।
Lagrange interpolation पर हमारे लेख में, हम पहले ही interpolation करने की एक विधि देख चुके हैं। Lagrange interpolation और Inverse Number Theoretic Transform के उपयोग के बीच दोहरे अंतर हैं: Lagrange interpolation किसी भी बिंदुओं के सेट (set of points) से किया जा सकता है, जबकि INTT केवल k-th roots of unity के सेट पर ही किया जा सकता है। इसके विपरीत, Lagrange interpolation की टाइम कॉम्प्लेक्सिटी हमेशा O(k2) होती है, जबकि INTT को O(klogk) टाइम कॉम्प्लेक्सिटी में किया जा सकता है।
इस अध्याय में, हम:
याद करेंगे कि Vandermonde मैट्रिक्स का उपयोग करके इवैल्यूएशन (evaluation) कैसे किया जा सकता है;
एक इन्वर्स ट्रांसफॉर्मेशन प्रस्तावित करेंगे जो Vandermonde मैट्रिक्स का उपयोग करके ही किया जाता है;
दिखाएंगे कि यह इन्वर्स ट्रांसफॉर्मेशन मूल ट्रांसफॉर्मेशन को पूर्ववत (undo) कर देता है। दूसरे शब्दों में, हम दिखाएंगे कि NTT के माध्यम से इवैल्यूएशन, और उसके बाद INTT के माध्यम से interpolation, पॉलीनोमियल को उसके मूल कोएफिशिएंट फॉर्म में वापस ला देता है।
अभी के लिए, हम डिग्री 3 के पॉलीनोमियल के लिए INTT के साथ काम करेंगे ताकि पाठक गणनाओं (calculations) को अधिक आसानी से समझ सकें।
अगले अध्याय में, हम यह साबित करेंगे कि प्रस्तावित इन्वर्स ट्रांसफॉर्मेशन किसी भी डिग्री के पॉलीनोमियल पर लागू होता है।
रीकैप: कोएफिशिएंट फॉर्म से पॉइंट फॉर्म तक
मान लीजिए कि एक पॉलीनोमियल है
f(x)=a0+a1x+a2x2+a3x3
इस पॉलीनोमियल को कोएफिशिएंट फॉर्म से पॉइंट-वैल्यू फॉर्म में बदलने के लिए, इसे कम से कम 4 बिंदुओं पर इवैल्यूएट करना आवश्यक है।
उदाहरण के लिए, यदि सेट S={1,ω,ω2,ω3} इवैल्यूएशन पॉइंट्स को दर्शाता है, जहाँ ω एक primitive 4th root of unity है, तो इन बिंदुओं पर इवैल्यूएशन इस प्रकार दिए जाते हैं:
जहाँ V(ω) को Vandermonde मैट्रिक्स कहा जाता है, और a कोएफिशिएंट्स को दर्शाने वाला कॉलम वेक्टर (column vector) है। आप इनके बारे में विस्तार से जानने के लिए Vandermonde Matrices पर हमारा लेख देख सकते हैं। एक Vandermonde matrix की यह विशेषता होती है कि इसकी प्रत्येक पंक्ति (row) एक geometric progression (गुणोत्तर श्रेणी) बनाती है, जो संख्याओं का एक क्रम है जिसमें प्रत्येक पद पिछले पद को एक निरंतर अनुपात (constant ratio) से गुणा करके प्राप्त किया जाता है।
ऊपर दिए गए मैट्रिक्स V(ω) में, हम देख सकते हैं कि:
पहली पंक्ति: [1111]→ पहला पद: 1, सार्व अनुपात: 1
दूसरी पंक्ति: [1ωω2ω3]→ पहला पद: 1, सार्व अनुपात: ω
तीसरी पंक्ति: [1ω2ω4ω6]→ पहला पद: 1, सार्व अनुपात: ω2
चौथी पंक्ति: [1ω3ω6ω9]→ पहला पद: 1, सार्व अनुपात: ω3
आइए याद करें कि गुणा y=V(ω)⋅a, f(x) के इवैल्यूएशन कैसे देता है:
इस प्रकार, यदि हमें किसी पॉलीनोमियल का कोएफिशिएंट फॉर्म दिया गया है, जिसे वेक्टर a द्वारा दर्शाया गया है, तो हम a को Vandermonde मैट्रिक्स V(ω) से बाईं ओर गुणा (left-multiplying) करके इसका पॉइंट-वैल्यू फॉर्म प्राप्त कर सकते हैं, जिसे वेक्टर y द्वारा दर्शाया गया है।
लेकिन क्या होगा यदि हमें इसके बजाय इवैल्यूएशन दिए गए हों, यानी वेक्टर y, और कोएफिशिएंट्स की गणना करने के लिए कहा जाए, यानी वेक्टर a?
यह Vandermonde मैट्रिक्स V(ω) के इन्वर्स (inverse) का उपयोग करके किया जा सकता है, जिसे V−1(ω) द्वारा दर्शाया जाता है, निम्नलिखित ऑपरेशन के माध्यम से:
a=V(ω)−1⋅y
हमारा दावा है कि मैट्रिक्स V(ω)−1 इस प्रकार दिया जाता है
ध्यान दें कि V(ω)−1 में भी यह विशेषता है कि इसकी प्रत्येक पंक्ति एक geometric progression बनाती है:
पहली पंक्ति: [1111]→ पहला पद: 1, सार्व अनुपात: 1
दूसरी पंक्ति: [1ω−1ω−2ω−3]→ पहला पद: 1, सार्व अनुपात: ω−1
तीसरी पंक्ति: [1ω−2ω−4ω−6]→ पहला पद: 1, सार्व अनुपात: ω−2
चौथी पंक्ति: [1ω−3ω−6ω−9]→ पहला पद: 1, सार्व अनुपात: ω−3
इसलिए, इस मामले में Vandermonde मैट्रिक्स का इन्वर्स स्वयं एक और Vandermonde मैट्रिक्स है।
निम्नलिखित अनुभागों में, हम 4-th roots of unity का उपयोग करके दिखाएंगे कि इस उदाहरण में हमारा दावा सत्य है। अगले अध्याय में, हम इसे सामान्य रूप से सिद्ध करेंगे।
हम सिद्ध करेंगे कि, k-th roots of unity के मामले में, जब NTT को निम्नलिखित Vandermonde मैट्रिक्स का उपयोग करके प्राप्त किया जाता है,
इन्वर्स Vandermonde मैट्रिक्स को जब किसी दिए गए पॉलीनोमियल के roots of unity पर इवैल्यूएशन के वेक्टर से गुणा किया जाता है, तो यह उस पॉलीनोमियल का कोएफिशिएंट वेक्टर लौटाता है।
V(ω)−1⋅y का इवैल्यूएशन
यह प्रदर्शित करने के लिए कि V(ω)−1 और y के बीच मैट्रिक्स गुणा हमें वापस कोएफिशिएंट वेक्टर a देता है, आइए अपने पहले के उदाहरण का उपयोग करें, जहाँ f(x)=a0+a1x+a2x2+a3x3, S={1,ω,ω2,ω3} और k=4 है।
याद करें कि y, जो S के बिंदुओं पर f(x) के इवैल्यूएशन का वेक्टर है, इस प्रकार दिया गया है:
अब हम दिखाते हैं कि वेक्टर a~ और a बराबर हैं। दूसरे शब्दों में, हम यह दिखाना चाहते हैं कि
a0~a1~a2~a3~=a0,=a1,=a2,=a3.
कोएफिशिएंट्स a0~,a1~,a2~ और a3~ की गणना
आइए दाईं ओर (RHS) पंक्ति-दर-पंक्ति मैट्रिक्स गुणा करें ताकि यह देखा जा सके कि बाईं ओर (LHS) संबंधित कोएफिशिएंट्स कैसे प्राप्त होते हैं। कोएफिशिएंट a0~ के लिए, हम V(ω)−1 की पहली पंक्ति का वेक्टर y के साथ डॉट प्रोडक्ट (dot product) लेते हैं:
पिछले अध्याय से याद करें कि, चूंकि ω एक primitive 4-th root of unity है, इसलिए योग (sum)
k=0∑3ωmk
शून्य के बराबर होता है जब भी m, 4 का गुणज (multiple) नहीं होता है। स्पष्ट रूप से,
k=0∑3ωmk=ωm⋅0+ωm⋅1+ωm⋅2+ωm⋅3=1+ωm+ω2m+ω3m=0
इस कॉन्सेप्ट को विस्तार से समझने के लिए, कृपया Orthogonality of Roots of Unity पर लेख देखें। m के उन मानों को प्रतिस्थापित करने पर जो 4 के गुणज नहीं हैं, हमें निम्नलिखित सर्वसमिकाएँ (identities) प्राप्त होती हैं:
for mfor mfor mfor mfor mfor m=1=2=3=−1=−2=−3→→→→→→1+ω+ω2+ω3=0,1+ω2+ω4+ω6=0,1+ω3+ω6+ω9=0,1+ω−1+ω−2+ω−3=0,1+ω−2+ω−4+ω−6=0,1+ω−3+ω−6+ω−9=0,
इसलिए, a1, a2, और a3 से गुणा होने वाले सभी पद शून्य (vanish) हो जाते हैं, और बचता है:
फिर से, a0,a2,a3 के फैक्टर्स से जुड़े कोष्ठक (parentheses) के भीतर के पद शून्य हो जाते हैं, जिससे बचता है:
a1~=41⋅4a1=a1
अपने आप a2~ और a3~ के लिए गुणा का विस्तार (expand) करने का प्रयास करें और देखें कि वे उसी तर्क के अनुसार कैसे सरल होते हैं जिसका हमने ऊपर उपयोग किया है। आप पाएंगे कि a2~=a2 और a3~=a3 है, जैसा कि अपेक्षित था।
यह इस प्रदर्शन को पूरा करता है कि V(ω)−1⋅y=a है। इसके साथ, हमने दिखाया है कि k=4 के मामले में Vandermonde मैट्रिक्स का इन्वर्स भी एक Vandermonde मैट्रिक्स होता है। k के सामान्य मान (general value) के लिए मामला अगले अध्याय में सिद्ध किया जाएगा।
यह लेख हमारी ZK Book में Number Theoretic Transform पर आधारित एक श्रृंखला का हिस्सा है।