КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритм. Способы записи. Компоненты, образующие алгоритмический язык
Код Хаффмана Код Шеннона-Фэно Эффективное кодирование. Код Хаффмана. Код Шеннона-Фано. Кодирование, которое осуществляет удаление или уменьшение избыточности из закодированных сообщений, называется эффективным. Возможность эффективного кодирования основана на теореме Шеннона, согласно которой: Минимальное среднее количество элементов на выходе кодирующего устройства, соответствующее одному символу дискретного сообщения, можно сделать сколь угодно близким к максимальной энтропии источника. Эффективное кодирование осуществляется с применением неравномерных кодов, в которых более короткие кодовые комбинации соответствуют более вероятным символам сообщения, а более длинные — менее вероятным символам. Основными требованиями, предъявляемыми к эффективному коду, являются: - однозначность декодирования, т. е. каждому символу кодируемого сообщения должна соответствовать своя кодовая комбинация и для всех символов комбинации должны быть различны; - в среднем на один символ сообщения должно приходиться минимальное число элементов кодовой комбинации эффективного кода; - ни какая более короткая комбинация эффективного кода не должна являться началом другой, более длинной комбинации. 1. Все символы записать в порядке не возрастания вероятностей 2. Символы разбить на 2 группы с приблизительно равными сумами вероятности 3. В левой группе символов код начинать с 0, в правой с 1 4. Каждую группу снова разбить на 2 по тому же принципу и присвоить слева 0, с права 1 5. Продолжить разбивать до тех пор пока в каждой группе не останется по 1 символу 1. Все символы записать в порядке не возрастания вероятностей 2. Объединить 2 редких символа с наименьшей вероятностью в одну группу с вероятностью равной сумме вероятностей этих символов. 3. Повторять операцию со 2го шага пока все символы не будут разбиты на 2 группы: в левой с 0, в правой 1 4. Повторять с каждой группой отделяя крайние правые символы, присваивая всегда слева0, справа 1. Пока не будет закодирован каждый символ. Алгоритм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время. Свойства: - Дискретность — алгоритм должен представлять процесс решения задачи как последовательное выполнение некоторых простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование исходных данных в результат осуществляется во времени дискретно. - Детерминированность (определённость). В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В современной трактовке у разных реализаций одного и того же алгоритма должен быть изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых следующий шаг работы зависит от текущего состояния системы и генерируемого случайного числа. Однако при включении метода генерации случайных чисел в список «исходных данных», вероятностный алгоритм становится подвидом обычного. - Понятность — алгоритм должен включать только те команды, которые доступны исполнителю и входят в его систему команд. - Завершаемость (конечность) — при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0. - Массовость (универсальность). Алгоритм должен быть применим к разным наборам исходных данных. - Результативность — завершение алгоритма определёнными результатами. - Алгоритм содержит ошибки, если приводит к получению неправильных результатов либо не даёт результатов вовсе. - Алгоритм не содержит ошибок, если он даёт правильные результаты для любых допустимых исходных данных. Формы записи алгоритма: 1) словесная или вербальная (языковая, формульно-словесная); 2) дракон-схема; 3) псевдокод (формальные алгоритмические языки); 4) схематическая: 5) структурограммы (схемы Насси-Шнайдермана); 6) графическая (блок-схемы, выполняется с требованиями стандарта). Обычно сначала (на уровне идеи) алгоритм описывается словами, но по мере приближения к реализации он обретает всё более формальные очертания и формулировку на языке, понятном исполнителю (например, машинный код). Алгоритмический язык (как и любой другой язык) образуют три его составляющие: алфавит, синтаксис и семантика. 1) Алфавит - это фиксированный для данного языка набор основных символов, т.е. "букв алфавита", из которых должен состоять любой текст на этом языке - никакие другие символы в тексте не допускаются. 2) Синтаксис - это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза. Точнее говоря, синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке. 3) Семантика определяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
Дата добавления: 2015-04-23; Просмотров: 1649; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |