आप अपनी एन्कोडिंग को खोजने के लिए नीचे दिए गए पुनरावृत्ति फॉर्मूला का उपयोग कर सकते हैं:
यह तत्व वाले भाग में कितने अन्य तत्व हैं, इस पर विचार करके साबित किया जाता है । अगर इनमें से हैं , तो हमारे पास विकल्प हैं, और विकल्प बाकी के विभाजन के लिए हैं।Bn+1=∑k=0n(nk)Bk.
n+1n−k(nn−k)=(nk)Bk
इसका उपयोग करते हुए, हम किसी भी विभाजन को श्रेणी में एक संख्या में बदलने के लिए एक पुनरावर्ती एल्गोरिदम दे सकते हैं । मुझे लगता है आप पहले से ही आकार के एक सबसेट परिवर्तित करने का एक तरीका है की रेंज में एक नंबर करने के (जैसे एक एल्गोरिथ्म पास्कल की पुनरावृत्ति ) का उपयोग करके उसी तरह तैयार किया जा सकता है ।n+10,…,Bn+1−1k{1,…,n}0,…,(nk)−1(nk)=(n−1k)+(n−1k−1)
मान लीजिए कि वाले भाग में अन्य तत्व हैं। उनका कोड खोजें । उस सीमा के सभी शेष तत्वों को "संपीड़ित" करके विभाजन की गणना करें । पुन: अपने कोड गणना । नया कोडn+1kC1{1,…,n−k}C2C=∑l=0n−k−1(nl)Bl+C1Bn−k+C2.
दूसरी दिशा में, एक कोड दिया गया , इस तरह के अनूठे ढूंढें जैसे कि
और
चूंकि , यह रूप में लिखा जा सकता है , जहां । अब वाले हिस्से में तत्वों को कोड करता है , और कोड को विभाजन करता हैCk∑l=0n−k−1(nl)Bl≤C<∑l=0n−k(nl)Bl,
C′=C−∑l=0n−k−1(nl)Bl.
0≤C′<(nk)Bn−kC1Bn−k+C20≤C2<Bn−kC1n+1C2{1,…,n−k}n+1, जो पुनरावर्ती रूप से डिकोड किया जा सकता है। डिकोडिंग को पूरा करने के लिए, आपको बाद वाले विभाजन को "अनप्लग" करना होगा ताकि इसमें सभी तत्व शामिल न हों जो कि भाग में दिखाई देते हैं ।n+1
यहाँ कैसे उसी तकनीक का उपयोग करने के लिए एक उप-समूह एन्कोड करने के लिए है के आकार के , रिकर्सिवली। यदि तो कोड , इसलिए मान लीजिए । यदि तो को का एक कोड हो , आकार के का उपसमूह के रूप में ; का कोड । यदि तो जाने का एक कोड होना , आकार के एक सबसेट के रूप में की ; का कोडS{1,…,n}kk=00k>0n∈SC1S∖{n}k−1{1,…,n−1}SC1n∉SC1Sk{1,…,n−1}Sहै ।C1+(n−1k−1)
कोड को डिकोड करने के लिए , दो मामले हैं। अगर तो डिकोड एक सबसेट की आकार की जिसका कोड है , और उत्पादन । अन्यथा, डिकोड एक सबसेट की आकार की जिसका कोड है , और उत्पादन ।CC<(n−1k−1)S′{1,…,n−1}k−1CS′∪{n}S′{1,…,n−1}kC−(n−1k−1)S′