> rice | تكيفي | ضغط <

// ترميز رايس – ضغط تكيفي للأعداد الصحيحة بمعامل قابل للضبط

0 حرفًا
0 حرفًا

>> المزايا

[تكيّفي]

معامل قابل للضبط

اضبط قيمة k لتحسين الضغط لأنماط مختلفة من توزيع البيانات.

[فعّال]

بيانات هندسية

مثالي للبيانات ذات التوزيع الهندسي أو الأسي.

[بسيط]

ترميز سريع

عمليات قسمة وباق بسيطة تحقق أداءً عاليًا.

>> معلومات تقنية

كيف يعمل ترميز رايس:

يقوم ترميز رايس بقسمة كل عدد صحيح n على 2^k للحصول على خارج q وباقٍ r. يُرمَّز الخارج بطريقة أحادية (q من الواحدات متبوعة بصفر واحد)، بينما يُرمَّز الباقي في k من البتات الثنائية. ينتج عن ذلك كود بطول متغير يتكيف مع توزيع البيانات عبر معامل k.

مثال على ترميز رايس (k=2):

k=2, M=2^2=4

0 → q=0, r=0 → 0|00 → 000
1 → q=0, r=1 → 0|01 → 001
2 → q=0, r=2 → 0|10 → 010
3 → q=0, r=3 → 0|11 → 011
4 → q=1, r=0 → 10|00 → 1000
5 → q=1, r=1 → 10|01 → 1001
6 → q=1, r=2 → 10|10 → 1010
7 → q=1, r=3 → 10|11 → 1011
8 → q=2, r=0 → 110|00 → 11000

k أكبر: بتات أحادية أقل وبتات ثنائية أكثر
k أصغر: بتات أحادية أكثر وبتات ثنائية أقل

لماذا نستخدم ترميز رايس؟:

  • ▸يتكيف مع توزيع البيانات
  • ▸سهل التنفيذ
  • ▸ترميز وفك ترميز سريعان
  • ▸مناسب لبيانات الحساسات
  • ▸فعّال للأعداد الصحيحة الصغيرة

>> أسئلة شائعة

ما هو ترميز رايس؟

ترميز رايس هو طريقة ترميز انتروبي بطول متغير فعّالة بشكل خاص للتوزيعات الهندسية. يُعد حالة خاصة من ترميز غولوم (Golomb) حيث يُقيد المقسوم عليه M بقوى العدد 2 (M = 2^k)، مما يسمح بتنفيذ سريع يعتمد على عمليات على مستوى البت.

كيف أختار قيمة معامل k؟

تعتمد قيمة k المثلى على توزيع بياناتك. للبيانات ذات المتوسط μ يمكن تقريبًا استخدام العلاقة k ≈ log₂(μ × ln(2)). قيم k الصغيرة (0–2) مناسبة للأعداد الصغيرة جدًا، بينما القيم الأكبر (4–8) أفضل للبيانات ذات القيم الأعلى. استخدم وظيفة التحليل للعثور على أفضل k لبياناتك.

ترميز رايس مقابل ترميز غولومب؟

ترميز رايس هو مجموعة فرعية من ترميز غولومب حيث M = 2^k. هذا القيد يجعل ترميز رايس أسرع (استخدام إزاحات بت بدل القسمة) لكنه قد يكون أقل مثالية قليلًا. يسمح ترميز غولومب باختيار أي قيمة لـ M للحصول على ضغط أفضل، بينما يضحي رايس بجزء من الكفاءة لصالح السرعة.

أين يُستخدم ترميز رايس؟

يُستخدم ترميز رايس على نطاق واسع في ضغط الصوت غير الفاقد (FLAC, ALAC)، وضغط الصور (JPEG-LS)، وبيانات الحساسات ذات التوزيعات الهندسية. وهو فعّال بشكل خاص للأعداد الصحيحة غير السالبة الصغيرة ذات الاحتمال المتناقص أسيًا.

// مثال محلول

nqrk=2
0000000
1001001
2010010
3011011
41001000
51011001
61101010
71111011
820011000

// أمثلة برمجية

Rice code with parameter k  (Golomb code with M = 2^k)
  q = n >> k            quotient, written as q ones followed by a zero
  r = n & (2^k - 1)     remainder, written as k plain bits
  code = unary(q) + r

k = 2, n = 9  ->  q = 2, r = 01  ->  110 01
Decode: count the leading 1s (q), skip the 0, read k bits (r), n = (q << k) | r
Choose k about log2(mean value): small values -> small k

>> المزيد من الأسئلة

س: ما الفرق بين رمز رايس ورمز غولومب؟

ج: رمز رايس حالة خاصة من رمز غولومب تكون فيها المعلمة M قوة للعدد 2 (M = 2^k). فيحل الإزاحة والقناع محل القسمة وهو سريع جداً.

س: كيف تُختار المعلمة k؟

ج: ينبغي أن تساوي k نحو لوغاريتم المتوسط للأساس 2. الصغيرة جداً تعطي متتاليات أحادية طويلة والكبيرة جداً تهدر بتات في الباقي. تختار ترميزات مثل FLAC قيمة k لكل كتلة.

س: لمَ يصلح رمز رايس؟

ج: للأعداد الصحيحة غير السالبة ذات التوزيع الهندسي حيث القيم الصغيرة أكثر بكثير. ومن أمثلته بواقي التنبؤ في الصوت دون فقد (FLAC) والصور (JPEG-LS).