You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Elias gamma coding

EverybodyWiki Bios & Wiki sitesinden
Şuraya atla:kullan, ara

Elias γ kodlama veya Elias gamma kodlama, Peter Elias tarafından geliştirilen pozitif tam sayıları kodlamak için kullanılan bir evrensel koddur.[1]:197, 199 Bu kodlama, önceden belirlenemeyen üst sınırları olan tam sayıların kodlanmasında en çok kullanılır.

Kodlama[değiştir]

Bir sayı x ≥ 1'i kodlamak için:

  1. ile sayının en yüksek iki üssü alınır, bu da 2Nx < 2N+1 olacak şekilde.
  2. tane sıfır biti yazılır,
  3. Sonra x sayısının binary şekli, bit uzunluğunda bir sayı olarak eklenir.

Aynı işlemi açıklamak için başka bir yol:

  1. sayısını unary olarak kodlayın; yani, tane sıfırı birle sonlandırın.
  2. Bu kodlamasına sayısının geri kalan binary rakamlarını ekleyin.

Bir sayı için Elias gamma (γ) bit kullanır.[1]:199

Kodlama şu şekilde başlar (kod için implied probability dağılımı açıklık için eklenmiştir):

Sayı Binary γ kodlama İmplied probability
1 = 20 + 0 1 1 1/2
2 = 21 + 0 1 0 0 1 0 1/8
3 = 21 + 1 1 1 0 1 1 1/8
4 = 22 + 0 1 00 00 1 00 1/32
5 = 22 + 1 1 01 00 1 01 1/32
6 = 22 + 2 1 10 00 1 10 1/32
7 = 22 + 3 1 11 00 1 11 1/32
8 = 23 + 0 1 000 000 1 000 1/128
9 = 23 + 1 1 001 000 1 001 1/128
10 = 23 + 2 1 010 000 1 010 1/128
11 = 23 + 3 1 011 000 1 011 1/128
12 = 23 + 4 1 100 000 1 100 1/128
13 = 23 + 5 1 101 000 1 101 1/128
14 = 23 + 6 1 110 000 1 110 1/128
15 = 23 + 7 1 111 000 1 111 1/128
16 = 24 + 0 1 0000 0000 1 0000 1/512
17 = 24 + 1 1 0001 0000 1 0001 1/512

Kod Çözme[değiştir]

Elias gamma kodlaması ile kodlanmış bir tam sayıyı çözmek için:

  1. Akıştan 0'ları okuyup sayın, ilk 1'e kadar. Bu 0 sayısını N olarak adlandırın.
  2. Ulaşılan bir rakamın ilk rakamı olarak düşünün, 2N değeriyle, tam sayının geri kalan N rakamlarını okuyun.

Kullanımlar[değiştir]

Gamma kodlama, en büyük kodlanmış değerin önceden bilinmediği uygulamalarda veya küçük değerlerin büyük değerlere göre çok daha sık kullanıldığı verileri sıkıştırmasında kullanılır.Şablon:Dubious Bu durumlarda gamma kodlama daha boyut verimli olabilir. Örneğin, yukarıdaki tabloda görülüyor ki, küçük bir sayıyı (örneğin 5) sabit 8-bit boyutunda saklamak 00000101 verirken, γ-kodlama değişken bit boyutunda 00 1 01 verir, 3 bit daha az olacaktır. Büyük sayılar ise (örneğin 254) sabit 8-bit boyutunda 11111110 verirken, γ-kodlama değişken bit boyutunda 0000000 1 1111110 verir, 7 bit fazla olacaktır.

Gamma kodlama, Elias delta codede bir temel taş olarak kullanılır.

Genelleştirmeler[değiştir]

Şablon:See also Gamma kodlama sıfır veya negatif tam sayıları kodlamaz. Sıfırı kodlamak için bir yol, kodlamadan önce 1 eklemek ve kodlamadan sonra 1 çıkarmaktır. Başka bir yol, her sıfır olmayan kodu bir 1 ile başlatmak ve sıfırı tek bir 0 olarak kodlamaktır.

Tüm tam sayıları kodlamak için bir bijection kurmak, sayıları (0, −1, 1, −2, 2, −3, 3, ...) (1, 2, 3, 4, 5, 6, 7, ...) şeklinde eşlemektir. Yazılımda bu en kolay yol, negatif girdileri çift çıktılara, pozitif girdileri ise tek çıktılara eşlemektir, bu da en az anlamlı bit sign bit olarak ters çevrilir:

Exponential-Golomb coding, gamma kodunu daha "düz" bir güç yasası dağılımına sahip tam sayılara genişletir, şekilde Golomb coding unary kodu genişletir. Bu, sayıyı pozitif bir bölenle bölmek, bölümün bir fazlasının gamma kodunu yazmak ve geri kalanı normal bir binary kodla yazmaktır.

Ayrıca bakınız[değiştir]

Referanslar[değiştir]

Şablon:Kaynakça/styles.css sayfası içerik yok.

  1. 1,0 1,1 Elias, Peter (Mart 1975). "Universal codeword sets and representations of the integers". IEEE Transactions on Information Theory. 21 (2): 194–203. doi:10.1109/tit.1975.1055349. 

İleri okuma[değiştir]

Şablon:Compression Methods



Read or create/edit this page in another language[değiştir]