इलियास डेल्टा कोडिंग: Difference between revisions
(Created page with "{{Use dmy dates|date=May 2019|cs1-dates=y}} एलियास δ कोड या एलियास डेल्टा कोड पीटर एलियास द्...") |
m (9 revisions imported from alpha:इलियास_डेल्टा_कोडिंग) |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
इलियास δ कोड या '''इलियास डेल्टा कोड''' [[पीटर एलियास|पीटर इलियास]] द्वारा विकसित धनात्मक पूर्णांकों को एन्कोड करने वाला [[यूनिवर्सल कोड (डेटा संपीड़न)|सार्वभौमिक कोड]] है।<ref name="Elias"/>{{rp|200}} | |||
== एन्कोडिंग == | == एन्कोडिंग == | ||
किसी संख्या | किसी संख्या X ≥ 1 को कोड करने के लिए: | ||
# मान लीजिए N= ⌊log<sub>2</sub> | # मान लीजिए N= ⌊log<sub>2</sub> ''X''⌋; X में 2 की उच्चतम घात हो, इसलिए 2<sup>''N''</sup> ≤ ''X'' < 2<sup>''N''+1</sup> है। | ||
# मान लीजिए L = ⌊log<sub>2</sub> N+1⌋ N+1 में 2 की उच्चतम घात है, इसलिए 2<sup> | # मान लीजिए L = ⌊log<sub>2</sub> N+1⌋ N+1 में 2 की उच्चतम घात है, इसलिए 2<sup>''L''</sup> ≤ ''N''+1 < 2<sup>''L''+1</sup> है। | ||
# L शून्य लिखें, उसके | # L शून्य लिखें, उसके पश्चात | ||
# N+1 का L+1-बिट बाइनरी प्रतिनिधित्व, उसके | # N+1 का L+1-बिट बाइनरी प्रतिनिधित्व, उसके पश्चात | ||
# X के अग्रणी बिट ( | # X के अग्रणी बिट (अर्थात अंतिम N बिट्स) को छोड़कर सभी है। | ||
उसी प्रक्रिया को व्यक्त करने | उसी प्रक्रिया को व्यक्त करने की समकक्ष विधि है: | ||
#X को | #X को 2 की उच्चतम घात में भिन्न करें (2<sup>N</sup>) और शेष N बाइनरी अंक है। | ||
#[[इलियास गामा कोडिंग]] के साथ | #[[इलियास गामा कोडिंग]] के साथ N+1 को एन्कोड किया जाता है। | ||
#शेष N बाइनरी अंकों को N+1 के इस प्रतिनिधित्व में | #शेष N बाइनरी अंकों को N+1 के इस प्रतिनिधित्व में जोड़ा जाता है। | ||
किसी संख्या का प्रतिनिधित्व करने के लिए <math>x</math>, | किसी संख्या का प्रतिनिधित्व करने के लिए <math>x</math>, इलियास डेल्टा (δ) का उपयोग किया जाता है। <math>\lfloor \log_2(x) \rfloor + 2 \lfloor \log_2 (\lfloor \log_2(x) \rfloor +1) \rfloor + 1</math> बिट्स<ref name="Elias"/>{{rp|200}}यह अधिक बड़े पूर्णांकों के लिए उपयोगी है, जहां समग्र एन्कोडेड प्रतिनिधित्व के बिट्स कम हो जाते हैं [इलियास गामा कोडिंग का उपयोग करके प्राप्त की जा सकने वाली राशि से] <math>\log_2 (\lfloor \log_2(x) \rfloor +1)</math> पूर्व अभिव्यक्ति का भाग है। | ||
यह | |||
कोड | कोड <math>\gamma'</math> का उपयोग प्रारंभ होता है: | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! नंबर !! N !! N+1 !! δ एन्कोडिंग !! निहित संभावना | ||
|- | |- | ||
| 1 = 2<sup>0</sup> || 0 || 1 || <code>1</code> || 1/2 | | 1 = 2<sup>0</sup> || 0 || 1 || <code>1</code> || 1/2 | ||
Line 63: | Line 61: | ||
| 16 = 2<sup>4</sup> + ''0'' || 4 || 5 || <code>00 1 01 ''0000''</code> || 1/512 | | 16 = 2<sup>4</sup> + ''0'' || 4 || 5 || <code>00 1 01 ''0000''</code> || 1/512 | ||
|- | |- | ||
| 17 | | 17=2<sup>4</sup>+''1'' || 4 || 5 || {{nowrap|<code>00 1 01 ''0001''</code>}} || 1/512 | ||
|} | |} | ||
इलियास डेल्टा-कोडित पूर्णांक को डीकोड करने के लिए: | |||
# | #जब तक आप पूर्व शून्य तक नहीं पहुंच जाते, तब तक स्ट्रीम से शून्य पढ़ें और गिनें। शून्य की इस गिनती को L कहा जाता है। | ||
#2 के मान के साथ, जो पूर्णांक | #2<sup>L</sup> के मान के साथ, जो पूर्णांक का प्रथम अंक था, उसे ध्यान में रखते हुए, पूर्णांक के शेष L अंक पढ़ें। इस पूर्णांक को N+1 कहें और N प्राप्त करने के लिए एक घटाएँ। | ||
#हमारे अंतिम आउटपुट के पहले स्थान पर | #हमारे अंतिम आउटपुट के पहले स्थान पर जो मान 2''<sup>N</sup>'' दर्शाता है। | ||
#निम्नलिखित | #निम्नलिखित N अंकों को पढ़ें और जोड़ें। | ||
उदाहरण: | उदाहरण: | ||
001010011 | 001010011 | ||
1. 001 में 2 अग्रणी शून्य | 1. 001 में 2 अग्रणी शून्य | ||
2. 2 और बिट्स | 2. 2 और बिट्स अर्थात 00101 पढ़ें | ||
3. डिकोड N+1 = 00101 = 5 | 3. डिकोड N+1 = 00101 = 5 | ||
4. संपूर्ण कोड के लिए N = 5 - 1 = 4 शेष बिट प्राप्त करें अर्थात '0011' | 4. संपूर्ण कोड के लिए N = 5 - 1 = 4 शेष बिट प्राप्त करें अर्थात '0011' | ||
5. एन्कोडेड संख्या = 2<sup>4</sup>+3=19 | 5. एन्कोडेड संख्या = 2<sup>4</sup>+3=19 | ||
इस कोड को | इस कोड को इलियास गामा कोडिंग में वर्णित विधियों से शून्य या ऋणात्मक पूर्णांकों में सामान्यीकृत किया जा सकता है। | ||
== उदाहरण कोड == | == उदाहरण कोड == | ||
Line 110: | Line 108: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''डिकोडिंग''' | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
void eliasDeltaDecode(char* source, char* dest) | void eliasDeltaDecode(char* source, char* dest) | ||
Line 143: | Line 140: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== सामान्यीकरण == | |||
== सामान्यीकरण == | {{See also|परिवर्तनीय-लंबाई मात्रा#ज़िगज़ैग एन्कोडिंग}} | ||
{{See also| | इलियास डेल्टा कोडिंग शून्य या ऋणात्मक पूर्णांक को कोड नहीं करती है। सभी अऋणात्मक पूर्णांकों को कोड करने की विधि कोडिंग से पहले 1 जोड़ना और फिर डिकोडिंग के पश्चात 1 घटाना है। सभी पूर्णांकों को कोड करने की विधि यह है कि सभी पूर्णांकों (0, 1, −1, 2, −2, 3, −3, ...) को कठोरता से धनात्मक पूर्णांकों (1, 2, 3,) में मैप करके आक्षेप स्थापित किया जाए। कोडिंग से पूर्व 4, 5, 6, 7, ...) यह आक्षेप प्रोटोकॉल बफ़र्स से "ज़िगज़ैग" एन्कोडिंग का उपयोग करके किया जा सकता है ([[ज़िगज़ैग कोड]] के साथ भ्रमित न हों, न ही जेपीईजी ज़िग-ज़ैग एन्ट्रॉपी कोडिंग)। | ||
सभी | |||
सभी पूर्णांकों को कोड करने | |||
यह आक्षेप | |||
== यह भी देखें == | == यह भी देखें == | ||
* | * इलियास गामा (γ) कोडिंग | ||
* | * इलियास ओमेगा (ω) कोडिंग | ||
* [[गोलोम्ब-चावल कोड]] | * [[गोलोम्ब-चावल कोड|गोलोम्ब-राइस कोड]] | ||
== संदर्भ == | == संदर्भ == | ||
Line 160: | Line 153: | ||
<ref name="Elias">{{cite journal |author-first=Peter |author-last=Elias |author-link=Peter Elias |title=Universal codeword sets and representations of the integers |journal=[[IEEE Transactions on Information Theory]] |volume=21 |issue=2 |pages=194–203 |date=March 1975 |doi=10.1109/tit.1975.1055349}}</ref> | <ref name="Elias">{{cite journal |author-first=Peter |author-last=Elias |author-link=Peter Elias |title=Universal codeword sets and representations of the integers |journal=[[IEEE Transactions on Information Theory]] |volume=21 |issue=2 |pages=194–203 |date=March 1975 |doi=10.1109/tit.1975.1055349}}</ref> | ||
}} | }} | ||
== अग्रिम पठन == | == अग्रिम पठन == | ||
* {{cite journal |title=URR: Universal representation of real numbers |author-first=Hozumi |author-last=Hamada |journal=New Generation Computing |issn=0288-3635 |date=June 1983 |volume=1 |issue=2 |pages=205–209 |doi=10.1007/BF03037427 |s2cid=12806462 |url=https://www.researchgate.net/publication/220619145_URR_Universal_Representation_of_Real_Numbers<!-- https://link.springer.com/article/10.1007/BF03037427 --><!-- https://www.semanticscholar.org/paper/URR%3A-Universal-representation-of-real-numbers-Hamada/ae987cfad0b240d49245995421d0ec147ac72ae1 --> |access-date=2018-07-09}} (NB. The Elias δ code coincides with Hamada's URR representation.) | * {{cite journal |title=URR: Universal representation of real numbers |author-first=Hozumi |author-last=Hamada |journal=New Generation Computing |issn=0288-3635 |date=June 1983 |volume=1 |issue=2 |pages=205–209 |doi=10.1007/BF03037427 |s2cid=12806462 |url=https://www.researchgate.net/publication/220619145_URR_Universal_Representation_of_Real_Numbers<!-- https://link.springer.com/article/10.1007/BF03037427 --><!-- https://www.semanticscholar.org/paper/URR%3A-Universal-representation-of-real-numbers-Hamada/ae987cfad0b240d49245995421d0ec147ac72ae1 --> |access-date=2018-07-09}} (NB. The Elias δ code coincides with Hamada's URR representation.) | ||
[[Category: एन्ट्रॉपी कोडिंग]] [[Category: अंक प्रणाली]] | [[Category: एन्ट्रॉपी कोडिंग]] [[Category: अंक प्रणाली]] | ||
Line 172: | Line 162: | ||
[[Category: Machine Translated Page]] | [[Category: Machine Translated Page]] | ||
[[Category:Created On 07/12/2023]] | [[Category:Created On 07/12/2023]] | ||
[[Category:Vigyan Ready]] |
Latest revision as of 14:16, 14 December 2023
इलियास δ कोड या इलियास डेल्टा कोड पीटर इलियास द्वारा विकसित धनात्मक पूर्णांकों को एन्कोड करने वाला सार्वभौमिक कोड है।[1]: 200
एन्कोडिंग
किसी संख्या X ≥ 1 को कोड करने के लिए:
- मान लीजिए N= ⌊log2 X⌋; X में 2 की उच्चतम घात हो, इसलिए 2N ≤ X < 2N+1 है।
- मान लीजिए L = ⌊log2 N+1⌋ N+1 में 2 की उच्चतम घात है, इसलिए 2L ≤ N+1 < 2L+1 है।
- L शून्य लिखें, उसके पश्चात
- N+1 का L+1-बिट बाइनरी प्रतिनिधित्व, उसके पश्चात
- X के अग्रणी बिट (अर्थात अंतिम N बिट्स) को छोड़कर सभी है।
उसी प्रक्रिया को व्यक्त करने की समकक्ष विधि है:
- X को 2 की उच्चतम घात में भिन्न करें (2N) और शेष N बाइनरी अंक है।
- इलियास गामा कोडिंग के साथ N+1 को एन्कोड किया जाता है।
- शेष N बाइनरी अंकों को N+1 के इस प्रतिनिधित्व में जोड़ा जाता है।
किसी संख्या का प्रतिनिधित्व करने के लिए , इलियास डेल्टा (δ) का उपयोग किया जाता है। बिट्स[1]: 200 यह अधिक बड़े पूर्णांकों के लिए उपयोगी है, जहां समग्र एन्कोडेड प्रतिनिधित्व के बिट्स कम हो जाते हैं [इलियास गामा कोडिंग का उपयोग करके प्राप्त की जा सकने वाली राशि से] पूर्व अभिव्यक्ति का भाग है।
कोड का उपयोग प्रारंभ होता है:
नंबर | N | N+1 | δ एन्कोडिंग | निहित संभावना |
---|---|---|---|---|
1 = 20 | 0 | 1 | 1 |
1/2 |
2 = 21 + 0 | 1 | 2 | 0 1 0 0 |
1/16 |
3 = 21 + 1 | 1 | 2 | 0 1 0 1 |
1/16 |
4 = 22 + 0 | 2 | 3 | 0 1 1 00 |
1/32 |
5 = 22 + 1 | 2 | 3 | 0 1 1 01 |
1/32 |
6 = 22 + 2 | 2 | 3 | 0 1 1 10 |
1/32 |
7 = 22 + 3 | 2 | 3 | 0 1 1 11 |
1/32 |
8 = 23 + 0 | 3 | 4 | 00 1 00 000 |
1/256 |
9 = 23 + 1 | 3 | 4 | 00 1 00 001 |
1/256 |
10 = 23 + 2 | 3 | 4 | 00 1 00 010 |
1/256 |
11 = 23 + 3 | 3 | 4 | 00 1 00 011 |
1/256 |
12 = 23 + 4 | 3 | 4 | 00 1 00 100 |
1/256 |
13 = 23 + 5 | 3 | 4 | 00 1 00 101 |
1/256 |
14 = 23 + 6 | 3 | 4 | 00 1 00 110 |
1/256 |
15 = 23 + 7 | 3 | 4 | 00 1 00 111 |
1/256 |
16 = 24 + 0 | 4 | 5 | 00 1 01 0000 |
1/512 |
17=24+1 | 4 | 5 | 00 1 01 0001 |
1/512 |
इलियास डेल्टा-कोडित पूर्णांक को डीकोड करने के लिए:
- जब तक आप पूर्व शून्य तक नहीं पहुंच जाते, तब तक स्ट्रीम से शून्य पढ़ें और गिनें। शून्य की इस गिनती को L कहा जाता है।
- 2L के मान के साथ, जो पूर्णांक का प्रथम अंक था, उसे ध्यान में रखते हुए, पूर्णांक के शेष L अंक पढ़ें। इस पूर्णांक को N+1 कहें और N प्राप्त करने के लिए एक घटाएँ।
- हमारे अंतिम आउटपुट के पहले स्थान पर जो मान 2N दर्शाता है।
- निम्नलिखित N अंकों को पढ़ें और जोड़ें।
उदाहरण:
001010011 1. 001 में 2 अग्रणी शून्य 2. 2 और बिट्स अर्थात 00101 पढ़ें 3. डिकोड N+1 = 00101 = 5 4. संपूर्ण कोड के लिए N = 5 - 1 = 4 शेष बिट प्राप्त करें अर्थात '0011' 5. एन्कोडेड संख्या = 24+3=19
इस कोड को इलियास गामा कोडिंग में वर्णित विधियों से शून्य या ऋणात्मक पूर्णांकों में सामान्यीकृत किया जा सकता है।
उदाहरण कोड
एन्कोडिंग
void eliasDeltaEncode(char* source, char* dest)
{
IntReader intreader(source);
BitWriter bitwriter(dest);
while (intreader.hasLeft())
{
int num = intreader.getInt();
int len = 0;
int lengthOfLen = 0;
len = 1 + floor(log2(num)); // calculate 1+floor(log2(num))
lengthOfLen = floor(log2(len)); // calculate floor(log2(len))
for (int i = lengthOfLen; i > 0; --i)
bitwriter.outputBit(0);
for (int i = lengthOfLen; i >= 0; --i)
bitwriter.outputBit((len >> i) & 1);
for (int i = len-2; i >= 0; i--)
bitwriter.outputBit((num >> i) & 1);
}
bitwriter.close();
intreader.close();
}
डिकोडिंग
void eliasDeltaDecode(char* source, char* dest)
{
BitReader bitreader(source);
IntWriter intwriter(dest);
while (bitreader.hasLeft())
{
int num = 1;
int len = 1;
int lengthOfLen = 0;
while (!bitreader.inputBit()) // potentially dangerous with malformed files.
lengthOfLen++;
for (int i = 0; i < lengthOfLen; i++)
{
len <<= 1;
if (bitreader.inputBit())
len |= 1;
}
for (int i = 0; i < len-1; i++)
{
num <<= 1;
if (bitreader.inputBit())
num |= 1;
}
intwriter.putInt(num); // write out the value
}
bitreader.close();
intwriter.close();
}
सामान्यीकरण
इलियास डेल्टा कोडिंग शून्य या ऋणात्मक पूर्णांक को कोड नहीं करती है। सभी अऋणात्मक पूर्णांकों को कोड करने की विधि कोडिंग से पहले 1 जोड़ना और फिर डिकोडिंग के पश्चात 1 घटाना है। सभी पूर्णांकों को कोड करने की विधि यह है कि सभी पूर्णांकों (0, 1, −1, 2, −2, 3, −3, ...) को कठोरता से धनात्मक पूर्णांकों (1, 2, 3,) में मैप करके आक्षेप स्थापित किया जाए। कोडिंग से पूर्व 4, 5, 6, 7, ...) यह आक्षेप प्रोटोकॉल बफ़र्स से "ज़िगज़ैग" एन्कोडिंग का उपयोग करके किया जा सकता है (ज़िगज़ैग कोड के साथ भ्रमित न हों, न ही जेपीईजी ज़िग-ज़ैग एन्ट्रॉपी कोडिंग)।
यह भी देखें
- इलियास गामा (γ) कोडिंग
- इलियास ओमेगा (ω) कोडिंग
- गोलोम्ब-राइस कोड
संदर्भ
- ↑ 1.0 1.1 Elias, Peter (March 1975). "Universal codeword sets and representations of the integers". IEEE Transactions on Information Theory. 21 (2): 194–203. doi:10.1109/tit.1975.1055349.
अग्रिम पठन
- Hamada, Hozumi (June 1983). "URR: Universal representation of real numbers". New Generation Computing. 1 (2): 205–209. doi:10.1007/BF03037427. ISSN 0288-3635. S2CID 12806462. Retrieved 2018-07-09. (NB. The Elias δ code coincides with Hamada's URR representation.)