Смекни!
smekni.com

Информатика Базовый курс (стр. 115 из 188)

Алгоритм KWE

В основу алгоритмов кодирования по ключевым словам (Keyword Encoding) положено кодирование лексических единиц исходного документа группами байтов фиксированной длины. Примером лексической единицы может служить слово (последовательность символов, справа и слева ограниченная пробелами или символами конца абзаца). Результат кодирования сводится в таблицу, которая прикладывается к результирующему коду и представляет собой словарь. Обычно для англоязычных текстов принято использовать двухбайтную кодировку слов. Образующиеся при этом пары байтов называют токенами.

Эффективность данного метода существенно зависит от длины документа, поскольку из-за необходимости прикладывать к архиву словарь длина кратких документов не только не уменьшается, но даже возрастает.

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

Алгоритм Хаффмана

В основе этого алгоритма лежит кодирование не байтами, а битовыми группами.

• Перед началом кодирования производится частотный анализ кода документаи выявляется частота повтора каждого из встречающихся символов.

• Чем чаще встречается тот или иной символ, тем меньшим количеством битовон кодируется (соответственно, чем реже встречается символ, тем длиннее его кодовая битовая последовательность).

• Образующаяся в результате кодирования иерархическая структура приклады-вается к сжатому документу в качестве таблицы соответствия.

Пример кодирования символов русского алфавита представлен на рис. 14.1.

Как видно из схемы, представленной на рис. 14.1, используя 16 бит, можно закодировать до 256 различных символов. Однако ничто не мешает использовать и после-

14.2. Программные средства сжатия данных 379

Рис. 14.1. Пример побуквенпого кодирования русского алфавита по алгоритму Хафмана

довательности длиной до 20 бит — тогда можно закодировать до 1024 лексических единиц (это могут быть не символы, а группы символов, слоги и даже слова).

В связи с тем, что к сжатому архиву необходимо прикладывать таблицу соответствия, на файлах малых размеров алгоритм Хаффмана малоэффективен. Практика также показывает, что его эффективность зависит и от заданной предельной длины кода (размера словаря). В среднем, наиболее эффективными оказываются архивы с размером словаря от 512 доЮ24 единиц (длина кода до 18-20 бит).
Синтетические алгоритмы

Рассмотренные выше алгоритмы в «чистом виде» на практике не применяют из-за того, что эффективность каждого из них сильно зависит от начальных условий. В связи с этим современные средства архивации данных используют более сложные алгоритмы, основанные на комбинации нескольких теоретических методов. Общим принципом в работе таких «синтетических» алгоритмов является предварительный просмотр и анализ исходных данных для индивидуальной настройки алгоритма на особенности обрабатываемого материала.

14.2. Программные средства сжатия данных

«Классическими» форматами сжатия данных, широко используемыми в повседневной работе с компьютером, являются форматы .ZIP, .RAR и .ARJ. Программные средства, предназначенные для создания и обслуживания архивов, выполненных в данных форматах, приведены в табл. 14.2.

[Щ Несмотря на то что средства архивации, предназначенные для операционной системы MS-DOS, вполне могут работать под управлением Windows, пользоваться ими не рекомендуется. В первую очередь это связано с тем, что при обработке файлов происходит утрата «длинных имен» файлов и подмена их именами MS-DOS по спецификации 8.3. Это может создать потребителю документа определенные неудобства, а в случаях, когда архивация производится с целью резервного копирования, утрата «длинных имен» вообще недопустима.

380 Глава 14. Приемы и методы работы со сжатыми данными

Таблица 14.2. Средства архивации файлов

Операционная система Формат сжатия Средство архивации Средство разархивирования
MS-DOS .ZIP PKZIREXE PKUNZIP.EXE
.RAR RAR. EXE UNRAR.EXE
.ARJ ARJ. EXE
Windows .ZIP WinZip, сжатые ZIP-папки, WinRAR
.RAR WinRAR
.ARJ WinArj WinArj, WinRAR

Стоит отметить, что в связи с широким распространением нескольких форматов сжатия многие программные средства для сжатия данных начинают приобретать универсальный характер, позволяя упаковывать и распаковывать сжатые архивы разных типов. Программные средства для Windows обычно имеют один «предпочтительный» тип архива, но также справляются с распаковкой данных при работе с архивами других типов.

Наиболее распространен формат .ZIP, который является стандартом де-факто для архивов, распространяемых через Интернет. Немаловажную роль в этом играет открытость этого формата. Этот формат является полностью открытым — его использование не требует никаких лицензионных отчислений.

Операционная система Windows XP позволяет рассматривать ZLP-архивы как сжатые папки. Это предполагает полностью «прозрачную» работу с такими архивами — все файловые операции можно выполнять в сжатой папке так же, как в обычной. Однако специализированные средства работы с архивами обеспечивают более широкий набор функций.

!Ш При использовании файловой системы NTFS возможно внутреннее сжатие при записи на диск для экономии пространства. С точки зрения всех файловых операций такие

файлы не рассматриваются как упакованные. При их копировании на носитель с дру-

гой файловой системой они автоматически распаковываются.

Базовые требования к диспетчерам архивов

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

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

• извлечение файлов из архивов;

• создание новых архивов;

• добавление файлов в имеющийся архив;

• создание самораспаковывающихся архивов;


14.2. Программные средства сжатия данных 381

• создание распределенных архивов на носителях малой емкости;

• тестирование целостности структуры архивов;

• полное или частичное восстановление поврежденных архивов;

• защита архивов от просмотра и несанкционированной модификации.

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

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

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

Оптимальный режим работы с распределенными архивами следующий: