Тақырып №13. Хаффман коды
Тақ ырып №13. Хаффман коды Хаффман ә дісі айнымалы ұ зындық ты кодтардың алгоритмін қ ұ ру ү шін µте ың ғ айлы болып табылады. Егер символдардың ық тималдылығ ы 2 санының теріс дә режесіне тең болса, онда Хаффман ә дісі символдарды жақ сы сығ уғ а мү мкіндік береді. Хаффман алгоритмінің аѓашы тө меннен жоғ ары қ арай қ ұ рылады, содан кейін аѓаш бойынша тө мен тү седі. Ә рбір жеке код солдан оң ғ а қ арай қ ұ ралады(ең кіші биттен ү лкен битке қ арай). Алгоритм, алфавит символдарының тізімін ық тималдық тары кему ретімен қ ұ рудан басталады. Содан кейін тү бінен бастап аѓаш қ ұ рылады. Аѓаштың б±тақ тары болып осы символдар қ ызмет етеді. Бұ л қ адам бойынша жасалады жә не ә рбір қ адамда ең аз ық тималдылығ ы бар екі символ алынады. Осы алынғ ан символдарды кө рсете алатын кө мекші символмен ауыстырылады. Кө мекші символғ а, осы символдар қ адамында таң далғ ан, ық тималдық тар қ осындысына тең ық тималдық тар меншіктеледі. Тізім бір ғ ана қ осымша символғ а дейін кішірейгенде аѓаш қ ұ ралғ ан деп есептелінеді. Алгоритм барлық символдардың кодтарын қ ұ румен аяқ талады. Осы алгоритмді қ арапайым мысалда кө рсетейік. Ық тималдығ ы а1= 0. 4, а2 =а3 =0. 2, а4= а5 =0. 1 символдар берілсін. Символдарды бір- бірімен келесі ретпен жұ птастырмыз: 1. 2. 0, 3 ық тималдылығ ы бар
3. Енді ық тималдылық тары 0, 3, 0, 3 жә не 0, 4 болатын 4. Сонынада қ алғ ан Нә тижесінде, осығ ан сә йкес келетін ағ аш қ ұ растыруғ а болады Символдың кодтарын белгілеу ү шін біз еркін тү рде ә рбір жұ п ү шін жоғ арғ ы бұ тақ қ а 1 бит жә не тө менгі бұ тақ қ а 0 бит меншіктейміз. Нә тижесінде келесі кодты аламыз: 0, 10, 111, 1101 жә не 1100. Негізгі ә дебиеттер: [1, 2, 3, 9] Қ осымша ә дебиеттер: [11, 12] Тақ ырып №14. Арифметикалық кодтау Арифметикалық кодтауда, жеке символдарды кодтаудың орнына, барлық мә ліметке бір ѓана код береді. Енетін файл ретінде мә тін, бейне басқ а да мә ліметті алуғ а болады. Бұ л алгоритм енетін файлдың символдарын біртіндеп оқ иды жә не сығ ылғ ан файлғ а биттерді қ осады. Бұ л ә дісті тү сіну ү шін алынғ ан кодты [0, 1) интервалындағ ы сан ретінде қ арастыру керек(мұ ндағ ы [a, b) a жабық, b ашық ). М±нда «9746509» кодын «9. 9746509» коды ретінде тү сінеді, бірақ «0. » бө лігі жіберілген файлғ а қ осылмайды. Бірінші қ адамда алфавиттегі ә рбір символдың пайда болу жилігін анық тау қ ажет. Ең жақ сы нә тижені енетін файлдың барлығ ын оқ у барысында ғ ана алуғ а болады. Бірінші мысалда ық тималдық тары P1=0. 4, P2=0. 5 жә не P3=0. 1 болатын
Осы мысал арқ ылы арифметикалық кодтау алгоритмнің келесі қ адамдарын атап айтуғ а болады: 1. [0, 1) ағ ымдық интервалды беру; 2. Ә рбір енетін S файлғ а келесі қ адамдарды қ айталаң ыз; 2. 1 Ағ ымдағ ы интервалды ә рбір символдың ық тималдығ ына байланысты пропорционал бө ліктерге бө лің із; 2. 2 S1символына қ атысты интервалы таң дап, оны ағ ымдағ ы интервал ретінде алу; 3. Енгізілген барлық файл ө ң делгеннен кейін, алгоритмнің шығ уы деп кез - келген нү кте алынады. Кез - келген ө ң делген символдан кейін, ағ ымдағ ы символ сығ ылып отырылады. Кодтың орташа ұ зындығ ы табу ‰шін шығ атын биттер ө лшемін енетін символдар ө лшеміне бө лу керек. Негізгі ә дебиеттер: [1, 2, 3] Қ осымша ә дебиеттер: [11, 12]
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2026 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|