Несколько дней назад я с удивлением обнаружил, что некоторые из моих друзей не умеют играть в Морской бой. То есть, конечно, они знают правила, но играют хаотично и часто проигрывают. В этом посте я попытаюсь изложить некоторые основные идеи, которые помогут улучшить вашу игру.


Правила игры
Вариантов морского боя много, но мы рассмотрим самый распространенный вариант со следующим набором кораблей:
Все перечисленные корабли должны быть размещены в квадратном пространстве 10 на 10, и корабли не должны касаться друг друга ни под каким углом или стороной. Само игровое поле пронумеровано сверху вниз, а фигуры обозначены русскими буквами от «А» до «К» (буквы «Y» и «Y» опущены).
Рядом с ним рисуется поле противника аналогичного размера. При удачном выстреле по кораблю противника в соответствующем квадрате вражеского поля ставится крест и производится повторный выстрел; если выстрел неудачный, в соответствующем квадрате ставится точка и ход переходит к противнику.
Оптимальная стратегия
В Battleship всегда есть элемент случайности, но его можно свести к минимуму. Прежде чем мы приступим к поиску оптимальной стратегии, следует констатировать одну очевидную вещь: чем выше вероятность поражения вражеского корабля, тем меньше незащищенных клеток остается на его поле; аналогично, чем ниже вероятность поражения ваших кораблей, тем больше незащищенных ячеек остается в вашем пространстве. Итак, чтобы играть эффективно, вам нужно научиться одновременно двум вещам: оптимально вести огонь по противнику и оптимально позиционировать свои корабли.
В пояснении ниже будут использоваться следующие термины:
Оптимальная стрельба
Первым и наиболее очевидным правилом оптимального огня является следующее правило: не стреляйте в квадраты, непосредственно окружающие уничтоженный вражеский корабль.
На приведенной ниже диаграмме показаны желтые квадраты, в которые стреляли неудачно, красные квадраты, в которые стреляли, и зеленые квадраты, в которые не стреляли, но по которым можно гарантировать, что там нет кораблей (кораблей там быть не может, потому что правила гласят, что корабли не должны касаться друг друга).
Первое правило ведет ко второму: если вам удалось заполучить вражеский корабль, вы должны закончить его как можно быстрее, чтобы получить гарантированно пустой список.
Третье правило вытекает из первых двух: сначала нужно попытаться уничтожить самые большие вражеские корабли. Для вас это может быть неочевидно, но если вы подумаете об этом, вы легко заметите, что уничтожение вражеского линкора даст в лучшем случае 14 гарантированных вакансий, а уничтожение крейсера принесет вам только 12 дополнительных.
Таким образом, оптимальная стратегия стрельбы может быть сведена к нацеливанию и уничтожению самых крупных кораблей противника. К сожалению, сформулировать стратегию недостаточно, нужно предложить способ ее реализации.
Для начала рассмотрим срез игрового поля размером 4 на 4 клетки. При наличии вражеского линкора в заданном районе он гарантированно поразит не более 4 выстрелов. Для этого нужно стрелять так, чтобы на каждой горизонтальной и вертикальной линии было ровно по одному отмеченному квадрату. ниже все варианты такой съемки (без учета отражений и вращений).


Среди этих вариантов оптимальными на поле 10х10 являются только первые два, гарантирующие попадание линкора максимум за 24 хода.
Уничтожив вражеский линкор, вы должны начать искать крейсера, а затем эсминцы. Делая это, как вы уже поняли, вы можете использовать подобную технику. Только теперь вам предстоит разделить поле на квадраты со сторонами в 3 и 2 квадрата соответственно.
Если при поиске линкора вы использовали вторую стратегию, то для поиска крейсеров и эсминцев вам придется стрелять по следующим квадратам (зеленые квадраты — это те, в которые вы уже стреляли при поиске линкора):
Оптимальной стратегии поиска канонерских лодок не существует, поэтому в конце игры приходится полагаться в основном на удачу.
Оптимальное размещение кораблей
Оптимальная стратегия защиты кораблей в некотором смысле противоположно оптимальной стратегии огня. Во время стрельбы мы попытались найти самые большие суда, чтобы уменьшить количество ячеек, чтобы проверить за счет гарантированных пустых ячеек. Поэтому при размещении кораблей поместите их таким образом, чтобы минимизировать количество гарантированных свободных ячеек в случае их потери. Как вы помните, линкора в центре открывает 14 мест перед врагом, но линкор, стоящее в углу, открывает всего 6 мест перед врагом:
Точно так же крейсер, стоящий в углу, открывает только 6 мест вместо 12. Таким образом, размещая большие корабли вдоль края поля, вы оставляете больше места для кановиц. Поскольку нет стратегии поиска лодки, противнику придется стрелять случайным образом, и чем более пустые места остаются до того, как лодка не будет поймана, тем сложнее будет победить противник.
Ниже приведены три способа размещения больших кораблей, которые оставляют много места на лодках (маркированный синий):
Каждая из данных систем оставляет ровно 60 свободных мест для Лодзи, что означает, что вероятность случайного удара в Лодзи составляет 0,066. Для сравнения, стоит предоставить случайное расположение кораблей:
Такая система оставляет только 21 ячейку для лодок, что означает, что у нас есть 0,19 шансов на ударить по лодке, то есть почти в 3 раза больше.
Наконец, я хотел бы сказать, что вы не должны тратить слишком много времени, играя в морские бои. Я особенно хочу предупредить вас от игры в лекции. Когда я сидел в Ваби-Саби, играя с моей девушкой в линкоре, она проезжала официантку и сказала, что она довольно хороша в ней, потому что она много практиковала в классе. Кто знает, что будет, если бы она слушала лекции в свое время?
П.с. В комментариях было абсолютно справедливо указано, что в концентраторе были похожие публикации, было бы неправильно не ссылаться на них:

