Решение проверка условий Фано):
1) Для однозначного декодирования достаточно, чтобы выполнялось условие Фано или обратное условие Фано;
2) Проверяем последовательно варианты 1, 3 и 4; если ни один из них не подойдет, придется выбрать вариант 2 («это невозможно»);
3) Проверяем вариант 1: А–00, Б–01, В–011, Г–101, Д–111.
«прямое» условие Фано не выполняется (код буквы Б совпадает с началом кода буквы В);
«обратное» условие Фано не выполняется (код буквы Б совпадает с окончанием кода буквы Г); поэтому этот вариант не подходит;
4) Проверяем вариант 3: А–00, Б–010, В–01, Г–101, Д–111.
«прямое» условие Фано не выполняется (код буквы В совпадает с началом кода буквы Б);
«обратное» условие Фано не выполняется (код буквы В совпадает с окончанием кода буквы Г); поэтому этот вариант не подходит;
5) Проверяем вариант 4: А–00, Б–010, В–011, Г–01, Д–111.
«прямое» условие Фано не выполняется (код буквы Г совпадает с началом кодов букв Б и В); но «обратное» условие Фано выполняется (код буквы Г не совпадает с окончанием кодов остальных буквы); поэтому этот вариант подходит;
ответ: 4
Решение дерево):
1) Построим двоичное дерево, в котором от каждого узла отходит две ветки, соответствующие выбору следующей цифры кода – 0 или 1; разместим на этом дереве буквы А, Б, В, Г и Д так, чтобы их код получался как последовательность чисел на рёбрах, составляющих путь от корня до данной буквы (красным цветом выделен код буквы В – 011):
однозначность декодирования получается за счёт того, что при движении от корня к любой букве в середине пути не встречается других букв (выполняется условие Фано);
3) Теперь проверим варианты ответа: предлагается перенести одну из букв, Б, В или Г, в узел с кодом 01, выделенный синим цветом
4) Видим, что при переносе любой из этих букв нарушится условие Фано; например, при переносе буквы Б в синий узел она оказывается на пути от корня до В, и т.д.; это значит, что предлагаемые варианты не позволяют выполнить прямое условие Фано
5) Хочется уже выбрать вариант 2 («это невозможно»), но у нас есть еще обратное условие Фано, для которого тоже можно построить аналогичное дерево, в котором движение от корня к букве дает её код с конца (красным цветом выделен код буквы В – 011, записанный с конца):
видно, что обратное условие Фано также выполняется, потому что на пути от корня к любой букве нет других букв
6) В заданных вариантах ответа предлагается переместить букву Б, В или Г в синий узел; понятно, что Б или В туда перемещать нельзя – перемещённая буква отказывается на пути от корня к букве Г; а вот букву Г переместить можно, при этом обратное условие Фано сохранится
ответ: 4
1 uses graphABC,crt;
2 var i,x,y,x2,y2,x3,y3: integer;
3 begin
4 setwindowsize(500,500);
5 lockdrawing;
6 hidecursor;
7 repeat
8 clearwindow;
9 setpenwidth(1);
10 setbrushcolor(clblack);
11 circle(250,200,20);
12 setbrushcolor(clbrown);
13 rectangle(100,200,400,400);
14 setbrushcolor(clwhite);
15 roundrect(110,210,350,390,40,40);
16 for i:=1 to 10000 do
17 putpixel(random(235)+112,random(171)+215,clblack);
18 setbrushcolor(clblack);
19 for i:=1 to 5 do
20 circle(375,210+(i*25),10);
21 circle(375,370,15);
22 setbrushcolor(clwhite);
23 rectangle(372,360,378,380);
24 setpenwidth(5);
25 x:=250; y:=197;
26 x2:=x-40-random(10);
27 y2:=y-150-random(10);
28 x3:=x++40+random(10);
29 y3:=y-150-random(10);
30 line(x,y,x2,y2);
31 line(x,y,x3,y3);
32 circle(x2,y2,10);
33 circle(x3,y3,10);
34 sleep(2);
35 redraw;
36 until keypressed;
37 end.