Anda dapat menggunakan cara rumus perulangan di bawah ini diperoleh untuk menemukan penyandian Anda:
Ini dibuktikan dengan mempertimbangkan berapa banyak elemen lain di bagian yang mengandung elemen . Jika ada di antaranya, maka kita memiliki pilihan , dan pilihan untuk mempartisi sisanya.Bn+1=∑k=0n(nk)Bk.
n+1n−k(nn−k)=(nk)Bk
Dengan menggunakan ini, kita dapat memberikan algoritma rekursif untuk mengubah partisi menjadi angka dalam rentang . Saya berasumsi Anda sudah memiliki cara untuk mengubah subset ukuran dari ke angka dalam rentang (algoritma seperti itu dapat dibuat dengan cara yang sama menggunakan perulangan Pascal ).n+10,…,Bn+1−1k{1,…,n}0,…,(nk)−1(nk)=(n−1k)+(n−1k−1)
Misalkan bagian yang mengandung mengandung elemen lainnya. Temukan kode mereka . Hitung partisi dengan "mengompresi" semua elemen yang tersisa ke rentang itu. Menghitung kode . Kode baru adalahn+1kC1{1,…,n−k}C2C=∑l=0n−k−1(nl)Bl+C1Bn−k+C2.
Di arah lain, diberi kode , temukan unik sehingga
dan tentukan
Karena , dapat ditulis sebagai , di mana . Sekarang mengkode elemen-elemen di bagian yang berisi , dan mengkode partisi dariCk∑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}, yang dapat diterjemahkan secara rekursif. Untuk menyelesaikan decoding, Anda harus "membuka kompresi" partisi terakhir sehingga berisi semua elemen yang tidak muncul di bagian yang berisi .n+1
Berikut adalah cara menggunakan teknik yang sama untuk menyandikan subset dari dengan ukuran , secara rekursif. Jika maka kodenya adalah , jadi anggaplah . Jika maka biarkan menjadi kode , sebagai bagian dari ukuran dari ; kode adalah . Jika maka biarkan menjadi kode , sebagai bagian dari ukuran dari ; kodeS{1,…,n}kk=00k>0n∈SC1S∖{n}k−1{1,…,n−1}SC1n∉SC1Sk{1,…,n−1}Sadalah .C1+(n−1k−1)
Untuk memecahkan kode , ada dua kasus. Jika kemudian mendekodekan subset dari dengan ukuran yang kodenya , dan menghasilkan . Jika tidak, decode subset dari dengan ukuran yang kodenya adalah , dan output .CC<(n−1k−1)S′{1,…,n−1}k−1CS′∪{n}S′{1,…,n−1}kC−(n−1k−1)S′