М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Настя010111
Настя010111
07.08.2022 11:32 •  Информатика

Дана последовательность для алгоритма Лемпела- Зива: 10010110 Даны числа: 0,084 ; 0,168 ; 0,336 ; 0,0336 ; 0,3784.

Задание номер 1:

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

Желательно с решением, т.к. тему не понял

👇
Ответ:
Anton2657
Anton2657
07.08.2022

Для определенности назову сами символы как-нибудь:

A (0.084), B (0.168), C (0.336), D (0.0336), E (0.3784)

Алгоритм Хаффмана:

- упорядочиваем символы по возрастанию

- сливаем вместе два символа с наименьшими вероятностями, получаем составной символ с вероятностью, равной сумме вероятностей

- повторяем, пока не останется один символ

По сути это строит дерево Хаффмана, но мне рисовать весь процесс не хочется, буду писать в строчку:

D (0.0336), A (0.084), B (0.168), C (0.336), E (0.3784) - сливаем D и A, получается (D, A) с вероятностью 0.0336 + 0.084 = 0.1176

(D, A) (0.1176), B (0.168), C (0.336), E (0.3784) - сливаем (D, A) и B, получается ((D, A), B) с вероятностью 0.1176 + 0.168 = 0.2856

((D, A), B) (0.2856), C (0.336), E (0.3784) - сливаем ((D, A), B) и C, получается (((D, A), B), C) с вероятностью 0.2856 + 0.336 = 0.6216

E (0.3784), (((D, A), B), C) (0.6216) - сливаем в (E, (((D, A), B), C)), для проверки: вероятность 0.3784 + 0.6216 = 1

(E, (((D, A), B), C)) (1)

Готово! Если хочется перерисовать в виде бинарного дерева, у родителя (x, y) потомки x и у, мой вариант (для компактности он изображен немного искаженно) во вложении.

Осталось получить коды символов. Корню присваиваем пустой код, для левого потомка приписываем к коду родителя 0, для правого 1.

Получаем коды: A = 1001, B = 101, C = 11, D = 1000, E = 0.

Эффективность кодирования - это ожидаемая длина кода. Она в данном случае равна

0,084 * 4 + 0,168 * 3 + 0,336 * 2 + 0,0336 * 4 + 0,3784 * 1 = 2,0248 бит

Для сравнения, по формуле Шеннона количество информации в битах на один символ

\sum p_i\log_2\dfrac1{p_i}\approx1.79


Дана последовательность для алгоритма Лемпела- Зива: 10010110 Даны числа: 0,084 ; 0,168 ; 0,336 ; 0,
4,5(47 оценок)
Открыть все ответы
Ответ:
zaporozkayaoks
zaporozkayaoks
07.08.2022
Складываем число людей, знающих английский, немецкий, французский: 6 + 6 + 7 = 19. Однако в это число дважды вошли люди, знающие (только) два языка и трижды - три языка. Вычитаем людей, знающих (хотя бы) два языка: 19 - (4 + 3 + 2) = 10. Т.к. в каждое из трех вычтенных множеств включено множество людей, получается, мы вычли его три раза, и 10 - количество людей, знающих меньше трех языков. Еще раз прибавляем людей, знающих три языка: 10 + 1 = 11 человек в комнате всего.
В итоге получилось:
1 человек знает только английский
3 человека знают только французский
0 человек - только немецкий
3 - только английский и немецкий
2 - только немецкий и французский
1 - только английский и французский
1 - все три языка
Задача очень легко решается, если изобразить ее на диаграмме, даже без всех этих рассуждений про множества
4,6(41 оценок)
Ответ:
yoruhoshi
yoruhoshi
07.08.2022
Складываем число людей, знающих английский, немецкий, французский: 6 + 6 + 7 = 19. Однако в это число дважды вошли люди, знающие (только) два языка и трижды - три языка. Вычитаем людей, знающих (хотя бы) два языка: 19 - (4 + 3 + 2) = 10. Т.к. в каждое из трех вычтенных множеств включено множество людей, получается, мы вычли его три раза, и 10 - количество людей, знающих меньше трех языков. Еще раз прибавляем людей, знающих три языка: 10 + 1 = 11 человек в комнате всего.
В итоге получилось:
1 человек знает только английский
3 человека знают только французский
0 человек - только немецкий
3 - только английский и немецкий
2 - только немецкий и французский
1 - только английский и французский
1 - все три языка
Задача очень легко решается, если изобразить ее на диаграмме, даже без всех этих рассуждений про множества
4,8(86 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ