کدگذاری هافمن انطباقی (به انگلیسی: Adaptive Huffman coding) (یا کدگذاری هافمن پویا) یک تکنیک کدگذاری انطباقی بر پایهٔ کدگذاری هافمن است. وقتی اطلاعات در حال انتقال هستند، این نوع کدگذاری، بدون داشتن دانش اولیه از توزیع منبع، کدگذاری با یک بار خواندن و انطباق با تغییر شرایط در اطلاعات را ممکن میکند. مزیت یک بار خواندن این است که منبع میتواند به صورت در لحظه کدگذاری شود. هر چند به این ترتیب به خطاهای انتقال حساس تر میشود. چون حتی از دست دادن یک بیت از اطلاعات کل کد را خراب میکند.
تعداد زیادی روش پیادهسازی وجود دارد. که قابل توجه ترینشان، FGK (Faller-Gallager-Knuth) و الگوریتم ویتر هستند.
کد، ساختار درختی ای دارد که در آن هر گره، دارای وزن مشخص و شمارهٔ یکتا است. عددها پایین می روند و از راست به چپ هستند.
وزنها باید خاصیت برادری را دارا باشند؛ که این حالت زمانی ایجاد میشود که گرهها طوری لیست شوند که وزن هر گره در قیاس با گره مجاور کاهش یابد. مثلا اگر A گره والد B و C فرزند B باشد، وزن A> وزن B> وزن C است.
وزن صرفا تعداد نمادهای منتقل شدهاست که نشانه ای از کدهاییست که با فرزندان گرهها در ارتباط هستند.
تعدادی کد با وزن یکسان یک بلوک را می سازند.
برای به دست آوردن کد هر گره در درخت دوتایی، می توانیم تمام مسیر از ریشه تا گره را طی کنیم.برای مثال اگر به راست برویم یک و اگر به چپ برویم صفر نوشته میشود.ما به روشی عمومی و پیشرو (مستقیم/ساده) برای انتقال کاراکترهایی که هنوز منتقل نشده اند، (NYT) نیاز داریم. برای مثال می توانیم از انتقال عددهای دو رقمی برای هر نماد در الفبا استفاده کنیم.
رمزگذار و رمزگشا از یک گرهٔ ریشه شروع میشود که بیشترین شماره را دارد و در ابتدا گرهٔ NYT ماست.وقتی ما سمبل NYT را منتقل می کنیم باید ابتدا کد گرهٔ NYT و سپس کد عمومی آن را منتقل کنیم.برای هر سمبلی که در درخت وجود دارد ما باید تنها کد برگ آن را وارد کنیم.
برای هر کاراکتری که منتقل میشود باید هم فرستند و هم گیرنده به عملیات روز رسانی را انجام دهند.
مبادلهٔ گرهها به معنی مبادلهٔ وزن و نماد پاسخگو (مربوطه) است نه مبادله عددها.