Задания
Версия для печати и копирования в MS Word
Тип 4 № 55800
i

По ка­на­лу связи пе­ре­да­ют­ся со­об­ще­ния, со­дер­жа­щие толь­ко че­ты­ре буквы: А, Б, В, Г. Для пе­ре­да­чи ис­поль­зу­ет­ся дво­ич­ный код, удо­вле­тво­ря­ю­щий усло­вию Фано. Ко­до­вые слова для букв из­вест­ны: А  — 0, Б  — 1111, В  — 1010. Най­ди­те код ми­ни­маль­ной длины для буквы Г. Если таких кодов не­сколь­ко, ука­жи­те код с ми­ни­маль­ным чис­ло­вым зна­че­ни­ем.

 

При­ме­ча­ние. Усло­вие Фано озна­ча­ет, что ни одно ко­до­вое слово не яв­ля­ет­ся на­ча­лом дру­го­го ко­до­во­го слова.

Спрятать решение

Ре­ше­ние.

За­ме­тим, что ко­до­вые слова 0 и 1 вы­брать нель­зя. За­ме­тим, что нель­зя вы­би­рать ко­до­вые слова на­чи­на­ю­щи­е­ся на 0 по усло­вию Фано. Также нель­зя ис­поль­зо­вать ко­до­вые слова 10 и 11, так как они яв­ля­ют­ся на­ча­лом ко­до­вых слов Б  — 1111 и В  — 1010 со­от­вет­ствен­но. Далее идут сво­бод­ные ко­до­вые слова дли­ною 3  — 100 и 110. 101 не под­хо­дит, так как яв­ля­ет­ся на­ча­лом ко­до­во­го слова 1010 (В), 111 не под­хо­дит, так как яв­ля­ет­ся на­ча­лом ко­до­во­го слова 1111 (Б). Ми­ни­маль­ное чис­ло­вое зна­че­ние у ко­до­во­го слова 100.

 

Ответ: 100.

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са (по­стро­е­ние дво­ич­но­го де­ре­ва).

За­ме­тим не­сколь­ко сво­бод­ных пре­фик­сов: 100, 1011, 110 и 1110. Вы­би­ра­ем пре­фикс с ми­ни­маль­ным чис­ло­вым зна­че­ни­ем.

 

При­ведём ре­ше­ние Ев­ге­ния Дж­об­са на языке Python.

codes = ['0', '1010', '1111']

# длина пре­фик­сов от 1 до 4

for i in range(1, 5):

# все пре­фик­сы, как дво­ич­ные числа

for x in range(2**i):

pfx = bin(x)[2:].zfill(i)

# если пре­фикс не яв­ля­ет­ся на­ча­лом сущ.кода

# и сущ.коды не яв­ля­ют­ся на­ча­лом пре­фик­са

if all(c[:i] != pfx and pfx[:len(c)] != c

for c in codes):

print(pfx)

break

Источник: ЕГЭ по ин­фор­ма­ти­ке 06.04.2023. До­сроч­ная волна