1 Lietot un analizēt bezzudumu saspiešanas algoritmus
1.1 Ieviest jēdzienus saistībā ar ziņojumu saspiešanu
Description
Definējam saspiešanas terminus, kopu teorijas un varbūtiskas sakarības; ieviešam arī informācijas saturu un entropiju ziņojumu telpā. Modulis neietver konkrētus saspiešanas algoritmus.
(CMU:Blelloch2013, pp.1-9)Introduction to Data Compression
(Cambridge:MacKay2014A)Entropy and Data Compression (I): Introduction to Compression, Inf.Theory and Entropy.
(Cambridge:MacKay2014B)Entropy and Data Compression (II): Shannon's Source Coding Theorem, The Bent Coin Lottery.
1.1.1. Izskaidrot kursa saturu un tajā izmantotās metodes
- Izskaidrot sešas satura tēmas jeb priekšmetapgabalus
- Identificēt algoritmu paradigmas jeb algoritmu veidošanas principus
- Apspriest kursa mācību virsuzdevumus
- Skaidrot rīku un metožu piemērotību virsuzdevumu sasniegšanai
- Skaidrot kursa priekšnoteikumus un tvērumu
1.1.2. Definēt ziņojumus, kodējumus, bezzudumu un zudumradošo saspiešanu
Aprakstām saspiešanu klasisku kopu un funkciju līmenī bez varbūtiskiem modeļiem.
- Pierādīt universāla saspiešanas algoritma neesamību ar Dirihlē principu
- Definēt ziņojumus un ziņojumu alfabētu
- Definēt kodējumu kā funkciju no ziņojumiem uz bitu virknītēm
- Definēt bezzudumu un zudumradošo saspiešanu
- Dotajam saspiešanas kontekstam noteikt ziņojumu alfabētu un kodējuma funkciju.
- Dotajam alfabētam un ziņojumu virknes garumam noteikt iespējamo virkņu skaitu (t.sk. ar papildu ierobežojumiem).
- Atrast varbūtību sadalījumu diskrētam gadījumlielumam (piemēram, ziņojumu kopai) ar nelielu skaitu vērtību, ja zināms ziņojumu ģenerēšanas process.
1.1.3. Definēt varbūtisku ziņojumu modeli, ziņojuma informācijas saturu tajā un vidējo kodējuma garumu.
Piedēvējam ziņojumiem varbūtības un ieviešam saistītos jēdzienus - informācijas saturu un vidējo kodējuma garumu.
- Pamatot saspiešanas metodes saistību ar ziņojumu varbūtisko modeli
- Aprakstīt n-bitu kodu telpu un tās dalīšanu gabalos
- Definēt konkrēta ziņojuma informācijas saturu
- Definēt kodējuma vidējo garumu
- Atrast viena ziņojuma informācijas saturu.
- Aprēķināt entropiju dotajām burtu varbūtībām.
- Dotajam gadījumlieluma vērtību skaitam <span class="math inline">\( n \)</span> atrast entropijas maksimums un minimumus
1.1.4. Definēt diskrēta gadījumlieluma entropiju
Ieviešam entropijas jēdzienu un ieskicējam tā saistību ar informācijas saspiežamību.
- Definēt gadījumlieluma entropiju kā vidējo vērtību informācijas saturiem
- Definēt nosacīto entropiju.
- Definēt divu neatkarīgu gadījumu lielumu pāra entropiju.
- Formulēt (bez pierādījuma) entropijas saistību ar datu saspiežamību
1.1.5. Formulēt entropijas īpašības un izpausmes praktiskās situācijās
Nostiprinām entropijas izprašanu, risinot piemērus un teksta uzdevumus,
- Definēt koda vidējo garumu un saspiešanas attiecību (compression ratio)
- Aprēķināt entropiju monētu svēršanas uzdevumos
- Aprēķināt entropiju kartiņu un urnu uzdevumos
- Aprakstīt funkcijas definīcijas un vērtību apgabalus, raksturot entropiju algoritma ieejā un izejā.
1.2 Formulēt un pamatot apgalvojumus par prefiksu kodiem
Description
Aplūkojam mainīga garuma prefiksu kodus, to teorētiskās īpašības un Hafmana kodu optimalitāti.
(CMU:Blelloch2013, pp.10-15)Introduction to Data Compression
(Thanh2020)Demo Projects: Huffman coding
(Cambridge:McKay2014C)Entropy and Data Compression (III): Shannon's Source Coding Theorem, Symbol Codes.
(Cambridge:McKay2014D)Entropy and Data Compression (IV): Shannon's Source Coding Theorem, Symbol Codes.
1.2.1. Definēt prefiksu kodus
Aprakstām prefiksu kodus vispārīgajā (ne obligāti Hafmana) veidā. Pieminam “non-prefix-free codes”, bet šādas neparastas lietas kursā neapspriežam.
- Parādīt kā neprefiksu kodi rada divdomības
- Aplūkot Morzes kodu kā nedivdomīgu kodu un vai tas ir prefiksu kods
1.2.2. Konstruēt prefiksu kokus, zinot burtu parādīšanās varbūtības.
- Noskaidrot, kā Hafmana pseidokodā darbojas prioritātes rinda
- Uzzīmēt Hafmana koku, ja dots ziņojumu varbūtību sadalījums.
- Pārveidot Hafmana koku kanoniskā formā.
1.2.3. Pamatot atkodēšanas viennozīmīgumu, ja kodēšanai izmantots prefiksu koks (neviens kods nav otram prefikss).
- Minēt prefiksu koka piemērus (teiksim, UTF-8 kodējums)
- Minēt kodējumus, kas nav prefiksu kodi (teiksim, Morzes kods)
1.2.4. Aprakstīt vispārīgu prefiksu saspiešanas metodi.
1.2.5. Aprakstīt Hafmana kodu dabīgu valodu burtiem
1.2.6. Ieviest prefiksu koku vispārēju teoriju
- Ieviest kodu telpas jēdzienu
- Aprakstīt, kā prefiksu koda garums atšķiras no entropijas.
- Izskaidrot entropiju kā saspiešanas teorētisko robežu
1.2.7. Šenona informācijas teorēma
- Krafta-Makmilana teorēma
- Jensena nevienādība (t.sk. Logaritmu un entropijas novērtējumos)
- Teorēma par koda garumu, kas nepārsniedz <span class="math inline">\( H(S)+1 \)</span>
- Definēt vidējā prefiksu koda garumu <span class="math inline">\( M = \sum_{x \in X} p_x\ell_x \)</span>.
1.2.8. Pamatot, kāpēc Hafmana algoritms ir optimāls - vidējais koda garums uz vienu simbolu vismazākais, ja salīdzina ar citām prefiksu metodēm.