Упражнения

Ходят слухи, что нуклеотиды встречаются в генах не с одинаковой частотой. Давайте попробуем для сжатия генетической информации использовать несбалансированный код Хаффмана.

Закодируем символы следующим образом (считаем, что кодировка фиксирована):

  • A — 0

  • T — 10

  • G — 110

  • C — 111

  1. Реализуйте кодеровщик.

  2. Реализуйте декодер.

  3. Снабдите решение тестами.

    Обратите внимание, что если закодировать любую последовательность, а потом раскодировать её, то должна получиться исходная последовательность.
  4. Найдите примеры реальных ДНК и проверьте, получается ли их сжать.