Кіріспе

Алға жылжыту (MTF) түрлендіруі – энтропиялық кодтау техникаларының сығымдау тиімділігін арттауға арналған деректерді (көбінесе байттар тізбегін) кодтау әдісі. Тиімді жүзеге асырылған жағдайда, оның пайдасы деректерді сығымдау алгоритміне қосымша қадам ретінде енгізуді қажет етеді. Бұл алгоритм алғаш рет 1980 жылы Борис Рябко "кітап тізімі" деген атпен жариялаған. Кейіннен, 1986 жылы J. K. Bentley және авторлар тобы оны қайта ашты, бұл туралы түсіндірме жазбада айтылған.

Іске асыру

Орындау егжей-тегжейлері өнімділік үшін маңызды, әсіресе декодтау үшін. Кодтау үшін байланысты тізімді пайдаланудан ешқандай айқын артықшылық алынбайды, сондықтан тізімді сақтау үшін массивті пайдалану қабылданады, ең нашар жағдайда өнімділік O(nk) болады, мұнда n – кодталатын деректердің ұзындығы, ал k – мәндер саны (әдетте берілген іске асыру үшін тұрақты шама). Көбінесе өнімділік жақсырақ болады, себебі жиі қолданылатын символдар көбінесе алдыңғы жақта орналасып, осылайша тезірек табылса керек. Осы принцип "Алдыға жылжыту" өзін-өзі ұйымдастыратын тізіміне де негізделген. Алайда, декодтау үшін өнімділікті едәуір арттыру үшін арнайы дерек құрылымдарын қолдануға болады.

Мәліметтерді сығу алгоритмдерінің практикалық қолданылуы

МТФ трансформациясы хабарламаның энтропиясын азайту үшін жиіліктердің жергілікті корреляциясын пайдаланады. Дейін, жақында қолданылған әріптер тізімнің басында қалады; егер әріптерді қолдануда жергілікті байланыс байқалса, нәтижеде шығыста "0" және "1" сияқты көптеген кіші сандар пайда болады. Дегенмен, барлық деректерде осы типтегі жергілікті корреляция кездеспейді, ал кейбір хабарламалар үшін МТФ трансформациясы энтропияны керісінше арттыруы мүмкін. МТФ трансформациясының маңызды қолданылуы – Burrows-Wheeler трансформациясына негізделген сығылу. Burrows-Wheeler трансформациясы мәтін мен басқа да арнайы деректер кластарынан жергілікті жиілік байланысын көрсететін тізбектерді жасауда өте тиімді. Сығылу үдерісінде Burrows-Wheeler трансформациясынан кейін МТФ трансформациясын қолдану, соңғы энтропиялық кодтау кезеңінен бұрын, айтарлықтай пайда береді.

Мысал

Мысалы, Гамлеттің "Болу немесе болмау" ("To be, or not to be") монологын қысқымыз келсін. Бұл хабарламаның көлемін 7033 бит деп есептейміз. Керексіздікпен, MTF түрлендіруін тікелей қолдануға тырысамыз. Нәтижесінде 7807 биттен (түпнұсқадан артық) тұратын хабарлама пайда болады. Бұның себебі – ағылшын тіліндегі мәтін әдетте жоғары деңгейдегі жергілікті жиілік байланысын көрсетпейді. Дегенмен, егер алдымен Burrows-Wheeler түрлендіруін, содан кейін MTF түрлендіруін қолдансақ, 6187 биттен тұратын хабарлама аламыз. Burrows-Wheeler түрлендіруі хабарламаның энтропиясын төмендетпейді; ол байттарды MTF түрлендіруін тиімдірек ету үшін ғана қайта реттейді. Негізгі MTF түрлендіруінің бір мәселесі – ол жиілігіне қарамастан, кез келген символ үшін бірдей өзгерістер жасайды, бұл сирек кездесетін символдар жиі кездесетін символдарды жоғары мәндерге ысырып, қысқарудың нашарлауына әкелуі мүмкін. Осы себепті әртүрлі өзгертулер мен баламалар жасалды. Бір әдіс – белгілі бір шектен жоғары символдарды тек белгілі бір деңгейге дейін жылжыту. Тағы бір әдіс – әр символдың жергілікті жиілігін есептейтін және осы мәндерді символдардың кез келген нүктедегі ретін таңдау үшін пайдаланатын алгоритм жасау. Осы түрлендірулердің көпшілігі қайталанатын символдар үшін нөлді сақтап қалады, себебі олар көбінесе Burrows-Wheeler түрлендіруінен кейінгі деректерде жиі кездеседі.

Ары қарай жылжыту-байланысты тізім

"Move To Front" (MTF) термині басқаша мағынада да қолданылады, динамикалық байланысты тізімнің бір түрі ретінде. MTF тізімінде әрбір элемент оған жүгінген кезде тізімнің басына жылжытылады. Осылайша, уақыт өте келе жиі қолданылатын элементтерге оңайырақ қол жеткізуге болады.