Îøèáêè è îïå÷àòêè
Íèæå ïðèâåäåíû èçâåñòíûå îøèáêè è íåòî÷íîñòè, à òàêæå îïå÷àòêè, èñêàæàþùèå ñìûñë òåêñòà.
Ñòðàíèöà | Èñõîäíûé òåêñò | Âàðèàíò ïðàâèëüíîãî íàïèñàíèÿ, ïîÿñíåíèÿ | ||||||||||||||||
Âî âñåì òåêñòå | "ïîäðàçäåë" ñëåäóåò ïîíèìàòü êàê "ïîäïóíêò" %-) | |||||||||||||||||
18 | Åñëè ðàçìåð êàæäîãî òàêîãî ôàéëà â ðåçóëüòàòå îáðàáîòêè óìåíüøàåòñÿ õîòÿ áû íà 1 áèò, òî 2n èñõîäíûì ôàéëàì áóäåò ñîîòâåòñòâîâàòü ñàìîå áîëüøåå 2n-1 ðàçëè÷àþùèõñÿ àðõèâíûõ ôàéëîâ. | Åñëè ðàçìåð êàæäîãî òàêîãî ôàéëà â ðåçóëüòàòå îáðàáîòêè óìåíüøàåòñÿ õîòÿ áû íà 1 áèò, òî 2n èñõîäíûì ôàéëàì áóäåò ñîîòâåòñòâîâàòü ñàìîå áîëüøåå 2n-1 ðàçëè÷àþùèõñÿ àðõèâíûõ ôàéëîâ. | ||||||||||||||||
31 | Êàíîíè÷åñêèé àëãîðèòì ÕàôôìàíàÎäèí èç êëàññè÷åñêèõ àëãîðèòìîâ, èçâåñòíûõ ñ 60-õ ãîäîâ. |
Êàíîíè÷åñêèé àëãîðèòì ÕàôôìàíàÎäèí èç êëàññè÷åñêèõ àëãîðèòìîâ, èçâåñòíûõ ñ 50-õ ãîäîâ. | ||||||||||||||||
40, 41 | else if((li >= Third_qtr)&&(hi < First_qrt)){ | else if((li >= First_qtr)&&(hi < Third_qrt)){ | ||||||||||||||||
41 | Íà ñèìâîë ñ ìåíüøåé âåðîÿòíîñòüþ ó íàñ òðàòèòñÿ â öåëîì áîëüøåå ÷èñëî áèòîâ, ÷åì íà ñèìâîë ñ ìåíüøåé âåðîÿòíîñòüþ. | Íà ñèìâîë ñ ìåíüøåé âåðîÿòíîñòüþ ó íàñ òðàòèòñÿ â öåëîì áîëüøåå ÷èñëî áèòîâ, ÷åì íà ñèìâîë ñ áîëüøåé âåðîÿòíîñòüþ. | ||||||||||||||||
45 |
// Åñëè äëÿ õðàíåíèÿ çíà÷åíèé èñïîëüçóåòñÿ 31 áèò, // êàæäûé ñèìâîë ñäâèíóò íà 1 áàéò âïðàâî // â âûõîäíîì ïîòîêå è ïðè äåêîäèðîâàíèè ïðèõîäèòñÿ // åãî ñ÷èòûâàòü â 2 ýòàïà. #define EXTRABITS ((CODEBITS-1)%8+1) |
// Åñëè äëÿ õðàíåíèÿ çíà÷åíèé èñïîëüçóåòñÿ 31 áèò, // êàæäûé ñèìâîë ñäâèíóò íà 1 áèò âïðàâî // â âûõîäíîì ïîòîêå, è ïðè äåêîäèðîâàíèè ïðèõîäèòñÿ // åãî ñ÷èòûâàòü â 2 ýòàïà. #define EXTRABITS ((CODEBITS-1)%8+1) | ||||||||||||||||
46 |
void decode_normalize( void ) { while( range <= BOTTOM ) { range <<= 1; low = low<<8 | ((next_char<<EXTRABITS) & 0xFF); next_char = input_byte(); low |= next_char >> (8-EXTRABITS); range <<= 8; } } |
void decode_normalize( void ) { while( range <= BOTTOM ) { low = low<<8 | ((next_char<<EXTRABITS) & 0xFF); next_char = input_byte(); low |= next_char >> (8-EXTRABITS); range <<= 8; } } (óáðàíà ëèøíÿÿ ñòðîêà â öèêëå) | ||||||||||||||||
90, 91, 372 | Äëÿ îáîçíà÷åíèÿ ìåòîäà Ìèëëåðà-Óýãíàìà (Miller-Wegman) èñïîëüçóåòñÿ àááðåâèàòóðà LZMV âìåñòî LZMW | |||||||||||||||||
91 | Ïðàêòè÷åñêèå ðåàëèçàöèè LZMV íåèçâåñòíû. | LZMW ïðèìåíÿåòñÿ â ÑÓÁÄ DB2 ôèðìû IBM äëÿ ýêîíîìíîãî ïðåäñòàâëåíèÿ èíôîðìàöèè íåïîñðåäñòâåííî â ðåëÿöèîííîé áàçå äàííûõ. Äëÿ ñæàòèÿ äàííûõ â ÑÓÁÄ áîëåå ïðèãîäíû ìåòîäû ñ ÿâíûì ñëîâàðåì, ÷òî ïîçâîëÿåò îðãàíèçîâàòü ñòàòè÷åñêèé ðåæèì ñæàòèÿ ñ ïîìîùüþ çàðàíåå ïîñòðîåííîãî ñëîâàðÿ, áåç àäàïòàöèè ê ëîêàëüíûì èçìåíåíèÿì. «Æàäíàÿ» ñòðàòåãèÿ ïîñòðîåíèÿ ñëîâàðÿ LZMW îáåñïå÷èâàåò çàìåòíîå ïðåèìóùåñòâî íàä LZW ïî ñòåïåíè ñæàòèÿ, ïîñêîëüêó äàííûå îáû÷íî âûñîêîèçáûòî÷íû èç-çà íàëè÷èÿ áîëüøîãî êîëè÷åñòâà äëèííûõ ïîâòîðÿþùèõñÿ ñòðîê è íåîäíîðîäíû (ñæàòèå â DB2 îñóùåñòâëÿåòñÿ ïî ñòðîêàì, à âåäü îòäåëüíûå êîëîíêè îáû÷íî ñèëüíî îòëè÷àþòñÿ). Òàêèì îáðàçîì, LZMW èìååò ñâîþ ñïåöèôè÷åñêóþ íèøó. | ||||||||||||||||
179 | Îïèñàííûå àëãîðèòìû CTW ðàáîòàþò ñ áèíàðíûì àëôàâèòîì. | Ýòî íå òàê. Ñóùåñòâóþò òåîðåòè÷åñêèå ðàçðàáîòêè è ïðàêòè÷åñêèå ðåàëèçàöèè ìóëüòèàëôàâèòíîãî CTW. Íàïðèìåð, ñì. Sadakane K. et al. Implementing the Context Tree Weighting Method for Text Compression | ||||||||||||||||
189 | for( i=0; i<n; i++) { sum += count[i]; count[i] = sum - count[i]; } |
for( i=0; i<N; i++) { sum += count[i]; count[i] = sum - count[i]; } | ||||||||||||||||
190 | for( i=0; i<n; i++) { putc( in[pos], output ); pos = T[pos]; } |
for( i=0; i<n; i++) { pos = T[pos]; putc( in[pos], output ); } (ïîìåíÿòü ìåñòàìè ñòðî÷êè) | ||||||||||||||||
199 | Ðèñ. 5.15. 1-2-êîäèðîâàíèå ÷èñåë:
|
| ||||||||||||||||
252 | Åñëè èíäåêñ ðàâåí 58, òî îòîáðàæåíèå áóäåò òàêèì: | Åñëè èíäåêñ ðàâåí 56, òî îòîáðàæåíèå áóäåò òàêèì: | ||||||||||||||||
271 | Òðåáóåìûé îáúåì ïàìÿòè ïðè ñæàòèè. PPM: Âàðüèðóåòñÿ â øèðîêèõ ïðåäåëàõ, â çàâèñèìîñòè îò ñëîæíîñòè ìîäåëèðîâàíèÿ è ïîðÿäêà ìîäåëè; âûðàñòàåò íà ìàëîèçáûòî÷íûõ è î÷åíü íåîäíîðîäíûõ äàííûõ | Óòâåðæäåíèå îá óâåëè÷åíèè ðàñõîäà ïàìÿòè â ñëó÷àå ìàëîèçáûòî÷íûõ äàííûõ ñïîðíî. Ýòî çàâèñèò îò èñïîëüçóåìûõ â êîìïðåññîðå ñòðóêòóð äàííûõ.  òîì ñëó÷àå, åñëè â ìîäåëè íå õðàíèòñÿ â ÿâíîì âèäå èíôîðìàöèÿ î òàê íàçûâàåìûõ "âèðòóàëüíûõ" ñîñòîÿíèÿõ, âîçíèêøèõ òîëüêî îäèí ðàç, òî ñèòóàöèÿ ìîæåò áûòü è îáðàòíîé, îñîáåííî ïðè áîëüøîì ïîðÿäêå ìîäåëè.  èòîãå äëÿ êîäèðîâàíèÿ óæå ñæàòîãî ôàéëà (ñòåïåíü ñæàòèÿ îêîëî 1) ìîæåò òðåáîâàòüñÿ ìåíüøèé îáúåì ïàìÿòè, ÷åì äëÿ êîäèðîâàíèÿ òåêñòîâîãî ôàéëà (ñòåïåíü ñæàòèÿ 3-4) òàêîãî æå ðàçìåðà. | ||||||||||||||||
294 | Ïîñëåäîâàòåëüíîñòü êîäîâ äëÿ äàííîãî ïðèìåðà, ïîïàäàþùèõ â âûõîäíîé ïîòîê: <256> <45> <55> <55> <151> <259>. | Íå çàêîäèðîâàí ïîñëåäíèé ñèìâîë 55 è ñèìâîë êîíöà ïîòîêà, ïîýòîìó: Ïîñëåäîâàòåëüíîñòü êîäîâ äëÿ äàííîãî ïðèìåðà, ïîïàäàþùèõ â âûõîäíîé ïîòîê: <256> <45> <55> <55> <151> <259> <55> <257>. | ||||||||||||||||
297 | Óïðàæíåíèå. Ñîñòàâèòü àëãîðèòì ãåíåðàöèè òàêèõ öåïî÷åê. Ïîïðîáîâàòü ñæàòü ïîëó÷åííûé òàêèì îáðàçîì ôàéë ñòàíäàðòíûìè àðõèâàòîðàìè (zip, arj, gz). Åñëè âû ïîëó÷èòå ñæàòèå, çíà÷èò, àëãîðèòì ãåíåðàöèè íàïèñàí íåïðàâèëüíî. |  îáùåì ñëó÷àå ýòî íå òàê. Ïîñêîëüêó ïîäðàçóìåâàþòñÿ LZH-àðõèâàòîðû, òî ìîæåò ñêàçàòüñÿ íàëè÷èå êîäèðîâàíèÿ ïî Õàôôìàíó. Åñëè â ñãåíåðèðîâàííûõ äàííûõ åñòü ëîêàëüíûå îáëàñòè ïðåîáëàäàíèÿ îäíèõ ñèìâîëîâ íàä äðóãèìè, òî îíè ìîãóò áûòü ñæàòû LZH, ïóñòü äàæå è áëî÷íî-àäàïòèâíûì. | ||||||||||||||||
302 | Ïåðåïóòàíû ïîäïèñè ó ðèñ. 1.1 è ðèñ. 1.2. | |||||||||||||||||
307 | Íåïðàâèëüíàÿ ìàòðèöà ïåðåõîäà RGB --> YCrCb: |
|||||||||||||||||
308 | Ïëàâíîå èçìåíåíèå öâåòà ñîîòâåòñòâóåò íèçêî÷àñòîòíîé ñîñòàâëÿþùåé, à ðåçêèå ñêà÷êè - íèçêî÷àñòîòíîé. | Ïëàâíîå èçìåíåíèå öâåòà ñîîòâåòñòâóåò íèçêî÷àñòîòíîé ñîñòàâëÿþùåé, à ðåçêèå ñêà÷êè - âûñîêî÷àñòîòíîé. | ||||||||||||||||
318 |
... } // Next range block Save_Coefficients_to_file(best); } // Next domain block |
... } // Next domain block Save_Coefficients_to_file(best); } // Next range block | ||||||||||||||||
318 |
Íåâåðíàÿ ôîðìóëà ñäâèãà ïî ÿðêîñòè: |
|||||||||||||||||
318 |
Íåâåðíàÿ ôîðìóëà ìåðû: |
|||||||||||||||||
318 |
×àñòü ïðîãðàììû for (all domain blocks) for (all range blocks) + symmetry transformation |
×àñòü ïðîãðàììû for (all range blocks) for (all domain blocks) + symmetry transformation | ||||||||||||||||
319 |
For(every pixel(i,j) in the block{ Rij = 0.75Dij + oR; } //Next pixel |
For(every pixel(i,j) in the block{ Rij = 0.75Dij + q; } //Next pixel | ||||||||||||||||
326 |
Ïåðåïóòàíû èíäåêñû ó êîýôôèöèåíòîâ h â ôîðìóëàõ ïðåîáðàçîâàíèé: |
| ||||||||||||||||
327 |
Ñìåùåíû èíäåêñû â ôîðìóëå: |
íàâåðõ