Закодируйте в двоичном коде фразу, построив префиксный код Шеннона–Фано, где вероятности — это частоты символов:
Работать в нижнем регистре; букву «ё» считать как «е»; пробелы считать символами и учитывать.
Варианты:
тихий ветер качает сухую траву у дороги
старая карта ведет к реке через темный лес
на парте лежит тетрадь и пахнет свежей бумагой
в окне горит свет и слышен дальний поезд
уставший студент спорит с задачей до поздней ночи
новый сервер шумит в стойке и греет воздух комнаты
в новой лаборатории только вентиляторы считают время
перед экзаменом кофе кажется особенно горьким
пустая аудитория хранит эхо вчерашних вопросов
короткий код иногда объясняет мысль лучше текста
пакеты обновились но странная ошибка осталась
сеть дрожит когда кто то включает второй роутер
на зеленой доске мелом написана формула Хартли
старый ноутбук запускается медленно зато работает честно
в журнале событий много длинных строк но мало причин
в проекте важны тесты и понятные имена функций
после второй перезагрузки все службы поднялись кроме одной
плохая схема питания ломает даже хороший прибор
в отчете нужно не больше слов а больше смысла
иногда самый трудный шаг это начать разбирать лог
простой пример помогает понять правило кодирования
чем точнее условие тем меньше споров при проверке
в расписании снова поменяли пары и забыли предупредить
утренний туман скрывает корпус но не скрывает дедлайн
горячий чай спасает когда не компилируется проект
в списке задач есть мелочи которые съедают день
короткая справка лучше чем длинная легенда без фактов
в каждой системе есть порядок пока не появляется исключение
хорошие комментарии редки но экономят часы работы
студенты быстро учатся если цель видна сразу
в читальном зале тихо листают книги и делают заметки
на столе лежат распечатки и погрызенный карандаш
после лекции остались старые вопросы и новые идеи
в серверной пахнет пылью и нагретым пластиком
аккуратная схема помогает быстрее найти ошибку
в календаре отмечен крайний срок сдачи отчета
ночной город отражается в стекле пустой аудитории
короткое письмо иногда яснее длинного доклада
в резервной папке лежат версии которые мы не трогаем
спокойный разбор задачи экономит больше времени чем спешка
Постройте дерево Хаффмана для своего варианта двоичного кодирования и сравните с кодом Фано.
Тем не менее предложите свое кодирование, нарушающее условие Фано — иными словами, такой вариант кодирования, где код одного символа является началом кода для другого, и приведите два примера:
1) пример конкретного «проблемного сообщения», при котором не существует однозначного варианта декодирования. Доказать это, показав по меньшей мере два способа декодирования этой строки.
2) пример конкретного «удачного» сообщения из нескольких (N ≥ 5) символов, которое тем не менее однозначно расшифровывается предложенным Вами «неправильным» кодированием. Замечание: битовая длина этого сообщения должна быть не менее 10 символов, а фраза должна быть осмысленной и оригинальной.
В конце XIX — начале XX века уже было крайне распространенное и технически продвинутое кодирование текстовой информации с помощью сигнала: оно называлось азбукой Морзе.
Вот пример начала азбуки Морзе для кириллицы и выдержка нескольких правил передачи информации «морзянкой»:
| А | · − |
| Б | − · · · |
| В | · − − |
| Г | − − · |
| Д | − · · |
| Е | · |
| Ж | · · · − |
| З | − − · · |
| … |
Пауза между точками/тире внутри одной буквы длится 1 условную единицу времени, между буквами в слове — 3 единицы, а между словами — 7 единиц.
Первоначально азбука Морзе была доминирующим способом сигнального кодирования текстовой информации во всем мире. Однако со временем от нее отказывались, хотя для «морзянки» уже были подготовленные кадры, инфраструктура и техника.
Ответьте на вопрос: Почему её использовали (и иногда до сих используют) только для передачи информации, но практически невозможно использовать «морзянку» для хранения данных на каком-либо материальном носителе?
Закодируйте первое встреченное в вашем варианте прилагательное или порядковое числительное по варианту из задания 1. Запишите код так, чтобы из него можно было однозначно восстановить текст без угадывания и текстовых подсказок.