Реалізація ідеї арифметичного кодування, Детальна інформація
Реалізація ідеї арифметичного кодування
I\x00B3ney ia\x00F0aaeyaeo “!” [0.23354; 0.2336 )
I\x00F0eionoeii, ui ana oa, ui aeaeiaeoaaeueiee cia\x00BA i\x00F0i oaeno, oea e\x00B3ioeaaee \x00B3ioa\x00F0aae [0,23354; 0,2336). A\x00B3i a\x00B3ae\x00F0aco ae c\x00F0icoi\x00B3\x00BA, ui ia\x00F0oee caeiaeiaaiee neiaie – oea “a”, oiio ui i\x00B3aenoieiaee \x00B3ioa\x00F0aae oe\x00B3eeii eaaeeoue a \x00B3ioa\x00F0aae\x00B3, ui aoa aeae\x00B3eaiee oeueiio neiaieo a\x00B3aeiia\x00B3aeii aei Oaaeeoe\x00B3 1. Oaia\x00F0 iiaoi\x00F0eii ae\x00B3? eiaeoaaeueieea:
Nii/aoeo [0.0; 1.0 )
I\x00B3ney ia\x00F0aaeyaeo “a” [0.2; 0.5 )
Ca\x00B3aene c\x00F0icoi\x00B3ei, ui ae\x00F0oaee neiaie – oea “a”, ine\x00B3eueee oea i\x00F0ecaaaea aei \x00B3ioa\x00F0aaeo [0,2; 0,26), yeee oe\x00B3eeii i\x00B3noeoue a nia\x00B3 i\x00B3aenoieiaee \x00B3ioa\x00F0aae [0,23354; 0,2336). I\x00F0aoethth/e a oaeee niin\x00B3a, aeaeiaeoaaeueiee aeoyao\x00BA aanue oaeno.
Aeaeiaeoaaeueiee ia ia\x00BA iio\x00F0aae ciaoe cia/aiiy iaio iaae i\x00B3aenoieiaiai \x00B3ioa\x00F0aaeo, yeee aoa iaea\x00F0aeaiee a\x00B3ae eiaeoaaeueieea. Iaa\x00B3oue iaeiiai cia/aiiy, ui eaaeeoue ana\x00F0aaeei\x00B3 iueiai, iai\x00F0eeeaae, 0,23355 aaea aeinoaoiuei. (\x00B2io\x00B3 /enea – 0,23354, 0,23357 oa iaa\x00B3oue 0,23354321 – oe\x00B3eeii i\x00F0eaeaoi\x00B3). Iaeiae, uia caaa\x00F0oeoe i\x00F0ioean, aeaeiaeoaaeueieeo iio\x00F0\x00B3aii nai\x00BA/anii \x00F0ici\x00B3ciaoe e\x00B3iaoeue oaenoo. E\x00F0\x00B3i oiai, iaeia e oa naia /enei 0,0 iiaeia i\x00F0aaenoaaeoe \x00B3 ye “a”, \x00B3 ye “aa”, \x00B3 ye “aaa” \x00B3 o. ae. Aeey onoiaiiy iaii\x00F0icoi\x00B3iiy ie iiaeii\x00B3 iicia/aoe caaa\x00F0oaiiy eiaeiiai oaenoo niaoe\x00B3aeueiei neiaieii EOF, ui a\x00B3aeiiee \x00B3 eiaeoaaeueieeo, \x00B3 aeaeiaeoaaeueieeo. Aeey aeoaa\x00B3oo c oaaeeoe\x00B3 1 c oe\x00B3\x00BAth iaoith, \x00B3 o\x00B3eueee c iath, aoaea aeei\x00F0enoiaoaaoeny neiaie “!”. Eiee aeaeiaeoaaeueiee cono\x00F0\x00B3/a\x00BA oeae neiaie, oi a\x00B3i caaa\x00F0oo\x00BA na\x00B3e i\x00F0ioean.
Aeey o\x00B3eniaaii? iiaeae\x00B3, yea caaea\x00BAoueny iiaeaeeth oaaeeoe\x00B3 1, aio\x00F0ii\x00B3y 5-oe neiaieueiiai oaenoo “aa\x00B3\x00B3!” aoaea –log 0,3 – log 0,2 – log 0,1 – log 0,1 – log 0,1 = – log 0,00006 ( 4,22. (Ooo canoiniao\x00BAii eiaa\x00F0eo c iniiaith 10, ai aeuaiaaaaeaia eiaeoaaiiy aeeiioaaeiny aeey aeanyoeiaeo /enae). Oea iiynith\x00BA, /iio iio\x00F0\x00B3aii 5 aeanyoeiaeo oeeo\x00F0 aeey eiaeoaaiiy oeueiai oaenoo. Oaeei /eiii, oe\x00F0eia i\x00B3aenoieiaiai \x00B3ioa\x00F0aaeo \x00BA 0,2336 – 0, 23354 = 0,00006, a aio\x00F0ii\x00B3y – a\x00B3ae’\x00BAiiee aeanyoeiaee eiaa\x00F0eoi oeueiai /enea. Cae/aeii ie i\x00F0aoeth\x00BAii c aea\x00B3eeiaith a\x00F0eoiaoeeith, ia\x00F0aaea\x00BAii aea\x00B3eeia\x00B3 /enea oa aei\x00B3\x00F0th\x00BAii aio\x00F0ii\x00B3th a a\x00B3oao.
I’yoe aeanyoeiaeo oeeo\x00F0 caea\x00BAoueny caaaaaoi aeey eiaeoaaiiy oaenoo c /ioe\x00F0ueio aieinieo! Iaaooue ia cian\x00B3i aaeaei ao cae\x00B3i/oaaoe i\x00F0eeeaae \x00F0icai\x00F0oaiiyi, a ia coeneaiiyi. Iaeiae c\x00F0icoi\x00B3ei, ui \x00F0\x00B3ci\x00B3 iiaeae\x00B3 aeathoue \x00F0\x00B3cio aio\x00F0ii\x00B3th. E\x00F0aua iiaeaeue, iiaoaeiaaia ia aiae\x00B3c\x00B3 ie\x00F0aieo neiaie\x00B3a oaenoo “aa\x00B3\x00B3!”, \x00BA oaea iiiaeeia /anoio neiaie\x00B3a: {“a” (0,2), “a” (0,2), “\x00B3” (0,4), “!” (0,2) }. Aiia aea\x00BA aio\x00F0ii\x00B3th, ui aei\x00F0\x00B3aith\x00BA 2,89 a aeanyoeia\x00B3e nenoai\x00B3 a\x00B3aee\x00B3eo, oiaoi eiaeo\x00BA aeo\x00B3aeiee oaeno /eneii c o\x00F0ueio oeeo\x00F0. Iaeiae, a\x00B3eueo neeaaei\x00B3 iiaeae\x00B3, ye a\x00B3aei\x00B3/aeiny \x00F0ai\x00B3oa, aeathoue a caaaeueiiio aeiaaeeo iaaaaaoi e\x00F0au\x00B3e \x00F0acoeueoao.
3. I\x00F0ia\x00F0aia aeey a\x00F0eoiaoe/iiai eiaeoaaiiy.
Ia \x00F0enoieo 1 iieacaii o\x00F0aaiaio inaaaeieiaeo, yeee ii\x00BAaeio\x00BA i\x00F0ioeaaeo\x00F0e eiaeoaaiiy oa aeaeiaeoaaiiy, ye\x00B3 aoei aeeeaaeaii a iiia\x00F0aaeiueiio \x00F0icae\x00B3e\x00B3. Neiaiee a iueiio ioia\x00F0othoueny ye 1, 2, 3… *anoioiee \x00B3ioa\x00F0aae aeey \x00B3-oiai neiaieo caaea\x00BAoueny a\x00B3ae cum_freeq[i] aei cum_freeq[i-1]. I\x00F0e ciaioaii\x00B3 \x00B3 cum_freeq[i] c\x00F0inoa\x00BA oae, ui cum_freeq[0] = 1. (I\x00F0e/eia oaeiai “cai\x00F0ioiueiai” aeiaiai\x00F0o iieyaa\x00BA a oiio, ui cum_freeq[0] aoaea iio\x00B3i i\x00B3noeoe ii\x00F0iae\x00B3coth/ee iiiaeiee, yeee c\x00F0o/ii caa\x00F0\x00B3aaoe ia ii/aoeo ianeao). Iioi/iee \x00F0iai/ee \x00B3ioa\x00F0aae caaea\x00BAoueny a [low; high] \x00B3 aoaea a naiiio ii/aoeo aei\x00F0\x00B3aithaaoe [0; 1) \x00B3 aeey eiaeoaaeueieea, \x00B3 aeey aeaeiaeoaaeueieea.
Ia aeaeue, oeae inaaaeieiae cia/ii ni\x00F0iuaiee, oiae\x00B3 ye a i\x00F0aeoe/iiio canoinoaaii\x00B3 \x00B3nio\x00BA aeae\x00B3eueea /eiiee\x00B3a, ye\x00B3 oneeaaeiththoue \x00B3 eiaeoaaiiy, \x00B3 aeaeiaeoaaiiy.
3.1 Aeai\x00F0eoi a\x00F0eoiaoe/iiai eiaeoaaiiy.
/*C eiaeiei ianooiiei neiaieii oaenoo caa\x00F0oaoeny */
/*aei i\x00F0ioeaaeo\x00F0e encode_symbol() */
/*Ia\x00F0aa\x00B3\x00F0eoe, ui oa\x00F0i\x00B3iaeueiee neiaie caeiaeiaaiee inoaii\x00B3i*/
/*Aeaanoe iaea\x00F0aeaia cia/aiiy \x00B3ioa\x00F0aaeo [low; high) */
encode_symbol(symbol, cum_freq)
range = high – low
high = low + range*cum_freq[symbol - 1]
low = low + range*cum_freq[symbol]
3.2 Aeai\x00F0eoi a\x00F0eoiaoe/iiai aeaeiaeoaaiiy.
/* Value – oea /enei, yea iaea\x00F0aeaii ia ao\x00B3ae*/
/*Caa\x00F0oaiiy aei i\x00F0ioeaaeo\x00F0e decode_symbol() aei oiai iiiaioo*/
/*iiee aiia ia iiaa\x00F0ia oa\x00F0i\x00B3iaeueiee neiaie*/
decode_symbol(cum_freq)
iiooe oaeiai neiaieo, ui
cum_freq[symbol] <= (value - low) / (high - low) < cum_freq[symbol - 1]
/*oea caaacia/o\x00BA \x00F0ici\x00B3uaiiy Value a iaaeao iiaiai \x00B3ioa\x00F0aaeo*/
/*[low; high], ui a\x00B3aeia\x00F0aaeaii a caaa\x00F0oaii\x00B3 i\x00F0ia\x00F0aie*/
I\x00F0eionoeii, ui ana oa, ui aeaeiaeoaaeueiee cia\x00BA i\x00F0i oaeno, oea e\x00B3ioeaaee \x00B3ioa\x00F0aae [0,23354; 0,2336). A\x00B3i a\x00B3ae\x00F0aco ae c\x00F0icoi\x00B3\x00BA, ui ia\x00F0oee caeiaeiaaiee neiaie – oea “a”, oiio ui i\x00B3aenoieiaee \x00B3ioa\x00F0aae oe\x00B3eeii eaaeeoue a \x00B3ioa\x00F0aae\x00B3, ui aoa aeae\x00B3eaiee oeueiio neiaieo a\x00B3aeiia\x00B3aeii aei Oaaeeoe\x00B3 1. Oaia\x00F0 iiaoi\x00F0eii ae\x00B3? eiaeoaaeueieea:
Nii/aoeo [0.0; 1.0 )
I\x00B3ney ia\x00F0aaeyaeo “a” [0.2; 0.5 )
Ca\x00B3aene c\x00F0icoi\x00B3ei, ui ae\x00F0oaee neiaie – oea “a”, ine\x00B3eueee oea i\x00F0ecaaaea aei \x00B3ioa\x00F0aaeo [0,2; 0,26), yeee oe\x00B3eeii i\x00B3noeoue a nia\x00B3 i\x00B3aenoieiaee \x00B3ioa\x00F0aae [0,23354; 0,2336). I\x00F0aoethth/e a oaeee niin\x00B3a, aeaeiaeoaaeueiee aeoyao\x00BA aanue oaeno.
Aeaeiaeoaaeueiee ia ia\x00BA iio\x00F0aae ciaoe cia/aiiy iaio iaae i\x00B3aenoieiaiai \x00B3ioa\x00F0aaeo, yeee aoa iaea\x00F0aeaiee a\x00B3ae eiaeoaaeueieea. Iaa\x00B3oue iaeiiai cia/aiiy, ui eaaeeoue ana\x00F0aaeei\x00B3 iueiai, iai\x00F0eeeaae, 0,23355 aaea aeinoaoiuei. (\x00B2io\x00B3 /enea – 0,23354, 0,23357 oa iaa\x00B3oue 0,23354321 – oe\x00B3eeii i\x00F0eaeaoi\x00B3). Iaeiae, uia caaa\x00F0oeoe i\x00F0ioean, aeaeiaeoaaeueieeo iio\x00F0\x00B3aii nai\x00BA/anii \x00F0ici\x00B3ciaoe e\x00B3iaoeue oaenoo. E\x00F0\x00B3i oiai, iaeia e oa naia /enei 0,0 iiaeia i\x00F0aaenoaaeoe \x00B3 ye “a”, \x00B3 ye “aa”, \x00B3 ye “aaa” \x00B3 o. ae. Aeey onoiaiiy iaii\x00F0icoi\x00B3iiy ie iiaeii\x00B3 iicia/aoe caaa\x00F0oaiiy eiaeiiai oaenoo niaoe\x00B3aeueiei neiaieii EOF, ui a\x00B3aeiiee \x00B3 eiaeoaaeueieeo, \x00B3 aeaeiaeoaaeueieeo. Aeey aeoaa\x00B3oo c oaaeeoe\x00B3 1 c oe\x00B3\x00BAth iaoith, \x00B3 o\x00B3eueee c iath, aoaea aeei\x00F0enoiaoaaoeny neiaie “!”. Eiee aeaeiaeoaaeueiee cono\x00F0\x00B3/a\x00BA oeae neiaie, oi a\x00B3i caaa\x00F0oo\x00BA na\x00B3e i\x00F0ioean.
Aeey o\x00B3eniaaii? iiaeae\x00B3, yea caaea\x00BAoueny iiaeaeeth oaaeeoe\x00B3 1, aio\x00F0ii\x00B3y 5-oe neiaieueiiai oaenoo “aa\x00B3\x00B3!” aoaea –log 0,3 – log 0,2 – log 0,1 – log 0,1 – log 0,1 = – log 0,00006 ( 4,22. (Ooo canoiniao\x00BAii eiaa\x00F0eo c iniiaith 10, ai aeuaiaaaaeaia eiaeoaaiiy aeeiioaaeiny aeey aeanyoeiaeo /enae). Oea iiynith\x00BA, /iio iio\x00F0\x00B3aii 5 aeanyoeiaeo oeeo\x00F0 aeey eiaeoaaiiy oeueiai oaenoo. Oaeei /eiii, oe\x00F0eia i\x00B3aenoieiaiai \x00B3ioa\x00F0aaeo \x00BA 0,2336 – 0, 23354 = 0,00006, a aio\x00F0ii\x00B3y – a\x00B3ae’\x00BAiiee aeanyoeiaee eiaa\x00F0eoi oeueiai /enea. Cae/aeii ie i\x00F0aoeth\x00BAii c aea\x00B3eeiaith a\x00F0eoiaoeeith, ia\x00F0aaea\x00BAii aea\x00B3eeia\x00B3 /enea oa aei\x00B3\x00F0th\x00BAii aio\x00F0ii\x00B3th a a\x00B3oao.
I’yoe aeanyoeiaeo oeeo\x00F0 caea\x00BAoueny caaaaaoi aeey eiaeoaaiiy oaenoo c /ioe\x00F0ueio aieinieo! Iaaooue ia cian\x00B3i aaeaei ao cae\x00B3i/oaaoe i\x00F0eeeaae \x00F0icai\x00F0oaiiyi, a ia coeneaiiyi. Iaeiae c\x00F0icoi\x00B3ei, ui \x00F0\x00B3ci\x00B3 iiaeae\x00B3 aeathoue \x00F0\x00B3cio aio\x00F0ii\x00B3th. E\x00F0aua iiaeaeue, iiaoaeiaaia ia aiae\x00B3c\x00B3 ie\x00F0aieo neiaie\x00B3a oaenoo “aa\x00B3\x00B3!”, \x00BA oaea iiiaeeia /anoio neiaie\x00B3a: {“a” (0,2), “a” (0,2), “\x00B3” (0,4), “!” (0,2) }. Aiia aea\x00BA aio\x00F0ii\x00B3th, ui aei\x00F0\x00B3aith\x00BA 2,89 a aeanyoeia\x00B3e nenoai\x00B3 a\x00B3aee\x00B3eo, oiaoi eiaeo\x00BA aeo\x00B3aeiee oaeno /eneii c o\x00F0ueio oeeo\x00F0. Iaeiae, a\x00B3eueo neeaaei\x00B3 iiaeae\x00B3, ye a\x00B3aei\x00B3/aeiny \x00F0ai\x00B3oa, aeathoue a caaaeueiiio aeiaaeeo iaaaaaoi e\x00F0au\x00B3e \x00F0acoeueoao.
3. I\x00F0ia\x00F0aia aeey a\x00F0eoiaoe/iiai eiaeoaaiiy.
Ia \x00F0enoieo 1 iieacaii o\x00F0aaiaio inaaaeieiaeo, yeee ii\x00BAaeio\x00BA i\x00F0ioeaaeo\x00F0e eiaeoaaiiy oa aeaeiaeoaaiiy, ye\x00B3 aoei aeeeaaeaii a iiia\x00F0aaeiueiio \x00F0icae\x00B3e\x00B3. Neiaiee a iueiio ioia\x00F0othoueny ye 1, 2, 3… *anoioiee \x00B3ioa\x00F0aae aeey \x00B3-oiai neiaieo caaea\x00BAoueny a\x00B3ae cum_freeq[i] aei cum_freeq[i-1]. I\x00F0e ciaioaii\x00B3 \x00B3 cum_freeq[i] c\x00F0inoa\x00BA oae, ui cum_freeq[0] = 1. (I\x00F0e/eia oaeiai “cai\x00F0ioiueiai” aeiaiai\x00F0o iieyaa\x00BA a oiio, ui cum_freeq[0] aoaea iio\x00B3i i\x00B3noeoe ii\x00F0iae\x00B3coth/ee iiiaeiee, yeee c\x00F0o/ii caa\x00F0\x00B3aaoe ia ii/aoeo ianeao). Iioi/iee \x00F0iai/ee \x00B3ioa\x00F0aae caaea\x00BAoueny a [low; high] \x00B3 aoaea a naiiio ii/aoeo aei\x00F0\x00B3aithaaoe [0; 1) \x00B3 aeey eiaeoaaeueieea, \x00B3 aeey aeaeiaeoaaeueieea.
Ia aeaeue, oeae inaaaeieiae cia/ii ni\x00F0iuaiee, oiae\x00B3 ye a i\x00F0aeoe/iiio canoinoaaii\x00B3 \x00B3nio\x00BA aeae\x00B3eueea /eiiee\x00B3a, ye\x00B3 oneeaaeiththoue \x00B3 eiaeoaaiiy, \x00B3 aeaeiaeoaaiiy.
3.1 Aeai\x00F0eoi a\x00F0eoiaoe/iiai eiaeoaaiiy.
/*C eiaeiei ianooiiei neiaieii oaenoo caa\x00F0oaoeny */
/*aei i\x00F0ioeaaeo\x00F0e encode_symbol() */
/*Ia\x00F0aa\x00B3\x00F0eoe, ui oa\x00F0i\x00B3iaeueiee neiaie caeiaeiaaiee inoaii\x00B3i*/
/*Aeaanoe iaea\x00F0aeaia cia/aiiy \x00B3ioa\x00F0aaeo [low; high) */
encode_symbol(symbol, cum_freq)
range = high – low
high = low + range*cum_freq[symbol - 1]
low = low + range*cum_freq[symbol]
3.2 Aeai\x00F0eoi a\x00F0eoiaoe/iiai aeaeiaeoaaiiy.
/* Value – oea /enei, yea iaea\x00F0aeaii ia ao\x00B3ae*/
/*Caa\x00F0oaiiy aei i\x00F0ioeaaeo\x00F0e decode_symbol() aei oiai iiiaioo*/
/*iiee aiia ia iiaa\x00F0ia oa\x00F0i\x00B3iaeueiee neiaie*/
decode_symbol(cum_freq)
iiooe oaeiai neiaieo, ui
cum_freq[symbol] <= (value - low) / (high - low) < cum_freq[symbol - 1]
/*oea caaacia/o\x00BA \x00F0ici\x00B3uaiiy Value a iaaeao iiaiai \x00B3ioa\x00F0aaeo*/
/*[low; high], ui a\x00B3aeia\x00F0aaeaii a caaa\x00F0oaii\x00B3 i\x00F0ia\x00F0aie*/
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021