Цитата Сообщение от Barmaley_m Посмотреть сообщение
Когда подбивался какой-нибудь корабль, алгоритм стрельбы переходил в режим добивания корабля. Здесь я не смог на тот момент найти каких-либо критериев повышения вероятности поражения, поэтому стрелял в любую из клеток вокруг той, которая подбита, если по этой линии мог быть размещен корабль противника минимальной длины из оставшихся. После подбития второй клетки корабля противника стрельба проводилась только вдоль линии, в которой расположен этот корабль. Добивание корабля противника всеми игроками, в том числе моим алгоритмом, считается приоритетным перед поиском оставшихся кораблей. Обоснование простое: подбитие корабля исключает из игры не только обстрелянные клетки, но и клетки вокруг подбитого корабля, тем самым существенно уменьшая возможности размещения остальных кораблей, а также меняя картину максимумов числа возможностей этого размещения.
Для большепалубного корабля вероятность попасть в край низкая, поэтому - если было попадание, то можно предполагать что для 3палубника вероятнее центр, для 4хпалубника - одна из центральных. В этом случае наличие промахов на одной из линий предполагаемой атаки может помочь выбрать наиболее вероятное расположение корабля.

X-попадание
_-промах

0000000
0000000
000X000
000_000
0000000

0000000
0000000
000X000
0000000
000_000


вэтих схемах более правильным будет горизонтальное продолжение атаки,

0000000
0000000
000X0_0
000_000
0000000

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

0000000
0000000
000X_00
000_000
0000000

Такая схема не даёт вероятностно лучший исход в одном из направлений, можно атаковать рандомом вверх или влево.

Цитата Сообщение от Barmaley_m Посмотреть сообщение
Оптимальный способ решения задачи такого поиска известен. Его называют
"половинное деление", "дихотомия", "бисекция"
Этот метод крайне долог (с точки зрения сходимости и соотвественно достижения решения). Однако в силу дискретности значений результирующей функции другие методы плохо применимы. Хотя метод золотого сечения возможно тоже будет применим? А чтобы человек, играющий против бота не использовал слабость какой-то конкретной методики - тогда рандомом выбирать одну из них на старте?