2019-gate-computer-science-and-it-practice.pdf/Q17-alg4 — различия между версиями
Материал из DISCOPAL
StasFomin (обсуждение | вклад) (Новая страница: « == Вопрос: Q17-alg4-31d68c == <blockquote> Вопрос из «Algorithms Test 4» где-то со страницы 238. Тут вставьте пер…») |
StasFomin (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | |||
== Вопрос: Q17-alg4-31d68c == | == Вопрос: Q17-alg4-31d68c == | ||
− | |||
− | |||
− | + | Предположим, что символы ''a'',''b'',''c'',''d'',''e'' встречаются с частотами <m>\frac{1}{36}, \frac{1}{36}, \frac{1}{12}, \frac{1}{9}, \frac{5}{36}</m>. | |
− | + | ||
− | + | ||
− | + | ||
− | + | Какие получатся [https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%A5%D0%B0%D1%84%D1%84%D0%BC%D0%B0%D0%BD%D0%B0 коды Хаффмана] для букв ''a'',''b'',''c'' соответственно? | |
− | + | ||
− | + | === Ответы === | |
− | + | * 1101, 111, 1101 | |
+ | * Правильный ответ: 1100, 1101, 111 | ||
+ | * 1100, 10, 0 | ||
+ | * 1101, 1100, 111 | ||
− | + | === Объяснение === | |
− | + | Необходимо построить дерево Хаффмана и получить коды Хаффмана. | |
− | === | + | * Отсортируем по частотам: <m>\{a: \frac{1}{36}, b: \frac{1}{36}, c: \frac{3}{36}, d: \frac{4}{36}, e: \frac{5}{36}\}</m> |
− | < | + | * Собираем символы с меньшими частотами, узел <m>\{a, b\}</m> с частотой <m>\frac{1}{36} + \frac{1}{36} = \frac{2}{36} = \frac{1}{18}</m> |
− | + | ** Список: <m>\{\{a, b\}: \frac{2}{36}, c: \frac{3}{36}, d: \frac{4}{36}, e: \frac{5}{36}\}</m> | |
+ | * Собираем символы с меньшими частотами, узел <m>\{\{a, b\}, c\}</m> с частотой <m>\frac{2}{36} + \frac{3}{36} = \frac{5}{36}</m> | ||
+ | ** Список: <m>\{\{\{a, b\}, c\}: \frac{5}{36}, d: \frac{4}{36}, e: \frac{5}{36}\}</m> | ||
+ | * Собираем символы с меньшими частотами, узел <m>\{d, \{\{a, b\}, c\}\}</m> с частотой <m>\frac{4}{36} + \frac{5}{36} = \frac{9}{36} = \frac{1}{4}</m> | ||
+ | ** Список: <m>\{\{d, \{\{a, b\}, c\}\}: \frac{9}{36}, e: \frac{5}{36}\}</m> | ||
+ | * Собираем остатки, меньшие частоты налево, узел <m>\{e, \{d, \{\{a, b\}, c\}\}\}</m> с частотой <m>\frac{5}{36} + \frac{9}{36} = \frac{14}{36} = \frac{7}{18}</m> | ||
− | + | Root | |
− | + | / \ | |
− | + | e {d, {{a, b}, c}} | |
− | + | / \ | |
− | + | d {{a, b}, c} | |
+ | / \ | ||
+ | {a, b} c | ||
+ | / \ | ||
+ | a b | ||
− | |||
− | |||
− | |||
+ | Осталось назначить коды. | ||
+ | ;a: | ||
+ | * Right → Right → Left → Left | ||
+ | * 1100 | ||
− | + | ;b: | |
− | + | * Right → Right → Left → Right | |
− | + | * 1101 | |
− | + | ||
− | + | ||
− | + | ;c: | |
− | + | * Right → Right → Right | |
− | + | * 111 | |
− | |||
− | {{ | + | {{cstest-source|2019-gate-computer-science-and-it-practice.pdf|238|17}} |
− | {{ | + | {{question-ok|[[Участник:StasFomin|StasFomin]] 13:48, 25 декабря 2024 (UTC)}} |
− | [[ | + | [[Категория:Теория кодирования]] |
Текущая версия на 14:28, 25 декабря 2024
Вопрос: Q17-alg4-31d68c
Предположим, что символы a,b,c,d,e встречаются с частотами .
Какие получатся коды Хаффмана для букв a,b,c соответственно?
Ответы
- 1101, 111, 1101
- Правильный ответ: 1100, 1101, 111
- 1100, 10, 0
- 1101, 1100, 111
Объяснение
Необходимо построить дерево Хаффмана и получить коды Хаффмана.
- Отсортируем по частотам:
- Собираем символы с меньшими частотами, узел с частотой
- Список:
- Собираем символы с меньшими частотами, узел с частотой
- Список:
- Собираем символы с меньшими частотами, узел с частотой
- Список:
- Собираем остатки, меньшие частоты налево, узел с частотой
Root / \ e {d, {{a, b}, c}} / \ d {{a, b}, c} / \ {a, b} c / \ a b
Осталось назначить коды.
- a
- Right → Right → Left → Left
- 1100
- b
- Right → Right → Left → Right
- 1101
- c
- Right → Right → Right
- 111
Исходники — вопрос 17 на 238 странице книги «2019-gate-computer-science-and-it-practice.pdf»