Немного относительно методов упаковки данных


Содержание

Please verify you are a human

Access to this page has been denied because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

Please make sure that Javascript and cookies are enabled on your browser and that you are not blocking them from loading.

Reference ID: #37a12950-0576-11ea-9a96-b9909a738401

Delphi. Немного относительно методов упаковки данных

Running — Это самый простой из методов упаковки информации . Предположите что Вы имеете строку текста, и в конце строки стоит 40 пробелов. Налицо явная избыточность имеющейся информации. Проблема сжатия этой строки решается очень просто — эти 40 пробелов ( 40 байт ) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (running). Первый байт, стоящий вместо 40 пробелов в сжатой строке, фактически будет явлться пробелом ( последовательность была из пробелов ) . Второй байт — специальный байт «флажка» который указывает что мы должны развернуть предыдущий в строке байт в последовательность при восстановлении строки . Третий байт — байт счета ( в нашем случае это будет 40 ). Как Вы сами можете видеть, достаточно чтобы любой раз, когда мы имеем последовательность из более 3-х одинаковых символов, заменять их выше описанной последовательностью , чтобы на выходе получить блок информации меньший по размеру, но допускающий восстановление информации в исходном виде.

Оставляя все сказанное выше истинным , добавлю лишь то, что в данном методе основной проблемой является выбор того самого байта «флажка», так как в реальных блоках информации как правило используются все 256 вариантов байта и нет возможности иметь 257 вариант — «флажок». На первый взгляд эта проблема кажется неразрешимой , но к ней есть ключик , который Вы найдете прочитав о кодировании с помощью алгоритма Хаффмана ( Huffman ).

LZW — История этого алгоритма начинается с опубликования в мае 1977 г. Дж. Зивом ( J. Ziv ) и А. Лемпелем ( A. Lempel ) статьи в журнале «Информационные теории » под названием » IEEE Trans «. В последствии этот алгоритм был доработан Терри А. Велчем ( Terry A. Welch ) и в окончательном варианте отражен в статье » IEEE Compute » в июне 1984 . В этой статье описывались подробности алгоритма и некоторые общие проблемы с которыми можно

столкнуться при его реализации. Позже этот алгоритм получил название — LZW (Lempel — Ziv — Welch) .

Алгоритм LZW представляет собой алгоритм кодирования последовательностей неодинаковых символов. Возьмем для примера строку » Объект TSortedCollection порожден от TCollection.». Анализируя эту строку мы можем видеть, что слово «Collection» повторяется дважды. В этом слове 10 символов — 80 бит. И если мы сможем заменить это слово в выходном файле, во втором его включении, на ссылку на первое включение, то получим сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничится длинной кодируемой строки в 256 символов, то учитывая байт «флаг» получим, что строка из 80 бит заменяется 8+16+8 = 32 бита. Алгоритм LZW как-бы «обучается» в процессе сжатия файла. Если существуют повторяющиеся строки в файле , то они будут закодированны в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW является однопроходной операцией в противоположность алгоритму Хаффмана ( Huffman ) , которому требуется два прохода.

Huffman — Сначала кажется что создание файла меньших размеров из исходного без кодировки последовательностей или исключения повтора байтов будет невозможной задачей. Но давайте мы заставим себя сделать несколько умственных усилий и понять алгоритм Хаффмана ( Huffman ). Потеряв не так много времени мы приобретем знания и дополнительное место на дисках.

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

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

Мы имеем файл длинной в 100 байт и имеющий 6 различных символов в

себе . Мы подсчитали вхождение каждого из символов в файл и получили

| cимвол | A | B | C | D | E | F |

| число вхождений | 10 | 20 | 30 | 5 | 25 | 10 |

Теперь мы берем эти числа и будем называть их частотой вхождения для каждого символа. Разместим таблицу как ниже.

| cимвол | C | E | B | F | A | D |

| число вхождений | 30 | 25 | 20 | 10 | 10 | 5 |

Мы возьмем из последней таблицы символы с наименьшей частотой. В нашем случае это D (5) и какой либо символ из F или A (10), можно взять любой из них например A. Сформируем из «узлов» D и A новый «узел», частота вхождения для которого будет равна сумме частот D и A :

Частота 30 10 5 10 20 25

Символа C A D F B E

Номер в рамке — сумма частот символов D и A. Теперь мы снова ищем два символа с самыми низкими частотами вхождения. Исключая из просмотра D и A и рассматривая вместо них новый «узел» с суммарной частотой вхождения. Самая низкая частота теперь у F и нового «узла». Снова сделаем операцию слияния узлов :

Частота 30 10 5 10 20 25

Символа C A D F B E

Рассматриваем таблицу снова для следующих двух символов ( B и E ). Мы продолжаем в этот режим пока все «дерево» не сформировано, т.е. пока все не сведется к одному узлу.

Частота 30 10 5 10 20 25

Символа C A D F B E

Теперь когда наше дерево создано, мы можем кодировать файл . Мы должны всегда начинать из корня ( Root ) . Кодируя первый символ (лист дерева С) Мы прослеживаем вверх по дереву все повороты ветвей и если мы делаем левый поворот, то запоминаем 0-й бит, и аналогично 1-й бит для правого поворота. Так для C, мы будем идти влево к 55 ( и запомним 0 ), затем снова влево (0) к самому символу . Код Хаффмана для нашего символа C — 00. Для следующего символа ( А ) у нас получается — лево,право,лево,лево , что выливается в последовательность 0100. Выполнив выше сказанное для всех символов получим

A = 0100 ( 4 бита )

D = 0101 ( 4 бита )

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

| Частота | первоначально | уплотненные биты | уменьшено на |

| C 30 | 30 x 8 = 240 | 30 x 2 = 60 | 180 |

| A 10 | 10 x 8 = 80 | 10 x 3 = 30 | 50 |

| D 5 | 5 x 8 = 40 | 5 x 4 = 20 | 20 |

| F 10 | 10 x 8 = 80 | 10 x 4 = 40 | 40 |

| B 20 | 20 x 8 = 160 | 20 x 2 = 40 | 120 |

| E 25 | 25 x 8 = 200 | 25 x 2 = 50 | 150 |


Первоначальный размер файла : 100 байт — 800 бит;

Размер сжатого файла : 30 байт — 240 бит;

240 — 30% из 800 , так что мы сжали этот файл на 70%.

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

В нашей методике сжатия и каждом узле находятся 4 байта указателя, по этому, полная таблица для 256 байт будет приблизительно 1 Кбайт длинной. Таблица в нашем примере имеет 5 узлов плюс 6 вершин ( где и находятся наши символы ) , всего 11 . 4 байта 11 раз — 44 . Если мы добавим после небольшое количество байтов для сохранения места узла и некоторую другую статистику — наша таблица будет приблизительно 50 байтов длинны. Добавив к 30 байтам сжатой информации, 50 байтов таблицы получаем, что общая длинна архивного файла вырастет до 80 байт . Учитывая , что первоначальная длинна файла в рассматриваемом примере была 100 байт — мы получили 20% сжатие информации. Не плохо . То что мы действительно выполнили — трансляция символьного ASCII набора в наш новый набор требующий меньшее количество знаков по сравнению с стандартным.

Что мы можем получить на этом пути ?

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

Мы получим что можно иметь только :

4 — 2 разрядных кода;

8 — 3 разрядных кодов;

16 — 4 разрядных кодов;

32 — 5 разрядных кодов;

64 — 6 разрядных кодов;

128 — 7 разрядных кодов;

Необходимо еще два 8 разрядных кода.

4 — 2 разрядных кода;

8 — 3 разрядных кодов;

16 — 4 разрядных кодов;

32 — 5 разрядных кодов;

64 — 6 разрядных кодов;

128 — 7 разрядных кодов;

Итак мы имеем итог из 256 различных комбинаций которыми можно кодировать байт. Из этих комбинаций лишь 2 по длинне равны 8 битам. Если мы сложим число битов которые это представляет, то в итоге получим 1554 бит или 195 байтов. Так в максимуме , мы сжали 256 байт к 195 или 33%, таким образом максимально идеализированный Huffman может достигать сжатия в 33% когда используется на уровне байта Все эти подсчеты производились для не префиксных кодов Хаффмана т.е. кодов, которые нельзя идентифицировать однозначно. Например код A — 01011 и код B — 0101 . Если мы будем получать эти коды побитно, то получив биты 0101 мы не сможем сказать какой код мы получили A или B , так как следующий бит может быть как началом следующего кода, так и продолжением предыдущего.

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

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

P.S. О «ключике» дающем дорогу алгоритму Running.

—- Прочитав обзорную информацию о Huffman кодировании подумайтенад тем, что на нашем бинарном дереве может быть и 257 листиков.

1) Описание архиватора Narc фирмы Infinity Design Concepts, Inc.;

2) Чарльз Сейтер, ‘Сжатие данных’, «Мир ПК», N2 1991;

Реферат на тему: Delphi. Немного относительно методов упаковки данных

Ru i g — Это самый простой из методов упаковки информации . Предположите что Вы имеете строку текста, и в конце строки стоит 40 пробелов. Налицо явная избыточность имеющейся информации. Проблема сжатия этой строки решается очень просто — эти 40 пробелов ( 40 байт ) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (ru i g). Первый байт, стоящий вместо 40 пробелов в сжатой строке, фактически будет явлться пробелом ( последовательность была из пробелов ) . Второй байт — специальный байт «флажка» который указывает что мы должны развернуть предыдущий в строке байт в последовательность при восстановлении строки . Третий байт — байт счета ( в нашем случае это будет 40 ). Как Вы сами можете видеть, достаточно чтобы любой раз, когда мы имеем последовательность из более 3-х одинаковых символов, заменять их выше описанной последовательностью , чтобы на выходе получить блок информации меньший по размеру, но допускающий восстановление информации в исходном виде. Оставляя все сказанное выше истинным , добавлю лишь то, что в данном методе основной проблемой является выбор того самого байта «флажка», так как в реальных блоках информации как правило используются все 256 вариантов байта и нет возможности иметь 257 вариант — «флажок». На первый взгляд эта проблема кажется неразрешимой , но к ней есть ключик , который Вы найдете прочитав о кодировании с помощью алгоритма Хаффмана ( Huffma ). LZW — История этого алгоритма начинается с опубликования в мае 1977 г. Дж. Зивом ( J. Ziv ) и А. Лемпелем ( A. Lempel ) статьи в журнале «Информационные теории » под названием » IEEE ra s «. В последствии этот алгоритм был доработан Терри А. Велчем ( erry A. Welch ) и в окончательном варианте отражен в статье » IEEE Compu e » в июне 1984 . В этой статье описывались подробности алгоритма и некоторые общие проблемы с которыми можно столкнуться при его реализации. Позже этот алгоритм получил название — LZW (Lempel — Ziv — Welch) . Алгоритм LZW представляет собой алгоритм кодирования последовательностей неодинаковых символов. Возьмем для примера строку » Объект Sor edCollec io порожден от Collec io .». Анализируя эту строку мы можем видеть, что слово «Collec io » повторяется дважды. В этом слове 10 символов — 80 бит. И если мы сможем заменить это слово в выходном файле, во втором его включении, на ссылку на первое включение, то получим сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничится длинной кодируемой строки в 256 символов, то учитывая байт «флаг» получим, что строка из 80 бит заменяется 8 16 8 = 32 бита. Алгоритм LZW как-бы «обучается» в процессе сжатия файла. Если существуют повторяющиеся строки в файле , то они будут закодированны в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW является однопроходной операцией в противоположность алгоритму Хаффмана ( Huffma ) , которому требуется два прохода. Huffma — Сначала кажется что создание файла меньших размеров из исходного без кодировки последовательностей или исключения повтора байтов будет невозможной задачей.

А также неумение пользоваться самыми простыми методами обработки данных. Ссылаясь на Галлея, авторы пишут, что за время, прошедшее от Птолемея до Галлея, Арктур сместился на 1,1 градуса в сторону Девы. Поскольку за год Арктур смещается на 2,285 секунды, то разделив 1,1 градуса на 2,285 угловых секунд, авторы получают временно’й промежуток в 1733 года. Радостно вычтя 1733 из 1690 (то есть из года составления каталога Флемстида, которым пользовался Галлей), авторы получили в качестве датировки каталога 43 год до н.э. Далее они пишут: «Ошибка разности координат соседних звезд значительно меньше, чем ошибка самих координат, так как при вычитании уничтожается систематическая ошибка. Поэтому средняя ошибка в положении ярких звезд относительно соседних с ними звезд в Альмагесте не превышает 0,1 градуса. Это означает, что возможная ошибка датировки не превышает 150 лет» [6], с.75. Такие рассуждения могут вызвать разве что улыбку. Во-первых, откуда получена оценка точности в 0,1 градуса? Во-вторых, приведенное «вычисление» основано на молчаливом предположении, что вектор собственного движения Арктура направлен в точности по прямой, соединяющей его современное положение и положение, указанное в Альмагесте

Классификация и способы упаковки

Основными признаками, по которым проводится классификация тары и упаковки товаров, являются:

  1. Назначение.
  2. Материал.
  3. Состав.
  4. Конструкция.
  5. Технология производства.

Назначение упаковки

По назначению упаковка делится:

  • потребительская,
  • транспортная,
  • производственная,
  • специальная (консервирующая).

Потребительская упаковка

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

Мягкая потребительская упаковка


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

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

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

Достоинства мягкой тары

Мягкая упаковка широко используется для разных типов потребительских товаров – от продуктов до строительных материалов, семян и цветов.

К основным достоинствам можно отнести:

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

Самым популярным видом мягкой упаковки являются мешки и пакеты из полимеров, бумаги, разных типов полотен.

Основные материалы для изготовления мягкой упаковки

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

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

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

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

Пленочная потребительская упаковка имеет небольшую удельную массу и низкую цену, поэтому, как правило, предназначена для разового использования.

Илон Маск рекомендует:  Анализ посещаемости сайта рефералами

Наиболее распространенной мягкой потребительской упаковкой является упаковка с корпусом в форме рукава, с дном различной конфигурации, цельным или со швом, с открытой горловиной, с клапанами или без них — пакет. Отличительные признаки различных пакетов — оформление дна, наличие боковых сгибов или складок. Как правило, форма и конструкция при упаковке жидкой и сыпучей продукции определяется конструкцией агрегатов, на которых она производится. Обычно вместимость пакетов не превышает 3000 см3. Закрываются пакеты различными затворами.

Основной способ изготовления пакетов — сваривание, реже — склеивание, сшивание скобами, зажимами и т.д. К этому же виду упаковки относится упаковка в термоусаживающиеся, стретч-пленки.

Для изготовления мягкой потребительской тары используются однослойные пленки из ПЭ, ПП, ПВХ, ПС и сополимеров стирола, пенополистирола, ПА, различные многослойные и комбинированные пленки.

Жесткая потребительская полимерная упаковка

Основное ее назначение — обеспечить сохранность продукции, то есть предохранять товары от деформации, разрушений, потерь. Поэтому такая тара и упаковка должна обладать определенной механической прочностью и жесткостью, быть удобной в обращении и потреблении. К этому виду потребительской тары относится экструзионно-выдувная, литьевая, прессованная потребительская тара из листовых материалов, формуемая различными видами термо- и механоформования.
Потребительская тара из листовых материалов по экономичности, объему производства и потребления уступает только пленочной упаковке, превосходя её жесткостью и формоустойчивостью. Для этого вида тары используют рулонные материалы толщиной 0,25-1,0 мм и листы толщиной 0,5-2,0 мм.
Тара из листовых материалов имеет простую конфигурацию. Это — кассеты, банки, стаканчики, коробки, ложки, коробки с ячейками, коробки-кассеты и так далее.

Транспортная тара и упаковка

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

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

Транспортная тара подразделяется на жесткую и мягкую.

Жесткая транспортная тара

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

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

Мягкая транспортная тара

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

Достоинством мягкой транспортной тары из полимерных материалов является то, что в незаполненном состоянии она легко складывается и занимает немного места при возвратных перевозках.

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

Производственная

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

Специальная упаковка

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

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

Материалы для упаковки

По материалам тару и упаковку подразделяют на:

  • стеклянную,
  • деревянную,
  • металлическую,
  • полимерную,
  • бумажную,
  • картонную,
  • керамическую,
  • комбинированную.

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

Состав упаковки


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

Классификация тары и упаковки по конструкции

Эта классификация упаковки товаров осуществляется по ряду признаков.

По конструктивной форме тара и упаковка делится на коробки, банки, бутылки, ящики, фляги, бочки, тубы, стаканчики, ампулы, пакеты, сумки, мешки, пеналы, пробирки и т.д. (см. врезку).

По конструктивному исполнению (компактности) тару и упаковку подразделяют на разборную, неразборную, складную и разборно-складную. Разборная тара может разбираться на составляющие части и вновь собираться посредством соединения сочленяющих элементов. Складная тара отличается способностью складываться без нарушения сочленения элементов и вновь раскладываться.

По жесткости конструкции, или стабильности формы, упаковку делят на жесткую, полужесткую и мягкую. Стабильность формы определяется как свойствами материалов, так и особенностями конструкции.

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

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

Мягкая упаковка может менять свои размеры и форму при наполнении продукцией. Она изготавливается из бумаги малой плотности, полимерных пленок.

По герметичности конструкции упаковка подразделяется на негерметичную и герметичную. Негерметичная упаковка выполняется открытой либо закрывается крышкой или затвором. Герметичная отличается конструкцией, которая обеспечивает непроницаемость для газов и жидкостей.

Классификация упаковки по технологии изготовления

  • выдувную,
  • литьевую,
  • прессованную,
  • термоформованную,
  • сварную.

Выдувная потребительская тара

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

Литьевая и прессованная потребительская тара

Изготавливается литьем под давлением и прессованием с точным выполнением внешних поверхностей и внутренних полостей изделия. Однако ряд недостатков этих методов не позволяет производить тару с толщиной стенок менее 1 мм. Литьевая и прессованная тара значительно дороже упаковки, производимой другими способами. Прессование и литье под давлением применяют для изготовления жесткой тары для дорогостоящей продукции, а также отдельных элементов упаковки, требующих высокой точности выполнения (банок, коробок, пеналов, пробирок).

Потребительская тара из газонаполненных материалов

Для изготовления такой тары чаще всего применяют пенопласты с низкой плотностью (15-60 кг/м3), способные выдерживать значительные удельные нагрузки без остаточной деформации.
Тару из пенопластов применяют преимущественно для защиты продукции от ударов, толчков, механических повреждений, температурных колебаний, от проникновения влаги, действия микроорганизмов, а также для уменьшения ее массы, повышения долговечности и снижения стоимости.

Тара из газонаполненных материалов сохраняет форму и упругие свойства в широком диапазоне температур (от -60 до +75°С) благодаря низкой теплопроводности пенопластов (0,026 — 0,037 Вт/смхК), что обусловило их применение для термической изоляции.

Тару из газонаполненных полимеров изготавливают методами литья под давлением, прессования, выдувного формования, беспрессового вспенивания, пневмо- и вакуумного формования. Потребительскую тару выполняют в виде коробок, вкладышей, кювет, лотков, банок и так далее. При изготовлении тары из газонаполненных материалов достигается значительная экономия материала (до 30-40%), уменьшается масса тары.

Комбинированная потребительская тара и упаковка

Включает комбинацию полимерных материалов с бумагой, картоном, фольгой. Эта упаковка обеспечивает высокую сохраняемость и отличные потребительские свойства упакованной продукции. К этому виду упаковок относится упаковка типа «флоу» (нанесение расплава полимера непосредственно на упаковываемые изделия); упаковка типа «скин» с использованием термоусадочных пленок (вторая кожа) – помещение обтянутого усадочной пленкой изделия на картонную подложку. Упаковку подвергают нагреванию, пленка усаживается и плотно облегает изделие. Отдельные виды продуктов упаковываются без подложки, например, мясо, овощи, фрукты, рыба, батарейки, галантерейные изделия. Дополнительно может быть применено вакуумирование.

Упаковка типа «стретч»

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

Упаковка типа « вителло »

Представляет собой термоформованный стакан, который вставлен в клееный картонный цилиндр. Стакан изготавливается из листового УПС, ПВХ-Ж толщиной 0,5-1,2 мм. Крышка упаковки изготавливается из ПП, ПЭНП, ПЭВП методом литья под давлением. Такую упаковку используют для молочных продуктов, горчицы, пищевых приправ, товаров бытовой химии. Ее можно оформлять печатью в несколько красок.

Упаковка типа «блистер»

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

Для упаковки типа «блистер» применяют листовые и пленочные материалы на основе ПС, ПВХ-Ж, ацетатов, бутиратов и пропиатов целлюлозы, иономеров. Упаковку типа «блистер» применяют для лекарственных препаратов, хозяйственных товаров, канцелярских принадлежностей, галантерейных, парфюмерных и косметических товаров, сувениров, игрушек, инструмента и так далее.

Тарооборудование

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

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

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

Способы упаковки

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

Упаковка в термоусадочные пленки

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

В инженерной практике к усадочным принято относить пленки, обладающие способностью давать повышенную (до 50% и более) усадку и используемые для упаковки различных изделий.
К преимуществам упаковки в термоусадочные пленки по сравнению с традиционными пленочными упаковками относятся уменьшение объема упаковки за счет плотного обтягивания товара, относительно меньшая масса пленок. Упаковка в усаживающуюся пленку часто бывает дешевле и привлекательнее на вид, чем обычный ящик из картона.

Этот вид упаковки дает определенные преимущества для розничной торговли: уменьшение количества упаковочного материала и площади в торговом зале, занимаемой товаром по мере его реализации. Упаковывание в термоусадочную пленку защищает товар от воздействия окружающей среды.
Термоусадочные пленки применяются для упаковки разнообразных продуктов питания, банок, бутылок, галантерейных и хозяйственных изделий, газет, журналов и канцелярских товаров.

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

Единичная упаковка (ее называют штучной или индивидуальной): каждое отдельное изделие обертывается пленкой, которая после усадки плотно облегает изделие, повторяя его конфигурацию.


Групповая упаковка: предварительно комплектуется набор из нескольких однотипных или разнотипных изделий, которые, как и при единичной упаковке, обертываются пленкой, после усадки которой получается плотный пакет. Упаковывание может производиться только в пленку или с использованием предварительной укладки изделий на специальные подложки. Этот вид упаковки может применяться в качестве транспортной тары.

Штабельная упаковка — на жесткий поддон укладываются несколькими рядами изделия (мешки, коробки, книги, кирпичи, лотки с банками, бутылками), которые сверху покрываются чехлом из термоусадочной пленки и подаются в туннельную печь. После усадки получается компактный штабель, который можно легко перемещать подъемно-транспортными средствами. Штабельная упаковка представляет собой современный и перспективный вид транспортной упаковки товаров.

Термоусадочные пленки могут быть изготовлены из кристаллизующихся полимеров (ПЭВД, ПЭНД, ПП ), сополимеров этилена с винилацетатом, ПВХ, ПС, ВХВД, полиамида. Физико-механические и экcплуатационные свойства пленок обусловлены химической природой применяемого полимера и степенью его ориентации.
Важными характеристиками термоусадочных пленок являются степень усадки (коэффициент усадки) и напряжение усадки.

Степень усадки характеризуют отношением линейных размеров образца до и после усадки и определяется по формуле:
Kyс = (Lo — L/Lo)100%, где Lo и L — длина образца до и после усадки.
Напряжение усадки Сус — это напряжение, возникающее в ориентированном материале при нагревании до определенной температуры, определяется по формуле:
Сус = P/S, МПа,
где Р — усилие, возникающее при усадке; S — площадь поперечного сечения образца после усадки.

Напряжение усадки зависит от температуры и продолжительности нагрева пленки. Чем ниже температура усадки, тем больше времени требуется для усадки пленки. Если производить усадку при высоких температурах, то время усадки может быть незначительным. Прочность пленок после усадки несколько уменьшается, но остается достаточной, чтобы обеспечить целостность упаковки. Для упаковывания единичных изделий небольшой массы, например, хлебобулочных изделий, тушек птиц, аэрозольных баллонов, сувенирные наборов применяются пленки толщиной 20 — 50 мкм, для групповой упаковки выбирается пленка толщиной 50 — 100 мкм, для пакетирования на поддонах (штабельной упаковки) — пленка толщиной 100 — 250 мкм.

В таблице приведены основные свойства некоторых термоусадочных пленок.

150-200

Степень усадки,% Температура усадки при упаковывании, °С

120-150

70-80 150-230 50-70 110-155 30-60 95-140 40-60 130-160 30-50 100-150

3. Создается их узел-«родитель» с весом, равным сумме их весов, он соединяется с «детьми» дугами.

4. Одной дуге, выходящей из «родителя», ставится в соответствие бит 1, другой — бит 0.

5. «Родитель» добавляется в список свободных узлов, а двое его «детей» удаляются из этого списка.

6. Шаги, начиная со второго, повторяются до тех пор, пока в списке свободных узлов не останется только один свободный узел. Он и будет считаться корнем дерева

Пример. Построение дерева Хаффмана и префиксных кодов для текста «KOJI_OKOJIO_KOJIOKOJIA»:

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

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

«О» — 00, «К» — 01 «Л» — 10 «_» — 110 «А» — 111

После того как коды символов построены, остается сгенерировать сжатый массив данных, для чего надо снова прочесть входные данные и каждый символ заменить на соответствующий код. В нашем случае непосредственно код текста будет занимать 39 бит, или 5 байт. Коэффициент сжатия равен 18/5 = 3,6. Для восстановления сжатых данных необходимо снова воспользоваться деревом Хаффмана, так как код каждого символа представляет собой путь в дереве Хаффмана от вершины до конечного узда дерева, соответствующего данному символу. Общая схема процесса восстановления такова: специальный маркер устанавливается в вершину дерева Хаффмана, и сжатый массив данных читается побитово. Если читаемый бит равен О, то маркер перемещается из вершины по верхнему ребру, если 1, то по нижнему. Затем читается следующий бит, и маркер снова перемещается, и т. д., пока маркер не попадет в один из конечных узлов дерева. В восстанавливаемый массив записывается символ, которому соответствует этот конечный узел, маркер снова помещается в вершину дерева, и процесс повторяется.

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

В основу алгоритмов RLE (англ. Run-Length Encoding — кодирование путем учета числа повторений) положен принцип выявления повторяющихся последовательностей данных и замены их простой структурой: повторяющимся фрагментом и коэффициентом повторения.

Рассмотрим идею сжатия данных по методу RLE (это не метод, а идея):

  • во входной последовательности все повторяющиеся цепочки байтов заменяются на фрагменты , причем управляющийся байт должен иметь значение 128+длина цепочки. Эта формула означает, что старший бит управляющего байта всегда равен 1 для цепочки повторяющихся байтов (символов);
  • все неповторяющиеся цепочки байтов заменяются на фрагменты , причем управляющий байт имеет значение 0+длина цепочки. Эта формула, означает, что старший бит управляющего байта для неповторяющейся цепочки равен 0.

Ограничения – длина обрабатываемого фрагмента не должна превосходить 127 байтов.

  • если во входной сжатой последовательности встречается управляющий байт с единицей в старшем разряде, то надо следующий за ним байт повторить в выходной последовательности столько раз, сколько указано в оставшихся 7 битах управляющего байта;
  • если во входной сжатой последовательности встречается управляющий байт с нулем в старшем разряде, то надо в выходную последовательность поместить столько байт следующих за управляющим байтом сколько указано в оставшихся 7 битах управляющего байта;

Пример. Надо упаковать методом RLE следующую последовательность

11111111 11111111 11111111 11111111 11111111

11110000 00001111 11000011 10101010 10101010

10000101 11111111 00000011 11110000 00001111

11000011 10000100 10101010

Таким образом, 12 байт упаковали в 8 байт, и значит, коэффициент сжатия равен 2/3, т.е. 66 процентов.

Различные реализации данного метода используются в графических файлах форматов PCX, BMP, при факсимильной передаче информации. Для текстовой информации метод RLE неэффективен.

Алгоритмы Лемпеля-Зива.

В конце 70-х годов прошлого века израильские ученые Яков Зив и Абрахам Лемпель предложили алгоритмы сжатия LZ77 и LZ78. Оригинальность алгоритмов состоит в том, что сжимаются здесь не только относительно буквы но и слова.

Общая схема алгоритма LZ77 такова (это не точное описание алгоритма):

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

• для цепочки первых байтов непрочитанной части ищется наиболее длинное совпадение в прочитанной части. Если совпадение найдено, то составляется комбинация <смещение, длина>, где смещение указывает, на сколько байтов надо сместиться назад от текущей позиции, чтобы найти совпадение, а длина — это длина совпадения;

• если запись комбинации <смещение, длина>короче совпадения, то она записывается в выходной массив, а текущая позиция перемещается вперед (на длину совпадающей части);

• если совпадение не обнаружено или оно короче записи комбинации <смещение, длина>, то в выходной массив копируется текущий байт, текущая позиция перемещается вперед на 1, и анализ повторяется.

Пример. Фраза КОЛОКОЛ_ОКОЛО_КОЛОКОЛЬНИ зако- дируется алгоритмом LZ77 как КО ЛО(-4,3)_(- 5,4 )0_(-14,7)ЬНИ.

Общая схема алгоритма LZ78 такова (это не точное описание алгоритма):

• алгоритм во время сжатия текста создает специаль­ный словарь повторяющихся цепочек, в словаре каждой цепочке соответствует короткий код;

• для цепочки первых байтов непрочитанной части ищется наиболее длинное совпадение в словаре. Код совпадения записывается в выходной массив, туда же заносится первый несовпавший символ, и текущая позиция перемещается вперед на длину совпадения + 1;

• в словарь добавляется новое слово: «совпадение» + + «несовпавший символ», и процесс повторяется до тех пор, пока не будет сжат весь входной массив.

Алгоритмы Лемпеля — Зива тем лучше сжимают текст, чем больше размер входного массива. Характерной особенностью обратных алгоритмов LZ77 и LZ78 является то, что, кроме самих сжатых данных, никакой дополнительной информации им не требуется! Начав работать, эти алгоритмы по уже распакованной части восстанавливают информацию, необходимую для распаковки следующих частей сжатых данных. Для сравнения: в алгоритме Хаффмана вместе со сжатыми данными требуется сохранять дерево Хаффмана, иначе распаковка будет невозможна.

Поучительна история развития алгоритмов Лемпеля — Зива. Зив и Лемпель придумали плодотворные идеи сжатия, построили алгоритмы и провели теоретическое исследование их эффективности. Но поскольку опубликованные алгоритмы были очень неэффективно реализованы (т. е. запрограммированы), долгое время они не использовались на практике. Только спустя 6 лет, в 1984 году Терри Велч (Terry Welch) сумел существенно улучшить алгоритм LZ78. Эта модификация алгоритма получила название LZW, она широко используется в программах сжатия данных. Алгоритм LZ77 ждал своего часа целых десять лет — только в 1987 году появилась его высокоэффективная версия, которая работала в сотни (!) раз быстрее оригинального алгоритма. В настоящее время существует около полусотни модификаций обоих алгоритмов. Обобщенно все они называются методами сжатия со словарем. Эти алгоритмы оказались настолько быстры и эффективны, что сейчас занимают лидирующее место среди используемых на практике алгоритмов сжатия.

Delphi.
Немного относительно методов упаковки данных

Инициализация таблицы кодировки — >. Var I: byte; Begin. For I:=0 to 255 do. Begin. New (CurPoint); CodeTable:=CurPoint; With CodeTable^ do. Begin. P0:=Nil; P1:=Nil; LengthBiteChain:=0; BiteChain:=0; CounterEnter:=1; Key:=True; Index:=I; End; End; For I:=0 to 255 do. Begin. If I>0 then CodeTable^.NewRight:=CodeTable; If I CurPoint^.NewRight^.CounterEnter then. Begin. Читати ще >

Delphi. Немного относительно методов упаковки данных (реферат, курсова, диплом, контрольна)

Delphi. Немного относительно методов упаковки данных


Running — Это самый простой из методов упаковки информации. Предположите что Вы имеете строку текста, и в конце строки стоит 40 пробелов. Налицо явная избыточность имеющейся информации. Проблема сжатия этой строки решается очень просто — эти 40 пробелов (40 байт) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (running). Первый байт, стоящий вместо 40 пробелов в сжатой строке, фактически будет явлться пробелом (последовательность была из пробелов). Второй байт — специальный байт «флажка «который указывает что мы должны развернуть предыдущий в строке байт в последовательность при восстановлении строки. Третий байт — байт счета (в нашем случае это будет 40). Как Вы сами можете видеть, достаточно чтобы любой раз, когда мы имеем последовательность из более 3-х одинаковых символов, заменять их выше описанной последовательностью, чтобы на выходе получить блок информации меньший по размеру, но допускающий восстановление информации в исходном виде.

Оставляя все сказанное выше истинным, добавлю лишь то, что в данном методе основной проблемой является выбор того самого байта «флажка », так как в реальных блоках информации как правило используются все 256 вариантов байта и нет возможности иметь 257 вариант — «флажок «. На первый взгляд эта проблема кажется неразрешимой, но к ней есть ключик, который Вы найдете прочитав о кодировании с помощью алгоритма Хаффмана (Huffman).

LZW — История этого алгоритма начинается с опубликования в мае 1977 г. Дж. Зивом (J. Ziv) и А. Лемпелем (A. Lempel) статьи в журнале «Информационные теории «под названием «IEEE Trans «. В последствии этот алгоритм был доработан Терри А. Велчем (Terry A. Welch) и в окончательном варианте отражен в статье «IEEE Compute «в июне 1984. В этой статье описывались подробности алгоритма и некоторые общие проблемы с которыми можно столкнуться при его реализации. Позже этот алгоритм получил название — LZW (Lempel — Ziv — Welch) .

Алгоритм LZW представляет собой алгоритм кодирования последовательностей неодинаковых символов. Возьмем для примера строку «Объект TSortedCollection порожден от TCollection. «. Анализируя эту строку мы можем видеть, что слово «Collection «повторяется дважды. В этом слове 10 символов — 80 бит. И если мы сможем заменить это слово в выходном файле, во втором его включении, на ссылку на первое включение, то получим сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничится длинной кодируемой строки в 256 символов, то учитывая байт «флаг «получим, что строка из 80 бит заменяется 8+16+8 = 32 бита. Алгоритм LZW как-бы «обучается «в процессе сжатия файла. Если существуют повторяющиеся строки в файле, то они будут закодированны в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW является однопроходной операцией в противоположность алгоритму Хаффмана (Huffman), которому требуется два прохода.

Huffman — Сначала кажется что создание файла меньших размеров из исходного без кодировки последовательностей или исключения повтора байтов будет невозможной задачей. Но давайте мы заставим себя сделать несколько умственных усилий и понять алгоритм Хаффмана (Huffman). Потеряв не так много времени мы приобретем знания и дополнительное место на дисках.

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

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

Мы имеем файл длинной в 100 байт и имеющий 6 различных символов в себе. Мы подсчитали вхождение каждого из символов в файл и получили следующее :

| cимвол | A | B | C | D | E | F |

| число вхождений | 10 | 20 | 30 | 5 | 25 | 10 |

Теперь мы берем эти числа и будем называть их частотой вхождения для каждого символа. Разместим таблицу как ниже.

| cимвол | C | E | B | F | A | D |

| число вхождений | 30 | 25 | 20 | 10 | 10 | 5 |

Мы возьмем из последней таблицы символы с наименьшей частотой. В нашем случае это D (5) и какой либо символ из F или A (10), можно взять любой из них например A. Сформируем из «узлов «D и A новый «узел », частота вхождения для которого будет равна сумме частот D и A :

Частота 30 10 5 10 20 25

Символа C A D F B E

Номер в рамке — сумма частот символов D и A. Теперь мы снова ищем два символа с самыми низкими частотами вхождения. Исключая из просмотра D и A и рассматривая вместо них новый «узел «с суммарной частотой вхождения. Самая низкая частота теперь у F и нового «узла «. Снова сделаем операцию слияния узлов :

Частота 30 10 5 10 20 25

Символа C A D F B E

Рассматриваем таблицу снова для следующих двух символов (B и E). Мы продолжаем в этот режим пока все «дерево «не сформировано, пока все не сведется к одному узлу.

Немного относительно методов упаковки данных

Running — Это самый простой из методов упаковки информации . Предположите что Вы имеете строку текста, и в конце строки стоит 40 пробелов. Налицо явная избыточность имеющейся информации. Проблема сжатия этой строки решается очень просто — эти 40 пробелов ( 40 байт ) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (running). Первый байт, стоящий вместо 40 пробелов в сжатой строке, фактически будет явлться пробелом ( последовательность была из пробелов ) . Второй байт — специальный байт «флажка» который указывает что мы должны развернуть предыдущий в строке байт в последовательность при восстановлении строки . Третий байт — байт счета ( в нашем случае это будет 40 ). Как Вы сами можете видеть, достаточно чтобы любой раз, когда мы имеем последовательность из более 3-х одинаковых символов, заменять их выше описанной последовательностью , чтобы на выходе получить блок информации меньший по размеру, но допускающий восстановление информации в исходном виде.

Оставляя все сказанное выше истинным , добавлю лишь то, что в данном методе основной проблемой является выбор того самого байта «флажка», так как в реальных блоках информации как правило используются все 256 вариантов байта и нет возможности иметь 257 вариант — «флажок». На первый взгляд эта проблема кажется неразрешимой , но к ней есть ключик , который Вы найдете прочитав о кодировании с помощью алгоритма Хаффмана ( Huffman ).

LZW — История этого алгоритма начинается с опубликования в мае 1977 г. Дж. Зивом ( J. Ziv ) и А. Лемпелем ( A. Lempel ) статьи в журнале «Информационные теории » под названием » IEEE Trans «. В последствии этот алгоритм был доработан Терри А. Велчем ( Terry A. Welch ) и в окончательном варианте отражен в статье » IEEE Compute » в июне 1984 . В этой статье описывались подробности алгоритма и некоторые общие проблемы с которыми можно

столкнуться при его реализации. Позже этот алгоритм получил название — LZW (Lempel — Ziv — Welch) .

Алгоритм LZW представляет собой алгоритм кодирования последовательностей неодинаковых символов. Возьмем для примера строку » Объект TSortedCollection порожден от TCollection.». Анализируя эту строку мы можем видеть, что слово «Collection» повторяется дважды. В этом слове 10 символов — 80 бит. И если мы сможем заменить это слово в выходном файле, во втором его включении, на ссылку на первое включение, то получим сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничится длинной кодируемой строки в 256 символов, то учитывая байт «флаг» получим, что строка из 80 бит заменяется 8+16+8 = 32 бита. Алгоритм LZW как-бы «обучается» в процессе сжатия файла. Если существуют повторяющиеся строки в файле , то они будут закодированны в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW является однопроходной операцией в противоположность алгоритму Хаффмана ( Huffman ) , которому требуется два прохода.

Huffman — Сначала кажется что создание файла меньших размеров из исходного без кодировки последовательностей или исключения повтора байтов будет невозможной задачей. Но давайте мы заставим себя сделать несколько умственных усилий и понять алгоритм Хаффмана ( Huffman ). Потеряв не так много времени мы приобретем знания и дополнительное место на дисках.

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

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

Мы имеем файл длинной в 100 байт и имеющий 6 различных символов в

себе . Мы подсчитали вхождение каждого из символов в файл и получили

Delphi. Немного относительно методов упаковки данных — курсовая работа (Практика) по информатике и телекоммуникациям

  • Тип: Курсовая работа (Практика)
  • Предмет: Информатика и телекоммуникации
  • Все курсовые работы (практика) по информатике и телекоммуникациям »
  • Язык: Русский
  • Автор: User
  • Дата: 25 фев 2005
  • Формат: RTF
  • Размер: 17 Кб
  • Страниц: 20
  • Слов: 3289
  • Букв: 20479
  • Просмотров за сегодня: 2
  • За 2 недели: 4
  • За все время: 147

Тезисы:

  • <* Алгоритм уплотнения данных по методу *>.
  • Чарльз Сейтер, ‘Сжатие данных’, «Мир ПК», N2 1991.
  • Налицо явная избыточность имеющейся информации.
  • Анализируя эту строку мы можем видеть, что слово «Collection» повторяется дважды.
  • Алгоритм LZW как-бы «обучается» в процессе сжатия файла.
  • Если существуют повторяющиеся строки в файле , то они будут закодированны в таблицу.

  • Каждую ссылку из последней таблицы назовем «узлом».
  • В дальнейшем ( в дереве ) мы будем позже размещать указатели которые будут указывает на этот «узел».
  • Теперь мы берем эти числа и будем называть их частотой вхождения для каждого символа.
  • Разместим таблицу как ниже.

Похожие работы:

930 Кб / 35 стр / 4335 слов / 29421 букв / 22 июн 2020

65 Кб / 23 стр / 4575 слов / 33030 букв / 9 июн 2002

2 Мб / 23 стр / 1471 слов / 11964 букв / 15 ноя 2010

246 Кб / 20 стр / 2428 слов / 15885 букв / 20 мая 2002

386 Кб / 73 стр / 11202 слов / 82790 букв / 1 янв 2020

53 Кб / 7 стр / 3185 слов / 21320 букв / 28 фев 2002

435 Кб / 23 стр / 2021 слов / 14004 букв / 30 мар 2020

81 Кб / 23 стр / 2421 слов / 15847 букв / 13 апр 2002

509 Кб / 33 стр / 5835 слов / 37049 букв / 8 дек 1995

1 Мб / 42 стр / 12043 слов / 80564 букв / 9 авг 2020

Delphi. Немного относительно методов упаковки данных — курсовая

Категория: курсовая
Рубрика: Информатика, программирование
Размер файла: 17 Kb
Количество загрузок:
Количество просмотров:
Описание работы: курсовая на тему Delphi. Немного относительно методов упаковки данных
Смотреть
Скачать

Delphi. Немного относительно методов упаковки данных

Running — Это самый простой из методов упаковки информации . Предположите что Вы имеете строку текста, и в конце строки стоит 40 пробелов. Налицо явная избыточность имеющейся информации. Проблема сжатия этой строки решается очень просто — эти 40 пробелов ( 40 байт ) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (running). Первый байт, стоящий вместо 40 пробелов в сжатой строке, фактически будет явлться пробелом ( последовательность была из пробелов ) . Второй байт — специальный байт «флажка» который указывает что мы должны развернуть предыдущий в строке байт в последовательность при восстановлении строки . Третий байт — байт счета ( в нашем случае это будет 40 ). Как Вы сами можете видеть, достаточно чтобы любой раз, когда мы имеем последовательность из более 3-х одинаковых символов, заменять их выше описанной последовательностью , чтобы на выходе получить блок информации меньший по размеру, но допускающий восстановление информации в исходном виде.

Оставляя все сказанное выше истинным , добавлю лишь то, что в данном методе основной проблемой является выбор того самого байта «флажка», так как в реальных блоках информации как правило используются все 256 вариантов байта и нет возможности иметь 257 вариант — «флажок». На первый взгляд эта проблема кажется неразрешимой , но к ней есть ключик , который Вы найдете прочитав о кодировании с помощью алгоритма Хаффмана ( Huffman ).

LZW — История этого алгоритма начинается с опубликования в мае 1977 г. Дж. Зивом ( J. Ziv ) и А. Лемпелем ( A. Lempel ) статьи в журнале «Информационные теории » под названием » IEEE Trans «. В последствии этот алгоритм был доработан Терри А. Велчем ( Terry A. Welch ) и в окончательном варианте отражен в статье » IEEE Compute » в июне 1984 . В этой статье описывались подробности алгоритма и некоторые общие проблемы с которыми можно

столкнуться при его реализации. Позже этот алгоритм получил название — LZW (Lempel — Ziv — Welch) .

Алгоритм LZW представляет собой алгоритм кодирования последовательностей неодинаковых символов. Возьмем для примера строку » Объект TSortedCollection порожден от TCollection.». Анализируя эту строку мы можем видеть, что слово «Collection» повторяется дважды. В этом слове 10 символов — 80 бит. И если мы сможем заменить это слово в выходном файле, во втором его включении, на ссылку на первое включение, то получим сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничится длинной кодируемой строки в 256 символов, то учитывая байт «флаг» получим, что строка из 80 бит заменяется 8+16+8 = 32 бита. Алгоритм LZW как-бы «обучается» в процессе сжатия файла. Если существуют повторяющиеся строки в файле , то они будут закодированны в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW является однопроходной операцией в противоположность алгоритму Хаффмана ( Huffman ) , которому требуется два прохода.

Huffman — Сначала кажется что создание файла меньших размеров из исходного без кодировки последовательностей или исключения повтора байтов будет невозможной задачей. Но давайте мы заставим себя сделать несколько умственных усилий и понять алгоритм Хаффмана ( Huffman ). Потеряв не так много времени мы приобретем знания и дополнительное место на дисках.

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

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

Мы имеем файл длинной в 100 байт и имеющий 6 различных символов в

себе . Мы подсчитали вхождение каждого из символов в файл и получили

| cимвол | A | B | C | D | E | F |

| число вхождений | 10 | 20 | 30 | 5 | 25 | 10 |

Теперь мы берем эти числа и будем называть их частотой вхождения для каждого символа. Разместим таблицу как ниже.

| cимвол | C | E | B | F | A | D |

| число вхождений | 30 | 25 | 20 | 10 | 10 | 5 |

Мы возьмем из последней таблицы символы с наименьшей частотой. В нашем случае это D (5) и какой либо символ из F или A (10), можно взять любой из них например A. Сформируем из «узлов» D и A новый «узел», частота вхождения для которого будет равна сумме частот D и A :

Частота 30 10 5 10 20 25

Символа C A D F B E

Номер в рамке — сумма частот символов D и A. Теперь мы снова ищем два символа с самыми низкими частотами вхождения. Исключая из просмотра D и A и рассматривая вместо них новый «узел» с суммарной частотой вхождения. Самая низкая частота теперь у F и нового «узла». Снова сделаем операцию слияния узлов :

Частота 30 10 5 10 20 25

Символа C A D F B E


Рассматриваем таблицу снова для следующих двух символов ( B и E ). Мы продолжаем в этот режим пока все «дерево» не сформировано, т.е. пока все не сведется к одному узлу.

Частота 30 10 5 10 20 25

Символа C A D F B E

Теперь когда наше дерево создано, мы можем кодировать файл . Мы должны всегда начинать из корня ( Root ) . Кодируя первый символ (лист дерева С) Мы прослеживаем вверх по дереву все повороты ветвей и если мы делаем левый поворот, то запоминаем 0-й бит, и аналогично 1-й бит для правого поворота. Так для C, мы будем идти влево к 55 ( и запомним 0 ), затем снова влево (0) к самому символу . Код Хаффмана для нашего символа C — 00. Для следующего символа ( А ) у нас получается — лево,право,лево,лево , что выливается в последовательность 0100. Выполнив выше сказанное для всех символов получим

A = 0100 ( 4 бита )

D = 0101 ( 4 бита )

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

| Частота | первоначально | уплотненные биты | уменьшено на |

| C 30 | 30 x 8 = 240 | 30 x 2 = 60 | 180 |

| A 10 | 10 x 8 = 80 | 10 x 3 = 30 | 50 |

| D 5 | 5 x 8 = 40 | 5 x 4 = 20 | 20 |

| F 10 | 10 x 8 = 80 | 10 x 4 = 40 | 40 |

| B 20 | 20 x 8 = 160 | 20 x 2 = 40 | 120 |

| E 25 | 25 x 8 = 200 | 25 x 2 = 50 | 150 |

Первоначальный размер файла : 100 байт — 800 бит;

Размер сжатого файла : 30 байт — 240 бит;

240 — 30% из 800 , так что мы сжали этот файл на 70%.

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

В нашей методике сжатия и каждом узле находятся 4 байта указателя, по этому, полная таблица для 256 байт будет приблизительно 1 Кбайт длинной. Таблица в нашем примере имеет 5 узлов плюс 6 вершин ( где и находятся наши символы ) , всего 11 . 4 байта 11 раз — 44 . Если мы добавим после небольшое количество байтов для сохранения места узла и некоторую другую статистику — наша таблица будет приблизительно 50 байтов длинны. Добавив к 30 байтам сжатой информации, 50 байтов таблицы получаем, что общая длинна архивного файла вырастет до 80 байт . Учитывая , что первоначальная длинна файла в рассматриваемом примере была 100 байт — мы получили 20% сжатие информации. Не плохо . То что мы действительно выполнили — трансляция символьного ASCII набора в наш новый набор требующий меньшее количество знаков по сравнению с стандартным.

Что мы можем получить на этом пути ?

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

Мы получим что можно иметь только :

4 — 2 разрядных кода;

8 — 3 разрядных кодов;

16 — 4 разрядных кодов;

32 — 5 разрядных кодов;

64 — 6 разрядных кодов;

128 — 7 разрядных кодов;

Необходимо еще два 8 разрядных кода.

4 — 2 разрядных кода;

8 — 3 разрядных кодов;

16 — 4 разрядных кодов;

32 — 5 разрядных кодов;

64 — 6 разрядных кодов;

128 — 7 разрядных кодов;

Итак мы имеем итог из 256 различных комбинаций которыми можно кодировать байт. Из этих комбинаций лишь 2 по длинне равны 8 битам. Если мы сложим число битов которые это представляет, то в итоге получим 1554 бит или 195 байтов. Так в максимуме , мы сжали 256 байт к 195 или 33%, таким образом максимально идеализированный Huffman может достигать сжатия в 33% когда используется на уровне байта Все эти подсчеты производились для не префиксных кодов Хаффмана т.е. кодов, которые нельзя идентифицировать однозначно. Например код A — 01011 и код B — 0101 . Если мы будем получать эти коды побитно, то получив биты 0101 мы не сможем сказать какой код мы получили A или B , так как следующий бит может быть как началом следующего кода, так и продолжением предыдущего.

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

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

P.S. О «ключике» дающем дорогу алгоритму Running.

—- Прочитав обзорную информацию о Huffman кодировании подумайтенад тем, что на нашем бинарном дереве может быть и 257 листиков.

Список литературы

1) Описание архиватора Narc фирмы Infinity Design Concepts, Inc.;

2) Чарльз Сейтер, «Сжатие данных», «Мир ПК», N2 1991;

Немного относительно методов упаковки данных

Running — Это самый простой из методов упаковки информации . Предположите что Вы имеете строку текста, и в конце строки стоит 40 пробелов. Налицо явная избыточность имеющейся информации. Проблема сжатия этой строки решается очень просто — эти 40 пробелов ( 40 байт ) сжимаются в 3 байта с помощью упаковки их по методу повторяющихся символов (running). Первый байт, стоящий вместо 40 пробелов в сжатой строке, фактически будет явлться пробелом ( последовательность была из пробелов ) . Второй байт — специальный байт «флажка» который указывает что мы должны развернуть предыдущий в строке байт в последовательность при восстановлении строки . Третий байт — байт счета ( в нашем случае это будет 40 ). Как Вы сами можете видеть, достаточно чтобы любой раз, когда мы имеем последовательность из более 3-х одинаковых символов, заменять их выше описанной последовательностью , чтобы на выходе получить блок информации меньший по размеру, но допускающий восстановление информации в исходном виде.

Оставляя все сказанное выше истинным , добавлю лишь то, что в данном методе основной проблемой является выбор того самого байта «флажка», так как в реальных блоках информации как правило используются все 256 вариантов байта и нет возможности иметь 257 вариант — «флажок». На первый взгляд эта проблема кажется неразрешимой , но к ней есть ключик , который Вы найдете прочитав о кодировании с помощью алгоритма Хаффмана ( Huffman ).

LZW — История этого алгоритма начинается с опубликования в мае 1977 г. Дж. Зивом ( J. Ziv ) и А. Лемпелем ( A. Lempel ) статьи в журнале «Информационные теории » под названием » IEEE Trans «. В последствии этот алгоритм был доработан Терри А. Велчем ( Terry A. Welch ) и в окончательном варианте отражен в статье » IEEE Compute » в июне 1984 . В этой статье описывались подробности алгоритма и некоторые общие проблемы с которыми можно

столкнуться при его реализации. Позже этот алгоритм получил название — LZW (Lempel — Ziv — Welch) .

Алгоритм LZW представляет собой алгоритм кодирования последовательностей неодинаковых символов. Возьмем для примера строку » Объект TSortedCollection порожден от TCollection.». Анализируя эту строку мы можем видеть, что слово «Collection» повторяется дважды. В этом слове 10 символов — 80 бит. И если мы сможем заменить это слово в выходном файле, во втором его включении, на ссылку на первое включение, то получим сжатие информации. Если рассматривать входной блок информации размером не более 64К и ограничится длинной кодируемой строки в 256 символов, то учитывая байт «флаг» получим, что строка из 80 бит заменяется 8+16+8 = 32 бита. Алгоритм LZW как-бы «обучается» в процессе сжатия файла. Если существуют повторяющиеся строки в файле , то они будут закодированны в таблицу. Очевидным преимуществом алгоритма является то, что нет необходимости включать таблицу кодировки в сжатый файл. Другой важной особенностью является то, что сжатие по алгоритму LZW является однопроходной операцией в противоположность алгоритму Хаффмана ( Huffman ) , которому требуется два прохода.

Huffman — Сначала кажется что создание файла меньших размеров из исходного без кодировки последовательностей или исключения повтора байтов будет невозможной задачей. Но давайте мы заставим себя сделать несколько умственных усилий и понять алгоритм Хаффмана ( Huffman ). Потеряв не так много времени мы приобретем знания и дополнительное место на дисках.

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

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

Мы имеем файл длинной в 100 байт и имеющий 6 различных символов в

себе . Мы подсчитали вхождение каждого из символов в файл и получили

Илон Маск рекомендует:  Неполный справочник по операторам и функциям vb
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL