Главная страница
Навигация по странице:

  • Символы первичного алфавита m1 выписывают по убыванию вероятностей.

  • В префиксном коде для первой части алфавита присваивается двоичная цифра «0», второй части — «1».

  • Рис.1 - Пример построения кодовой схемы для шести символов a1 - a6 и вероятностей pi Алгоритм вычисления кодов Шеннона — Фано

  • Исходные символы

  • Полученный код: A — 11, B — 101, C — 100, D — 00, E — 011, F — 010. ВЫВОДЫ

  • Коды Шенона-Фанно. Коды Шеннона-Фано Гладких. Доклад подготовил магистрант 1 курса Гладких Д. С


    Скачать 130.13 Kb.
    НазваниеДоклад подготовил магистрант 1 курса Гладких Д. С
    АнкорКоды Шенона-Фанно
    Дата02.06.2022
    Размер130.13 Kb.
    Формат файлаpptx
    Имя файлаКоды Шеннона-Фано Гладких.pptx
    ТипДоклад
    #566413

    Коды Шеннона-Фано

    Доклад подготовил магистрант 1 курса

    Гладких Д.С

    Алгоритм был независимо друг от друга разработан Шенноном (публикация «Математическая теория связи», 1948 год) и, позже, Фано (опубликовано как технический отчёт).

    ОСНОВНЫЕ ЭТАПЫ:

    • Символы первичного алфавита m1 выписывают по убыванию вероятностей.
    • Символы полученного алфавита делят на две части, суммарные вероятности символов которых максимально близки друг другу.
    • В префиксном коде для первой части алфавита присваивается двоичная цифра «0», второй части — «1».
    • Полученные части рекурсивно делятся и их частям назначаются соответствующие двоичные цифры в префиксном коде.
    • Когда размер подалфавита становится равен нулю или единице, то дальнейшего удлинения префиксного кода для соответствующих ему символов первичного алфавита не происходит, таким образом, алгоритм присваивает различным символам префиксные коды разной длины. На шаге деления алфавита существует неоднозначность, так как разность суммарных вероятностей  может быть одинакова для двух вариантов разделения (учитывая, что все символы первичного алфавита имеют вероятность больше нуля).

    Рис.1 - Пример построения кодовой схемы для шести символов a1 - a6 и вероятностей pi

    Алгоритм вычисления кодов Шеннона — Фано

    Код Шеннона — Фано строится с помощью дерева. Построение этого дерева начинается от корня. Всё множество кодируемых элементов соответствует корню дерева (вершине первого уровня). Оно разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Эти подмножества соответствуют двум вершинам второго уровня, которые соединяются с корнем. Далее каждое из этих подмножеств разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Им соответствуют вершины третьего уровня. Если подмножество содержит единственный элемент, то ему соответствует концевая вершина кодового дерева; такое подмножество разбиению не подлежит. Подобным образом поступаем до тех пор, пока не получим все концевые вершины. Ветви кодового дерева размечаем символами 1 и 0, как в случае кода Хаффмана. Код Шеннона — Фано строится с помощью дерева. Построение этого дерева начинается от корня. Всё множество кодируемых элементов соответствует корню дерева (вершине первого уровня). Оно разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Эти подмножества соответствуют двум вершинам второго уровня, которые соединяются с корнем. Далее каждое из этих подмножеств разбивается на два подмножества с примерно одинаковыми суммарными вероятностями. Им соответствуют вершины третьего уровня. Если подмножество содержит единственный элемент, то ему соответствует концевая вершина кодового дерева; такое подмножество разбиению не подлежит. Подобным образом поступаем до тех пор, пока не получим все концевые вершины. Ветви кодового дерева размечаем символами 1 и 0, как в случае кода Хаффмана. При построении кода Шеннона — Фано разбиение множества элементов может быть произведено, вообще говоря, несколькими способами. Выбор разбиения на уровне n может ухудшить варианты разбиения на следующем уровне (n + 1) и привести к неоптимальности кода в целом. Другими словами, оптимальное поведение на каждом шаге пути ещё не гарантирует оптимальности всей совокупности действий. Поэтому код Шеннона — Фано не является оптимальным в общем смысле, хотя и дает оптимальные результаты при некоторых распределениях вероятностей. Для одного и того же распределения вероятностей можно построить, вообще говоря, несколько кодов Шеннона — Фано, и все они могут дать различные результаты. Если построить все возможные коды Шеннона — Фано для данного распределения вероятностей, то среди них будут находиться и все коды Хаффмана, то есть оптимальные коды. При построении кода Шеннона — Фано разбиение множества элементов может быть произведено, вообще говоря, несколькими способами. Выбор разбиения на уровне n может ухудшить варианты разбиения на следующем уровне (n + 1) и привести к неоптимальности кода в целом. Другими словами, оптимальное поведение на каждом шаге пути ещё не гарантирует оптимальности всей совокупности действий. Поэтому код Шеннона — Фано не является оптимальным в общем смысле, хотя и дает оптимальные результаты при некоторых распределениях вероятностей. Для одного и того же распределения вероятностей можно построить, вообще говоря, несколько кодов Шеннона — Фано, и все они могут дать различные результаты. Если построить все возможные коды Шеннона — Фано для данного распределения вероятностей, то среди них будут находиться и все коды Хаффмана, то есть оптимальные коды.

    Исходные символы:

    Исходные символы:

    • A (частота встречаемости 50)
    • B (частота встречаемости 39)
    • C (частота встречаемости 18)
    • D (частота встречаемости 49)
    • E (частота встречаемости 35)
    • F (частота встречаемости 24)

    Рис.2 – пример кодового дерева

    Полученный код: A — 11, B — 101, C — 100, D — 00, E — 011, F — 010.

    ВЫВОДЫ

    Кодирование Шеннона — Фано является достаточно старым методом сжатия, и на сегодняшний день оно не представляет особого практического интереса. В большинстве случаев длина последовательности, сжатой по данному методу, равна длине сжатой последовательности с использованием кодирования Хаффмана. Но на некоторых последовательностях могут сформироваться неоптимальные коды Шеннона — Фано, поэтому более эффективным считается сжатие методом Хаффмана.


    написать администратору сайта