Морской бой: задачка для олимпиадников
Блоги12.11.2019

Морской бой: задачка для олимпиадников

(Дайте репетиторам право на игру)

Когда мы берем ребёнку репетитора, то каждый по-своему представляет себе, как будут проходить эти прекрасные занятия, ведущие к светлому будущему олимпиад и ЕГЭ. И далеко не каждый допускает мысль, что ребёнок и репетитор будут просто играть. О том, почему это полезно и работает только на пользу, рассказывает наш блогер, репетитор Яна Полянских.

Я играю с детьми на занятиях. В комментариях к одной из моих старых статей на «Меле» был чудесный вопрос: мол, занятие оплачено, за чей счёт вы играете с детьми в морской бой? За счёт сокращения основной, содержательной части?

Сейчас будет страшное. Игра в морской бой — это и есть основная, содержательная часть занятия. И не у младших школьников, а у олимпиадников… Жесть, правда? Мне бы стоило не смущать людей, которые платят за занятия, лучше просто выкинуть из образовательного процесса целый раздел математики, который называется «теория игр». А лучше вообще его из математики выкинуть. Или переименовать. Во что-то посерьёзнее, ну? Игр. Игр. И что это слово делает в такой адской науке?

Ладно, проехали, рассказываю, зачем и как играть с детьми в морской бой. Игра старая и известная, но если забыли классические правила, напомню. Два игрока рисуют каждый по два поля 10*10 с буквенно-числовыми координатами. На одном из них расставляют свои корабли, второе поле будет необходимо для стрельбы по противнику. Корабли делятся на классы: одноклеточные (катер) — их будет 4, двухклеточные (эсминец) — их будет 3, трёхклеточные (крейсер) — их будет 2, и четырёхклеточные (линкор) — он будет… конечно, 1. Корабли не могут касаться друг друга даже в точке, в классической версии не могут и изгибаться (т. е. четырёхклеточный корабль всегда представляет собой этакую палочку, расположенную вертикально или горизонтально).

Игра заключается в том, что игроки по очереди называют координаты клеток (а8, з4, и3…), где, по их мнению, может располагаться корабль противника. Эти ходы отмечают на втором, свободном поле. При удачном выстреле в клеточке с нужной координатой рисуется крестик (убит или ранен), при промахе ставится точка. Игра продолжается до тех пор, пока все корабли противника не будут уничтожены.

На первый взгляд, игра носит глупый вероятностный характер: стреляй себе по полю, авось попадёшь. Кому-то даже везёт. Но, приобретая некоторый опыт игры, ты понимаешь, что у неё (как и у большинства) есть стратегия.

Очень простая мысль: вероятность попасть по кораблю противника тем выше, чем меньше непроверенных клеток осталось на его поле (логично, правда?). Аналогично вероятность попадания по вашим кораблям тем ниже, чем больше непроверенных клеток осталось на вашем поле. А значит, для эффективной игры нужно научиться сразу двум вещам: оптимальной стрельбе по противнику и оптимальному размещению своих кораблей.

Как вы понимаете, сложнее всего искать однопалубные корабли. Существуют определенные стратегии расстановки кораблей, которые ещё больше уменьшают вероятность попадания в последний одноклеточный корабль. Например, можно расположить весь флот кучкой в одном месте так, чтобы он занимал как можно меньше места, а на оставшемся свободном поле расположить пару своих маленьких кораблей. Эта игра отлично тренирует внимательность, учит рациональному мышлению и умению принимать свои ошибки, перерабатывая их в опыт.

В поиске кораблей тоже есть много смысла, если к ней подходить с точки зрения математики.

В правилах четко оговорено, что корабли не соприкасаются друг с другом, а значит, если вы нашли корабль с координатами в4-г4-д4-е4, то по каким клеткам стрелять бесполезно? Верно, по всем, которые непосредственно окружают этот корабль, сразу ставим на них точки: б3-б4-б5, в3-г3-д3-е3-ж3, ж4-ж5, в5-г5-д5-е5. Какой теперь стала вероятность попасть в корабль? Насколько уменьшилось количество свободного пространства? Уничтожив вражеский линкор в лучшем случае (если он одиноко стоял посреди поля), мы получили информацию аж о 14 клетках поля, а пошедший ко дну трёхпалубный корабль даст нам информацию о 12 клетках.

Ого. 14 клеток. И ещё два раза по 12. Нехило, правда? Получается, удобнее всего вначале искать крупные корабли. Как это сделать? Давайте рассмотрим поле 4*4. За сколько выстрелов вы гарантированно найдёте четырёхпалубный корабль? Правильно, не более чем за 4 хода. Для этого надо стрелять так, чтобы на каждой горизонтали и вертикали было ровно по одной проверенной клетке.

Снова посмотрим на поле 10*10. Попробуйте понять, сколько ходов вам гарантированно потребуется для того, чтобы, используя эту стратегию, найти этот самый неповоротливый корабль. Сколько получилось ходов? Проверим в комментариях? Мои олимпиадники не с первого раза нашли минимальное количество ходов, а что у вас получилось?

Аналогично поступим с трехпалубным. Для этого рассмотрим поле 3*3, поймём, как надо стрелять, и снова перенесёмся на наше большое поле с этим знанием. Причём по многим из клеток вы уже стреляли, пока искали линкор. Двухпалубные искать будем так же. А вот для самых маленьких кораблей стратегии нет. Надо лишь надеяться на теорию вероятностей и на то, что вы внимательно расставляли точки «мимо», когда заполняли поле противника.

Мало математики и слишком понятно. Конечно, на занятиях математикой ученик должен плакать от безысходности, это всем известно. Тогда можно поискать одноклеточный корабль с помощью страшных слов. Итак, если на поле из 100 (или n) клеток расположен 1 однопалубный корабль, то вероятность попасть в него равна… здесь не нужны страшные формулы, чтобы понять, что 1/100 (1/n). Тогда определим вероятность уничтожения этого корабля за k выстрелов. Это событие может произойти как сразу (уничтожен первым выстрелом), так и последним, то есть благоприятная выборка состоит из всех клеток, включая клетку с кораблем.

Количество благоприятных стратегий вычисляется как число неупорядоченных выборок из множества 99 клеток (n-1) по k-1 (клетка, занятая кораблем, не учитывается), умноженное на число перестановок в самой выборке k! и число перестановок клеток, оставшихся за выборкой (n-k)! Pk = [k! C из (n-1) по (k-1) (n-k)!]/n! = [C из (n-1) по (k-1)]/C из n по k…

Упрощая выражение, получаем, что вероятность попадания в корабль за k выстрелов равно k/n. Логично? Логично.

Полегчало, правда? Ну, если так, то пусть дитятко играет на занятиях в морской бой.

Вы находитесь в разделе «Блоги». Мнение автора может не совпадать с позицией редакции.

Фото: Shutterstock (shinobi)

Читайте также
Комментарии(1)
тактика простая. всегда ее использовал. особенно интересно при игре с компом, он ведь типа независимый. но не всегда выигрывал…
Больше статей