ÄϾ©Óʵç´óѧ2009½ì±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
£¨5£©½«¹þ·òÂü Ê÷µÄ×óÖ§±ê0£¬ÓÒÖ§±ê1£¬»òÕß×óÖ§±ê1£¬ÓÒÖ§±ê0£¨±¾ÎIJÉÓÃǰһÖÖÐÎʽ£©¡£È»ºó½«´Ó¸ùµ½Ò¶×ӵķ¾¶ÉϵıêºÅÒÀ´ÎÏàÁ¬£¬×÷Ϊ¸ÃÒ¶×ÓËù±íʾ×Ö·ûµÄ±àÂë¡£
¹þ·òÂü±àÂëÓо²Ì¬ºÍ¶¯Ì¬Á½Àà¡£¾²Ì¬¹þ·òÂü±àÂëÊÇÒÔÿ¸ö×Ö·û³öÏֵĸÅÂÊΪȨֵ¹¹Ôì¹þ·òÂü±àÂëÊ÷£¬×Ö·û´æÔÚÓÚÒ¶×ÓÉÏ£¬Ã¿¸ö×Ö·û¶¼ÓÐΨһµÄ¶þ½øÖÆÐòÁбíʾ£¬Ñ¹Ëõʱ£¬Ö»ÒªÑ¹ÈëÏàÓ¦µÄ¹þ·òÂü±àÂë¼´¿É£»½âѹʱ£¬¸ù¾ÝÈ¡³öµÄ¹þ·òÂü±àÂ룬´Ó¸ù½áµã³ö·¢£¬±àÂëΪ0ʱ×ß×ó×ÓÊ÷£¬Îª1ʱ×ßÓÒ×ÓÊ÷£¬Ö±ÖÁÒ¶½áµã¡£¶¯Ì¬¹þ·òÂü±àÂëÓÖ³Æ×ÔÊÊÓ¦¹þ·òÂü±àÂ룬Ëü¶ÔÊý¾ÝѹËõÒÀ¾ÝµÄÊǶ¯Ì¬±ä»¯µÄ¹þ·òÂü±àÂëÊ÷£¬¾ßÌåµØËµ£¬¶ÔµÚi+1¸ö×Ö·ûµÄ±àÂëÊǸù¾ÝÔʼÊý¾ÝÖÐǰi¸ö×Ö·ûËù½¨Á¢¹þ·òÂü±àÂëÊ÷½øÐеġ£
9
ÄϾ©Óʵç´óѧ2009½ì±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
µÚ¶þÕ ¹þ·òÂü±àÂëÏà¹Ø¼¼ÊõµÄÑо¿
ͨ¹ýÉÏÒ»Õ½ڵĽéÉÜ£¬¶Ô¹þ·òÂüµÄ²úÉú±³¾°ºÍ¹þ·òÂü±àÂë±¾ÉíÓÐÁËÒ»¸ö¼òµ¥µÄÁ˽⣬µ«Êǹþ·òÂü±àÂëµÄÏÖÓм¼ÊõÊÇʲôÑùµÄÄØ£¿ÔÚÕâÒ»Õ½ڽ«Ïò´ó¼Ò³ÊÏÖ£¬½éÉÜÏÖÓеĹØÓÚ¹þ·òÂü±àÂëµÄ¼¼Êõ¡¢Ñ¹Ëõ¼¼ÊõµÈ¡£
2.1 ѹËõ¼¼Êõ
ÎļþѹËõµÄʵÏÖÓм¸ÖÖ·½Ê½£¬ÌṩµÄ¸÷ÖÖ¹¤¾ßʹÄãÄÜÿ´ÎѹËõÒ»¸öÎļþ£¬»òѹËõÒ»×éÎļþ¡£Ò»×éÎļþÄÜѹËõ³Éµ¥¸öÎļþ£¬¸üÒ×ÓÚ´«Ë͵½ÆäËüÓû§£¬½âѹËõ¹¤¾ß°ÑÎļþ½â¿ª¡£Ò»¸öÁ÷ÐеĹ²ÏíÎļþѹËõ¹¤¾ß³ÆÎªPKZIP£¨Íþ˹¿µÐÁÖÝGlendaleµÄPKWARE¹«Ë¾£©£¬ÓÃÓÚCompuServeºÍÆäËü¹«¸æÅÆÈí¼þÉÏѹËõÎļþ£¬¿ÉÒÔ´Ó´ó¶àÊý¹«¸æÅÆ·þÎñÉÏжÏÂPKZIP¡£
´ó¶àÊý²Ù×÷ϵͳ£¬°üÀ¨DOS¡¢NetWare¡¢Windows NTµÈÏÖÔÚ¶¼°üº¬Ñ¹ËõÈí¼þ¡£ÔÚNetWare 4.xÖУ¬ÄÜ×Ô¶¯Ñ¹ËõÖ¸¶¨Îļþ»òÕû¾íÉϵĻòÖ¸¶¨Ä¿Â¼ÖеÄËùÓÐÎļþ¡£Ö¸¶¨ÎļþÊôÐÔÄܱ»ÉèÖÃÒÔ±ê¼ÇÄãÏ£ÍûϵͳÔÚËüÃDz»ÓÃʱ×Ô¶¯Ñ¹ËõµÄÎļþ¡£Æô¶¯×Ô¶¯Ñ¹ËõϵͳʱҪСÐÄ£¬Ò»Ð©Ó¦ÓóÌÐòÓÉÓÚÎļþ´¦ÔÚѹËõ״̬¶ø²»ÄÜÕý³£¹¤×÷¡£
ÎļþѹËõÀïÁ½¸öÖØÒª¸ÅÄîÊÇÎÞÊ§Õæ£¨lossless£©ºÍÓÐÊ§Õæ£¨lossy£©£ºÎÞÊ§ÕæÑ¹Ëõ(Lossless Compression£©ÎÞÊ§ÕæÑ¹Ëõϵͳ¼Ù¶¨´ÓÒÑѹËõÎļþÖзµ»ØËùÓÐÐÅÏ¢£¬ÎļþÖÐÿһλ¶¼ÊÇÖØÒªµÄ£¬ËùÒÔѹËõËã·¨¾«È·µØÑ¹ËõºÍ½âѹÎļþ¡£
ÓÐÊ§ÕæÑ¹Ëõ(Lossy Compression£©ÓÐÊ§ÕæÏµÍ³¼Ù¶¨ÔÚѹËõºÍ½âѹ¹ý³ÌÖÐÔÊÐíÒ»¶¨µÄÐÅÏ¢Ëðʧ¡£Ðí¶à¸ßÇåÎú¶ÈµÄͼÐÎÎļþ°üº¬µÄÐÅÏ¢Èç¹ûÔÚѹËõ½×¶Î¶ªÊ§ÁËÒ²²»»áÒýÆð±ä»¯¡£ÀýÈ磬Èç¹ûÄãÒԸ߷ֱæÂÊɨÃè²Êɫͼ»£¬µ«ÊÇÄãµÄÏÔʾÆ÷²»ÄÜÏÔʾÕâÖÖÇåÎú¶È£¬Äã¾Í¿ÉÒÔʹÓÃÓÐÊ§ÕæÑ¹Ëõ·½°¸£¬ÒòΪ²»»áÒÅ©ϸ½Ú¡£ÉùÒôºÍͼÏóÎļþÒ²ÊÊÓÚÓÃÓÐÊ§ÕæÑ¹Ëõ£¬ÒòΪÐÅÏ¢ËðʧÒýÆðµÄ±ä»¯ºÜС£¬½âѹ²¥·Åʱ¿ÉÄܾõ²ì²»³öÀ´¡£
ËäÈ»ÎÞÊ§ÕæÑ¹ËõÖÐûÓÐÐÅÏ¢Ëðʧ£¬µ«Ñ¹Ëõ±Èͨ³£Ö»ÓÐ2:1£¬ÓÐÊ§ÕæÑ¹Ëõ¸ù¾Ý±»Ñ¹ËõÐÅÏ¢µÄÀàÐÍÌṩµÄѹËõ±È´Ó100:1ÖÁ200:1£¬ÉùÒôºÍͼÏóÐÅÏ¢ÄܺܺõØÑ¹Ëõ£¬ÒòΪËüͨ³£°üº¬´óÁ¿ÈßÓàÐÅÏ¢¡£
»ù±¾µÄѹËõ¼¼ÊõÓУº
¿Õ¸ñѹËõ(Null Compression) ½«Ò»´®¿Õ¸ñÓÃÒ»¸öѹËõÂë´úÌæ£¬Ñ¹ËõÂëºóÃæµÄÊýÖµ´ú±í¿Õ¸ñµÄ¸öÊý¡£
Óγ¤Ñ¹Ëõ(Run-Length Compression)ËüÊǿոñѹËõ¼¼ÊõµÄÀ©³ä£¬Ñ¹ËõÈκÎ4¸ö»ò¸ü¶àµÄÖØ¸´×Ö·ûµÄ´®¡£¸Ã×Ö·û´®±»Ò»¸öѹËõÂë¡¢Ò»¸öÖØ¸´×Ö·ûºÍÒ»¸ö´ú±íÖØ¸´×Ö·û¸öÊýµÄÖµËùÈ¡´ú¡£
¹Ø¼ü×Ö±àÂë(Key-word encoding£©´´½¨Ò»ÕÅÓɱíʾÆÕͨ×Ö·û¼¯µÄÖµËù×é³ÉµÄ
10
ÄϾ©Óʵç´óѧ2009½ì±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
±í¡£Æµ·±³öÏֵĵ¥´ÊÈçfor¡¢the»ò×Ö·û¶ÔÈçsh¡¢th£¬±»±íʾΪһЩ±ê¼Ç£¨token£©£¬ÓÃÀ´±£´æ»ò´«ËÍÕâЩ×Ö·û¡£
¹þ·òÂüͳ¼Æ·½·¨(Huffman statistical method£©ÕâÖÖѹËõ¼¼Êõ¼Ù¶¨Êý¾ÝÖеÄ×Ö·ûÓÐÒ»¸ö±ä»¯·Ö²¼£¬»»¾ä»°Ëµ£¬ÓÐЩ×Ö·ûµÄ³öÏÖ´ÎÊý±ÈÆäÓàµÄ¶à¡£×Ö·û³öÏÖԽƵ·±£¬ÓÃÓÚ±àÂëµÄλÊý¾ÍÔ½ÉÙ¡£ÕâÖÖ±àÂë·½°¸±£´æÔÚÒ»ÕűíÖУ¬ÔÚÊý¾Ý´«Êäʱ£¬ËüÄܱ»´«Ë͵½½ÓÊÕ·½µ÷ÖÆ½âµ÷Æ÷ʹÆäÖªµÀÈçºÎÒëÂë×Ö·û¡£ÒòΪѹËõËã·¨ÊÇ»ùÓÚÈí¼þµÄ£¬ËùÒÔʵʱ»·¾³ÖУ¬´æÔÚ×ŶîÍ⿪Ïú£¬»áÒýÆð²»ÉÙÎÊÌâ¡£¶øÎļþ±¸·Ý¡¢¹éµµ¹ý³ÌÖеÄѹËõ²»»áÓÐʲôÎÊÌ⡣ʹÓøßÐÔÄܵÄϵͳÓÐÖúÓÚÏû³ý´ó²¿·ÖµÄ¶îÍ⿪ÏúºÍÐÔÄÜÎÊÌâ¡£ÁíÍ⣬ѹËõÏû³ýÁËÎļþµÄ¿ÉÒÆÖ²ÐÔ£¬³ý·Ç½âѹËõÈí¼þÒ²ÓëÎļþÒ»Æð´«ËÍ¡£
2.2¾²Ì¬¹þ·òÂü±àÂëʵÏÖѹËõ 2.2.1¾²Ì¬¹þ·òÂü±àÂë½éÉÜ
¹þ·òÂü±àÂëÊÇÉϸöÊÀ¼ÍÎåÊ®Äê´úÓɹþ·òÂü½ÌÊÚÑÐÖÆ¿ª·¢µÄ,Ëü½èÖúÁËÊý¾Ý½á¹¹µ±ÖеÄÊ÷Ðͽṹ,ÔÚ¹þ·òÂüËã·¨µÄÖ§³ÖϹ¹Ôì³öÒ»¿Ã×îÓŶþ²æÊ÷,ÎÒÃǰÑÕâÀàÊ÷ÃüÃûΪ¹þ·òÂüÊ÷. Òò´Ë,׼ȷµØËµ,¹þ·òÂü±àÂëÊÇÔÚ¹þ·òÂüÊ÷µÄ»ù´¡Ö®ÉϹ¹Ôì³öÀ´µÄÒ»ÖÖ±àÂëÐÎʽ,ËüµÄ±¾ÉíÓÐ×ŷdz£¹ã·ºµÄÓ¦ÓÃ.
ÄÇô,¹þ·òÂü±àÂëÊÇÈçºÎÀ´ÊµÏÖÊý¾ÝµÄѹËõºÍ½âѹËõµÄÄØ?
ÖÚËùÖÜÖª,ÔÚ¼ÆËã»úµ±ÖÐ,Êý¾ÝµÄ´æ´¢ºÍ¼Ó¹¤¶¼ÊÇÒÔ×Ö½Ú×÷Ϊ»ù±¾µ¥Î»µÄ,Ò»¸öÎ÷ÎÄ×Ö·ûҪͨ¹ýÒ»¸ö×Ö½ÚÀ´±í´ï,¶øÒ»¸öºº×Ö¾ÍÒªÓÃÁ½¸ö×Ö½Ú,ÎÒÃǰÑÕâÖÖÿһ¸ö×Ö·û¶¼Í¨¹ýÏàͬµÄ×Ö½ÚÊýÀ´±í´ïµÄ±àÂëÐÎʽ³ÆÎª¶¨³¤±àÂë. ÒÔÎ÷ÎÄΪÀý,ÀýÈçÎÒÃÇÒªÔÚ¼ÆËã»úµ±Öд洢ÕâÑùµÄÒ»¾ä»°: I am a teacher . ¾ÍÐèÒª15¸ö×Ö½Ú,Ò²¾ÍÊÇ120¸ö¶þ½øÖÆÎ»µÄÊý¾ÝÀ´ÊµÏÖ.
ÓëÕâÖÖ¶¨³¤±àÂ벻ͬµÄÊÇ,¹þ·òÂü±àÂëÊÇÒ»Öֱ䳤±àÂë. Ëü¸ù¾Ý×Ö·û³öÏֵĸÅÂÊÀ´¹¹ÔìÆ½¾ù³¤¶È×î¶ÌµÄ±àÂë. »»¾ä»°ËµÈç¹ûÒ»¸ö×Ö·ûÔÚÒ»¶ÎÎĵµµ±ÖгöÏֵĴÎÊý¶à,ËüµÄ±àÂë¾ÍÏàÓ¦µÄ¶Ì,Èç¹ûÒ»¸ö×Ö·ûÔÚÒ»¶ÎÎĵµµ±ÖгöÏֵĴÎÊýÉÙ,ËüµÄ±àÂë¾ÍÏàÓ¦µÄ³¤. µ±±àÂëÖÐ,¸÷Âë×ֵij¤¶ÈÑϸñ°´ÕÕ¶ÔÓ¦·ûºÅ³öÏֵĸÅÂÊ´óС½øÐÐÄæÐòÅÅÁÐʱ,Ôò±àÂëµÄƽ¾ù³¤¶ÈÊÇ×îСµÄ. Õâ¾ÍÊǹþ·òÂü±àÂëʵÏÖÊý¾ÝѹËõµÄ»ù±¾ÔÀí.
2.2.2¾²Ì¬¹þ·òÂü±àÂëÊ÷µÄ¹¹Ôì
¹þ·òÂü£¨Huffman£©±àÂëÊôÓÚÂë´Ê³¤¶È¿É±äµÄ±àÂëÀ࣬Êǹþ·òÂüÔÚ1952ÄêÌá³öµÄÒ»ÖÖ±àÂë·½·¨£¬¸ÃËã·¨µÄºËÐIJ¿·ÖΪ¹þ·òÂü±àÂëÊ÷£¨huffman coding tree£©
11
ÄϾ©Óʵç´óѧ2009½ì±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
Ò»¿ÃÂú¶þ²æÊ÷¡£ËùÓпÉÄܵÄÊäÈë·ûºÅ£¨Í¨³£¶ÔӦΪ×Ö½Ú£©¹þ·òÂü±àÂëÊ÷É϶ÔӦΪһ¸öÒ¶½Úµã£¬ÔÚÒ¶½ÚµãµÄλÖþÍÊǸ÷ûºÅµÄ¹þ·òÂü±àÂë¡£¾ßÌåÀ´Ëµ£¬Ò»¸ö·ûºÅ¶ÔÓ¦µÄ¹þ·òÂü±àÂë¾ÍÊÇ´Ó¸ù½Úµã¿ªÊ¼£¬ÑØ×ó×ֽڵ㣨0£©»òÓÒ×ӽڵ㣨1£©Ç°½ø£¬Ò»Ö±ÕÒµ½¸Ã·ûºÅÒ¶½ÚµãΪֹµÄ·¾¶¶ÔÓ¦µÄ¶þ½øÖƱàÂë¡£ÔÚ¹þ·òÂü±àÂëÊ÷µÄ»ù´¡ÉÏ£¬¸ÃËã·¨µÄ±àÂ벿·ÖÊäÈëһϵÁеķûºÅ£¬¸ù¾Ý¹þ·òÂüÊ÷¶Ô·ûºÅ½øÐзÒ룬ÒÔ·ûºÅÔÚ¹þ·òÂüÊ÷ÉϵÄλÖÃ×÷Ϊ±àÂë½á¹û¡£½âÂ벿·Ö·´Ö®£¬¸ù¾ÝÊäÈëµÄ¹þ·òÂü±àÂ룬ͨ¹ý²éѯ¹þ·òÂüÊ÷·Òë»ØÔʼ·ûºÅ£¬¼´´Óϵ½ÉϵıàÂë·½·¨¡£Í¬ÆäËûÂë´Ê³¤¶È¿É±äµÄ±àÂëÒ»Ñù£¬Çø±ðÔÚÓÚ²»Í¬Âë´ÊµÄÉú³ÉÊÇ»ùÓÚ²»Í¬·ûºÅ³öÏֵIJ»Í¬¸ÅÂÊ¡£Éú³É¹þ·òÂü±àÂëËã·¨»ùÓÚÒ»ÖÖ³ÆÎª¡°±àÂëÊ÷¡±£¨coding tree£©µÄ¼¼Êõ¡£Ëã·¨²½ÖèÈçÏ£º £¨1£©³õʼ»¯£¬¸ù¾Ý·ûºÅ¸ÅÂʵĴóС°´ÓÉ´óµ½Ð¡Ë³Ðò¶Ô·ûºÅ½øÐÐÅÅÐò¡£ £¨2£©°Ñ¸ÅÂÊ×îСµÄÁ½¸ö·ûºÅ×é³ÉÒ»¸öзûºÅ£¨½Úµã£©£¬¼´Ð·ûºÅµÄ¸ÅÂʵÈÓÚÕâÁ½¸ö·ûºÅ¸ÅÂÊÖ®ºÍ¡£
£¨3£©Öظ´µÚ2²½£¬Ö±µ½ÐγÉÒ»¸ö·ûºÅΪֹ£¨Ê÷£©£¬Æä¸ÅÂÊ×îºóµÈÓÚ1¡£
´Ó±àÂëÊ÷µÄ¸ù¿ªÊ¼»ØËݵ½ÔʼµÄ·ûºÅ£¬²¢½«Ã¿Ò»Ï·ÖÖ¦¸³ÖµÎª1£¬ÉÏ·ÖÖ¦¸³ÖµÎª0¡£
2.2.3¾²Ì¬¹þ·òÂü±àÂëµÄ¾ßÌå±àÂë¹ý³Ì
¹þ·òÂü±àÂë²½Ö裺1£©°ÑÐÅÔ´·ûºÅxi(i=1,2,? ,N) °´³öÏÖ¸ÅÂʵÄÖµÓÉ´óµ½Ð¡µÄ˳ÐòÅÅÁУ»2£©¶ÔÁ½¸ö¸ÅÂÊ×îСµÄ·ûºÅ·Ö±ð·ÖÅäÒÔ¡°0¡±ºÍ¡°1¡±£¬È»ºó°ÑÕâÁ½¸ö¸ÅÂÊÏà¼Ó×÷Ϊһ¸öеĸ¨Öú·ûºÅµÄ¸ÅÂÊ£»3£©½«Õâ¸öеĸ¨Öú·ûºÅÓëÆäËû·ûºÅÒ»ÆðÖØÐ°´¸ÅÂÊ´óС˳ÐòÅÅÁУ»4£©Ìøµ½µÚ2 ²½£¬Ö±µ½³öÏÖ¸ÅÂÊÏà¼ÓΪ1 Ϊֹ£»5£©ÓÃÏß½«·ûºÅÁ¬½ÓÆðÀ´£¬´Ó¶øµÃµ½Ò»¸öÂëÊ÷£¬Ê÷µÄN ¸ö¶Ëµã¶ÔÓ¦N ¸öÐÅÔ´·ûºÅ£»6£©´Ó×îºóÒ»¸ö¸ÅÂÊΪ1 µÄ½Úµã¿ªÊ¼£¬ÑØ×ŵ½´ïÐÅÔ´µÄÿ¸ö·ûºÅ£¬½«Ò»Â·Óöµ½µÄ¶þ½øÖÆÂë¡°0¡±»ò¡°1¡±Ë³ÐòÅÅÁÐÆðÀ´£¬¾ÍÊǶ˵ãËù¶ÔÓ¦µÄÐÅÔ´·ûºÅµÄÂë×Ö¡£ÓÉÓÚ¹þ·òÂü·½·¨¹¹Ôì³öÀ´µÄÂë²»ÊÇΩһµÄ£¬Ö÷ÒªÓÐÁ½¸öÔÒò£ºÒ»ÊÇÔÚÁ½¸ö·ûºÅ¸ÅÂÊÏà¼Ó¸øÁ½Ìõ֧··ÖÅä¡°0¡±ºÍ¡°1¡±Ê±£¬ÕâһѡÔñÊÇÈÎÒâµÄ£»¶þÊǵ±Á½¸öÏûÏ¢µÄ¸ÅÂÊÏàµÈʱ£¬0£¬1 ·ÖÅäÒ²ÊÇËæÒâµÄ¡£¹þ·òÂü±àÂë¶Ô²»Í¬µÄÐÅÔ´£¬Æä±àÂëЧÂÊÊDz»Í¬µÄ¡£7£©¹þ·òÂü±àÂëÖУ¬Ã»ÓÐÒ»¸öÂë×ÖÊÇÁíÒ»¸öÂë×ÖµÄǰ׺¡£Òò´Ë£¬Ã¿¸öÂë×ÖΩһ¿ÉÒë¡£
2.2.4½âѹËõµÄʵÏÖ
(1)½âѹË㷨˼Ïë
12