Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3438795
А
Аноним
30 сентября 2025 11:22 · публичный вопрос
А
Аноним

Добры бобры идут в боры сожми эту скороговорку с помощью алгоритма Хаффмана и найди коэффициент сжатия

Ответ нейросети
30 сентября 2025 11:22

Ниже — упрощённое решение задачи на основе частотного кодирования Хаффмана для строки: "Добры бобры идут в боры".

  1. Подсчёт частот символов
  • Д: 1
  • о: 3
  • б: 4
  • р: 3
  • ы: 3
  • пробел: 4
  • и: 1
  • д: 1
  • у: 1
  • т: 1
  • в: 1

Всего символов: 23.

  1. Построение дерева Хаффмана и кодирование символов Один из возможных вариантов кодов, полученных при стандартном построении дерева (лево=0, право=1):
  • Д (Д uppercase) — 0000
  • и — 0001
  • д — 0010
  • у — 0011
  • т — 0100
  • в — 0101
  • о — 011
  • р — 100
  • ы — 101
  • пробел — 110
  • б — 111

Где длины кодов: 4 бита для символов с частотой 1, 3 бита для символов с частотой 3 и 3 бита для пробела и буквы «б».

  1. Закодированная строка (битовая последовательность) Разбиваем по исходным символам, используя приведённые выше коды:
  • Д: 0000
  • о: 011
  • б: 111
  • р: 100
  • ы: 101
  • : 110
  • б: 111
  • о: 011
  • б: 111
  • р: 100
  • ы: 101
  • : 110
  • и: 0001
  • д: 0010
  • у: 0011
  • т: 0100
  • : 110
  • в: 0101
  • : 110
  • б: 111
  • о: 011
  • р: 100
  • ы: 101

Итого длина зашифрованной строки: 75 бит.

  1. Коэффициент сжатия
  • Оригинальный размер: 23 символа × 8 бит = 184 бита (предполагаем кодировку 8 бит на символ).
  • Сжатый размер: 75 бит.

Коэффициент сжатия (отношение сжатого размера к исходному):

  • R = 75 / 184 ≈ 0.4087

Обратный коэффициент (как много раз больше оригинал по размеру после сжатия, иногда его требуют):

  • 184 / 75 ≈ 2.45

Прессинг по строке даёт примерно 40.9% сохраняемого объёма от исходного размера (около 59.1% экономии).

  1. Примечания
  • Данная конфигурация кодов Хаффмана зависит от порядка соединения равных частот. Другие варианты дерева могут дать немного иные коды, но общая средняя длина битов близка к 3.26 бит/символ при данных частотах.
  • Если использовать другую кодировку на входе (например, UTF-8, где кириллица может занимать 2 байта и выше), оригинальный размер будет другим (например, 46 байт = 368 бит), и коэффициенты будут соответствующим образом изменены.

Хочешь, могу привести альтернативный набор кодов Хаффмана (при другой последовательности объединения узлов) и показать, как меняются отдельные кодовые слова и итоговый битовый размер?