बिट-व्युत्क्रम क्रमपरिवर्तन: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Permutation that reverses binary numbers}} thumb|एक [[हैमरस्ले सेट जिसके निर्द...")
 
No edit summary
Line 1: Line 1:
{{Short description|Permutation that reverses binary numbers}}
{{Short description|Permutation that reverses binary numbers}}
[[File:Hammersley set 2D.svg|thumb|एक [[हैमरस्ले सेट]] जिसके निर्देशांक 0 से 255 तक के पूर्णांक और उनके बिट-रिवर्सल हैं]]व्यावहारिक गणित में, बिट-रिवर्सल क्रम[[परिवर्तन]] एक [[अनुक्रम]] का क्रमपरिवर्तन है <math>n</math> आइटम, कहाँ <math>n=2^k</math> [[दो की शक्ति]] है. इसे अनुक्रम के तत्वों को संख्याओं द्वारा अनुक्रमित करके परिभाषित किया गया है <math>0</math> को <math>n-1</math>, इनमें से प्रत्येक संख्या को उसके [[द्विआधारी प्रतिनिधित्व]] (बिल्कुल लंबाई के लिए गद्देदार) द्वारा दर्शाता है <math>k</math>), और प्रत्येक आइटम को उस आइटम पर मैप करना जिसके प्रतिनिधित्व में उल्टे क्रम में समान बिट्स हैं।
[[File:Hammersley set 2D.svg|thumb|एक [[हैमरस्ले सेट]] जिसके निर्देशांक 0 से 255 तक के पूर्णांक और उनके बिट-रिवर्सल हैं]]


समान क्रमपरिवर्तन को दो बार दोहराने से वस्तुओं पर मूल क्रम वापस आ जाता है, इसलिए बिट उलट क्रमपरिवर्तन एक इनवोल्यूशन (गणित) है।


यह क्रमपरिवर्तन केवल सरल सूचकांक गणना करते समय [[रैखिक समय]] में किसी भी अनुक्रम पर लागू किया जा सकता है। इसमें कम-विसंगति अनुक्रमों की पीढ़ी और तेज़ फूरियर परिवर्तनों के मूल्यांकन में अनुप्रयोग हैं।
व्यावहारिक गणित में, बिट-रिवर्सल क्रमपरिवर्तन <math>n</math> वस्तुओं के अनुक्रम का क्रमपरिवर्तन है, जहां <math>n=2^k</math> दो की शक्ति है। इसे अनुक्रम के तत्वों को <math>0</math> से <math>n-1</math> तक की संख्याओं द्वारा अनुक्रमित करके, इनमें से प्रत्येक संख्या को उसके द्विआधारी प्रतिनिधित्व (बिल्कुल लंबाई के लिए गद्देदार) द्वारा दर्शाया जाता है, और प्रत्येक आइटम को उस आइटम पर मैप करना जिसके प्रतिनिधित्व में उल्टे क्रम में समान बिट्स हैं।
 
समान क्रमपरिवर्तन को दो बार दोहराने से वस्तुओं पर मूल क्रम वापस आ जाता है, इसलिए बिट विपरीत क्रमपरिवर्तन एक इनवोल्यूशन (गणित) है।
 
यह क्रमपरिवर्तन केवल सरल सूचकांक गणना करते समय [[रैखिक समय]] में किसी भी अनुक्रम पर प्रयुक्त किया जा सकता है। इसमें कम-विसंगति अनुक्रमों की पीढ़ी और तेज़ फूरियर परिवर्तनों के मूल्यांकन में अनुप्रयोग हैं।


==उदाहरण==
==उदाहरण==
आठ अक्षरों के क्रम पर विचार करें{{not a typo|abcdefgh}}. उनके सूचकांक बाइनरी नंबर 000, 001, 010, 011, 100, 101, 110 और 111 हैं, जिन्हें उलटने पर 000, 100, 010, 110, 001, 101, 011 और 111 हो जाते हैं।
आठ अक्षरों एबीसीडीईएफजीएच के अनुक्रम पर विचार करें। उनके सूचकांक बाइनरी नंबर 000, 001, 010, 011, 100, 101, 110 और 111 हैं, जिन्हें विपरीत करने पर 000, 100, 010, 110, 001, 101, 011 और 111 हो जाते हैं। इस प्रकार, अक्षर a स्थिति 000 को उसी स्थिति (000) पर मैप किया जाता है, स्थिति 001 में अक्षर b को पांचवें स्थान (जिसकी संख्या 100 है) पर मैप किया जाता है, आदि, जिससे नया अनुक्रम एईसीजीबीएफडीएच मिलता है। इस नए अनुक्रम पर समान क्रमपरिवर्तन दोहराते हुए प्रारंभिक अनुक्रम पर लौट आता है।
इस प्रकार, स्थिति 000 में अक्षर a को उसी स्थिति (000) पर मैप किया जाता है, स्थिति 001 में अक्षर b को पांचवें स्थान (जिसकी संख्या 100 है) आदि पर मैप किया जाता है, जिससे नया अनुक्रम मिलता है।{{not a typo|aecgbfdh}}. इस नए अनुक्रम पर समान क्रमपरिवर्तन दोहराते हुए प्रारंभिक अनुक्रम पर लौट आता है।


सूचकांक संख्याओं को दशमलव में लिखना (लेकिन, जैसा कि ऊपर है, क्रमपरिवर्तन के लिए 1 की अधिक पारंपरिक शुरुआत के बजाय स्थिति 0 से शुरू करना), बिट-रिवर्सल क्रमपरिवर्तन <math>n=2^k</math> आइटम, के लिए <math>k=0,1,2, 3, \dots</math>, हैं:<ref>{{cite OEIS|A030109|mode=cs2}}</ref>
सूचकांक संख्याओं को दशमलव में लिखना (किन्तु, जैसा ऊपर बताया गया है, क्रमपरिवर्तन के लिए 1 की अधिक पारंपरिक प्रारंभ के अतिरिक्त स्थिति 0 से प्रारंभ करना), <math>n=2^k</math> आइटम पर बिट-रिवर्सल क्रमपरिवर्तन,<math>k=0,1,2, 3, \dots</math>हैं:<ref>{{cite OEIS|A030109|mode=cs2}}</ref>
{| class="wikitable" style="text-align: center;"
{| class="wikitable" style="text-align: center;"
|-
|-
! <math>k</math> !! <math>n=2^k</math> !! permutation
! <math>k</math> !! <math>n=2^k</math> !!क्रमपरिवर्तन
|-
|-
| 0 || 1 || 0
| 0 || 1 || 0
Line 25: Line 27:
| 4 || 16 || 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15
| 4 || 16 || 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15
|}
|}
इस अनुक्रम में प्रत्येक क्रमपरिवर्तन को संख्याओं के दो अनुक्रमों को जोड़कर उत्पन्न किया जा सकता है: पिछला क्रमपरिवर्तन, जिसके मान दोगुने हो जाते हैं, और वही क्रम जिसमें प्रत्येक मान में एक की वृद्धि होती है।
इस प्रकार, उदाहरण के लिए लंबाई-4 क्रमपरिवर्तन को दोगुना करना {{nowrap|0 2 1 3}} देता है {{nowrap|0 4 2 6}}, एक जोड़ने पर प्राप्त होता है {{nowrap|1 5 3 7}}, और इन दो अनुक्रमों को संयोजित करने से लंबाई-8 क्रमपरिवर्तन प्राप्त होता है {{nowrap|0 4 2 6 1 5 3 7}}.<ref name="karp"/>




इस अनुक्रम में प्रत्येक क्रमपरिवर्तन को संख्याओं के दो अनुक्रमों को जोड़कर उत्पन्न किया जा सकता है: पिछला क्रमपरिवर्तन, जिसके मान दोगुने हो जाते हैं, और वही क्रम जिसमें प्रत्येक मान में एक की वृद्धि होती है। इस प्रकार, उदाहरण के लिए लंबाई-4 क्रमपरिवर्तन 0 2 1 3 को दोगुना करने पर 0 4 2 6 मिलता है, एक जोड़ने पर 1 5 3 7 मिलता है, और इन दो अनुक्रमों को जोड़ने पर लंबाई-8 क्रमपरिवर्तन 0 4 2 6 1 5 3 7 मिलता है<ref name="karp" />
==सामान्यीकरण==
==सामान्यीकरण==
[[मूलांक]] का सामान्यीकरण <math>b</math> अभ्यावेदन, के लिए <math>b > 2</math>, और करने के लिए <math>n=b^k</math>, एक अंक-उलट क्रमपरिवर्तन है, जिसमें आधार-<math>b</math> क्रमपरिवर्तित सूचकांक प्राप्त करने के लिए प्रत्येक तत्व के सूचकांक के अंकों को उलट दिया जाता है। इसी विचार को [[मिश्रित मूलांक]] संख्या प्रणालियों के लिए भी सामान्यीकृत किया जा सकता है। ऐसे मामलों में, अंक-उलट क्रमपरिवर्तन को एक साथ प्रत्येक आइटम के अंकों और संख्या प्रणाली के आधारों को उलट देना चाहिए, ताकि प्रत्येक उलटा अंक उसके आधार द्वारा परिभाषित सीमा के भीतर रहे।<ref>{{citation
<math>b > 2</math> और <math>n=b^k</math> के लिए रेडिक्स <math>b</math> अभ्यावेदन का सामान्यीकरण, एक अंक-व्युत्क्रम क्रमपरिवर्तन है, जिसमें क्रमबद्ध सूचकांक प्राप्त करने के लिए प्रत्येक तत्व के सूचकांक के आधार-<math>b</math> अंकों को व्युत्क्रम दिया जाता है। इसी विचार को मिश्रित मूलांक संख्या प्रणालियों के लिए भी सामान्यीकृत किया जा सकता है। ऐसे स्थितियों में, अंक-व्युत्क्रम क्रमपरिवर्तन को एक साथ प्रत्येक आइटम के अंकों और संख्या प्रणाली के आधारों को व्युत्क्रम देना चाहिए, ताकि प्रत्येक उलटा अंक उसके आधार द्वारा परिभाषित सीमा के अंदर रहे।<ref>{{citation
  | last = Elster | first = Anne C.
  | last = Elster | first = Anne C.
  | contribution = Fast bit-reversal algorithms
  | contribution = Fast bit-reversal algorithms
Line 38: Line 39:
  | year = 1989| s2cid = 15028026
  | year = 1989| s2cid = 15028026
  }}</ref>
  }}</ref>
क्रमपरिवर्तन जो उनके सूचकांकों के द्विआधारी प्रतिनिधित्व के भीतर बिट्स के सन्निहित ब्लॉकों को उलट कर बिट-रिवर्सल क्रमपरिवर्तन को सामान्यीकृत करते हैं, का उपयोग डेटा के दो समान-लंबाई अनुक्रमों को जगह में जोड़ने के लिए किया जा सकता है।<ref>{{citation
 
क्रमपरिवर्तन जो उनके सूचकांकों के द्विआधारी प्रतिनिधित्व के अंदर बिट्स के सन्निहित ब्लॉकों को विपरीत कर बिट-रिवर्सल क्रमपरिवर्तन को सामान्यीकृत करते हैं, का उपयोग डेटा के दो समान-लंबाई अनुक्रमों को जगह में जोड़ने के लिए किया जा सकता है।<ref>{{citation
  | last1 = Yang | first1 = Qingxuan
  | last1 = Yang | first1 = Qingxuan
  | last2 = Ellis | first2 = John
  | last2 = Ellis | first2 = John
Line 52: Line 54:
  | year = 2013| s2cid = 14672841
  | year = 2013| s2cid = 14672841
  }}.</ref>
  }}.</ref>
मनमानी लंबाई के अनुक्रमों के लिए बिट-रिवर्सल क्रमपरिवर्तन के दो विस्तार हैं। ये एक्सटेंशन उन अनुक्रमों के लिए बिट-रिवर्सल के साथ मेल खाते हैं जिनकी लंबाई 2 की शक्ति है, और उनका उद्देश्य [[कक्ज़मर्ज़ विधि]] के कुशल संचालन के लिए अनुक्रम में आसन्न वस्तुओं को अलग करना है। इनमें से पहला एक्सटेंशन, जिसे कुशल ऑर्डरिंग कहा जाता है,<ref>{{citation|last1=Herman|first1=Gabor T.|author1-link=Gabor Herman|title=Fundamentals of Computerized Tomography|url=https://archive.org/details/fundamentalscomp00herm|url-access=limited|date=2009|publisher=Springer|location=London|isbn=978-1-85233-617-2|page=[https://archive.org/details/fundamentalscomp00herm/page/n216 209]|edition=2nd}}</ref> मिश्रित संख्याओं पर कार्य करता है, और यह संख्या को उसके अभाज्य घटकों में विघटित करने पर आधारित है।


दूसरा एक्सटेंशन, जिसे ईबीआर (विस्तारित बिट-रिवर्सल) कहा जाता है, मूल रूप से बिट-रिवर्सल के समान है। आकार की एक श्रृंखला दी गई है <math>n</math>, ईबीआर श्रेणी में संख्याओं के क्रमपरिवर्तन के साथ सरणी को भरता है <math>0\ldots n-1</math> रैखिक समय में. क्रमिक संख्याओं को क्रमपरिवर्तन में कम से कम से अलग किया जाता है <math>\lfloor n/4\rfloor</math> पद.<ref>{{citation|last1=Gordon|first1=Dan|title=A derandomization approach to recovering bandlimited signals across a wide range of random sampling rates|journal=Numerical Algorithms|volume=77|issue=4|pages=1141–1157|date=June 2017|doi=10.1007/s11075-017-0356-3|s2cid=254889989 }}</ref>
इच्छानुसार लंबाई के अनुक्रमों के लिए बिट-रिवर्सल क्रमपरिवर्तन के दो विस्तार हैं। ये विस्तार उन अनुक्रमों के लिए बिट-रिवर्सल के साथ मेल खाते हैं जिनकी लंबाई 2 की शक्ति है, और उनका उद्देश्य [[कक्ज़मर्ज़ विधि]] के कुशल संचालन के लिए अनुक्रम में आसन्न वस्तुओं को अलग करना है। इनमें से पहला विस्तार , जिसे कुशल ऑर्डरिंग कहा जाता है,<ref>{{citation|last1=Herman|first1=Gabor T.|author1-link=Gabor Herman|title=Fundamentals of Computerized Tomography|url=https://archive.org/details/fundamentalscomp00herm|url-access=limited|date=2009|publisher=Springer|location=London|isbn=978-1-85233-617-2|page=[https://archive.org/details/fundamentalscomp00herm/page/n216 209]|edition=2nd}}</ref> मिश्रित संख्याओं पर कार्य करता है, और यह संख्या को उसके अभाज्य घटकों में विघटित करने पर आधारित है।




दूसरा विस्तार , जिसे ईबीआर (विस्तारित बिट-रिवर्सल) कहा जाता है, मूल रूप से बिट-रिवर्सल के समान है। आकार <math>n</math> की एक सरणी को देखते हुए, ईबीआर रैखिक समय में श्रेणी <math>0\ldots n-1</math> में संख्याओं के क्रमपरिवर्तन के साथ सरणी को भरता है। क्रमिक संख्याओं को क्रमपरिवर्तन में कम से कम <math>\lfloor n/4\rfloor</math> स्थानों से अलग किया जाता है।<ref>{{citation|last1=Gordon|first1=Dan|title=A derandomization approach to recovering bandlimited signals across a wide range of random sampling rates|journal=Numerical Algorithms|volume=77|issue=4|pages=1141–1157|date=June 2017|doi=10.1007/s11075-017-0356-3|s2cid=254889989 }}</ref>
==अनुप्रयोग==
==अनुप्रयोग==
रेडिक्स-2 कूली-टुकी एफएफटी एल्गोरिदम के लिए बिट रिवर्सल सबसे महत्वपूर्ण है, जहां एल्गोरिदम के पुनरावर्ती चरण, जगह-जगह काम करते हुए, इनपुट या आउटपुट में थोड़ा उलटफेर करते हैं। इसी प्रकार, मिश्रित-मूलांक कूली-टुकी एफएफटी में मिश्रित-मूलांक अंक उत्क्रमण उत्पन्न होता है।<ref>B. Gold and C. M. Rader, ''Digital Processing of Signals'' (New York: McGraw–Hill, 1969).</ref>
रेडिक्स-2 कूली-टुकी एफएफटी एल्गोरिदम के लिए बिट रिवर्सल सबसे महत्वपूर्ण है, जहां एल्गोरिदम के पुनरावर्ती चरण, जगह-जगह काम करते हुए, इनपुट या आउटपुट में थोड़ा उतार-चढ़ाव करते हैं। इसी प्रकार, मिश्रित-मूलांक कूली-टुकी एफएफटी में मिश्रित-मूलांक अंक उत्क्रमण उत्पन्न होता है।<ref>B. Gold and C. M. Rader, ''Digital Processing of Signals'' (New York: McGraw–Hill, 1969).</ref>
 
वितरित गणना में निचली सीमाएं तैयार करने के लिए बिट रिवर्सल क्रमपरिवर्तन का भी उपयोग किया गया है।<ref>{{citation
वितरित गणना में निचली सीमाएं तैयार करने के लिए बिट रिवर्सल क्रमपरिवर्तन का भी उपयोग किया गया है।<ref>{{citation
  | last1 = Frederickson | first1 = Greg N.
  | last1 = Frederickson | first1 = Greg N.
Line 71: Line 74:
  | doi-access = free
  | doi-access = free
  }}.</ref>
  }}.</ref>
[[वैन डेर कॉरपुट अनुक्रम]], [[इकाई अंतराल]] में संख्याओं का एक कम-विसंगति अनुक्रम, बिट-रिवर्सल क्रमपरिवर्तन के सूचकांकों को [[निश्चित-बिंदु अंकगणित]] | डायडिक तर्कसंगत संख्याओं के निश्चित-बिंदु बाइनरी प्रतिनिधित्व के रूप में पुन: व्याख्या करके बनाया गया है।
[[वैन डेर कॉरपुट अनुक्रम]], [[इकाई अंतराल]] में संख्याओं का एक कम-विसंगति अनुक्रम, बिट-रिवर्सल क्रमपरिवर्तन के सूचकांकों को [[निश्चित-बिंदु अंकगणित]] | डायडिक तर्कसंगत संख्याओं के निश्चित-बिंदु बाइनरी प्रतिनिधित्व के रूप में पुन: व्याख्या करके बनाया गया है।


बिट-रिवर्सल क्रमपरिवर्तन का उपयोग अक्सर गतिशील डेटा संरचनाओं पर निचली सीमाएं खोजने में किया जाता है। उदाहरण के लिए, कुछ मान्यताओं के अधीन, बीच के पूर्णांकों को देखने की लागत <math>0</math> और <math>n-1</math>, समावेशी, उन मानों को धारण करने वाले किसी भी [[बाइनरी सर्च ट्री]] में है <math>\Omega(n \log n)</math> जब उन नंबरों को बिट-उलटे क्रम में पूछा जाता है। यह सीमा स्पले पेड़ों जैसे पेड़ों पर भी लागू होती है जिन्हें एक्सेस के बीच अपने नोड्स को पुनर्व्यवस्थित करने की अनुमति होती है।<ref>{{citation
बिट-रिवर्सल क्रमपरिवर्तन का उपयोग अक्सर गतिशील डेटा संरचनाओं पर निचली सीमाएं खोजने में किया जाता है। उदाहरण के लिए, कुछ मान्यताओं के अधीन, उन मानों को रखने वाले किसी भी बाइनरी सर्च ट्री में, <math>0</math> और <math>n-1</math> के बीच पूर्णांकों को देखने की निवेश, <math>\Omega(n \log n)</math> है, जब उन संख्याओं के बारे में पूछताछ की जाती है बिट-विपरीत क्रम। यह सीमा छींटदार पेड़ों जैसे पेड़ों पर भी प्रयुक्त होती है जिन्हें एक्सेस के बीच अपने नोड्स को पुनर्व्यवस्थित करने की अनुमति होती है<ref>{{citation
  | last1 = Wilber | first1 = Robert
  | last1 = Wilber | first1 = Robert
  | contribution = Lower Bounds for Accessing Binary Search Trees With Rotations
  | contribution = Lower Bounds for Accessing Binary Search Trees With Rotations
Line 83: Line 87:
  | isbn = 0-8186-0740-8
  | isbn = 0-8186-0740-8
  }}.</ref>
  }}.</ref>
 
==एल्गोरिदम                                                               ==
 
मुख्य रूप से फास्ट फूरियर ट्रांसफॉर्म एल्गोरिदम के महत्व के कारण, अनुक्रम में बिट-रिवर्सल क्रमपरिवर्तन प्रयुक्त करने के लिए विभिन्न कुशल एल्गोरिदम तैयार किए गए हैं।<ref name="karp">{{citation
==एल्गोरिदम==
मुख्य रूप से फास्ट फूरियर ट्रांसफॉर्म एल्गोरिदम के महत्व के कारण, अनुक्रम में बिट-रिवर्सल क्रमपरिवर्तन लागू करने के लिए कई कुशल एल्गोरिदम तैयार किए गए हैं।<ref name="karp">{{citation
  | last = Karp | first = Alan H.
  | last = Karp | first = Alan H.
  | doi = 10.1137/1038001
  | doi = 10.1137/1038001
Line 97: Line 99:
  | year = 1996| citeseerx = 10.1.1.24.2913
  | year = 1996| citeseerx = 10.1.1.24.2913
  }}. Karp surveys and compares 30 different algorithms for bit reversal, developed between 1965 and the 1996 publication of his survey.</ref>
  }}. Karp surveys and compares 30 different algorithms for bit reversal, developed between 1965 and the 1996 publication of his survey.</ref>
क्योंकि बिट-रिवर्सल क्रमपरिवर्तन एक इनवोल्यूशन है, इसे तत्वों के जोड़े को स्वैप करके [[इन-प्लेस एल्गोरिदम]] (डेटा को किसी अन्य सरणी में कॉपी किए बिना) आसानी से निष्पादित किया जा सकता है। आमतौर पर एल्गोरिथ्म विश्लेषण में उपयोग की जाने वाली [[रैंडम-एक्सेस मशीन]] में, एक सरल एल्गोरिदम जो इनपुट क्रम में इंडेक्स को स्कैन करता है और जब भी स्कैन एक इंडेक्स का सामना करता है जिसका रिवर्सल एक बड़ी संख्या है, तो स्वैप होता है जो डेटा चाल की एक रैखिक संख्या निष्पादित करेगा।<ref name="cg98"/>हालाँकि, प्रत्येक सूचकांक के उत्क्रमण की गणना करने के लिए गैर-स्थिर संख्या में कदम उठाने पड़ सकते हैं। वैकल्पिक एल्गोरिदम केवल सरल सूचकांक गणनाओं का उपयोग करते हुए रैखिक समय में थोड़ा उलट क्रमपरिवर्तन कर सकते हैं।<ref>{{citation
 
क्योंकि बिट-रिवर्सल क्रमपरिवर्तन एक इनवोल्यूशन है, इसे तत्वों के जोड़े को स्वैप करके [[इन-प्लेस एल्गोरिदम]] (डेटा को किसी अन्य सरणी में कॉपी किए बिना) सरलता से निष्पादित किया जा सकता है। समान्य रूप से  एल्गोरिथ्म विश्लेषण में उपयोग की जाने वाली [[रैंडम-एक्सेस मशीन]] में, एक सरल एल्गोरिदम जो इनपुट क्रम में इंडेक्स को स्कैन करता है और जब भी स्कैन एक इंडेक्स का सामना करता है जिसका रिवर्सल एक बड़ी संख्या है, तो स्वैप होता है जो डेटा चाल की एक रैखिक संख्या निष्पादित करेगा।<ref name="cg98" /> चूँकि , प्रत्येक सूचकांक के उत्क्रमण की गणना करने के लिए गैर-स्थिर संख्या में कदम उठाने पड़ सकते हैं। वैकल्पिक एल्गोरिदम केवल सरल सूचकांक गणनाओं का उपयोग करते हुए रैखिक समय में थोड़ा विपरीत क्रमपरिवर्तन कर सकते हैं।<ref>{{citation
  | last1 = Jeong | first1 = Jechang
  | last1 = Jeong | first1 = Jechang
  | last2 = Williams | first2 = W.J.
  | last2 = Williams | first2 = W.J.
Line 106: Line 109:
  | volume = 3
  | volume = 3
  | year = 1990| s2cid = 122373780
  | year = 1990| s2cid = 122373780
  }}.</ref> क्योंकि गणना के भाग के रूप में बिट-रिवर्सल क्रमपरिवर्तन को कई बार दोहराया जा सकता है, इसलिए एल्गोरिदम के चरणों को अलग करना सहायक हो सकता है जो क्रमपरिवर्तन का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले सूचकांक डेटा की गणना करते हैं (उदाहरण के लिए, दोहरीकरण और संयोजन विधि का उपयोग करके) वे चरण जो डेटा को क्रमबद्ध करने के लिए इस गणना के परिणामों का उपयोग करते हैं (उदाहरण के लिए, डेटा इंडेक्स को क्रम में स्कैन करके और जब भी स्वैप किया गया स्थान वर्तमान इंडेक्स से अधिक होता है, या अधिक परिष्कृत वेक्टर I/O|वेक्टर का उपयोग करके स्वैप निष्पादित करते हैं) बिखराव-इकट्ठा संचालन)।<ref name="karp"/>
  }}.</ref> क्योंकि गणना के भाग के रूप में बिट-रिवर्सल क्रमपरिवर्तन को विभिन्न बार दोहराया जा सकता है, इसलिए एल्गोरिदम के चरणों को अलग करना सहायक हो सकता है जो क्रमपरिवर्तन का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले सूचकांक डेटा की गणना करते हैं (उदाहरण के लिए, दोहरीकरण और संयोजन विधि का उपयोग करके) वे चरण जो डेटा को क्रमबद्ध करने के लिए इस गणना के परिणामों का उपयोग करते हैं (उदाहरण के लिए, डेटा इंडेक्स को क्रम में स्कैन करके और जब भी स्वैप किया गया स्थान वर्तमान इंडेक्स से अधिक होता है, या अधिक परिष्कृत वेक्टर स्कैटर-संग्रह संचालन का उपयोग करके स्वैप निष्पादित करते हैं) .<ref name="karp" />


एक और विचार जो इन एल्गोरिदम के प्रदर्शन के लिए और भी महत्वपूर्ण है, वह है रनिंग टाइम पर मेमोरी पदानुक्रम का प्रभाव। इस प्रभाव के कारण, अधिक परिष्कृत एल्गोरिदम जो मेमोरी की ब्लॉक संरचना पर विचार करते हैं, इस अनुभवहीन स्कैन से तेज़ हो सकते हैं।<ref name="karp"/><ref name="cg98">{{citation|last1=Carter|first1=Larry|first2=Kang Su|last2=Gatlin|contribution=Towards an optimal bit-reversal permutation program|title=Proceedings of the 39th Annual Symposium on Foundations of Computer Science (FOCS)|pages=544–553|year=1998|doi=10.1109/SFCS.1998.743505|title-link=Symposium on Foundations of Computer Science|isbn=978-0-8186-9172-0|citeseerx=10.1.1.46.9319|s2cid=14307262 }}.</ref> इन तकनीकों का एक विकल्प विशेष कंप्यूटर हार्डवेयर है जो मेमोरी को सामान्य और बिट-उलटे क्रम में एक्सेस करने की अनुमति देता है।<ref>{{citation
एक और विचार जो इन एल्गोरिदम के प्रदर्शन के लिए और भी महत्वपूर्ण है, वह है रनिंग टाइम पर मेमोरी पदानुक्रम का प्रभाव। इस प्रभाव के कारण, अधिक परिष्कृत एल्गोरिदम जो मेमोरी की ब्लॉक संरचना पर विचार करते हैं, इस अनुभवहीन स्कैन से तेज़ हो सकते हैं।<ref name="karp" /><ref name="cg98">{{citation|last1=Carter|first1=Larry|first2=Kang Su|last2=Gatlin|contribution=Towards an optimal bit-reversal permutation program|title=Proceedings of the 39th Annual Symposium on Foundations of Computer Science (FOCS)|pages=544–553|year=1998|doi=10.1109/SFCS.1998.743505|title-link=Symposium on Foundations of Computer Science|isbn=978-0-8186-9172-0|citeseerx=10.1.1.46.9319|s2cid=14307262 }}.</ref> इन तकनीकों का एक विकल्प विशेष कंप्यूटर हार्डवेयर है जो मेमोरी को सामान्य और बिट-उलटे क्रम में एक्सेस करने की अनुमति देता है।<ref>{{citation
  | last1 = Harley | first1 = T. R.
  | last1 = Harley | first1 = T. R.
  | last2 = Maheshwaramurthy | first2 = G. P.
  | last2 = Maheshwaramurthy | first2 = G. P.
Line 119: Line 122:
  | year = 2004| s2cid = 10043478
  | year = 2004| s2cid = 10043478
  }}.</ref>
  }}.</ref>
उच्च-प्रदर्शन कंप्यूटिंग क्षेत्रों में यूनिप्रोसेसर और मल्टीप्रोसेसर दोनों में बिट-रिवर्सल के प्रदर्शन सुधार पर गंभीरता से ध्यान दिया गया है। क्योंकि आर्किटेक्चर-अवेयर एल्गोरिदम विकास कैश, टीएलबी और मल्टीकोर सहित हार्डवेयर और सिस्टम सॉफ़्टवेयर संसाधनों का सर्वोत्तम उपयोग कर सकता है, जिससे गणना में काफी तेजी आती है।<ref>{{citation
 
उच्च-प्रदर्शन कंप्यूटिंग क्षेत्रों में यूनिप्रोसेसर और मल्टीप्रोसेसर दोनों में बिट-रिवर्सल के प्रदर्शन सुधार पर गंभीरता से ध्यान दिया गया है। क्योंकि आर्किटेक्चर-अवेयर एल्गोरिदम विकास कैश, टीएलबी और मल्टीकोर सहित हार्डवेयर और सिस्टम सॉफ़्टवेयर संसाधनों का सर्वोत्तम उपयोग कर सकता है, जिससे गणना में अधिक तेजी आती है।<ref>{{citation
  | last1 = Zhang | first1 = Zhao
  | last1 = Zhang | first1 = Zhao
  | last2 = Zhang | first2 = Xiaodong
  | last2 = Zhang | first2 = Xiaodong
Line 130: Line 134:
  | volume = 22
  | volume = 22
  | year = 2000}}</ref>
  | year = 2000}}</ref>





Revision as of 09:32, 24 November 2023

एक हैमरस्ले सेट जिसके निर्देशांक 0 से 255 तक के पूर्णांक और उनके बिट-रिवर्सल हैं


व्यावहारिक गणित में, बिट-रिवर्सल क्रमपरिवर्तन वस्तुओं के अनुक्रम का क्रमपरिवर्तन है, जहां दो की शक्ति है। इसे अनुक्रम के तत्वों को से तक की संख्याओं द्वारा अनुक्रमित करके, इनमें से प्रत्येक संख्या को उसके द्विआधारी प्रतिनिधित्व (बिल्कुल लंबाई के लिए गद्देदार) द्वारा दर्शाया जाता है, और प्रत्येक आइटम को उस आइटम पर मैप करना जिसके प्रतिनिधित्व में उल्टे क्रम में समान बिट्स हैं।

समान क्रमपरिवर्तन को दो बार दोहराने से वस्तुओं पर मूल क्रम वापस आ जाता है, इसलिए बिट विपरीत क्रमपरिवर्तन एक इनवोल्यूशन (गणित) है।

यह क्रमपरिवर्तन केवल सरल सूचकांक गणना करते समय रैखिक समय में किसी भी अनुक्रम पर प्रयुक्त किया जा सकता है। इसमें कम-विसंगति अनुक्रमों की पीढ़ी और तेज़ फूरियर परिवर्तनों के मूल्यांकन में अनुप्रयोग हैं।

उदाहरण

आठ अक्षरों एबीसीडीईएफजीएच के अनुक्रम पर विचार करें। उनके सूचकांक बाइनरी नंबर 000, 001, 010, 011, 100, 101, 110 और 111 हैं, जिन्हें विपरीत करने पर 000, 100, 010, 110, 001, 101, 011 और 111 हो जाते हैं। इस प्रकार, अक्षर a स्थिति 000 को उसी स्थिति (000) पर मैप किया जाता है, स्थिति 001 में अक्षर b को पांचवें स्थान (जिसकी संख्या 100 है) पर मैप किया जाता है, आदि, जिससे नया अनुक्रम एईसीजीबीएफडीएच मिलता है। इस नए अनुक्रम पर समान क्रमपरिवर्तन दोहराते हुए प्रारंभिक अनुक्रम पर लौट आता है।

सूचकांक संख्याओं को दशमलव में लिखना (किन्तु, जैसा ऊपर बताया गया है, क्रमपरिवर्तन के लिए 1 की अधिक पारंपरिक प्रारंभ के अतिरिक्त स्थिति 0 से प्रारंभ करना), आइटम पर बिट-रिवर्सल क्रमपरिवर्तन,हैं:[1]

क्रमपरिवर्तन
0 1 0
1 2 0 1
2 4 0 2 1 3
3 8 0 4 2 6 1 5 3 7
4 16 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15


इस अनुक्रम में प्रत्येक क्रमपरिवर्तन को संख्याओं के दो अनुक्रमों को जोड़कर उत्पन्न किया जा सकता है: पिछला क्रमपरिवर्तन, जिसके मान दोगुने हो जाते हैं, और वही क्रम जिसमें प्रत्येक मान में एक की वृद्धि होती है। इस प्रकार, उदाहरण के लिए लंबाई-4 क्रमपरिवर्तन 0 2 1 3 को दोगुना करने पर 0 4 2 6 मिलता है, एक जोड़ने पर 1 5 3 7 मिलता है, और इन दो अनुक्रमों को जोड़ने पर लंबाई-8 क्रमपरिवर्तन 0 4 2 6 1 5 3 7 मिलता है[2]

सामान्यीकरण

और के लिए रेडिक्स अभ्यावेदन का सामान्यीकरण, एक अंक-व्युत्क्रम क्रमपरिवर्तन है, जिसमें क्रमबद्ध सूचकांक प्राप्त करने के लिए प्रत्येक तत्व के सूचकांक के आधार- अंकों को व्युत्क्रम दिया जाता है। इसी विचार को मिश्रित मूलांक संख्या प्रणालियों के लिए भी सामान्यीकृत किया जा सकता है। ऐसे स्थितियों में, अंक-व्युत्क्रम क्रमपरिवर्तन को एक साथ प्रत्येक आइटम के अंकों और संख्या प्रणाली के आधारों को व्युत्क्रम देना चाहिए, ताकि प्रत्येक उलटा अंक उसके आधार द्वारा परिभाषित सीमा के अंदर रहे।[3]

क्रमपरिवर्तन जो उनके सूचकांकों के द्विआधारी प्रतिनिधित्व के अंदर बिट्स के सन्निहित ब्लॉकों को विपरीत कर बिट-रिवर्सल क्रमपरिवर्तन को सामान्यीकृत करते हैं, का उपयोग डेटा के दो समान-लंबाई अनुक्रमों को जगह में जोड़ने के लिए किया जा सकता है।[4]

इच्छानुसार लंबाई के अनुक्रमों के लिए बिट-रिवर्सल क्रमपरिवर्तन के दो विस्तार हैं। ये विस्तार उन अनुक्रमों के लिए बिट-रिवर्सल के साथ मेल खाते हैं जिनकी लंबाई 2 की शक्ति है, और उनका उद्देश्य कक्ज़मर्ज़ विधि के कुशल संचालन के लिए अनुक्रम में आसन्न वस्तुओं को अलग करना है। इनमें से पहला विस्तार , जिसे कुशल ऑर्डरिंग कहा जाता है,[5] मिश्रित संख्याओं पर कार्य करता है, और यह संख्या को उसके अभाज्य घटकों में विघटित करने पर आधारित है।


दूसरा विस्तार , जिसे ईबीआर (विस्तारित बिट-रिवर्सल) कहा जाता है, मूल रूप से बिट-रिवर्सल के समान है। आकार की एक सरणी को देखते हुए, ईबीआर रैखिक समय में श्रेणी में संख्याओं के क्रमपरिवर्तन के साथ सरणी को भरता है। क्रमिक संख्याओं को क्रमपरिवर्तन में कम से कम स्थानों से अलग किया जाता है।[6]

अनुप्रयोग

रेडिक्स-2 कूली-टुकी एफएफटी एल्गोरिदम के लिए बिट रिवर्सल सबसे महत्वपूर्ण है, जहां एल्गोरिदम के पुनरावर्ती चरण, जगह-जगह काम करते हुए, इनपुट या आउटपुट में थोड़ा उतार-चढ़ाव करते हैं। इसी प्रकार, मिश्रित-मूलांक कूली-टुकी एफएफटी में मिश्रित-मूलांक अंक उत्क्रमण उत्पन्न होता है।[7]

वितरित गणना में निचली सीमाएं तैयार करने के लिए बिट रिवर्सल क्रमपरिवर्तन का भी उपयोग किया गया है।[8]

वैन डेर कॉरपुट अनुक्रम, इकाई अंतराल में संख्याओं का एक कम-विसंगति अनुक्रम, बिट-रिवर्सल क्रमपरिवर्तन के सूचकांकों को निश्चित-बिंदु अंकगणित | डायडिक तर्कसंगत संख्याओं के निश्चित-बिंदु बाइनरी प्रतिनिधित्व के रूप में पुन: व्याख्या करके बनाया गया है।

बिट-रिवर्सल क्रमपरिवर्तन का उपयोग अक्सर गतिशील डेटा संरचनाओं पर निचली सीमाएं खोजने में किया जाता है। उदाहरण के लिए, कुछ मान्यताओं के अधीन, उन मानों को रखने वाले किसी भी बाइनरी सर्च ट्री में, और के बीच पूर्णांकों को देखने की निवेश, है, जब उन संख्याओं के बारे में पूछताछ की जाती है बिट-विपरीत क्रम। यह सीमा छींटदार पेड़ों जैसे पेड़ों पर भी प्रयुक्त होती है जिन्हें एक्सेस के बीच अपने नोड्स को पुनर्व्यवस्थित करने की अनुमति होती है[9]

एल्गोरिदम

मुख्य रूप से फास्ट फूरियर ट्रांसफॉर्म एल्गोरिदम के महत्व के कारण, अनुक्रम में बिट-रिवर्सल क्रमपरिवर्तन प्रयुक्त करने के लिए विभिन्न कुशल एल्गोरिदम तैयार किए गए हैं।[2]

क्योंकि बिट-रिवर्सल क्रमपरिवर्तन एक इनवोल्यूशन है, इसे तत्वों के जोड़े को स्वैप करके इन-प्लेस एल्गोरिदम (डेटा को किसी अन्य सरणी में कॉपी किए बिना) सरलता से निष्पादित किया जा सकता है। समान्य रूप से एल्गोरिथ्म विश्लेषण में उपयोग की जाने वाली रैंडम-एक्सेस मशीन में, एक सरल एल्गोरिदम जो इनपुट क्रम में इंडेक्स को स्कैन करता है और जब भी स्कैन एक इंडेक्स का सामना करता है जिसका रिवर्सल एक बड़ी संख्या है, तो स्वैप होता है जो डेटा चाल की एक रैखिक संख्या निष्पादित करेगा।[10] चूँकि , प्रत्येक सूचकांक के उत्क्रमण की गणना करने के लिए गैर-स्थिर संख्या में कदम उठाने पड़ सकते हैं। वैकल्पिक एल्गोरिदम केवल सरल सूचकांक गणनाओं का उपयोग करते हुए रैखिक समय में थोड़ा विपरीत क्रमपरिवर्तन कर सकते हैं।[11] क्योंकि गणना के भाग के रूप में बिट-रिवर्सल क्रमपरिवर्तन को विभिन्न बार दोहराया जा सकता है, इसलिए एल्गोरिदम के चरणों को अलग करना सहायक हो सकता है जो क्रमपरिवर्तन का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले सूचकांक डेटा की गणना करते हैं (उदाहरण के लिए, दोहरीकरण और संयोजन विधि का उपयोग करके) वे चरण जो डेटा को क्रमबद्ध करने के लिए इस गणना के परिणामों का उपयोग करते हैं (उदाहरण के लिए, डेटा इंडेक्स को क्रम में स्कैन करके और जब भी स्वैप किया गया स्थान वर्तमान इंडेक्स से अधिक होता है, या अधिक परिष्कृत वेक्टर स्कैटर-संग्रह संचालन का उपयोग करके स्वैप निष्पादित करते हैं) .[2]

एक और विचार जो इन एल्गोरिदम के प्रदर्शन के लिए और भी महत्वपूर्ण है, वह है रनिंग टाइम पर मेमोरी पदानुक्रम का प्रभाव। इस प्रभाव के कारण, अधिक परिष्कृत एल्गोरिदम जो मेमोरी की ब्लॉक संरचना पर विचार करते हैं, इस अनुभवहीन स्कैन से तेज़ हो सकते हैं।[2][10] इन तकनीकों का एक विकल्प विशेष कंप्यूटर हार्डवेयर है जो मेमोरी को सामान्य और बिट-उलटे क्रम में एक्सेस करने की अनुमति देता है।[12]

उच्च-प्रदर्शन कंप्यूटिंग क्षेत्रों में यूनिप्रोसेसर और मल्टीप्रोसेसर दोनों में बिट-रिवर्सल के प्रदर्शन सुधार पर गंभीरता से ध्यान दिया गया है। क्योंकि आर्किटेक्चर-अवेयर एल्गोरिदम विकास कैश, टीएलबी और मल्टीकोर सहित हार्डवेयर और सिस्टम सॉफ़्टवेयर संसाधनों का सर्वोत्तम उपयोग कर सकता है, जिससे गणना में अधिक तेजी आती है।[13]


संदर्भ

  1. Sloane, N. J. A. (ed.), "Sequence A030109", The On-Line Encyclopedia of Integer Sequences, OEIS Foundation
  2. 2.0 2.1 2.2 2.3 Karp, Alan H. (1996), "Bit reversal on uniprocessors", SIAM Review, 38 (1): 1–26, CiteSeerX 10.1.1.24.2913, doi:10.1137/1038001, MR 1379039. Karp surveys and compares 30 different algorithms for bit reversal, developed between 1965 and the 1996 publication of his survey.
  3. Elster, Anne C. (1989), "Fast bit-reversal algorithms", IEEE International Conference on Acoustics, Speech, and Signal Processing, ICASSP '89, Glasgow, Scotland, May 23-26, 1989, pp. 1099–1102, doi:10.1109/ICASSP.1989.266624, S2CID 15028026
  4. Yang, Qingxuan; Ellis, John; Mamakani, Khalegh; Ruskey, Frank (2013), "In-place permuting and perfect shuffling using involutions", Information Processing Letters, 113 (10–11): 386–391, doi:10.1016/j.ipl.2013.02.017, MR 3037467, S2CID 14672841.
  5. Herman, Gabor T. (2009), Fundamentals of Computerized Tomography (2nd ed.), London: Springer, p. 209, ISBN 978-1-85233-617-2
  6. Gordon, Dan (June 2017), "A derandomization approach to recovering bandlimited signals across a wide range of random sampling rates", Numerical Algorithms, 77 (4): 1141–1157, doi:10.1007/s11075-017-0356-3, S2CID 254889989
  7. B. Gold and C. M. Rader, Digital Processing of Signals (New York: McGraw–Hill, 1969).
  8. Frederickson, Greg N.; Lynch, Nancy A. (1984), "The impact of synchronous communication on the problem of electing a leader in a ring" (PDF), Proceedings of the Sixteenth Annual ACM Symposium on Theory of Computing (STOC '84), pp. 493–503, doi:10.1145/800057.808719, ISBN 978-0897911337.
  9. Wilber, Robert (1989), "Lower Bounds for Accessing Binary Search Trees With Rotations", 27th Annual Symposium on Foundations of Computer Science (sfcs 1986), pp. 61–70, doi:10.1109/SFCS.1986.28, ISBN 0-8186-0740-8.
  10. 10.0 10.1 Carter, Larry; Gatlin, Kang Su (1998), "Towards an optimal bit-reversal permutation program", Proceedings of the 39th Annual Symposium on Foundations of Computer Science (FOCS), pp. 544–553, CiteSeerX 10.1.1.46.9319, doi:10.1109/SFCS.1998.743505, ISBN 978-0-8186-9172-0, S2CID 14307262.
  11. Jeong, Jechang; Williams, W.J. (1990), "A fast recursive bit-reversal algorithm", International Conference on Acoustics, Speech, and Signal Processing (ICASSP-90), vol. 3, pp. 1511–1514, doi:10.1109/ICASSP.1990.115695, S2CID 122373780.
  12. Harley, T. R.; Maheshwaramurthy, G. P. (2004), "Address generators for mapping arrays in bit-reversed order", IEEE Transactions on Signal Processing, 52 (6): 1693–1703, doi:10.1109/TSP.2004.827148, S2CID 10043478.
  13. Zhang, Zhao; Zhang, Xiaodong (2000), "Fast bit-reversals on uniprocessors and shared-memory multiprocessors", SIAM Journal on Scientific Computing, 22 (6): 2113–2134, doi:10.1137/S1064827599359709, MR 1856305