Как делать морской бой. Оптимальный алгоритм игры в морской бой
Как играть в морской бой
Можно смело назвать «Морской бой» одной из самых известных и популярных игр. Даже люди, которые не участвовали в этих захватывающих сражениях, слышали об этом развлечении, знают в общих чертах его специфику. Современная компьютеризация, представляющая огромный ассортимент игр, повлияла на популярность «Морского боя». Но и сегодня многие взрослые и дети увлекаются этой игрой, используют ее для заполнения свободного времени. Она не отличается высокой сложностью, разобраться, как играть в «Морской бой» при желании может каждый.
Описание игры
Несмотря на определенную простоту, эта игра обладает всеми свойствами развивающих, захватывающих увлечений. Целью игроков является уничтожение кораблей противника и сохранение своих единиц, расположенных на поле. Ориентироваться при выборе точки для выстрела помогают буквы и цифры, позволяющие каждому квадрату поля присвоить адрес.
Противники не видят полей друг друга, расположение чужих кораблей неизвестно.
По мере получения опыта можно понять, как играть в «Морской бой» с максимальной результативностью. Для этого нужно не только правильно обстреливать поле противника, но и грамотно размещать свои корабли, чтобы усложнить сопернику задачу. Победителем становится игрок, который первым уничтожит флот противника, независимо от того, сколько целых кораблей у него осталось.
Виды «Морского боя»
До недавних времен для того чтобы включиться в захватывающее сражение нужен был листок и карандаш или ручка. Этих инструментов достаточно для создания поля и размещения флота. Традиционный «Морской бой» на бумаге и сейчас актуален. Его преимуществом является доступность. Не нужен доступ в интернет, специальные приспособления, гаджеты.
Настольные игры отлично подходят для домашних развлечений. Правила игры в «Морской бой» в таких вариантах могут отличаться от классических. Но они больше нравятся детям из-за красочности, максимальной натуральности боя.
Многие современные люди отдают предпочтение компьютерному варианту. Мобильные девайсы последнего поколения позволяют в любом месте выходить в интернет, играть с роботом или настоящим противником, находящимся за тысячи километров. Такие развлечения позволяют интересно провести время, отточить мастерство в сражениях с сильными соперниками.
Правила настольной игры
Перед тем как играть в «Морской бой» нужно познакомиться с главными инструментами. Для размещения кораблей, ведения боя используется два одинаковых квадратных поля, состоящих из ста клеток. На одном размещается собственный флот. На другом будут отмечаться точки выстрелов, сбитые корабли соперника. Постепенно будет вырисовываться дислокация его единиц.
По вертикали поля располагаются цифры. Это позволяет для каждой клетки создать собственный адрес: А1, В4 и т.п.
Если при выстреле игрок не попадает в корабль, соперник говорит «мимо», право хода переходит к нему. При точном попадании нужно сказать «убит» или «ранен» корабль. При выстреле, не достигшем цели, на поле противника ставится точка, места попадания отмечаются крестиком, нужно продолжать обстрел для полного потопления корабля. Результативный выстрел дает право на следующий ход.
Есть определенные правила для расположения боевых единиц. Это позволяет определить точки, по которым стрелять не нужно. Корабли не могут иметь точки соприкосновений, их клеточки не располагаются по диагонали.
Как играть в морской бой на бумаге
Игра в «Морской бой» на бумаге обычно ведется на листках в клетку, обеспечивающих удобство в рисовании полей. Перед сражением игроки договариваются о буквенных обозначениях, приступают к созданию полей.
Игровое поле
У каждого участника на листке два одинаковых квадрата 10х10 с буквенными, цифровыми обозначениями. На одном нужно разместить свою флотилию. Второе поле пустое. На нем будут фиксироваться выстрелы, попадания.
Сколько кораблей в морском бое
Всего во флотилии 10 единиц. Корабли отличаются размерами.
На поле нужно расположить единицы:
- из одной клетки – 4;
- из двух клеток – 3;
- из трех клеток – 2;
- из четырех клеток -1.
Расстановка кораблей
От расстановки единиц во многом зависят шансы на победу. В правилах игры в «Морской бой» только два запрета по поводу размещения флота. Корабли не соприкасаются, клетки не располагаются по диагонали.
Ход и тактика игры
Право первого хода можно разыграть, вытащив жребий. У каждого игрока своя тактика ведения боя, нет каких-либо особых рекомендаций. Промах передает право хода другому игроку. Попадание позволяет продолжать выстрелы до нерезультативного хода. При затоплении корабля для удобства он по контуру отмечается точками, чтобы исключить ошибку, не сделать ненужного выстрела. Если боевая единица выбита, игрок обязан сказать об этом сопернику.
Как выиграть в морской бой
У большинства опытных игроков есть свои секреты, как играть в «Морской бой» наиболее результативно, создать наибольшие трудности для соперника.
Популярными вариантами успешной тактики являются:
- Размещение больших единиц на одной половине поля, маленьких на другой. При таком расположении потопить крейсер, линкор, эсминец будет несложно, но найти катера невероятно трудно, будет сделано много промахов.
- Диагональные выстрелы. Простреливание поля соперника по диагоналям позволяет достаточно быстро устранить большие единицы, скорее всего, они попадутся на этих траекториях. Кстати, это нужно учитывать, располагая свой флот.
- Иногда опытные игроки размещают все единицы у стен квадрата, позволяя противнику тратить ходы на обстреливание пустой территории.
Это лишь часть секретов, которые могут пригодиться в игре. Стоит поискать и свои уникальные интересные стратегические решения.
Система выигрыша в игру морской бой
Морской бой – популярная игра с простыми правилами. Задаваясь вопросом, как выиграть в морской бой, игроку в этом всегда поможет победный настрой и правильная стратегия.
Для начала нужно вспомнить правила игры. В распоряжении у игрока десять кораблей: 1 четырехпалубный линкор, 2 трехпалубных крейсера, 3 двухпалубных эсминца и 4 однопалубных катера.
Флот располагается на поле так, чтобы суда не касались друг друга. Рядом нужно нарисовать такое же поле для противника, чтобы отмечать свои выстрелы. При промахе ход переходит к сопернику. Выигрывает тот, кто первый потопит флот оппонента.
Можно договориться с оппонентом о возможности менять форму судов, «загибать» корабли. Так суда на поле будут похожи на детали «Тетриса», их будет сложнее потопить, а играть станет интереснее.
Удачный расклад в игре зависит не от воли случая, а от двух важных компонентов стратегии:
- расстановка собственных судов;
- оптимальный вариант стрельбы по флоту противника.
Расположение кораблей
Существуют несколько тактик для расстановки своего флота. Сработает тактика или нет, будет зависеть от тактики стрельбы соперника. В любом случае, бессистемное расположение кораблей не приведет к заведомо хорошему результату.
Первая тактика заключается в том, что линкор, крейсеры и эсминцы располагаются на одной половине поля.
А вот четыре катера располагаются на противоположной стороне, в результате они становятся практически неуязвимы. Противнику придется сделать очень много выстрелов, прежде чем он услышит «Убит!».
«Диагонали»
Большинство игроков первым делом начинают простреливать поле по двум диагоналям – от угла к углу. Если соперник относится к этому типу, вторая тактика окажется весьма кстати. Все корабли располагаются таким образом, чтобы выстрелы по диагонали их не задели.
Эта тактика хороша тем, что ее можно применить вместе с еще одной тактикой расстановки. Продуманное расположение своего флота – половина успеха.
«Берега»
Третью тактику можно применять двумя способами. Первый способ прост – расположить все свои корабли по краям, чтобы середина поля осталась пустой. Пока противник будет бессистемно палить, гадая, куда подевались все суда, можно спокойно искать его флот.
Такая тактика может себя не оправдать, особенно, когда соперник догадается, в чем фишка. Если секрет расположения судов раскроется, соперник за минимальное количество ходов потопит всю флотилию игрока.
Второй способ более продуман и похож на тактику «Половина поля». Для этого линкор, крейсера и эсминцы расположить по берегам, а вот катера разбросать по всему полю.
Размещая крупные корабли таким образом, для катеров остается много свободного места. Стратегии для поиска катеров не существует, и соперник будет палить наугад, теряя драгоценные ходы.
Даже если противник не собирается обстреливать поле по диагонали, выстрелов по углам не миновать. Таким образом, клетки А1, А10, К1, К10 лучше не занимать. Также нежелательно располагать корабли в самом центре поля – Д5, Д6, Е5, Е6.
Сила и неуязвимость игрока именно в однопалубных катерах – хотя уничтожить их можно с одного выстрела, для этого нужно их сначала найти. Чем надежнее они спрятаны, тем больше шансов одержать победу в партии.
Уничтожение противника
Для уничтожения флотилии соперника тоже существуют несколько тактик. Некоторые из них перекликаются с тактиками расстановки кораблей.
«Диагонали»
Многие люди хотя бы одно судно, но поставят на этой периферии. Поэтому вооружаемся терпением и методично простреливаем диагонали, чередуя для разнообразия направления стрельбы.
Игрок на картинке пренебрег тактикой правильного расположения и поплатился за это потерей линкора и катера.
Когда диагонали прострелены, можно продолжить стрельбу в шахматном порядке.
«Шахматы»
Из названия ясно, каким образом нужно «зачищать» поле противника. Тактика хороша тем, что позволяет достаточно быстро найти линкоры, эсминцы и крейсера. Однако, с поиском катеров придется попотеть.
«Локатор»
Тактика немного похожа на «Шахматы», однако, со своей изюминкой. Чтобы воспользоваться этой тактикой в углах поля мысленно или прямо ручкой обозначить четыре квадрата размером 4 на 4 клетки.
Нужно обстрелять их по диагонали. Поле в результате будет разделено белым крестом. Учитывая количество судов, которые уже удалось потопить, найти остальные не составит труда. На картинке игрок обнаружил шесть кораблей благодаря тактике «Локатор».
«Гусиные лапки»
Уничтожение линкора дает игроку преимущество в том, что ему останется обстреливать куда меньшее количество клеток, чем если он подобьет, например, эсминец. Потопив линкор, вокруг него будет от 6 до 14 клеток, которые игроку обстреливать уже не нужно.
Итак, чтобы найти линкор, можно воспользоваться тактикой «Гусиные лапки». Для этого мысленно поделить поле на квадраты размером 4 на 4 клетки и в каждом квадрате сделать по четыре залпа.
В первом верхнем квадрате игрок дает залп по А3, Б4, В2, Г1. Далее остается повторить узор и в других квадратах. Линкор будет найден максимум за 24 выстрела.
После того как линкор найден и потоплен, можно перейти к наступлению на трехпалубные крейсера. Для этого в каждом квадрате нужно сделать всего по два выстрела.
В первом квадрате выстрелить по Б1 и Г3, с остальными миниполями поступить точно также. Одиннадцатый выстрел гарантированно подобьет крейсер.
Чтобы подбить двухпалубный эсминец в каждом квадрате нужно сделать по три выстрела. В первом квадрате палить по А2, Б3 и В4. Повторить тройной ход в остальных квадратах. В конце концов, останется самое сложное – поиск катеров. К сожалению тактики для их поиска нет. Игроку придется полагаться на свою интуицию или психологию противника.
Есть еще несколько правил для быстрого уничтожения флота соперника:
- Правилами «Морской бой» не предписывается обязательно добивать корабль после первого «Ранен!». Однако, дело лучше довести до победного «Убит!», потому что так игрок сможет выяснить по каким клеткам можно не стрелять. Ведь суда не могут стоять вплотную друг к другу.
- Обстреливая поле противника, не нужно топтаться на одном месте. Выстрелы должны охватить как можно большую площадь. Держа в голове понравившуюся тактику, игрок может «ходить» по полю, вместо того, чтобы продолжать обстреливать неудачный участок.
- Если соперник использует какую-то тактику, а не бессистемно палит по случайным клеткам, нужно включить голову. Иногда, присмотревшись к ходам противника, можно догадаться, как он расставил свои корабли.
- Часто играя с одним соперником, игрок может запоминать его тактику расстановки и обстрела, используя полученный опыт для улучшения собственной стратегии.
Для отработки навыков игры в «Морской бой» и проверки тактик можно воспользоваться онлайн-сервисами. Плюсы игровых сайтов в высокой скорости и низкой затрате ресурсов. А выработав и улучшив свою стратегию, игрок сможет блеснуть своими знаниями в партии с живым соперником.
Стопроцентного способа выиграть в «Морской бой» не существует, в конечном счете все зависит от стратегии противника и самого игрока. Именно по этой причине, «Морской бой» остается нескучным способом провести время.
Оптимальный алгоритм игры в морской бой
игры игры
Существует множество вариантов боя морского, но мы с вами рассмотрим наиболее распространённый следующим со вариант набором кораблей:
Все перечисленные должны корабли быть размещены на квадратном поле 10 на 10 при, клеток этом корабли не могут соприкасаться ни сторонами, ни углами. Самое игровое поле нумеруется вниз сверху, а вертикали помечаются русскими буквами от «А» до «К» (этом при буквы «Ё» и «Й» пропускают).
Рядом рисуется поле вражеское аналогичного размера. При удачном кораблю по выстреле противника на соответствующей клетке вражеского ставится поля крестик и производится повторный выстрел, неудачном при выстреле в соответствующей клетке ставится ход, и точка переходит к противнику.
Оптимальная стратегия
В морской игре бой всегда есть элемент его, но случайности можно свести к минимуму. Прежде переходить чем непосредственно к поиску оптимальной стратегии, озвучить необходимо одну очевидную вещь: вероятность кораблю по попасть противника тем выше, чем непроверенных меньше клеток осталось на его поле, вероятность аналогично попадания по вашим кораблям тем чем, ниже больше непровереных клеток осталось на поле вашем. Т.о. для эффективной игры нужно сразу научиться двум вещам: оптимальной стрельбе по оптимальному и противнику своих размещению кораблей.
В дальнейшем будут объяснении использоваться следующие обозначения:
Оптимальная Первым
стрельба и самым очевидным правилом оптимальной является стрельбы следующее правило: не стрелять по клеткам окружающим непосредственно уничтоженный корабль противника.
В соответствии с выше принятыми обозначениями, на рисунке жёлтым отмечены те которым, по клетки уже были произведены безуспешные красным, выстрелы отмечены клетки, выстрелы по которым попаданием закончились, а зелёным отмечены клетки, стрельба по производилась не которым, но можно гарантировано утверждать, что них в кораблей нет (кораблей там быть не правилам, т.к. по может игры корабли не могут соприкасаться).
Из правила первого сразу вытекает второе: если удалось вам подбить вражеский корабль, необходимо его же сразу добить, чтобы как можно получить раньше список гарантировано свободных клеток.
правило Третье вытекает из первых двух: необходимо в очередь первую пытаться подбить самые крупные противника корабли. Возможно, для вас это очевидно не правило, но если немного подумать, то можно заметить легко, что уничтожив вражеский линкор, мы в случае лучшем получим информацию сразу о 14 гарантировано клетках свободных, а уничтожив крейсер, всего о 12.
Т.о. оптимальную стрельбы стратегию можно свести к целенаправленному поиску и самых уничтожению крупных кораблей противника. К сожалению, стратегию сформулировать мало, необходимо предложить способ её Для.
реализации начала давайте рассмотрим участок поля игрового размером 4 на 4 клетки. Если в рассматриваемом есть участке вражеский линкор, то его гарантировано подбить можно не более чем за 4 выстрела. Для надо этого стрелять так, чтобы на каждой вертикали и горизонтали было ровно по одной проверенной ниже. клетке представлены все варианты такой без (стрельбы учёта отражений и поворотов).
Среди этих всех вариантов, оптимальными на поле 10 на 10 клеток только являются первые два варианта, гарантирующие линкор в попадание максимум за 24 выстрела.
После того, уничтожен как вражеский линкор, необходимо начинать крейсеров поиск, а затем и эсминцев. При этом, уже вы как догадались, можно воспользоваться аналогичной Только. методикой теперь необходимо разбивать поле на стороной со квадраты в 3 и 2 клетки соответственно.
Если при линкора поиске вы использовали вторую стратегию, то для крейсеров поиска и эсминцев вам необходимо стрелять по полям следующим (зелёным отмечены поля, по которым вы стреляли уже при поиске линкора):
Для катеров поиска оптимальной стратегии не существует, поэтому в игры конце приходится опираться в основном на удачу.
размещение Оптимальное кораблей
Аналогично, стоящий, крейсер в углу, вместо 12 полей открывает разместив 6. Т.о., всего крупные корабли вдоль границы оставляете, вы поля больший простор для катеров. Т.к. для стратегии поиска катеров нет, противнику стрелять придётся наугад, и чем больше свободных вас у полей останется к моменту ловли катеров, тяжелее тем будет выиграть противнику.
Ниже три представлено способа размещения крупных кораблей, оставляют которые большой простор для катеров (синим отмечено):
Каждая из приведённых расстановок оставляет катеров для ровно 60 свободных клеток, а это что, значит вероятность случайно попасть в катер 066 0, составляет. Для сравнения стоит привести расстановку случайную кораблей:
При такой расстановке катеров для остаётся всего 21 клетка, а это что, значит вероятность попадания по катеру составляет почти 0, 19, т.е. уже в 3 раза выше.
В заключение хочу что, сказать не стоит проводить уж слишком много играя, времени в морской бой. Особенно хочу вас предостеречь от игры на лекциях. Когда я сидел в Саби-Ваби и играл в морской бой со своей мимо, девушкой прошла официантка и сказала, что весьма она неплохо играет, т.к. много практиковалась на Кто. парах знает, кем бы она работала, своё бы в если время слушала лекции?
P.S. В комментариях верно абсолютно указывают, что на хабре уже похожие были публикации, было бы неверно не поставить них на ссылки:
habrahabr.ru/post/82221/ Так если может не cтрашно потерять большие корабли — то не важно уж и так поскорее их найти. Ведь речь лишь всего о том, как минимизировать количество околокарабельные в попаданий клетки. Для этого не обязательно большие искать корабли. Можно например стрелять по диагональным соседним клеткам равномерно расширяясь от одной При. точки игре с компьютером с такой стратегией я чаще выигрывают, чем с предложенным вами подходом.
К ценность же тому поиска больших кораблей сильно если снижается противник их расставил плотно. Ведь все проблема равно будет в оставшемся свободном Кстати.
поле фраза Для поиска катеров стратегии оптимальной не существует, поэтому в конце игры опираться приходится в основном на удачу — не совсем верна. стратегия Такая есть. Несложно догадаться что конце в если игры остаются группы неисследованных выгоднее то клеток бить сначала по ним последовательно — что потому выбивая однопалубник в такой группе мы исследовать можем несколько дополнительных клеток. Если его выбьем в «дырке» то конечно ничего не выиграем. То определенный есть вред от «решета» в конце игры имеется тоже. то знает, кем бы она работала, своё бы в если время слушала лекции?
А какие у лекции нас слушать? Я думаю что у все примеров таких просто вагон:
Два парня университете в учатся. Один балду пинает, другой учится прилежно. Вопрос, это что то гарантирует по жизни? в устройству
В универах обучают:
a) устаревшей никому не информации нужной (разве что интререс с точки истории зрения)
б) нельзя научить можно научится. интереса Нет, будет пиво. Какой интерес преподаватели если нищие, уже какой к ним может интерес быть.
в) Наша новая кафедра, первый мы где раз выпускались, оказалось просто бабла попилам и диплом я сдвавал секретарше. Я в обиде этого после. Насколько я тогда был тупой до ходил и то ужаса как «хакер» самоутверждался.
Но, бессомнения преподаватели были, которые вызывали уважение. Были и те работал кто за идею.
А были и те, кто просил помочь меня ему мозгами в визуальной части работы этой:
cyberleninka.ru/article/n/modelirovanie-protsessa-formovki-sverhplasticheskoy-poloy-obolochki-iz-listovoy-zagotovki
мог не Преподаватель кодить интрефейс и ядро, он был потоке не в просто жизни и жил в своей изолированной про, среде открытые библиотеки он знять не знал. Я старался ему помочь с визуальным отображением его через данных rhinoceros. Он просил притока новых ибо мозгов ощущал в этом большую проблему.
А что, за то потом он не захотел нищенствовать, а количество дебилов в остановить не визуах, взял с кого то деньги и попал на 4 месяцев и 6 года за взятку в 60 тр. Даю подсказку, как там будто он один брал взятки с дебилов.
fullnews.ru/newstula_29130.html
Не мне его это, судить его дело, но если бы на этом закончилось все:
mk.tula.ru/news/n/1551/
Для университет меня важен исключительно развитием у человека стрессового момента погружения в размышления. Пики экзаменационных подготовка, , напрягов к сессии — это знакомство человека с своих глубинами возможностей. Знакомством со своей головой. сих до Поэтому пор без них никуда, сегодня на хоть там такой бардак. Стратегия выиграть как же «разбита» на две части, — как противника подбить, и как не быть подбитым самому.
А немного теперь теории (игр).
Для пошаговых существует игр решение в общем виде — это дерево выстраивается всех состояний (даже для оно шахмат теоретически существует), и ходы делаются те, итоге в которые приводят к победе делающего ход. И чаще побеждает всего, в зависимости от игры, первый если, ходящий не делает ошибок (для шахмат еще просто есть ничья).
В случае морского максимизация, боя проверенных клеток на чужом поле, и проверки минимизация своих, это стратегия, которая максимизировать позволяет разницу между подбитыми чужими и своими подбитыми. Понятно, что чем больше разница эта, тем ближе победа. На дереве выглядит это так, что вы на каждом шаге (не всё отматываете дерево назад, как в идеале победе к приводит), а идете в ту локальную конфигурацию, которая приближает ведет вас к победе каждым шагом. что Так стратегия рабочая, а вот с понятием «следует» оптимальности разбираться. Оптимальной с точки зрения определений математических она бы была если бы приводила к наименьшее за победе количество шагов.
То есть данный это — алгоритм максимизация конечной величины через дельт максимизацию каждого шага. Ошибся с тем, морской что бой — пошаговая игра (тем тогда более сравнение с шахматами некорректно), каюсь, как так на момент расстановки кораблей — игра одновременно идёт, плюс обычно для пошаговых расстановка игр сил заранее известна. Однако рассуждения все в предыдущем комменте про морской кроме (бой примера с деревом где я поспешил мысли изложить) в силе.
Кстати, в теории игр решение и есть для игр, где одновременно решение принимается. Называется «проникновением в замыслы соперника». собственный Максимизируется выигрыш исходя из возможных выборов путем, соперника выбора доминирующей стратегии (хода). когда та, Доминирующая выигрыш максимален при любом из соперника ходов. Доминирующая (как и доминируемая) стратегии не существуют всегда, но в данном посте приведен пример которая, стратегии доминирует, или по-крайней мере, не ходам проигрывает соперника (при расстановке кораблей).
того Более, стратегия «максимизировать количество известных также» клеток соответствует тому, что веса у разные кораблей, то есть при одинаковой силе их разному по-подбить сложно. Известные клетки снижают ходов количество, тем самым, снижая возможность Однако. проигрыша повторюсь, что количество шагов наименьшее здесь, следует доказывать математически. Без имел — я обид ввиду, конечно, что заявление об может не оптимальности быть истинным пока не поставлена и не задача решена оптимизации. Опять же, нужно делать оппоненте об предположения — играет ли он наугад или же, зная стратегию вашу, специально подстраивается под неё. погуглив Немного нашёл ответ, хоть как-то теорию затрагивающий вероятностей: otvety.google.ru/otvety/4c354bc83317c41f=thread?tid&pli=1. Конечно, это далеко от уже, но идеала что-то. Конечно, для вероятность можно ещё посчитать практическим путём — написать которая, программу играет сама с собой разными найти и методами наиболее выигрышный из них (но опять же не что факт это будет оптимальным решением сожалению).
К задачи, не обладаю сейчас свободным временем исследования для, но думаю запишу куда-нибудь, появится если время — подумаю. Некоторое время безделья от назад поиграл в онлайн морской бой на отличии. В телефоне от классического варианта, в нем были трех корабли видов: один из 4х клеток, два из 3х и Кроме из 2х. четыре того, изначально каждый игрок выстрелов 5 осуществляет за ход, и это число сокращается на каждым c единицу погибшим кораблем (не опускается ниже 1).
небольшая Вот статистика из
1) Расстановка кораблей число (противником в ячейке – количество партий, в которых разместил соперник на этой клетке один из кораблей)
В люди, целом видят выгоду в размещении кораблей стенок вдоль.
2) Атака противника (число в ячейке – партий количество, в которых соперник не выстрелил в эту при, клетку этом не обстрелянные клетки, которые в партии финале были очевидно свободны, в расчет не Конкретных)
идут цифр у меня нет, но при своих выстраивании кораблей и выборе ячеек для учетом с атаки собранной информации, процент выигранных увеличился партий. Реализовал 4 алгоритма:
Random — полностью Diagonal
случайный — простреливающий поле по диагональным линиям, поиске в сначала «четверок», потом — «трёшек» и «двушек». обстрела Порядок точек на линиях каждого ранга — NShips.
случайный — подсчитывается количество способов, которыми подбитые не ещё корабли можно разместить на данную учётом (с клетку количества кораблей каждого размера), делается выстрел в одну из клеток, для которых количество это максимально.
NConfig — рассматриваются все кораблей расположения, не противоречащие имеющейся информации, и выстрел одну в делается из клеток, которые заняты в наибольшем конфигураций числе.
Чтобы NConfig работал разумное был, время взят сокращенный вариант: поле 8*8, 4 одному и по катера кораблю размерами 2, 3 и 4 клетки.
На некотором конфигураций множестве запускался каждый из алгоритмов. Подсчитывалось число среднее ходов, а также число побед (которых, в конфигураций данному алгоритму потребовалось меньше чем, ходов другим).
Сначала проверил их на 200 расстановках случайных кораблей. Результат:
Random — среднее ходов число 24.82, 50 побед
Diagonal — среднее число побед 24.08, 46 ходов
NShip — среднее число ходов 23.64, 56 NConfig
побед — среднее число ходов 23.63, 48 побед
видно Как, число ходов почти не зависит от NShip, но алгоритма побеждает ощутимо чаще других.
взял Потом конфигурации, в которых длинные корабли «стенкам» к прижимались или к другим кораблям. Алгоритмы об понятное, этом дело, не знали.
Итог по 300 Random:
конфигурациям — среднее число ходов 28.78, 62 победы
среднее — Diagonal число ходов 28.39, 65 побед
NShip — число среднее ходов 30.34, 51 победа
NConfig — среднее ходов число 25.66, 122 победы
Причина простая — NShip алгоритм старается стрелять в центр поля, способов там расставить корабль больше. А NConfig, бьёт, наоборот по краям — оказывается, в среднем корабли размещаются там чаще (это понятно: после как, того мы подобьём корабль у стенки, он заберёт клеток меньше у поля, а на оставшемся месте будет вариантов больше размещения кораблей).
Итого: диагональный выиграл алгоритм у полностью случайного от 0.4 до 0.75 хода. Расстановка стенок у кораблей позволила выиграть около 2 ходов (том при, что среднее квадратичное отклонение ходов числа во всех случаях было от 4.5 до 5.5).
Источники:
http://alfalady.org/dosug/razvlecheniya/311-kak-igrat-v-morskoy-boy.html
http://game.jofo.me/224329.html