Дәріс №1 Кіріспе. Жиындар теориясының негізгі ұғымдары. Жиындарға амалдар қолдану



бет17/18
Дата01.11.2022
өлшемі1.12 Mb.
#463738
1   ...   10   11   12   13   14   15   16   17   18
Д ріс №1 Кіріспе. Жиындар теориясыны негізгі ымдары. Жиындар

i

A

,




i

B*






















.













Мұндай




әріптеп




кодтау

K







әріптерінің







түрінде белгіленеді.

i




кодтарының жиыны элементер кодтар жиыны деп аталады. Алфавиттік кодтауды кез-келген хабарламалар жиыны үшін қолдануға болады. Осылайша, алфавиттік кодтау ең қарапайым кодтау болып табылады, оны әрқашан бос емес алфавитте қолдануға болады.

Мысал.


Төмендегі алфавиттер берілсін делік:





  1. = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} В = {0, 1}.

Онда кодтау кестесі орналастыру түрінде бола алады:






0

1

2

3

4

5

6

7

8

9




















































0000 00010010 0011 0100 0101 0110 0111 1000 1001







.

Бұл екілік-ондық кодтау, ол өзара бірмәнді болып табылады, сондықтан

декодтау орындала алады.































Дегенмен схема





































0

1

2

3

4

5

6

7

8

9




















































0

1

10

11

100

101

110

111 1000 1001



















өзара бірмәнді болып табылмайды. Мысалы, алты бірліктен 111111 тұратын жиын 333, 77, сонымен қатар 111111, 137, 3311 немесе 7111сөздеріне сәйкес келуі мүмкін, онымен қоса кез-келген орыналмастыру.

Алфавиттік кодтак схемасы префиксті деп аталады, егер бір әріптің элементар коды басқа әріптің элементар кодының префиксі болып табылмаса.




2.Макмиллан теңсіздігі

Алфавиттік кодтау схемасы бөлінгішті деп аталады, егер кез-келген элементар кодтардан құралған сөз элементар кодтарға жалғыз әдіспен жіктелетін болса.




Бөлінгішті схемалы алфавиттік кодтау декодтауға рұқсат етеді.


Префиксті схема бөлінгішті болатынын дәлелдеуге болады.

Алфавиттік кодтау схемасы бөлінгішті болуы үшін элементар кодтардың ұзындығы Макмиллан теңсіздігі деп аталатын қатынасты қанағаттандыруы керек.




Макмиллан теңсіздігі
Егер алфавиттік кодтау схемасы
1 2... n 1 2... n

бөлінгішті болса, онда








1







1




...




1

1

2




1

2




2




2

n
















теңсіздігі орындалады.




Мысал
Алфавиттік кодтау схемасы
А={ а, b В={0, 1},


a

b













0







01

бөлінгішті болып табылады, себебі
1 1, 2 2,
демек, Макмиллан теңсіздігі орындалады:


211 212341

Берілген схема префиксті болып табылмайды, себебіа әрпінің элементар коды b әрпінің элементар кодының префиксі болып табылады.


Бақылау сұрақтары:

  1. Кодтау дегеніміз не?

  2. Декодтау қалай жүзеге асырылады?

  3. Бөлінгіштік дегеніміз не?Префиксті код деген қандай код?

  4. Макмиллан теңсіздігі.



Дәріс №14. Мәліметтерді сығу


Дәріс мақсаты:Мәліметтердің көлемін азайту мақсатында қолданылатынсығу алгоритмдерімен таныстыру.


Кілттік сөздер:Мәліметтерді сығу,сөздік,Лемпель–Зив алгоритмі.
Жоспары:



  1. Мәліметтерді сығу

  2. Қайталамалы серияларды кодтау

  3. Лемпель –Зив алгоритмі


1.Мәліметтерді сығу




Мәліметтерді сығу (ағылш.data compression) —олардың көлемін азайтумақсатында орындалатын мәліметтерді алгоритмдік түрлендіру. Мәліметтерді жіберу және сақтау үшін қолданылады. Кері процедура мәліметтерді қалпына келтіру деп аталады.

Кез-келген сығу негізінде мәліметтердің шығу тегінің моделі тұрады. Басқаша айтқанда қандай типті мәлімет сығылуы қажеттігін білу керек. Сығылатын материал туралы мәліметіңіз болмай тұрып, оның көлемін азайту үшін ешқандай әрекет ете алмайсыз.


Барлық сығу алгоритмдері екі негізгі класқа бөлінеді:


Шығынсыз сығу; Шығынмен сығу.


Шығынсыз сығуды қолданғанда мәліметтерді толығымен қалпына келтіруге болады, ал шығынмен сығуды қолданғанда мәліметтер елеусіз ақаулықтармен қалпына келтіріледі. Мәліметтерді шығынсыз сығу мәтіндік құжаттарды, компьютерлік программаларды, сирек жағдайда аудио-бейне мәліметтердің, цифрлық бейнелердің көлемін азайту мақсатында, яғни мәлімет ақаулықсыз қалпына келтірілу қажет болғанда қолданылады. Шығынмен сығу әдетте аудио-бейне файлдардың, цифрлық бейнелердің көлемін азайту үшін, яғни бастапқы мәлімет пен қалпына келтірілген мәліметтің толық сәйкестігі талап етілмеген жағдайда қолданылады.



  1. Қайталамалы серияларды кодтау

Мәліметтерді сығудың ең танымал қарапайым шешімі және ақпаратты қайтымды жолмен сығу – бұл қайталамалы серияларды кодтау (Run Length Encoding - RLE). Бұл әдістің мәні қайталамалы байттар сериясын немесе шынжырларды немесе олардың тізбегін бәір кодтаушы байтпен және қайталану санының есептегішіне алмастыру болып табылады.


Мысалы:

44 44 44 11 11 11 11 11 01 33 FF 22 22 – бастапқы берілген тізбек , 03 44 04 11 00 03 01 03 FF 02 22 сығылған тізбек. Бірінші байт келесі байтты неше рет қайталау керектігін көрсетеді. Егер бірінші байт 00-ге тең болса, онда оның артынан қанша қайталанбайтын мәлімет бар екендігін көрсететін есептегіш тұрады. Бұл әдістер растрлы графикалық бейнелерді (BMP, PCX, TIF, GIF) сығуға өте тиімді болып келеді, себебі олар қайталанатын ұзын сериялы байттар тізбегінен тұрады. RLE әдісінің кемшілігі сығу дәрежесінің төмендігі болып табылады.


3. Лемпель –Зив алгоритмі

1977 жылы Абрахам Лемпель және Якоб Зив кейін LZ77 аталған мәліметтерді сығу алгоритмін ұсынды. Бұл алгоритм мәтінді сығу compress,


lha, pkzip және arj программаларында қолданылады.LZ78өзгертілгеналгоритмі екілік мәліметтерді сығу үшін қолданылады. Бұл өзгертілген алгоритмдер АҚШ патентімен қорғалған. Алгоритм биттер тізбегін фразаларға бөлу арқылы кодтап, кейін осы фразаларды кодтауды ұсынады. Алгоритмнің мәні келесіден болады:


Егер мәтінде қайталанатын символдар жолы кездесетін болса, онда олар сол жолға сілтемелермен алмастырылады. Сілтеме форматы <префикс, арақашықтығы, ұзындығы>түрінде болады. Префикс бұл жағдайда 1-ге тең. Арақашықтық өрісі жолдар сөздігіндегі сөзді идентификациялайды.Егер жолсөздікте болмаса, онда <префикс, символ> түріндегі символ коды генерацияланады, мұндағы префикс өрісі=0, ал символ өрісі бастапқы мәтіннің ағымдық символына сәйкес келеді. Осыдан префикстің көрсеткіштер кодын символдар кодынан бөліп тұратынын көруге болады. <Символ> кодтарын кірістіру сөздікті тиімді етуге және сығу тиімділігін арттыруға мүмкіндік береді. Мұндағы негізгі алгоритмдік мәселе тиімді жолды таңдауда болып тұр, себебі мұнда біршама артық алынуы мүмкін.


Мысал қарастырайық. U = 0010001101 бастапқы берілген тізбек.


Белгілеулер енгізейік:

P[n] —n нөмірлі фраза; C — сығу нәтижесі.


Бастапқы берілген биттер тізбегін фраза түрінде жазу 1-кестеде көрсетілген.


P[0] — бос жол. "." (нүкте) символымен біріктіру операциясы белгіленеді (конкатенация).














1-кесте

N фраза

Мәні

Формула

Бастапқы берілген тізбек U

0




P[0]

0010001101

1

0

P[1] = P[0].0

0.010001101

2

01

P[2] = P[1].1

0.01.0001101

3

010

P[3] = P[1].0

0.01.00.01101

4

00

P[4] = P[2].1

0.01.00.011.01

5

011

P[5] = P[1].1

0.01.00.011.01

Әрқайсысы(A.B) түрінде болатын жолдар жұбын қалыптастырайық. Әрбір жұп жаңа фразаны құрады және осы фразаға қосылатын алдыңғы фразаның идентификаторы мен биттен тұрады. Барлық осы жұптарды біріктіру С соңғы нәтижесін береді. P[1]=P[0].0 (00.0)-ді береді, P[2] = P[1].0 (01.0)-ді береді және т.с.с. түрлендіру схемасы 2-кестеде көрсетілген.























2-кесте

Формулалар

P[1]=

P[2]=

P[3]

=

P[4] = P[2].1

P[5]= P[1].1




P[0].0

P[1].1

P[1].0










Жұптар

00.0 = 000

01.1 = 011

01.0 = 010

10.1 =

01.1 =
















101

011

С

000.011.010.101.011 = 000011010101011




Құрамында P[0] бар барлық формулалар сығуды бермейді. Көріп тұрғанымыздай С U-ға қарағанда ұзынырақ, бірақ бұл бастапқы берілгені қысқа тізбек үшін. Мәлімет үлкен көлемді болғанда бастапқы берілгенді сығу өте жақсы жүзеге асады. Келтірілген мысалдан сығу амалдарының барлығы мәліметтердің көлемін қысқартпайтынын көруге болады.




Достарыңызбен бөлісу:
1   ...   10   11   12   13   14   15   16   17   18




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет