Кіріспе

Жоғалмайтын деректерді сығыстыру алгоритмі. Грамматикалық кодтар немесе грамматикалық сығыстыру – қысылатын жол үшін контекстсіз грамматика (CFG) құру идеясына негізделген сығыстыру алгоритмдері. Мысалға, универсалды жоғалмайтын деректерді сығыстыру алгоритмдерін келтіруге болады. Деректер жолын сығыстыру үшін грамматикалық код оны контекстсіз грамматикаға түрлендіреді. Кіріс жолы үшін ең кіші грамматиканы табу мәселесі (ең кіші грамматика мәселесі) NP-толық екені белгілі, сондықтан теориялық және практикалық тұрғыдан көптеген грамматикалық түрлендіру алгоритмдері ұсынылған. Әдетте, алынған грамматика арифметикалық кодтау сияқты статистикалық кодтаушылармен қосымша сығыстырылады.

Мысалдар мен сипаттамалары

Грамматикалық кодтар класы өте кең. Оған блок кодтары, көп деңгейлі үлгіні тану (MPM) алгоритмі, Lempel Ziv кодының инкременттік талдауының түрлері және көптеген басқа жаңа әмбебап жоғалтусыз сығылу алгоритмдері кіреді. Грамматикалық кодтар әмбебап болып табылады, себебі олар шекті әліпбиі бар кез келген тұрақты, эргодикалық дереккөздің энтропиялық жылдамдығына асимптотикалық түрде жете алады.

Қолданбалы алгоритмдер

Төмендегі компрессия бағдарламаларын сыртқы сілтемелер арқылы алуға болады. Sequitur – кіріс мәтінін тікелей CFG-ге аударатын классикалық грамматикалық қысу алгоритмі, содан кейін жасалған CFG арифметикалық кодтаушымен кодталады. Re-Pair – ең көп кездесетін элементтерді бірінші кезекте алмастыру стратегиясын қолданатын ашкөз алгоритм. Оның қысу өнімділігі жоғары, бірақ негізгі жадқа қажетті орын өте көп. GLZA – қайталанатын грамматика құрастырады, яғни ішінде қайталаулар болады, мұнда қайталауларды "ашудың" энтропиялық кодтау құны, оларды анықтап, кодтау үшін ереже жасау құнынан төмен. (Жалпы алғанда, қысу бойынша оптималды SLG азайтылмайды, ал ең кіші грамматика мәселесі нақты SLG қысу мәселесінен өзгеше.)