Лекция 7
Деңгей бойынша кванттау
Тиімді, бір өткізгішті, код кестесін жіберуді талап етпейді.Оның негізі адаптивті алгоритмді қолдану болып табылады, яғни алгоритм әрбір символға кодты сәйкестендіргенде есептеудің ішкі жүрісін келесі кезекте осы символға басқа код сәйкес келетіндей етіп өзгертеді, яғни кодтауға келіп түсетін символға алагритмнің қалыптасуы болады. Ал декодтағанда да осындай процесс жүреді.
Алгоритм жұмысының басында кодтау ағашында әрқашанда 0 жиілігіне ие, бір аранайы символ болады.Ол ағашқа жаңа символ енгізу үшін қажетті:одан кейін символ коды міндетті түрде жіберіліп отырады. Көбінесе осындай символдарды escape – символы деп атайды. Кеңейтілген ASCII әрбір символды 8 биттік санмен, яғни 0-ден 255-ке дейін, кодтайды.кодтау ағашын құрастырғанда дұрыс декодтау мүмкіндігі болу үшін ағаш құрылымын ретке келтіруі керек. Ағаш жапырақтарын жиіліктің өсу ретімен және содан кейін символдардың стандартты кодтарының өсу ретімен орналастырамыз. Түйіндер солдан оңға қарай үздіксіз жинақталады. Сол жақатағы бұтақтар-0, ал оң жақтағы- 1 санымен белгіленеді.
Адаптивті емес Хаффмен кодын құрастыруға арналған 2 мысалдағы Х дискретті кездейсоқ шама 10-дық мәнін таңдауға сәйкес келетін АССВСАААВС мәліметі үшін Хаффменнің адаптивті алгоритм арқылыкодты құрастыру процессін қарастырайық :
Енгізілетін
деректер
|
код
|
Код ұзынды
ғы
|
Ағаш нөміpі
|
А
C
C
B
C
A
A
A
B
C
|
‘A’
0’C’
1
00’B’
1
001
01
01
001
01
|
8
9
1
10
1
3
2
2
3
2
|
1
2
3
4
5
6
7
8
9
|
Мұнда бит/сим. Егер сығуды қолданбасақ, онда бит/сим. Қарастырылып отырған дискретті кездейсоқ шама үшін бұрын мына мәндер алынған болатын бит/сим және бит/сим. Бірақ мәлімет ұзындығының өсуіне байланысты кодтаудың адаптивті алгоритміндегі мәліметтің орташа көлемі, адаптивті емес Хаффмен мен Шеннона-Фэно әдісін қолдана отырып алынған мәннен айырмашылығы аз, өйткені символдар алфавиті шектелген және әрбір символдың толық кодын тек бір рет қана жіберу қажет.
Енді ‘A’0’C’100’B’1001010100101 мәліметін де кодтау процессін қарастырайық. Мұнда және одан кейін де апострофтағы символ- ASCII+ кестесіндегі екілік санның жазылудың символ нөмерін көрсететін 8 битті білдіреді.Декодтаудың басында Хаффмен ағашы 0 жиілігіндегі escape-символға ғана ие. Әрбір жаңа символдыкодтаған сайын, ағаш қайтадан құрылады.
Енгізілетін
деректер
|
символ
|
Ағаш нөмері
|
‘A’
0’C’
1
00’B’
…
|
A
C
C
B
…
|
1
2
3
4
…
|
Таңдалған алгоритмнің қалыптасу әдісі тиімді емес, өйткені әрбір символды өңдегеннен кейін кодтау ағашының барлығын қайтадан құру қажет. Ағаштаң барлығын қайтадан құрастырмай, тек аздап өзгертетін оңай тәсілдер бар.
Бинарлық ағашты реттелген деп атайды, егер олардың түйіндері саламғының көбеюі бойынша және осы ортақ басшылары бар түйіндер топтамасы бір-бірінің жанында, бір тізбекте орналасса.
4- суретте Хаффмен реттелген ағашына мысал келтірген.
4-сурет.
5-сурет.
Егер кодтау ағашы реттелген болса, онда түйіндердің салмағы өзгерген кезден ағаштың барлығын қайтадан құрастыру қажет емес-онда тек қана екі түйіннің, яғни салмағы реттілікті бұзған түйін мен одан кейінгі салмағы төмен түйін, орнын ауыстыру керек. Түйіндер орны ауысқананн кейін, барлық түйіндер салмағын есептеу қажет.
Мысалы, 4-суреттегі ағашқа тағы да екі А әрпін қоссақ, онда алдымен А түйіні мен D және B түйіндері орындарын ауытыру қажет(5-сурет).
Егер тағы да екі А әрпін қоссақ, онда алдымен А түйіні мен D және B түйіндері үшін басшы түйінінің орындарын ауыстырып, содан кейін Е түйіні мен Е аға-түйінінің орнын ауытыру қажет(6-сурет).
6-сурет.
Ағашты тек жаңадан түйін жапырағы пайда болғаннан кейін қайта құру қажет. Толық қайта құрудың орнына жаңа жапырағынан оңға қарай жаңа жапырақ қосу қажет, егер қажет болса, осылайша алынған ағашты реттеу керек.
Хаффменнің адаптивті алгоритмінің реттелген ағашымен бірге жұмысын келесі схемада көрсетуге болады:
Енгізілетін
деректер
|
код
|
Код
ұзын
дығы
|
Ағаш нөміpі
|
Алу әдісі
|
А
C
C
B
C
A
A
A
B
C
|
‘A’
0’C’
1
00’B’
1
001
01
01
001
01
|
8
9
1
10
1
3
2
2
3
2
|
1
2
3
4
5
6
7
8
9
|
жаңа түйін қосу
жаңа түйін қосу
реттеу
жаңа түйін қосу
өзгермейді
өзгермейді
реттеу
реттеу
өзгермейді
|
Мұнда бит/сим.
Достарыңызбен бөлісу: |