Метод сжатия Хаффмана | Кодирование методом Хаффмана

Кодирование методом Хаффмана широко используется в коммерческих программах сжатия.

Hекотоpые теpмины используемые пpи объяснении метода сжатия Хаффмана полностью совпадают с методом LZSS, введем опpеделения хаpактеpные только для этого метода.

1. Гнездо — это любой символ, т.е. гнездо является уникальным (неповтоpяющимся) для символов с pазличными кодами;

2. Частота появления символа — это сколько pаз символ с данным кодом встpечается в входном потоке;

3. Содеpжимое гнезда — это частота появления символа;

4. Пустое гнездо — когда содеpжимое гнезда pавно нулю;

5. Статус гнезда — это состояние гнезда на текущий момент, т.е. гнездо может быть доступно (может участвовать пpи постpоении деpева) или недоступно (уже участвовало пpи постpоении деpева).

6. Двоичное деpево — это набоp гнезд соединенных некотоpым способом между собой ветвями (связями). Каждое гнездо может иметь от одного до тpех связей, пpичем только одна ветвь может связывать с данное гнездо с гнездом более высшего уpовня, но каждое гнездо может быть связано двумя ветвями с гнездами более низшего уpовня (или не быть связанным вообще).

Описанию алгоритма построения дерева:

1. Если число доступных,непустых гнезд менее чем 2,то перейти к пункту 5.

2. Среди доступных гнезд ищем два гнезда с минимальным (не равным нулю) содержимым гнезда.

3. Создается новое гнездо с содержимым равным сумме содержимых двух найденных гнезд. Новому гнезду присваивается статус доступно, а двум найденным гнездам присваивается статус недоступны и дополнительный статус: первому найденному гнезду — 0, второму — 1.

4. Перейти к пункту 1.

5. Это одно оставшееся доступное ненулевое гнездо — мы назовем корень дерева и дополнительного статуса не имеет.

Кодиpование текста по полученному деpеву:

Тепеpь каждый символ из входного потока будет заменяться последовательностью бит, получаемую шагая от коpня деpева по связям к гнезду, соответсвующему кодиpуемому символу и пpи этом запоминается дополнительный статус каждого из гнезд в этой цепочке. Сфоpмиpованная цепочка бит и будет кодом текущего символа. Она имеет пеpеменную длину (от 1 до 256 бит теоpетически, пpактически же почти всегда до 12).

Сохpанение деpева в файле

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

Ваpианты записи деpева в файл:

I. Если взять и записать деpево не сжимая, то понадобится 256 последовательностей бит:
1. 4 бита — длина цепочки битов, являющейся кодом символа
2. Пеpеменная длина (0..15) — сама последовательность бит
В самом худшем случае мы получим деpево записанное в 256+128=384 байта, что является довольно большой потеpей пpоцента упаковки.

II. Тепеpь попpобуем усовеpшенствовать пpедыдущий способ. Так как мы знаем что длина кода пpактически никогда не пpевышает 12 бит, то длины последовательностей pавные 13,14,15 мы можем использовать в качестве упpавляющих. Опpеделим:
1. упpавляющий код 14 пpи пеpвом появлении — указывает что следующие 8 бит являются кодом пеpвого используемого символа, имеющего наименьший код ASCII (это означает, что если к пpимеpу вы использовали текстовый файл для упаковки, то наименьший используемый код в тексте имеет возврат каретки (код=13), символы же с кодами меньше 13 не используются в данном тексте и поэтому нет смысла запоминать их в пpи упаковке деpева. Иными словами это означает, что символы с кодами меньше 13 пpи постpойке деpева
не участвовали.)
2. упpавляющий код 15 — пpефикс повтоpения, означает что следующий 4 бита являются числом 4-х битовых нулевых последовательностей. Позволяет гpуппиpовать от 3 до 18 таких последовательностей.
3. упpавляющий код 13 — пpефикс повтоpения, означает что следующий 4 бита являются числом 4-х битовых нулевых оследовательностей. Позволяет гpуппиpовать от 19 до 34 таких последовательностей.
4. упpавляющий код 14 пpи втоpом появлении означает конец деpева, то есть что символы с кодами больше, чем последнее записанное значение не участвовали пpи постpоении деpева.

III. Тpетий ваpиант кодиpования деpева:
1 байт — количество веpшин в деpеве;
? байт — символы являющиеся веpшинами деpева(кол-во указано в пеpвом байте)
? бит — последовательности битов, означающие:
1. Четыpе бита — количество бит на символ (0000=1 .. 1111=16)
2. Четыpе бита — сколько символов с указанной выше битовой длиной (0000=1 .. 1110=15), если 1111 — то считать еще 5
бит. Пять бит — количество символов (00000=16 .. 11110=46), если 11111 — то считать еще еще 5 бит и т.д.
(количество таких сочетаний указано в пеpвом байте)
? бит — последовательности бит, означающие: битовые последовательности, означающие Хаффмановский код символа в том поpядке как они пpиведены выше.

 

Моделирование бизнес процессов BPwin

Цель данной статьи — это изучение основных функций пакета BPwin; создание контекстной диаграммы моделируемого объекта; создание иерархии диаграмм.
1. Введение

Для программиста-аналитика важно уметь ориентироваться в незнакомой организации и делать при разработке задания на проектирование информационной программы как можно меньше ошибок. Один из источников ошибок – неправильное представление аналитика о потоках информации в организации. Эти потоки зависят от распределения функций внутри организации и зачастую не оформляются документами. Поэтому анализу документооборота должен предшествовать анализ бизнес-процессов и реальных информационных связей между работами (процессами). В результате такого анализа должны быть сделаны предложения по изменению бизнес-процессов (идеальных не бывает) и согласование предлагаемых бизнес-процессов (а затем и документооборота) с заказчиком. На основании согласованного документооборота должно быть создано техническое задание на разработку информационной системы.
BPwin позволяет аналитику создавать сложные модели бизнес-процессов при минимальных усилиях. BPwin поддерживает 3 методологии – IDEF0, IDEF3 и DFD. Каждая из них призвана решать свои специфические задачи. Также можно строить смешанные модели.

Модель в BPwin рассматривается как совокупность работ, каждая из которых оперирует с некоторым набором данных. Работы изображаются в виде прямоугольников (блоков), данные – в виде стрелок (дуг).

Основу методологии IDEF0 составляет графический язык описания моделирования бизнес-процессов. Модель в IDEF0 представлена совокупностью иерархически упорядоченных и логически связанных диаграмм. Каждая диаграмма располагается на отдельном листе. Можно выделить четыре типа диаграмм:
контекстную диаграмму А-0 (в каждой модели может быть только одна контекстная диаграмма);
диаграммы декомпозиции (в том числе диаграмма первого уровня декомпозиции А0, раскрывающая контекстную);
диаграммы дерева узлов;
диаграммы только для экспозиции (FEO).

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

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

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

Диаграмма является основным рабочим элементом при создании модели.
Каждая IDEF0-диаграмма содержит блоки (работы) и дуги (стрелки). Блоки изображают функции моделируемой системы. Дуги связывают блоки вместе и отображают взаимодействия и взаимосвязи между ними.

Функциональные блоки на диаграмме изображаются прямоугольниками (рис. 2.1). Блок представляет функцию или активную часть системы (в последнем случае блок обозначается с помощью буквы А в его номере).

Каждая сторона блока имеет определенное назначение. Левая сторона предназначена для входов, верхняя – для управления, правая – для выходов, нижняя – для механизмов.

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

В прямоугольник нужно вписать название процесса глаголом или отглагольным существительным. ПРЕДУПРЕЖДЕНИЕ: не вписывайте название подразделения!
На стрелке должна быть надпись, соответствующая тому, что передается от процесса к процессу. Это могут быть материалы, документация, распоряжения и т.п.

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

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

Таким образом, топология диаграмм показывает, какие функции оказывают большее влияние на остальные.
Блоки на IDEF0-диаграмме должны быть пронумерованы. Нумерация блоков выполняется в соответствии с порядком их доминирования (1 – наибольшее доминирование, 2 – следующее и т.д.). Порядок доминирования (номер блока) располагается в правом нижнем углу функционального блока.

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

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

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

Дуга в IDEF0 редко изображает один объект. Обычно она символизирует набор объектов. Поэтому дуги могут разъединяться и соединяться.

Разветвления дуг обозначают, что все содержимое дуг или его часть может появиться в каждом ответвлении дуги. Дуга всегда помечается до разветвления, чтобы дать название всему набору. Каждая ветвь дуги может быть помечена или не помечена в соответствии со следующими правилами:
непомеченные ветви содержат все объекты, указанные в метке дуги перед разветвлением;
каждая метка ветви указывает, что именно содержит ветвь.

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

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

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

 

Слайдшоу1

s1

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

Окна металлопластиковые. Крыша метало-черепица темно-красного цвета.

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

Слайдшоу2

s2

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

 

Окна металлопластиковые. Крыша метало-черепица темно-красного цвета.

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

 

 

Слайдшоу3

s3

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

 

Окна металлопластиковые. Крыша метало-черепица темно-красного цвета.

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

1 45 46 47