Кіріспе

Деректерді сығыстыру техникасы. Адаптациялық Хаффман коды (Динамикалық Хаффман коды деп те аталады) – Хаффман кодына негізделген адаптивті кодтау техникасы. Ол символдар беріліп жатқанда кодты құруға мүмкіндік береді, дереккөз таралуы туралы алдын ала білімді қажет етпейді, соның арқасында деректерді бір рет өте кодтап, өзгеріп отыратын жағдайларға бейімделуге болады. Бір реттік процедураның артықшылығы – дереккөзді нақты уақытта кодтау мүмкіндігі, алайда ол беріліс қателерге өте сезімтал, себебі бір ғана қате бүкіл кодты жояды, сондықтан қателерді анықтау және түзету қажет болады.

Алгоритмдер

Бұл әдістің бірнеше іске асырылуы бар, олардың ең белгілілері FGK (Faller Gallager Knuth) және Виттер алгоритмі.

FGK алгоритмі

Бұл Хаффман кодтамасына негізделген онлайн кодтау техникасы. Кездесу жиіліктері туралы алдын ала білімі болмағандықтан, деректерді беру кезінде Хаффман ағашын динамикалық түрде реттеуге мүмкіндік береді. FGK Хаффман ағашында 0 түйіні деп аталатын арнайы сыртқы түйін, жаңадан келетін символді анықтау үшін қолданылады. Яғни, жаңа деректер кездескен кезде, 0 түйініне дейінгі жол шығарылып, содан кейін деректер шығарылады. Бұрыннан келіп түскен символ үшін, ағымдағы Хаффман ағашындағы деректердің жолы ғана шығарылады. Ең маңыздысы, қажет болған жағдайда FGK Хаффман ағашын түзетуіміз керек, соңында тиісті түйіндердің жиілігін жаңартуымыз керек. Деректердің жиілігі артқан сайын, Хаффман ағашының бауырлас қасиеті бұзылуы мүмкін. Осы себепті түзету іске қосылады. Бұл түйіндерді, кіші ағаштарды немесе олардың екеуін де тізбектей алмастыру арқылы жүзеге асырылады. Деректер түйіні, Хаффман ағашындағы (немесе ең жоғары реттелген түйінде тамырланған кіші ағаштағы) бірдей жиіліктегі ең жоғары реттелген түйінмен ауыстырылады. Түйіннің барлық аталық түйіндері де осылай өңделуі керек. FGK алгоритмінің түйін немесе кіші ағашты алмастыруға қатысты кемшіліктері болғандықтан, Виттер оны жақсарту үшін басқа алгоритм ұсынды.