мeтод Хафмана
Это строку необходимо архивировать методом повторяющихся символов и методом Хафмана.
Первым методом все получилось правильно.
А при втором нет, помогите решить задачу.
при методе халфмана получилось что строка занимает 121 байт, мне сказали что это не правильно.
посмотрите плиз решение (прикрепленный файл) и скажите что не так.
ЗЫ есть два разных символа ноль и буква "o" я их учитывал как разные символы
Ты, давай, исходник показывай. Может прямо по нему и глянем...
это чисто теоретический вопрос.
Программу к этому писать не надо.
Просто необходимо сравнить два метода архивации (метод Хафмана и метод повторяющихся символов), который их них больше сжимает файл для данной строчки: x1=151.121***oooo**y=5********c=0.********d=4
Чтобы это выяснить необходимо определить коэффициент сжатия строчки. А для этого надо знать размер заархивированной строчки.
Тот способ которым я нашел размер заархивированной строчки предствавлен в приложенных файлах (миниатюры). И полностью соответствует тому примеру который нам давали на паре, но почему-то это решения не верное.
ЗЫ то ли я ошибся то ли пример в институте не верный.
Во вторых, непонятно как ты объединяешь символы? В самом начале ты объединяешь "2" и "x". А потом эту пару с "у". Но символы надо объединять по наименьшей частоте. У тебя же есть еще символы с частотой 1. То есть надо "у" и "с", далее "d" и "4",и тут уже с минимальной частотой только "0", ну и объединяешь его с любой твоей парой (где частота 2), и так далее. Но всегда в начале символы с наименьшой частотой. Надеюсь мысль ясна, подробнее здесь.
Присмотрись еще как там коды расставляются. Это тоже важно.
Цитата: Odissey_
Вопервых ты забыл про 1. Она тоже кодируется и у нее частота встречания равна 5.
Во вторых, непонятно как ты объединяешь символы? В самом начале ты объединяешь "2" и "x". А потом эту пару с "у". Но символы надо объединять по наименьшей частоте. У тебя же есть еще символы с частотой 1. То есть надо "у" и "с", далее "d" и "4",и тут уже с минимальной частотой только "0", ну и объединяешь его с любой твоей парой (где частота 2), и так далее. Но всегда в начале символы с наименьшой частотой. Надеюсь мысль ясна, подробнее здесь.
Присмотрись еще как там коды расставляются. Это тоже важно.
Во вторых, непонятно как ты объединяешь символы? В самом начале ты объединяешь "2" и "x". А потом эту пару с "у". Но символы надо объединять по наименьшей частоте. У тебя же есть еще символы с частотой 1. То есть надо "у" и "с", далее "d" и "4",и тут уже с минимальной частотой только "0", ну и объединяешь его с любой твоей парой (где частота 2), и так далее. Но всегда в начале символы с наименьшой частотой. Надеюсь мысль ясна, подробнее здесь.
Присмотрись еще как там коды расставляются. Это тоже важно.
Большое спасибо, разобрался....
Все понял, просто не знал что символы объединяются по наименьшей частоте втречания... С кодированием тоже разобрался... спасибо..
ЗЫ тему можно закрыть...