Меню

Главная

Статистика

 

 


Алгоритмы сжатия полезны, но и они имеют свои ограничения. Наиболее очевидное ограничение состоит в том, что никакой из методов сжатия (или комбинация методов сжатия) не совершенен. Некоторые данные могут даже, как это ни парадоксально, в результате применения одной из техник сжатия увеличиваться в размерах. Внимательно смотрите на то, как работает алгоритм сжатия. Заявление о том, что алгоритм может уменьшить в размере файлы с самыми разными типами данных, требует особого внимания. Хорошо написанные программы сжатия помещают в начало выходных данных маркер, указывающий на то, каким методом данные были сжаты. Если данные сжать не удалось, маркер указывает, что данные "не сжаты". При этом размер файла увеличивается на размер маркера.

Иногда программы сжатия утверждают, что они сжимают практически "любой файл на 16 килобайт" или "сжимают каждый файл, по крайней мере, на 30 процентов". Любое такое утверждение просто неверно, хотя некоторые весьма престижные издания стали публиковать объявления о таких программах. В 1992 году фирма WEB Technologies объявила о выходе новой программы сжатия DataFiles/16. При этом фирма сделала ряд интересных заявлений. Прежде всего, она утвержадала, что с "помощью неоднократного использвания DataFiles/16 фактически любое количество данных может быть уплотнено до 1024 байт".

Идея неоднократного использования программы сжатия для получения наиболее эффективного сжатия крайне привлекательна. Во многих отношениях эта идея - программистский аналог идеи вечного двигателя; люди никак не могут поверить в то, что это не возможно. Ниже Вы найдете доказательство того, что этого быть, увы, не может. Не один WEB делал подобные заявления, просто его голос оказался наиболее громким. Практически, при вторичном использовании любой хорошей программы сжатия размер будет уменьшаться на пару процентов. После чего повторные попытки будут приводить к обратному эффекту. Так что обещания WEB, к сожалению, остаются лишь обещаниями.

Как показала практика, некоторые из утверждений о суперсжатии любых данных были чистейшей воды обманом: часть якобы сжимаемых данных просто копировалась в некий невидимый файл, то же, что оставалось, конечно, было меньшего размера. В то время как такая схема выглядит внушительной в распечатке каталога, ее едва ли можно квалифицировать как "сжатие". Как правило, такие профанации без шума исчезали, и никто так и не исследовал этих "совершенных" методов сжатия.

Некоторые из утверждений о совершенном сжатии на поверку оказывались простым мошенничеством. Одна из таких программ, сделав запрос на архивирование, удаляла файл с жесткого диска, увеличивая при этом архив лишь на сто байт, а деархиватор восстанавливал его, если только вы не слишком много работали с жестким диском между этими двумя событиями. Программа фактически хранила только имя файла и его расположение на жестком диске, а по завершении своей "работы" она удаляла этот файл с жесткого диска. Это приводило к правильному восстановлению файла каталога только в том случае, когда эта часть жесткого диска не использовалась многократно при работе с другими файлами. В противном же случае ваши данные просто исчезали. Чтобы выявить обман такого рода, необходимо провести следующий эксперимент: скопируйте несколько файлов на только что отформатированную дискету, используйте программу архивации файлов, а затем скопируйте архив на другую только что отформатированную дискету и попробуйте разархивировать полученный таким образом файл.

Не трудно догадаться, почему любая методика сжатия должна увеличивать размеры некоторых файлов. Не забывайте о том, что это в действительности - техника "кодирования", которая берет некоторую информацию и хранит ее по-новому. Предубеждение против использования слова "сжатие" базируется лишь на том, что любой метод кодирования, уменьшающий объем одной информации, должен увеличивать объем другой.

Реальным доказательством работы метода является не кодирование (сжатие), а декодирование (распаковка). Метод сжатия, не позволяющий восстанавливать первоначальные данные, вряд ли полезен. Проделаем небольшой мысленный эксперимент. Представьте, что в Вашем распоряжении оказалась программа сжатия, которая действительно уменьшает размер каждого файла. Также представьте, что Ваш компьютер имеет действительно большой жесткий диск. на котором хранятся всевозможные различные файлы длиной 10000 байт. Теперь предположим, что вы с помощью Вашей гипотетической программы сжатия сжали каждый из этих файлов. После завершения этой работы каждый из файлов стал короче 10 000 байт.

Это может показаться Вам несущественным, но все же давайте точно определим, сколько на жестком диске файлов. Так как в каждом байте восемь бит, то у Вас должно быть 2 в степени 80 000 файлов, причем размер каждого из них точно 10 000 байт. В результате мысленного эксперимента у нас по-прежнему останется 2 в степени 80 000 файлов, каждый из которых будет короче чем 10 000 байт. Однако не совсем понятно, каким образом могут получиться два совершенно оди-наковых "сжатых" файла! А ведь именно это мы и получаем, поскольку не так уж и много существует файлов короче 10000 байтов. Предположив, что полученные файлы отличаются друг от друга по размеру всего на один байт, то есть 9 999 байтов, затем 9 998 байтов и так далее, вы получите меньше чем 2 в степени 80 000 возможных вариантов.

Таким образом, вы приходите к важному выводу, что по крайней мере два сжатых файла должны быть идентичны. Если не вся логическая цепочка, приводящая к этому выводу, для Вас очевидна, представьте, что у Вас есть пять перевернутых карт. Так как существуют только четыре варианта масти, вы знаете, что две из них имеют одинаковую масть (возможно, что все пять карт имеют одинаковую масть, но Вы не можете об этом знать наверняка). В данном случае применялся тот же принцип: эксперимент предполагал наличие 2 в степени 80 000 файлов, однако после сжатия возможное количество неодинаковых файлов стало меньше этого значения. Так как их число не должно было измениться, то по меньшей мере два файла должны быть одинаковы.

Что же все это значит? Вы начали с предположения о том, что в вашем распоряжении есть совершенный метод сжатия, который должен сжимать каждый из файлов. В результате эксперимента стало очевидно, что по крайней мере два файла, различавшихся до сжатия, стали совершенно одинаковыми после сжатия. Однако методов, позволяющих из двух идентичных файлов в результате декомпрессии получить два разных оригинала, не существует!

Таким образом, этот мысленный эксперимент доказывает, что программы, которая сжимала бы каждый файл и могла бы затем при необходимости все корректно распаковать, не существует. Конечно, программа сжатия, не позволяющая вам восстанавливать исходные данные, практически бесполезна. (Чтобы уменьшить размер газеты, вы можете ее сжечь, однако после этого узнать, что в ней было написано, будет довольно сложно.)

Назад

. со склада профнастил Москва .. Издательства Саратов. банкетная свадьба, новогодние банкеты. ао московская недвижимость адрес www.real-moscow-realty.ru