একটি সেটে আনর্ডারড জোড়া সংখ্যার মোট সংখ্যা হ'ল । স্বতন্ত্র সংখ্যার আনর্ডার্ড জোড়গুলির মোট সংখ্যা হ'ল । লাগে বিট সংখ্যার একটি আদেশ যুগল প্রতিনিধিত্ব করতে, এবং যদি আপনি এক কম বিট আছে, আপনি আপ এর একটি স্থান উপাদান উপস্থাপন করতে পারেন । অর্ডারড নন-অগত্যা-স্বতন্ত্র জোড়গুলির সংখ্যা অর্ডারযুক্ত জোড়ার সংখ্যার অর্ধেকের চেয়ে কিছুটা বেশি যাতে আপনি উপস্থাপনায় কিছুটা সংরক্ষণ করতে পারবেন না; অর্ডারযুক্ত স্বতন্ত্র জোড়গুলির সংখ্যা অর্ধেকের তুলনায় কিছুটা কম, সুতরাং আপনি কিছুটা সংরক্ষণ করতে পারেন।এন ( এন + + 1 ) / 2 এন ( এন - 1 ) / 2 2 লগ 2 ( এন ) = log 2 ( এন 2 ) এন 2 / 2NN(N+1)/2N(N−1)/22log2(N)=log2(N2)N2/2
এমন একটি ব্যবহারিক স্কিমের জন্য যা সহজেই গণনা করা যায়, 2 এর শক্তি হওয়ায় আপনি বিটওয়াইজ উপস্থাপনায় কাজ করতে পারেন। নিন যেখানে XOR যাও (, bitwise একচেটিয়া বা) অপারেটর। The জোড়াটি বা থেকে পুনরুদ্ধার করা যেতে পারে । এখন আমরা একটি কৌতুক দ্বিতীয় অংশে এক বিট সংরক্ষণ জন্য, এবং আপনি একটি প্রতিসম ভূমিকা দিতে সন্ধান করব এবং তাই অর্ডার পুনরুদ্ধার করা সম্ভব নয় যে। উপরের কার্ডিনালিটির গণনা দেওয়া, আমরা জানি যে এই স্কিমটি ক্ষেত্রে কাজ করবে না ।a = x ⊕ y ⊕ { x , y } ( a , x ) ( a , y ) x y x = yNa=x⊕y⊕{x,y}(a,x)(a,y)xyx=y
যদি তবে কিছুটা বিট অবস্থান রয়েছে যেখানে তারা পৃথক। আমি লিখবো জন্য এর ম বিট (অর্থাত ), এবং অনুরূপভাবে জন্য । যাক ক্ষুদ্রতম বিট অবস্থান যেখানে নেওয়া এবং পৃথক: সবচেয়ে ছোট যেমন যে । হ'ল সবচেয়ে ছোট যেটি : আমরা থেকে পুনরুদ্ধার করতে পারি । যাক পারেন হতে বাx i i x x = ∑ i x i 2 i y k x y k i ∑ i < k y i 2 i + ∑x≠yxiixx=∑ixi2iykxyki k i a i = 1 k a b x y k b = ∑ i < k x i 2 i + ∑ i > কে x i 2 i - 1 খ =xi≠yikiai=1kabxyসঙ্গে ম মুছে ফেলা বিট (অর্থাত বা ) - নির্মাণ প্রতিসম করা, বাছাই যদি এবং , এবং বাছাই যদি এবং । জোড়ের সংক্ষিপ্ত প্রতিনিধিত্ব হিসাবে ব্যবহার করুন । মূল যুগল সর্বনিম্ন-অর্ডার বিট যে সেট করা হয় কম্পিউটিং দ্বারা উদ্ধার করা সম্ভব এই অবস্থানে ঢোকাতে 0 বিট (এক ফলনশীল বা ), এবং যে সংখ্যা XOR গ্রহণkb=∑i<kxi2i+∑i>kxi2i−1 x x k =0 y k =1y x k =1 y k =0(a,b)abxyab=∑i<kyi2i+∑i>kyi2i−1xxk=0yk=1yxk=1yk=0(a,b)abxya (জোড়ের অন্যান্য উপাদান উপার্জন)।
এই উপস্থাপনায়, যে কোনও ননজারো নম্বর হতে পারে, এবং অর্ধেকের পরিসীমা সহ যে কোনও সংখ্যা হতে পারে। এটি একটি বিচক্ষণতা যাচাই করা: আমরা নিখরচায়িত জোড়গুলির উপস্থাপনের প্রত্যাশিত সংখ্যার পাই।খab
Pseudocode মধ্যে, সঙ্গে ^
, &
, |
, <<
, >>
, ~
হচ্ছে সি-মত bitwise অপারেটরদের (XOR, এবং, বা, বাম-শিফট, ডান-শিফট, সম্পূরক):
encode(x, y) =
let a = x ^ y
let k = lowest_set_bit_position(a)
let low_mask = (1 << k) - 1
let z = if x & (1 << k) = 0 then x else y
return (a, (z & low_mask) | (z & ~low_mask) >> 1)
decode(a, b) =
let k = lowest_set_bit_position(a)
let low_mask = (1 << k) - 1
let x = (b & low_mask) | ((b & ~low_mask) << 1)
return (x, a ^ x)