← Морской бой против компьютера

Как выиграть в морской бой: стратегия поиска и расстановки

Числа на этой странице — результаты моделирования игры в том виде, в каком она идёт здесь: её поле, её флот и три уровня компьютера, по коду самой страницы. Не меньше 20 000 партий на каждое число.
Коротко

Морской бой — задача поиска, и метод обходит удачу примерно на двадцать выстрелов. Стреляя наугад, весь флот топят в среднем за 75 выстрелов; поиск с добиванием раненых — примерно за 58; подсчёт того, где ещё помещаются оставшиеся корабли, — примерно за 55. А свой флот против здешнего компьютера лучше всего ставить к краям: расстановка вдоль бортов обходится сильнейшему уровню в 16 лишних выстрелов.

Флот и три факта, из которых растёт вся стратегия

Игра здесь идёт по тетрадным правилам: поле 10×10 и десять кораблей — один четырёхпалубный, два трёхпалубных, три двухпалубных и четыре однопалубных, всего двадцать клеток. Вы стреляете первым, а попадание даёт ещё один выстрел.

  • Корабли не касаются, даже углами. Значит, четыре клетки по диагонали от любого попадания — точно вода, а вокруг потопленного корабля нет ничего; это кольцо игра отмечает сама.
  • Каждый корабль — прямая линия. Два попадания рядом задают его ось, и дальше стрелять имеет смысл только в два конца ряда.
  • Длины всех кораблей известны. Корабль длины L не спрячется от сетки с шагом L, и именно поэтому вообще возможен систематический поиск.

Сколько выстрелов нужно каждому методу

Метод стрельбы можно измерить числом выстрелов, которое нужно, чтобы потопить весь случайно расставленный флот. Каждая строка ниже — 50 000 смоделированных партий против того способа расстановки, которым пользуется сам компьютер:

МетодВ среднем выстреловМедиана
Случайные клетки75,075
Поиск наугад, потом добивание вдоль оси58,258
То же, но поиск по шахматке (однопалубники не ищем, пока жив корабль длиннее)57,057
То же, с сеткой по самому длинному живому кораблю56,657
Подсчёт вероятностей: стрелять туда, где помещается больше всего вариантов оставшихся кораблей55,356

Переход от стрельбы наугад к любому методу, который добивает раненых, — это семнадцать выстрелов; всё остальное — уточнения на один-три выстрела. Но и это много: в партии двух сильных игроков пара выстрелов решает, кто первым потопит последний корабль.

Для сравнения: уровням компьютера на этом сайте нужно в среднем 62,2 («Простой»), 58,1 («Сложный») и 55,2 («Эксперт») выстрела, по 50 000 партий на каждый.

После попадания: добивайте чисто

Попадание стоит дороже всего, когда корабль добит за наименьшее число выстрелов. Три позиции покрывают все случаи:

Одно попадание: продолжить корабль могут только четыре соседа (✓). Клетки по диагонали (•) — точно вода.
Два попадания подряд задают ось: бейте в два конца (✓). Выстрел сбоку от ряда (✗) потрачен впустую.
Потоплен: всё кольцо вокруг — вода, и игра отмечает его сама.

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

Считайте, где ещё помещаются корабли

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

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

Против каждого уровня компьютера эти методы дают такие шансы на победу (вы стреляете первым, оба флота расставлены случайно):

Ваш методпротив «Простого»против «Сложного»против «Эксперта»
Случайные клетки9%4%2%
Поиск и добивание68%52%40%
Шахматка и добивание73%57%45%
Сетка по самому длинному и добивание74%58%46%
Подсчёт вероятностей78%63%51%

Первый выстрел стоит примерно полтора пункта: два равных по силе метода делят партии примерно 51,5 на 48,5 в пользу начинающего.

Куда ставить свой флот

Расстановка значит не меньше стрельбы, и ответ здесь ясный. Компьютер, который считает варианты, целится в середину: там помещается больше всего положений. У корабля, прижатого к борту, способов там оказаться меньше, и его находят позже. Мы смоделировали сильнейший уровень компьютера против нескольких расстановок:

Ваша расстановка«Эксперту» нужно в среднемВаш шанс на победу*
Каждый корабль касается края поля71,6 выстрела96%
Все корабли в верхней половине (ряды 1–5)68,7 выстрела93%
Крупные у края, однопалубные где угодно64,1 выстрела81%
Случайная, как ставит игра55,2 выстрела51%
Ни один корабль не касается края49,3 выстрела28%

* Если вы сами стреляете подсчётом вероятностей. Против «Простого» и «Сложного» порядок тот же.

Допустимая расстановка, где каждый корабль у края: десять кораблей, двадцать палуб, ничто не касается.

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

Как компьютер играет на каждом уровне

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

  • Простой стреляет в случайную клетку. После попадания бьёт в случайного соседа случайной раненой палубы и направление корабля не выясняет. В среднем 62 выстрела.
  • Сложный добивает как следует: два попадания в ряд дают ему ось, и он бьёт в концы. А вот ищет он, по сути, наугад: сетку он подбирает по самому маленькому кораблю на плаву, а это однопалубник почти до конца партии. В среднем 58 выстрелов.
  • Эксперт считает вероятности: каждое положение каждого живого корабля, согласное с известным, голосует за свои клетки, а положения через раненую палубу весят в двести раз больше. Первый выстрел он всегда делает в центральный квадрат 4×4. В среднем 55 выстрелов — уровень лучшего метода на этой странице.

Чтобы обыгрывать «Эксперта» уверенно, делайте оба дела сразу: считайте, где помещаются корабли, когда стреляете, и ставьте свой флот к краям. Вместе это превращает равную игру примерно в 24 победы из 25.

Ошибки, которые стоят больше всего выстрелов

  • Стрельба наугад в поиске. Против любого метода это около семнадцати выстрелов за партию.
  • Выстрел сбоку от ряда из двух попаданий. Когда ось известна, кораблём могут быть только два конца.
  • Выстрелы по диагонали от попадания. Корабли не касаются, там точно вода.
  • Сетка по самому маленькому кораблю. Когда во флоте есть однопалубники, это вовсе не сетка.
  • Флот, собранный в середине поля, — туда любой считающий соперник смотрит первым.

Вопросы и ответы

Какая стратегия лучшая в морском бое?

Ищите по сетке, подобранной по самому большому кораблю, которого ещё не нашли, добивайте каждое попадание вдоль его оси, а к концу партии стреляйте туда, где оставшиеся корабли ещё помещаются. В моделировании так флот топят примерно за 55–57 выстрелов, а наугад — за 75.

Куда лучше ставить корабли в морском бое?

Против компьютера, который считает вероятности, — вдоль краёв поля. Здесь флот, где каждый корабль касается края, обходится сильнейшему уровню в среднем в 71,6 выстрела вместо 55,2. Против человека, который вас знает, расстановку стоит менять: одни края становятся предсказуемы.

Куда делать первый выстрел?

Это важно меньше, чем кажется. При здешнем способе расстановки любая клетка занята кораблём в 18–21% партий; чуть холоднее только углы. Важно другое: первые выстрелы должны ложиться на сетку.

За сколько выстрелов можно выиграть в морской бой?

На поле 10×10 с флотом в двадцать палуб хороший метод топит всё примерно за 55–58 выстрелов; девять партий из десяти укладываются примерно в 46–64. Стрельбе наугад нужно около 75.

Могут ли корабли касаться друг друга?

В этой версии — нет, она идёт по классическим тетрадным правилам: корабли не касаются даже углами. Поэтому клетки по диагонали от попадания и кольцо вокруг потопленного корабля — точно вода.

Даётся ли ещё один выстрел после попадания?

Здесь — да: после попадания вы стреляете, пока не промахнётесь. Компьютер играет по тому же правилу.

Морской бой — игра на удачу?

Отчасти. Даже у лучшего метода разброс от партии к партии около двадцати выстрелов, так что близкие партии решает удача. Но метод в среднем стоит те же двадцать выстрелов, поэтому на длинной дистанции лучший искатель выигрывает уверенно.

Можно ли обыграть компьютер в морской бой?

Да. Против «Простого» и «Сложного» уже поиск с добиванием выигрывает больше половины партий. Против «Эксперта» подсчёт вероятностей вместе с флотом вдоль краёв выигрывает в моделировании около 96% партий.

Сыграть в морской бой с компьютером →
Куда отсюда
Как сослаться: «Как выиграть в морской бой: стратегия поиска и расстановки», You vs Computer, https://youvscomputer.com/games/ru/battleship-strategy.html