Методы арифметического кодирования информации и сравнение их коэффициентов сжатия
Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 26.05.2012 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Расчет затрат на основную заработную плату по теме приведенной в табл. 4.2:
Таблица 4.2 - Расчет затрат на основную заработную плату
Должность |
Оклад, грн./мес. |
Количество месяцев |
Долевое участие, % |
Сумма, грн. |
|
Руководитель темы |
1900,00 |
3 |
20 |
1140,00 |
|
Инженер |
1100,00 |
3 |
100 |
3300,00 |
|
Итого за 3 месяца 4440,00 |
4.2.3 Дополнительная заработная плата
Она включает доплаты и надбавки к тарифным ставкам и должностным окладам в размерах предусмотренных действующим законодательством; премии и поощрения рабочим, руководителям, специалистам и другим служащим за производственные результаты; и другие расходы на оплату труда. Дополнительную заработную плату принимаем в размере 10% от :
грн
4.2.4 В состав элемента “Отчисления на социальные мероприятия” включаются:
- отчисления на обязательное государственное пенсионное страхование - 32% от;
- отчисления на обязательное социальное страхование - 2,5% от ;
- отчисления на общеобязательное государственное социальное страхование на фонд занятости - 2,5% от ;
- отчисления на индивидуальное страхование персонала предприятия - 1% от .
4.2.5 Амортизационные отчисления.
Амортизационные отчисления составляют 25 % от стоимости специального оборудования, и рассчитывается по формуле (4.2):
(4.2)
где - цена специального оборудования;
- кол-во месяцев работы.
В таблицу 4.3 занесем цены специального оборудования и количество месяцев их работы:
Таблица 4.3 -Стоимость специального оборудования
Оборудование |
кол-во месяцев работы |
Сумма, грн |
Примечание |
|
ЭВМ |
3 |
3300,00 |
Разработка и тестирование программы |
|
Принтер |
1 |
650,00 |
распечатка |
|
Итого |
3950,00 |
;
4.2.6 Затраты на машинное время рассчитываются по формуле (4.3):
(4.3)
где - кол-во дней в месяце;
- число часов работы на ПК;
- стоимость Машино-час, грн.
4.2.7 Накладные расходы
Вспомогательные расходы по управлению предприятием, амортизационные отчисления по действующим нормам, затраты на охрану труда, отопление, освещение, услуги сторонних организаций. Накладные расходы рассчитываются как 25% - 30 % .
По результатам произведенных расчетов составляем калькуляцию себестоимости, которая приведена в таблице 4.4:
Таблица 4.4 - Калькуляция себестоимости разработки программно-аппаратных средств оптимального арифметического кодирования
Наименование статей калькуляции |
Сумма, грн. |
|
1. Сырье и материалы |
69,00 |
|
2. Основная заработная плата |
4440,00 |
|
3. Дополнительная заработная плата |
444,00 |
|
4. Отчисления на социальные мероприятия: - отчисления на обязательное государственное пенсионное страхование - отчисления на обязательное социальное страхование - отчисления на общеобязательное государственное социальное страхование на фонд занятости - отчисления на индивидуальное страхование персонала предприятия |
1855,82 1562,88 122,10 122,10 48,84 |
|
5. Амортизационные отчисления |
219,79 |
|
6. Затраты на машинное время |
480,00 |
|
7. Накладные расходы |
1110,00 |
|
8. Сметная стоимость |
8618,71 |
|
9. Прибыль (35%) |
3016,55 |
|
10. Оптовая цена |
11635,26 |
|
11. Сумма НДС 12. Цена продажи |
2327,05 13962,30 |
4.3 Экономическая эффективность НИР
Специфической особенностью проведения экономической эффективности научно-исследовательских работ является их прогнозный характер, а также наличие неопределенности в области применения и объемах использования результатов научно-исследовательских работ, в уровне затрат на производство, в оценке влияния характеристик приборов на характеристики более сложных систем.
Определение экономической эффективности научно-исследовательской работы базируется на общих методах расчета сравнительной экономической эффективности новой техники.
Количественное определение экономической эффективности научно-исследовательской работы возможно, если есть база для сравнения, известна область и объем промышленного использования результатов научно-исследовательской работы. Однако специфика расчета экономической эффективности научно-исследовательской работы заключается в том, что результаты работы самостоятельного значения не имеют, а дают экономический эффект в народном хозяйстве только будучи опосредованными через длинную цепочку стадий технического прогресса.
В действующих методологических положениях о порядке образования, распределение и использование фондов экономического стимулирования технического прогресса рекомендуется относить на организации, выполняющие научно-исследовательские и опытно-конструктивные работы, от 30% до 50% экономического эффекта; на технологические работы от 20% до 30%; на освоение и организацию производства новой техники от 25% до 40% экономического эффекта.
Экономическую эффективность некоторых поисковых и прикладных научно-исследовательских работ рассчитать не удается. В таком случае приводят качественное описание социально-экономической эффективности научно-исследовательской работы.
Сущность этой методики состоит в том, что на основе оценок работы определяется коэффициент научно-технического эффекта НИОКР (4.4):
(4.4)
где ri - весовой коэффициент і-го признака научно-технического эффекта (таблица 5.8);
ki - количественная оценка і-го признака научно-технического эффекта научно-исследовательской работы.
Значения весовых коэффициентов НИОКР сведем в таблицу 1.5:
Таблица 1.5 - Коэффициент весомости признаков
Признак научно-технического эффекта НИОКР |
Значение весового коэффициента |
|
Уровень новизны Теоретический уровень Возможность реализации |
0,6 0,6 0,4 |
Классификатор признаков научной новизны принимается равным k1=7, так как уровень новизны разработки определяется как новая.
В таблице 1.6 представлено описание уровня новизны разработки - новая.
Таблица 1.6- классификатор признаков научной новизны
Уровень новизны разработки |
Характеристика новизны |
Баллы |
|
Новая |
По-новому или впервые объяснены известные факты, закономерности, введены новые понятия, проведено существенное усовершенствование, дополнение и уточнение ранее достигнутых результатов., закономерности, введены в их работы: |
5-7 |
Классификатор признаков теоретического уровня принимается равным k2=6, так как производится разработка нового способа.
В таблице 1.7 представлено описание признаков теоретического уровня при котором k=6:
Таблица 1.7 - классификатор признаков теоретического уровня
Теоретический уровень полученных результатов |
Баллы |
|
Разработка способа (алгоритм, программа мероприятий, устройство, вещество) |
6 |
Классификатор признаков времени реализации принимается равным:
k3=k31+k32;
k31=4, так как время реализации в течение первых 4 лет;
k32=4, так как масштабы реализации в пределах нескольких предприятий.
В таблице 1.8 представим описание признаков времени и масштабов реализации для наших данных:
Таблица 1.8 - Классификатор признаков времени и масштабов реализации
Время реализации |
Баллы |
|
От 5 до 10 лет |
4 |
|
Масштабы реализации |
Баллы |
|
Отрасль, министерство |
4 |
Отсюда коэффициент научно-технического эффекта будет равен:
Нт = 0,6?7+0,6?6+0,4?(4+4)=11
Так как максимально возможное значение коэффициента научно-технического эффекта НИОКР Нт=12, то
Таким образом, проведенный анализ позволяет сделать вывод о целесообразности проведения данной исследовательской работы, так как значение коэффициента научно-технического эффекта НИОКР Нт находится на уровне 92% и не превышает максимальное значение.
4.4 Выводы
В результате проведенных расчетов была составлена калькуляция себестоимости программирования методов арифметического кодирования, которые по сути являются архиваторами. Сметная стоимость разрабатываемого продукта-8618,71грн. Поскольку предполагаемая область применения достаточно широкая, то цена может быть снижена за счет увеличения количества продаваемых копий исходной программной продукции. Прибыль составляет 3016,55 грн., а цена продажи - 1 3962,30.Стоимость специального оборудования - 3950,00.
5 Охрана труда и окружающей среды
5.1 Общие вопросы охраны труда и окружающей среды
Охрана труда -- это система законодательных актов, социально-экономических, организационно-технических, санитарно-гигиенических, лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранение здоровья и работоспособности человека в процессе труда [1].
В данном разделе рассматриваются вопросы охраны труда и окружающей среды для бакалаврского проекта на тему: «Программно-аппаратные средства оптимального арифметического кодирования ».
В ходе работы была разработаны программы вычисления различных кодов, с помощью которых возможно оптимизировать арифметическое кодирование информации. Эти программы написаны на языке программирования DALPHI. Разработка программ велась на компьютере AMD Athlon Dual Core Processor 3600+. Все разработки проводилась в НТУ “ХПИ”, в компьютерной лаборатории электротехнического корпуса. Компьютерная лаборатория находится на первом этаже трёхэтажного здания. Размер помещения 10x4=40 м2. Для работы одного человека в компьютерной лаборатории необходимо:
;
;
В данной лаборатории находится 6 рабочих мест, что соответствует санитарным нормам проектирования промышленных предприятий [13,32].
5.2 Опасные и вредные производственные факторы
Под вредным производственным фактором понимается такой фактор производственной среды, который при определённых условиях приводит к профессиональным заболеваниям или снижению работоспособности человека. Опасный производственный фактор, в свою очередь, при определённых условиях приводит к травме или резкому внезапному ухудшению здоровья.
Вредные факторы при определённой интенсивности воздействий могут быть опасными.
В таблице 5.1 приведен перечень вредных и опасных факторов, воздействующих на человека при работе с электронно-вычислительной техникой согласно ГОСТ 12.0.003-74 [20].
Таблица 5.1 - Опасные и вредные факторы
Наименование фактора |
Источник фактора |
Нормированное значение |
Характер воздействия |
Литература |
|
Повышенное напряжение |
Сеть 220 В, электроприборы |
I = 0,6 мA U=12 B |
Поражение электрическим током и ожоги |
[30,28,32] |
|
Шум и вибрации |
Печатающая техника вентиляторы системного блока и процессора |
50 дБА |
Утомление организма, снижение слуха, утомление ЦНС |
[26] |
|
Повышенный уровень статического электричества |
Незаземлённые мониторы или части корпуса |
15 кВ/м |
Поражение током |
[29,28] |
|
Повышенная яркость света |
Мощные осветительные приборы |
В = 100 кд/м |
Отрицательное воздействие на зрительные органы |
[21,28,25] |
|
Пониженная контрастность |
Неисправность мониторов |
К=0.9 % |
Переутомление и физическое перенапряжение |
[28,25] |
|
Повышенный уровень рентгеновского излучения |
Экраны и другие поверхности ЭВМ |
100 мкР/ч на расстоянии 5 см от экрана |
Мутагенные процессы во внутренних органах |
[27] |
|
Перенапряжение глазных анализаторов |
Монитор ЭВМ |
Удлинение времени реакции на свет на 40-50% |
Головная боль, боль в глазах |
[21,28] |
|
Статическая перегрузка |
Постоянная поза сидения |
Снижение статической выносливости на 10% |
Мышечная усталость |
[21] |
5.3 Промышленная санитария
5.3.1 Метеорологические условия помещения при работе
Основными факторами, которые характеризуют метеоусловия производственной среды, являются температура, влажность воздуха, подвижность воздуха и тепловое излучение.
Длительное воздействие на человека неблагоприятных условий резко ухудшает его самочувствие, снижает производительность труда, и частично приводит к заболеваниям. ГОСТ 12.1.005-88 [22] устанавливает в лабораториях оптимальные метеоусловия, учитывая время года и тяжесть выполняемых работ.
Важной составляющей трудового процесса пользователя ПК является значительная информационная нагрузка, поэтому категория выполняемой работы относится к легкой физической Iа (работа производимая сидя не требующая систематического физического напряжения, энэргозатраты до 120 Ккал/ч.), но умственно напряженной согласно ГОСТ 12.1.005-88.
По характеру окружающей среды помещение лаборатории относится к классу нормальных, так как в нем отсутствуют признаки свойственные помещениям, жарким, пыльным, с химически активной средой, так работа с ПК требует большой концентрации внимания, то микроклимат помещения должен характеризоваться оптимальными значениями параметров. Учитывая специфику работы за компьютером, оптимальные климатические параметры приведены в таблице 5.2 согласно ГОСТ 12-1.005-88 .
Таблица 5.2 - Микроклимат в рабочей зоне
Категория работ |
Период года |
Температура, |
Относительная влажность, % |
Скорость движения воздуха, м/с |
|
Легкая физическая Iа, напряженная умственная |
Холодный |
20...23 |
40...60 |
0.1 |
|
Тёплый |
23...25 |
40...60 |
0.1 |
Для обеспечения вышеуказанных оптимальных метеорологических условий и защиты от пыли, в помещении предусмотрено согласно СНиП 2.04.05-92 [24].:
- система отопления общая паровая,
- кондиционирование - кондиционеры типа БК-2000;
5.3.2 Освещение производственного помещения
Работоспособность человека во многом зависит от освещения. Неудовлетворительное освещение может исказить восприятие; кроме того, оно утомляет не только зрение, но и вызывает утомление организма в целом, что оказывает влияние на производительность труда.
Для обеспечения комфорта зрительных работ в помещениях с ПК применяется естественное и искусственное освещение, а также комбинированное, учитывая напряженность глазного анализатора, согласно ДБН В.2.5.-28-2006 [25] и СНиП II-4-79 [33].
Естественное освещение нормируется коэффициентом естественного освещения (КЕО) согласно ДБН В.2.5.-28-2006.
Нормированные значения КЕО (ен) для зданий расположенных в IV поясе светового климата (Украина) определяются по формуле (5.1)
(5.1)
где -- значение КЕО для зданий, которые расположены в третьем поясе светового климата Украины, с учетом характеристик зрительной работы = 1,5%;
m -- коэффициент светового климата (для IV светового пояса m=0.9);
с -- коэффициент солнечности климата, учитывает дополнительный световой поток, проникающий через световые проемы в помещение за счет прямого и отраженного от подстилающей поверхности солнечного света в течение года (определяется исходя из ориентации окон по сторонам света, для окон выходящих на юго-восток и IV-го пояса светового климата c=1).
Характеристики зрительной работы пользователя ПЭВМ следующие:
- разряд зрительных работ III - высокой точности;
- подразряд в;
- наименьший размер объекта различения от 0,3 до 0,5 мм;
- Контраст объекта различения с фоном средний или большой;
- Характеристика фона светлый и средний.
В тёмное время суток используется искусственное освещение. Согласно
ДБН В.2.5.-28-2006 освещенность комбинированная 750 лк, общая 300 лк.
Общее освещение выполнено в виде прерывистой линии светильников. Учитывая возможности и требования к экономии электроэнергии, выберем для общего освещения компьютерного класса электролюминесцентные светильники ЛДЦ-40, световой поток 750 Лм. Выбранный светильник прямого света характеризуется диффузным отражением, защитным устройством, предохраняющим от ослепления и отражённого блеска, и оснащённого защитным устройством для регулирования яркости. Кроме того, они имеют больший срок службы -- 10000 ч. Степень защиты соответствующая классу помещения П-IIа для светильников IP2X.
5.3.3 Излучение от экрана
ЭЛТ генерирует несколько типов излучения: рентгеновское, радиочастотное, ультрафиолетовое и инфракрасное.
Уровни этих излучений низкие и не превышают допустимых норм. Конструктивное решение экрана дисплея таково, что рентгеновское излучение от экрана на расстоянии 5 см не превышает 100 мкР/ч., что отвечает эквивалентной дозе 0.1 мбер/год ( НРБУ-97 [27] ).
Следует учитывать, что мягкое рентгеновское излучение, возникающее при напряжениях на аноде 20-22 кВ, а также напряжение на токоведущих участках схемы вызывают ионизацию воздуха с образованием положительных ионов, неблагоприятных для человека. Уровни ионизации воздуха помещения для работы на ПЭВМ приведены в таблице 3 согласно ДНАОП 0.03-3.06-80 [23].
В таблице 5.3 приведены нормы допустимых уровней ионизации воздуха:
Таблица 5.3 - Нормы допустимых уровней ионизации воздуха
Уровень ионизации |
Количество ионов в 1 смі воздуха |
||
n |
n |
||
Минимально необходимый |
400 |
600 |
|
Оптимальный |
1500-3000 |
3000-5000 |
|
Максимально допустимый |
50000 |
50000 |
Поддержание допустимых уровней ионизации воздуха обеспечивается кондиционерами типа БК-2000 согласно СНиП 2.04.05-91.
5.3.4 Шум и вибрация
В компьютерной лаборатории наиболее сильными источниками шума и вибрации являются печатающая техника, а также вентиляторы процессора и блока питания. Уровень их звукового давления в рабочих местах не превышает 50 дБа, что соответствует нормам ГОСТ 12.1.003.-83* [26],и вибрация в помещениях незначительная, так как незначительны источники вибрации ГОСТ 12.1.012.-90. Так как для источников шума и вибрации предусмотрены конструктивные меры защиты (исполнение шумовиброустойчивом варианте), то дополнительные средства защиты от шума и вибрации не используются.
5.3.5 Электробезопасность
Все оборудование используемое при работе, является потребителем однофазной сети переменного тока с частотой 50 Гц, напряжением 220/380 В, мощность, потребляемая от сети переменного тока, не превышает 1 КВт, и оборудована глухозаземленной нейтралью от поражения электрическим током обслуживающего персонала согласно ГОСТ 12.1.038-82* [30].Этим обеспечивается невозможность появления напряжения относительно земли больше 220В. Электропитание осуществляется от электроустановки (трансформатора), с регулируемым напряжением под нагрузкой. Напряжение от сети подаётся в распределительные шкафы. Лаборатория, где находится много энергоёмкого оборудования, относится к классу помещений с повышенной опасностью поражения человека электрическим током ГОСТ 12.2.007.0-75* [31]. Для обеспечения электробезопасности, предусмотрены конструктивные, схемно-конструктивные и эксплуатационные меры электробезопасности.
5.3.6 Пожарная безопасность
Понятие пожарная безопасность означает состояние объекта, при котором исключается возможность пожара, а в случаях его возникновения предотвращается воздействие на людей опасных факторов пожара и обеспечивается защита материальных ценностей. Причины, которые могут вызвать пожар в рассматриваемом помещении, являются: неисправность электропроводки и приборов; короткое замыкание электрических цепей; перегрев аппаратуры и изоляции; молния и статическое электричество.
Классификация:
Здание, где находится компьютерный класс, по пожарной безопасности относится к категории В - пожароопасное, в нём находятся твёрдые сгораемые материалы и вещества, НАПБ Б 07.005-86 [15], степень огнестойкости здания относится к III-й степени (конструкции выполнены из естественных и искусственных каменных материалов, бетона или железобетона с применением листовых и плиточных негорючих материалов) в соответствии со ДБН В.1.1-7-2002 [18]. Класс помещения согласно ПУЭ-87 [17] по пожарной опасности П-Iiа, так как в нем находятся твердые горючие вещества, не способные переходить во взвешенное состояние.
Пожарная безопасность в соответствии с ГОСТ 12.1.004-91 [16] обеспечивается системами предотвращения пожара, пожарной защиты, организационно-техническими мероприятиями.
Система предотвращения пожара включает:
- контроль и профилактику изоляции;
- наличие плавких вставок и предохранителей в оборудовании;
- для защиты от статического напряжения используется защитное заземление;
Для данного класса здания с учётом количества грозовых часов в году (г. Харьков) устанавливается 3 категория молниезащиты.
Степень защиты, соответствующая классу помещения П IIа:
Для оборудования IP 44.
Для светильников IP 2Х.
Система пожарной защиты:
Предусматривается наличие углекислотных огнетушителей ОУ-2 в количестве 4 штук (1 шт. на 10 кв.м), в связи с использованием в помещении электроустановок, а также система автоматической пожарной сигнализации, которая оснащена дымовыми сигнализаторами.
Организационные меры защиты:
Предусматривается мероприятия по обучению персонала соблюдению правил пожарной безопасности, а также ознакомление с планом его эвакуации в случае пожара;
Для успешной эвакуации персонала двери помещения имеют следующие размеры:
Ширина не менее 1.5 м
Высота не менее 2.0 м
Ширина коридора 1.8 м. Рабочее помещение должно иметь два выхода. Расстояние от наиболее удаленного рабочего места не должно превышать 100 м. В здании имеются два эвакуационных выхода.
5.4 Охрана окружающей среды
Работа по разработке приборов за компьютером экологически чистая и не оказывает на окружающую среду вредного влияния, поэтому раздел охраны окружающей среды не рассматривается.
Заключение
Методы сжатия дискретных сигналов нашли широкое применение в различных микропроцессорных биомедицинских системах. Важным вопросом при выборе алгоритма сжатия является выбор кода для двоичного представления коэффициентов преобразования, обеспечивающего минимальное число бит в выходном двоичном потоке и, следовательно, максимальный коэффициент сжатия. Наиболее часто для этой цели используются унитарный код, коды Голомба, Хаффмана, Фибоначчи, Элиаса, Ивэн-Роде.
В данной работе разрабатывались программно-аппаратные средства оптимального арифметического кодирования. Рассмотрены методы оптимального кодирования, которые являются трансформирующими и поточными, то есть могут применяться даже в том случае, когда объем входных данных заранее не известен. В общем случае скорость работы компрессора (содержащего прямое, «сжимающее» преобразование) равна скорости декомпрессора (реализующего обратное, «разжимающее» преобразование) и зависит только от объема исходных данных. При этом нет необходимости в больших объемах буферной памяти. К таким методам относятся: гамма-коды Элиаса, коды Хаффмана, коды Голомба, Фибоначчи и т.д. Эти коды были запрограммированы на кодирование и декодирование на языке программирования DELPHI.
Анализ показывает, что для значений ошибки (<0.05) и коэффициента сжатия (3..4) целесообразно кодировать сигналы ЭКГ кодами Левенштейна и Фибоначчи. Близки к ним по эффективности коды Голомба с параметром m=3. Оптимальное число отброшенных коэффициентов составляет порядка 25% от длины блока. Длину блока нецелесообразно выбирать как слишком малую (8..16), так и слишком большую (128). Оптимальной длиной блока представляется значение 32..64.
Для программных средств был приведен экономический расчет, а также были рассмотрены вопросы охраны труда и окружающей среды.
арифметическое кодирование алгоритм
СПИСОК ИСТОЧНИКОВ ИНФОРМАЦИИ
1. Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. -- М.: ДИАЛОГ-МИФИ, 2002.
2. Fenwick P., Punctured Elias Codes for variable-length coding of the integers, Technical Report 137, December 5, 1996.
3. Воробъев Н.Н. Числа Фибоначчи.- М.:Наука, 1987.-144с.
4. Кодирование информации (двоичные коды)/Березюк Н.Т. и др.-Харьков:Выща школа, 1987.-252с.
5. Экстремальное программирование. - СПб.:Питер, 2002.-224с.:ил.
6. Д. Кнут, «Искусство программирования для ЭВМ» т.1 «Основные алгоритмы» -- М.: «Мир», 1976.
7. Архангельский А.Я. Программирование в Delphi 6. - М.: ЗАО «Издательство Бином», 2002 г. - 1120 с.: ил.
8. Архангельский А.Я. Программирование в Delphi 7. - М.: ЗАО «Бином», 2004 г. - 1150 с.
9. Трахтенброт Б.А. Тьюринговы вычисления с логарифмическим замедлением, Алгебра и логика 3, вып.4, 1964, 33-48.
10. Окулов С.М. Программирование в алгоритмах. - М.: Бином. Лаборатория знаний, 2004. - 341 с.: ил.
11. Берс Л. Математический анализ Т. II. Перевод с англ. Л.И. Головкиной. Учеб. пособие для втузов, М., “Высш. школа”, 1975, 544 с. с ил.
12. Закон України «Про охорону праці»,листопад 2002 р.
13. Санитарные нормы проектирования промышленных предприятий. СН 245-Н-М.:Стройиздат,1972.-96с.
14. Долин П.А. «Справочник по технике безопасности». -Энергоатомиздат, 1984-824с.
15. НАПБ Б 07.005-86. Определение категорий помещений и зданий по взрывопожарной и пожарной опасности. -Действует с 01.01.87.
16. ГОСТ 12.1.004-91 ССБТ. Пожарная безопасность. Общие требования.-Введ.01.07.92.
17. ДНАОП 0.01-1.01-95 «Правила пожежної безпеки в Україні.-Дії з 22.06.95
18. ДБН В.1.1-7-2002 «Пожежна безпека об'єктів будівництва.-Діє з 01.01.03
19. «Правила устройства электроустановок».Энергоатомиздат,1987.
20. ГОСТ 12.0.003-74 ССВБТ. Опасные и вредные производственные факторы. Классификация.-Введ.01.01.76
21. Жидецький В.Ц. «Охорона праці користувачів комп'ютерів».-Львів:Афіша,2000.-176 с.
22. ГОСТ 12.1.005-88 ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны.-Введ.01.01.89.
23. ДНАОП 0.03-3.06-80. Санітарно-гігієнічні норми допустимих рівнів іонізації повітря виробничих та громадських приміщєнь. - Діє з 01.01.81.
24. СНиП 2.04.05-92 Нормы проектирования. Отопление, вентиляция и кондиционирование воздуха. - М.:Стройиздат,1992г.
25. ДБН В.2.5-28-2006.Інженерне обладнання будівель та споруд. Природне і штучне освітлення. - К.:Мінбуд Укр.,2006.
26. ГОСТ 12.1.003-83*.ССБТ. Шум. Общие требования безопасности.-Введ.01.07.1989.
27. НРБУ-97. Норми радіаційної безпеки України.-Київ,1997.
28. ДСан ПіН 3.3.2-0.07-98.Державні санітарні правила і норми роботи з візуальними дісплеями і терміналами електронно-обчислювальних машин.-Київ,1998.
29. ГОСТ 12.1.045-84.ССБТ.Электростатические поля. Допустимые уровни на рабочих местах и требования к проведению контроля. -Введен 01.01.86
30. ГОСТ 12.1.038-82.ССБТ.Электробезопасность. Предельно допустимые значения напряжения прикосновения и токов. -Введен 01.01.88.
ГОСТ 12.2.007.0-75*. Изделия электротехнические. Общие требования безопасности. -Введен 01.01.76
31. НПАОП 0.00-1.31-99. Правила охорони праці при експлуатації електронно-обчислювальних машин.-Діє з 01.01.00.
32. СНиП 11-4-79/80. Естественное и искусственное освещение. Нормы проектирования.- М.: Стройиздат,1980-110с.
ПРИЛОЖЕНИЕ А
Листинг программы кодирования-декодирования
unit Coding;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math, Golomb;
const
CODING_TABLE_MAX = 39;
FIB_MAX = 13;
FIB_MAX_LENGTH = 377;
GLOMB_M_INFO = 'Golomb param M is ';
ALPHABETSIZE = 256;
Err_str_NotSuchMeth = 'Can''t choose coding method';
Err_str_WrongSymbols = 'Wrong symbol!! Input integer number or small latin letter';
type
Huffman = class
weights:array[0..ALPHABETSIZE] of integer;
public code:array[0..ALPHABETSIZE]of string;
private function getLowestTree( used: integer):integer;
public procedure growTree (data:array of integer);
public procedure makeCode;
public function coder(data:array of integer):string;
public function decoder(data:String):string;
end;
Tree = class
public child0: Tree;
public child1: Tree;
public leaf:boolean;
public character:integer;
public weight: integer;
public constructor Create;overload;
public constructor Create( character:integer; weight:integer; leaf:boolean);overload;
public procedure traverse( code:String ; h:Huffman);
end;
TForm1 = class(TForm)
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Memo1: TMemo;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
Label4: TLabel;
Button3: TButton;
Label5: TLabel;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Select(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
/////Our code table///
Code_table: array[0..CODING_TABLE_MAX]of char;// 0..9 - '0'..'9'
// 10..36 - 'a'..'z'
// 37 - ' '
// 38 - #13
// 39 - #10
Fib_arr:array [1..FIB_MAX]of integer; // array with Fib numbers
Golomb_M: integer;
Coding_meth: 0..5; // 0 - Fibonacci
// 1 - Haffman
// 2 - Unaring
Gtree : array[0..ALPHABETSIZE] of Tree;
Gf: textfile;
Gh: Huffman;
implementation
uses StrUtils;
{$R *.dfm}
/////////////////////////////////////////////////////////////////////////////
//////////////////////////Coding procedures /////////////////////////////////
procedure GenerateCode_table;
var i:integer;
begin
for i:=0 to 9 do
Code_table[i]:=chr(48+i);
for i:=10 to 36 do
Code_table[i]:=chr(87+i);
Code_table[37]:=' ';
Code_table[38]:=#13;
Code_table[39]:=#10;
end;
function CT_ord(c:char):integer;
var i:integer;
begin
result:=0;
for i:=0 to CODING_TABLE_MAX do
if (c=Code_table[i]) then begin
result:=i;
break;
end;
end;
//////////////////////////////Fibonacci//////////////////////////////////////
procedure GenerateFib(n:integer);
var i:integer;
begin
Fib_arr[1]:=1;
Fib_arr[2]:=2;
for i:=3 to n do
Fib_arr[i]:=Fib_arr[i-1]+Fib_arr[i-2];
end;
function FibCodingOne(one:integer):string;
var i,kol:integer;
one_temp:integer;
last:boolean;
begin
one_temp:=one;
kol:=0;
result:='';
for i:=1 to FIB_MAX_LENGTH do
result:=result+'$';
last:=true;
//search closest Fib number
while (one_temp>0) do
for i:=1 to FIB_MAX-1 do
if (one_temp>=Fib_arr[i])and(one_temp<Fib_arr[i+1])then
begin
result[i]:='1';
one_temp:=one_temp-Fib_arr[i];
if (last) then begin
result[i+1]:='1';
last:=false;
kol:=i+1;
end;
break;
end;
delete(result,kol+1,length(result)-kol);
for i:=1 to length(result) do
if (result[i]<>'1') then
result[i]:='0';
end;
procedure FibCoding(s_str:string);
var i:integer;
f:textfile;
begin
GenerateFib(FIB_MAX);
AssignFile(f,'FibCoding.txt');
rewrite(f);
for i:=1 to length(s_str) do
if s_str[i]<>'0' then
write(f,FibCodingOne(CT_ord(s_str[i])));
closefile(f);
end;
function FibOneDecoding(s_tmp:string):integer;
var i,kol:integer;
begin
kol:=0;
for i:=1 to length(s_tmp)-1 do
if (s_tmp[i]='1') then
kol:=kol+ Fib_arr[i];
result:=kol;
end;
function FibDecoding(name:string):string;
var
s_temp:string;
f:textfile;
c:char;
begin
assignfile(f,name);
reset(f);
s_temp:='';
while not(eof(f)) do
begin
read(f,c);
s_temp:=s_temp+c;
if (length(s_temp)>1) and (s_temp[length(s_temp)]='1') and (s_temp[length(s_temp)-1]='1') then
begin
result:=result+Code_table[FibOneDecoding(s_temp)];
s_temp:='';
end;
end;
closefile(f);
end;
/////////////////////////////////Elias Gamma/////////////////////////////////
function GetBinary(numb:integer):string;
var t,k:integer;
begin
t:=numb;
result:='';
while (t>1) do
begin
k:=t mod 2;
result:=result+inttostr(k);
t:=t div 2;
end;
result:=result+inttostr(t);
result:=ReverseString(result);
end;
function BinToInt(bin:string):integer;
var i:integer;
t_bin:string;
begin
result:=0;
t_bin:=ReverseString(bin);
for i:=1 to length(t_bin) do
if (t_bin[i]='1')then
result:=result+strtoint(floattostr(power(2,i-1)));
end;
function ElGammaCodingOne(one:integer):string;
var kol,temp,i:integer;
bin:string;
begin
temp:=one;
kol:=0;
while (temp>0)do
begin
temp:=temp div 2;
kol:=kol+1;
end;
kol:=kol-1;
result:='';
for i:=1 to kol do
result:=result+'0';
bin:=GetBinary(one mod strtoint(floattostr((power(2,kol)))));
result:=result+'1';
for i:=1 to kol-length(bin) do
result:=result+'0';
if one>1 then
result:=result+bin;
end;
procedure ElGammaCoding(s_str:string);
var i:integer;
f:textfile;
begin
AssignFile(f,'GammaElias.txt');
rewrite(f);
for i:=1 to length(s_str) do
if s_str[i]<>'0' then
write(f,ElGammaCodingOne(CT_ord(s_str[i])));
closefile(f);
end;
function ElGammaDecoding(name:string):string;
var kol,i:integer;
s_temp:string;
f:textfile;
c:char;
begin
assignfile(f,name);
reset(f);
s_temp:='';
result:='';
while not(eof(f)) do
begin
kol:=0;
read(f,c);
while c<>'1' do
begin
read(f,c);
kol:=kol+1;
end;
s_temp:='';
for i:=1 to kol do
begin
read(f,c);
s_temp:=s_temp+c;
end;
result:=result+Code_table[BinToInt(s_temp)+strtoint(floattostr(power(2,kol)))];
end;
closefile(f);
end;
///////////////////////////////Elias delta///////////////////////////////////
function ElDeltaCodingOne(one:integer):string;
var kol,temp,i:integer;
bin:string;
begin
if one=1 then
begin
result:='1';
exit;
end;
temp:=one;
kol:=0;
while (temp>0)do
begin
temp:=temp div 2;
kol:=kol+1;
end;
result:=ElGammaCodingOne(kol);
bin:=GetBinary(one mod strtoint(floattostr((power(2,kol-1)))));
for i:=1 to kol-length(bin)-1 do
result:=result+'0';
if one>1 then
result:=result+bin;
end;
procedure ElDeltaCoding(s_str:string);
var i:integer;
f:textfile;
begin
AssignFile(f,'DeltaElias.txt');
rewrite(f);
for i:=1 to length(s_str) do
if s_str[i]<>'0' then
write(f,ElDeltaCodingOne(CT_ord(s_str[i])));
closefile(f);
end;
function ElDeltaDecoding(name:string):string;
var kol,i,pow:integer;
s_temp:string;
f:textfile;
c:char;
begin
assignfile(f,name);
reset(f);
s_temp:='';
result:='';
while not(eof(f)) do
begin
kol:=0;
read(f,c);
while c<>'1' do
begin
read(f,c);
kol:=kol+1;
end;
s_temp:='';
for i:=1 to kol do
begin
read(f,c);
s_temp:=s_temp+c;
end;
pow := BinToInt(s_temp)+strtoint(floattostr(power(2,kol)));
s_temp:='';
for i:=1 to pow-1 do
begin
read(f,c);
s_temp:=s_temp+c;
end;
result:=result+ Code_table[BinToInt(s_temp)+strtoint(floattostr(power(2,pow-1)))];
end;
closefile(f);
end;
///////////////////////////////////Golomb////////////////////////////////////
function UnaringCode(n:integer):string;
var i:integer;
begin
result:='';
for i:=1 to n do
result:=result+'1';
result:=result+'0';
end;
function GolombCodingOne(n:integer):string;
var q,r,b,cutoff,i:integer;
bin:string;
begin
q:= n div Golomb_M;
r:= n mod Golomb_M;
result:=UnaringCode(q);
b:= ceil(math.Log2(Golomb_M));
cutoff:=round(power(2,b))-Golomb_M;
if (r<cutoff) then
begin
bin:=GetBinary(r);
for i:=1 to (b-1)-length(bin) do
result:=result+'0';
result:=result+bin;
end
else
begin
bin:=GetBinary(r+cutoff);
for i:=1 to (b)-length(bin) do
result:=result+'0';
result:=result+bin;
end;
// Showmessage(result);
//skolko volka ne kormi vse ravno v les smotrit431
end;
procedure GolombCoding(s_str:string);
var i:integer;
f:textfile;
begin
AssignFile(f,'Golomb.txt');
rewrite(f);
writeln(f, GLOMB_M_INFO);
writeln(f, Golomb_M);
for i:=1 to length(s_str) do
if s_str[i]<>'0' then
write(f,GolombCodingOne(CT_ord(s_str[i])));
closefile(f);
end;
function GolombDecoding(name:string):string;
var kol,i,M,q,b,b1,b2,cutoff:integer;
s_temp:string;
f:textfile;
c:char;
begin
assignfile(f,name);
reset(f);
readln(f);
readln(f,M);
b:=ceil(math.Log2(M));
cutoff:=round(power(2,b))-M;
s_temp:='';
result:='';
read(f,c);
while not(eof(f)) do
begin
kol:=0;
while c<>'0' do
begin
read(f,c);
kol:=kol+1;
end; //q
q:=kol;
s_temp:='';
for i:=1 to b-1 do
begin
read(f,c);
s_temp:=s_temp+c;
end;
b1:=BinToInt(s_temp);
read(f,c);
s_temp:=s_temp+c;
b2:=BinToInt(s_temp);
if (b2<=cutoff)or(b2-cutoff>=M)or(b2-cutoff<=cutoff-1) then
begin
result:=result+Code_table[q*M+b1];
end
else
begin
result:=result+Code_table[q*M+b2-cutoff];
read(f,c);
end;
end;
closefile(f);
end;
/////////////////////////////Haffman/////////////////////////////////////////
constructor Tree.Create;
begin
end;
constructor Tree.Create( character:integer; weight:integer; leaf:boolean);
begin
self.leaf := leaf;
self.character := character;
self.weight := weight;
end;
procedure Tree.traverse(code:String; h:Huffman);
begin
if (leaf) then
begin
writeln(Gf, chr(character),' ',weight ,' ', code);
h.code[character] := code;
end;
if ( child0 <> nil) then child0.traverse(code + '0', h);
if ( child1 <> nil) then child1.traverse(code + '1', h);
end;
function Huffman.getLowestTree( used: integer):integer;
var min,i:integer;
begin
min:=0;
for i:=1 to used-1 do
if (Gtree[i].weight < Gtree[min].weight )then min := i;
result:= min;
end;
procedure Huffman.growTree( data:array of integer );
var i,used,c,w,min,weight0:integer ;
temp:Tree;
begin
for i:=0 to length(data)-1 do
weights[data[i]]:= weights[data[i]]+1;
used := 0;
for c:=0 to ALPHABETSIZE-1 do
begin
w := weights[c];
if (w <> 0)then begin
Gtree[used] := Tree.Create(c, w, true);
used:=used+1;
end;
end;
while (used > 1)do
begin
min := getLowestTree( used );
weight0 := Gtree[min].weight;
temp := Tree.Create;
temp.child0 := Gtree[min];
used:=used-1;
Gtree[min] := Gtree[used];
min := getLowestTree( used );
temp.child1 := Gtree[min];
temp.weight := weight0 + Gtree[min].weight;
Gtree[min] := temp;
end;
end;
procedure Huffman.makeCode;
begin
Gtree[0].traverse('', self);
end;
function Huffman.coder( data:array of integer ):string;
var str:string;
i:integer;
begin
str := '';
for i:=0 to length(data)-1 do
str :=str+ code[data[i]];
result:=str;
end;
function Huffman.decoder(data:String):string;
var str:string;
c:integer;
begin
str:='';
while(length(data) > 0)do
begin
for c:=0 to ALPHABETSIZE-1 do
begin
if (weights[c]>0)then
if (weights[c]>0) and (Pos(code[c],data)=1) then
begin
data:= copy(data,Length(code[c])+1,length(data));
str := str+chr(c);
end;
end;
end;
result:=str;
end;
procedure HuffmanCoding(s_str:string);
var i:integer;
f:textfile;
data:array of integer;
str:string;
begin
AssignFile(f,'Huffman.txt');
rewrite(f);
Gh:= Huffman.Create;
SetLength(data,length(s_str));
for i:=0 to length(data)-1 do
data[i]:= ord(s_str[i+1]);
Gh.growTree(data);
Gh.makeCode;
str:= Gh.coder(data);
write(f, str);
CloseFile(Gf);
closefile(f);
end;
function HuffmanDecoding(f_name:string):string;
var f: textfile;
s_temp:string;
c:char;
begin
AssignFile(f,f_name);
reset(f);
s_temp:='';
while not eof(f) do
begin
read(f,c);
s_temp:=s_temp+c;
end;
result:= Gh.decoder(s_temp);
closefile(f);
end;
/////////////////////////////////////////////////////////////////////////////
procedure DoCoding(code_id: integer);
begin
case code_id of
0: begin
FibCoding(Form1.Edit1.Text);
Form1.Memo1.Lines.LoadFromFile('FibCoding.txt');
// Showmessage('Size of code '+inttostr(length(Form1.Memo1.Lines.GetText)));
end;
1: // Elias Gamma
begin
ElGammaCoding(Form1.Edit1.Text);
Form1.Memo1.Lines.LoadFromFile('GammaElias.txt');
end;
2: // Ellias delta
begin
ElDeltaCoding(Form1.Edit1.Text);
Form1.Memo1.Lines.LoadFromFile('DeltaElias.txt');
end;
3: // Golomb
begin
Golomb.Form2.ShowModal;
Golomb_M:=Golomb.Form2.SpinEdit1.Value;
GolombCoding(Form1.Edit1.Text);
Form1.Memo1.Lines.LoadFromFile('Golomb.txt');
end;
4: // Huffman
begin
HuffmanCoding(Form1.Edit1.Text);
Form1.Memo1.Lines.LoadFromFile('Huffman.txt');
end;
5: ;
else
ShowMessage (Err_str_NotSuchMeth);
end;
Form1.Label6.Caption:=inttostr(length(Form1.Memo1.Lines.GetText));
end;
procedure DoDecoding(code_id: integer);
begin
case code_id of
0: begin
Form1.Edit2.Text:=FibDecoding('FibCoding.txt');
end;
1: begin
Form1.Edit2.Text:= ElGammaDecoding('GammaElias.txt');
end;
2: begin
Form1.Edit2.Text:=ElDeltaDecoding('DeltaElias.txt');
end;
3: begin
Form1.Edit2.Text:=GolombDecoding('Golomb.txt');
end;
4: begin
Form1.Edit2.Text:=HuffmanDecoding('Huffman.txt');
end;
5: ;
else
ShowMessage (Err_str_NotSuchMeth);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Coding_meth:=0;
GenerateCode_table;
AssignFile(Gf,'HuffmanTemp.txt');
rewrite(Gf);
end;
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
Coding_meth:=ComboBox1.ItemIndex;
//ShowMessage(inttostr(Coding_meth));
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not((Key in ['0'..'9'])or (Key in ['a'..'z'])or (Key in [' ',#13,#10])) then
begin
ShowMessage(Err_str_WrongSymbols);
Key:=#0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoCoding(Coding_meth);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
DoDecoding(Coding_meth);
end;
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
//Golomb_M:=8;
// for i:=1 to 10 do
// GolombCodingOne(42);
Showmessage(inttostr(CT_ord('v')));
end;
end.
Размещено на Allbest.ru
Подобные документы
Энтропия и количество информации. Комбинаторная, вероятностная и алгоритмическая оценка количества информации. Моделирование и кодирование. Некоторые алгоритмы сжатия данных. Алгоритм арифметического кодирования. Приращаемая передача и получение.
курсовая работа [325,1 K], добавлен 28.07.2009Описание метода сжатия информации на основе двоичных кодирующих деревьев Хаффмана. Среда разработки Delphi версии 7.0. Понятия объектно-ориентированного программирования. Программа, разработанная в Delphi. Реализация на Delphi метода кодирования Хаффмана.
курсовая работа [2,1 M], добавлен 26.03.2013Методы компрессии информации. Обзор и характеристика существующих методов сжатия информации, основанных на процедуре кодирования Хаффмена. Алгоритмы динамического кодирования методом FGK и Виттера. Программная реализация и руководство пользователя.
курсовая работа [33,2 K], добавлен 09.03.2009Понятие информации и основные принципы ее кодирования, используемые методы и приемы, инструментарий и задачи. Специфические особенности процессов кодирования цифровой и текстовой, графической и звуковой информации. Логические основы работы компьютера.
курсовая работа [55,8 K], добавлен 23.04.2014Анализ способов кодирования информации. Разработка устройства кодирования (кодера) информации методом Хемминга. Реализация кодера–декодера на базе ИМС К555ВЖ1. Разработка стенда контроля передаваемой информации, принципиальная схема устройства.
дипломная работа [602,9 K], добавлен 30.08.2010Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.
курсовая работа [212,6 K], добавлен 25.02.2009Определение среднего количества информации. Зависимость между символами матрицы условных вероятностей. Кодирование методом Шеннона–Фано. Пропускная способность канала связи. Эффективность кодирования сообщений методом Д. Хаффмана, характеристика кода.
контрольная работа [94,6 K], добавлен 04.05.2015Особенности кодирования информации с помощью метода Хаффмана. Реализация кодера и декодера с использованием статического алгоритма Хаффмана. Структура программы, оценка ее эффективности (степени сжатия) в зависимости от типа и размера сжимаемых файлов.
курсовая работа [136,2 K], добавлен 15.06.2013Общие сведения об управляющих автоматах, построенных на основе принципа программируемой логики. Программно-вычислительный комплекс разработки эффективных форматов микрокоманд для различных способов кодирования. Алгоритмы кодирования операционной части.
дипломная работа [2,1 M], добавлен 26.06.2012Сущность и содержание двоичного кодирования, цели и задачи, этапы реализации данного процесса, оценка его эффективности. Принципы и особенности кодирования чисел и символов, а также рисунков и звука. Используемые методы и приемы, применяемые инструменты.
презентация [756,5 K], добавлен 29.10.2013