УийКИАЯ
МАСТЕРСКАЯ
Ляхов Александр Федорович, Ляхов Федор Александрович
КАК ПРАВИЛЬНО ИГРАТЬ В «МОРСКОЙ БОЙ»
Двое играют в «морской бой»
Первый игрок - Д 4. Второй игрок - Попал.
Первый игрок - Д 4. Второй игрок - Ты1 чего? Ты1 же попал.
Первыш игрок - Контрольный выстрел.
Современный анекдот.
Игра «морской бой» достаточно хорошо известна и популярна. Практически каждый школьник в тот или иной период своей жизни играл в эту игру. В последние годы в связи с появлением компьютеров и новых обучающих и развивающих программ вновь возрос интерес к ней [1]. Если набрать запрос о поиске игры в Интернет, то поисковая машина выдаст несколько тысяч ссылок. Здесь и реклама, и различные варианты игры, и качественные исследования оптимальных стратегий игры и т. д. Но мало кто знает о том, что эта игра имеет серьезное научное и практическое приложение, и для ее анализа могут быть использованы современные математические и компьютерные методы [2]. В качестве при-
'Иряк&игески клфумй шса^&Ник.... ьсгрлл & з&у игру.
мера такого приложения можно привести проблему эффективного поиска записей в больших базах данных, обладающих сложной многоуровневой структурой.
Остановимся на некоторых основных правилах классического варианта игры.
Первый игрок, игрок А, расставляет корабли на квадратном игровом поле из п клеток (обычно это поле 10 X 10 клеток). Корабли делятся на классы: одноклеточные, двухклеточные, трехклеточные и четырехклеточные. Игрок В на своем поле расставляет свои корабли.
Заметим, что корабли не должны касаться друг друга.
Игра состоит в том, что игроки по очереди называют координаты клеток, в которых, как они предполагают, расположены корабли противника, то есть как бы производят выстрел по выбранной клетке. О попадании или промахе игроку сообщается после выстрела. Игра продолжается до тех пор, пока у одного из игроков не будут уничтожены все корабли.
На первый взгляд, эта игра носит чисто вероятностный характер, так как игроки ведут обстрел, не зная расположения кораблей противника. Но, приобретя некоторый опыт игры, можно заме-
ИДИ шщ щ
НИИ I
.11" I
Рисунок 1
тить, что существуют стратегии расстановки кораблей, которые уменьшают вероятность попадания в последний одноклеточный корабль. Например, можно расположить весь флот таким образом, чтобы он занимал минимальное место на игровом поле, а один или два корабля ставят на оставшемся пространстве как на рисунке 1.
Поиск кораблей также можно проводить, придерживаясь определенной системы, которая позволяет наиболее быстро обнаружить в начале игры многоклеточные корабли, а затем на оставшемся пространстве искать одноклеточные корабли.
Эти качественные рассуждения показывают, что у игроков А и В существует множество неравнозначных различных стратегий игры, то есть может быть поставлен вопрос о поиске оптимальных стратегий [3].
Заметим, что все это разнообразие стратегий, как это будет показано ниже, определяется правилом, запрещающим ставить корабли вплотную, а также правилом окончания игры.
В дальнейшем будем рассматривать только одностороннюю игру: игрок А расставляет корабли, а игрок В ведет их поиск.
Математическую модель игры можно строить двумя способами [4]. Первый способ состоит в том, что после каждого выстрела учитываются изменения поля игры и вероятности обнаружения кораблей. Такая форма игры называется развернутой, а сама игра представляется многошаговой. Сложность применения этого
подхода связана с необходимостью определения вероятностей событий, которые являются комбинацией большого числа элементарных событий. При увеличении числа выстрелов к количество комбинаций растет пропорционально к! (факториалу к).
Второй способ состоит в том, что в качестве исходного множества событий рассматривается множество стратегий, элементы которых представляют полную последовательность п выстрелов. В этом случае игра становится одношаговой, то есть игрок производит выбор не одной клетки при выстреле, а выбирает последовательность из п выстрелов. Такая форма игры называется нормальной. Второй подход к построению игры носит интегральный характер, однако, в этом случае возникает проблема, связанная с понятием окончания игры.
АНАЛИЗИГРЫ В НОРМАЛЬНОЙ ФОРМЕ
Для того чтобы приступить к построению и анализу математической модели игры, необходимо определить вероятности обнаружения кораблей при различном их расположении и различных системах поиска.
ОБСТРЕЛ ОДНОГО ОДНОКЛЕТОЧНОГО КОРАБЛЯ
На поле из п клеток расположен один одноклеточный корабль. Определим вероятность попадания в корабль к-ым выстрелом, то есть его уничтожение.
В качестве пространства элементарных исходов выбора игрока В рассмотрим множество стратегий обстрела игрового поля, каждая стратегия состоит из п выстрелов, О = |ю : ю = (ах, а2,...,ап), а1 = 1,2,...п}, где аг- - номер выбранной клетки, то есть рассмотрим множество всех выборок из п по п клеток. Очевидно, что это пространство содержит = п! элементов и все эти стратегии равновозможны. Количество стратегий с благоприятным исходом, то есть количество выборок, содержащих на к-ом месте искомую клетку
Н6 = (п -1)! ния*
Рк =
Вероятность попада-
Яь 1
Nо п
Определим вероятность уничтожения корабля за к выстрелов. Это событие состоит в том, что корабль может быть уничтожен либо первым выстрелом, либо вторым и т. д., то есть благоприятная выборка из к клеток содержит искомую клетку с кораблем.
Количество благоприятных стратегий определится как число неупорядоченных выборок из множества п - 1 клеток по к - 1 (одна клетка, занятая кораблем не учитывается при выборке), умноженное на число перестановок в самой выборке к! и число перестановок клеток оставшихся за выборкой (п - к)!: Иб = к! С" (п - к)!. Вероятность попадания в одноклеточный корабль за к выстрелов
Рк =
к!Ск-1(п - к)! п!
С
к-1 п-1
=к-. (1)
Ск
ОБСТРЕЛ ДВУХКЛЕТОЧНОГО КОРАБЛЯ
Усложним задачу. На поле из п клеток расположен двухклеточный корабль. Определим вероятность первого попадания в корабль (в одну из его клеток) выстрелом с номером к. Полное число всевозможных стратегий, как и в предыдущем случае, равно Л0 = п!, а число благоприятных стратегий определяется как сумма благоприятных стратегий попадания в одну клетку и попадания во вторую клетку, то есть Л6 = 2(п -1)!. Вероятность
, - 2 попадания к-ым выстрелом равна Рк = —.
п
Очевидно, что при обстреле т-кле-
точного корабля или т одноклеточных
кораблей, вероятность попадания к-ым
— т выстрелом равна Рк = —.
п
Определение вероятности попадания в двухклеточный корабль за к выстрелов, сведется к определению количества стра-
беро^ийЯосЛл & корабле к-мм вма&релом,,
тегий, содержащих искомые клетки в первых к выстрелах. Число таких стратегий будет вычисляться как следующая сумма
N б = (N1 + N2 - N12) • (п - к)!, где Л = Л2 = к! С- - выборки, содержащие либо первую клетку, либо вторую клетку, Л12 = к^! сПк-2 - выборки, содержащие одновременно две клетки. Следовательно,
Nб = к!(2Скп-1 - Скп-22) • (п - к)! и после преобразований получим к(2п - к -1)
Рк =^1^. (2)
Заметим, что аналогичным образом можно определить вероятность попадания за к выстрелов в корабль из т клеток.
Задача попадания за к выстрелов в многоклеточный корабль хотя бы один раз является задачей поиска корабля. Очевидно, что если учесть геометрию корабля, то можно предложить систему его поиска, при которой вероятность обнаружения становится выше. Действительно, при поиске двухклеточного корабля можно рассмотреть подмножество всех стратегий, содержащих обстрел, например, клеток только с четными или с нечетными номерами. Поиск двухклеточного корабля сведется к поиску одноклеточного корабля на этом подмножестве. Полагая п четным, для оптимальной вероятности попадания за к выстрелов получим
р = к! ск/2-1 = ск/2-1 = 2к Рко =
А 2
с с
= 2к . (3)
2
п
" Заметим, что используемое определение вероятности соответствует определению вероятности по Лапласу.
п
]
I - 12 -
Злфлгл ... & мКогоглетагКий корабль
бы ¿лдагш пошел корабле.
Найденное значение вероятности больше вероятности, полученной выше
к(2п - к -1) < 2к п(п -1) п при всех значениях к > 1.
Оптимальная стратегия поиска трех-клеточного и четырехклеточного корабля может быть получена аналогичным образом.
ОБСТРЕЛ ДВУХ ОДНОКЛЕТОЧНЫХ КОРАБЛЕЙ
При анализе обстрела двух кораблей возникает необходимость учитывать условие того, что корабли не соприкасаются. Разумный игрок, учитывающий это правило, не будет обстреливать соседние с обнаруженным кораблем клетки, следовательно, все они выбывают из игры при попадании в корабль. Из рассмотрения должны быть исключены последовательности выстрелов, в которых после попадания в корабль, производится обстрел соседних клеток.
Например, если корабль расположен в клетке с номером 1 (как показано на рисунке).
11 1_ 13
12
но последовательности -
остаются.
Вторая проблема, возникающая при математической формализации игры, связана с понятием ее окончания, то есть с определением множества допустимых стратегий. На практике конец игры наступает после попадания в последний ко-хотя рабль. При интегральном описании игры записать соответствующее локальное правило окончания игры не представляется возможным.
Рассмотрим два варианта окончания игры: первый - игра заканчивается после обстрела всех клеток игрового поля (п выстрелов), второй - игра заканчивается после к выстрелов.
На первом этапе исследования рассмотрим обстрел двух кораблей без запрещающих правил на их расположение. Определим вероятность уничтожения кораблей за к выстрелов, при условии, что игра заканчивается за п выстрелов. Количество благоприятных неупорядоченных выборок сП-2 , всевозможные перестановки в выборке и за ней (п-к)!к!, Иб = к\Ск„-1(п - к)!; общее количество выборок N0 = п\, вероятность
Р =
к! сП-2 (п - к)!.
п!
Гк - 2 сп - 2 ск
С г1
(4)
то по правилам игры исключаются последовательности выстрелов
...коЯец игры Яаатупает после шклефЯий корабль.
Заметим, что эта задача аналогична задаче поиска т объектов в п клетках.
Выражение для вероятности уничтожения кораблей при условии окончания игры за к выстрелов имеет такой же вид. Действительно, число благоприятных выборок N6 = сПк-2 , полное число выборок И0 = С1п .
Следовательно, вероятность уничтожения т кораблей расположенных без учета правил игры:
-гк - т
Р =
С
^ }
— ^п-т
ск
(От редакции.
Мы опускаем ту часть исследования, в которой авторы1 рассматривают обстрел кораблей с учетом соответствующих правил и вышодят ряд достаточно сложных формул).
СТАТИСТИЧЕСКОЕ ИССЛЕДОВАНИЕ ИГРЫ
...&еро#тАости уАигтофеЛия кораблей при усло&ш оеонгания игры
п к /1 /2 Р
20 15 0 0 0,55
20 15 3 3 0,66
20 15 8 3 0,75
20 15 8 8 0,83
ПОСТРОЕНИЕ МАТРИЧНОЙ ИГРЫ ПРИ ОБСТРЕЛЕ ДВУХ ОДНОКЛЕТОЧНЫХ КОРАБЛЕЙ
Сложные вычислительные формулы для определения вероятностей попадания в корабли заставляют обратиться к статистическому определению вероятности.
Современные быстродействующие компьютеры позволили создать имитационную модель реальной игры. Многократно проиграв одну и туже игру, значения вероятности можно оценить, как отношение количества выигранных партий к общему числу партий*.
Оценку вероятности попадания в два одноклеточных корабля за к выстрелов, при их различном расположении можно получить, многократно повторяя игру (10000 раз)
к
р = —- , К0 - полное число сыгранных к 0
партий, К1 - число партий, закончившихся победой. Значения полученных вероятностей при различных значениях к и п приведены в таблице:
Приведенные выше исследования показали, что вероятность обнаружения кораблей зависит от их расположения и выбранной системы поиска. Следовательно, можно построить матричную игру [3,5].
Игрок А стремится расставить два одноклеточных корабля таким образом, чтобы вероятность обнаружения кораблей игроком В за к выстрелов при выборе им некоторой эвристической стратегии поиска была минимальной. Игрок В ищет эвристическую стратегию, позволяющую с наи-
...имитационная модель реальной игры.
* На диске к журналу приведен алгоритм программы, имитирующей многократный розыгрыш игры «морской бой», реализованный авторами на языке СИ.
большей вероятностью обнаружить корабли за к выстрелов.
Игрок А может расставить два корабля различными способами, он может поставить один корабль в угол, а один у стенки или оба корабля вдали от стенок. Количество всевозможных расстановок определяется правилом расположения кораблей, то есть если первый корабль может быть поставлен на любую клетку игрового поля, то второй корабль нельзя ставить в соседние клетки. Число различных стратегий игрока А для поля любой сложной конфигурации будет оцениваться следующим интервалом п(п -1) < Иа < п(п - 9). Игрок В также имеет множество стратегий поиска: он может сначала обстрелять углы, а затем обстрелять клетки у стенок или наоборот. Всего игрок В имеет Сик стратегий поиска.
Пусть игрок А выбрал свою г-ую стратегию Аг, а игрок В - у-ую стратегию Б у. Обозначим вероятность уничтожения кораблей за к выстрелов при этих стратегиях Ру. Рассматривая все стратегии игроков, получим матрицу игры:
А,
А,
Аз
Ая
В,
Р11
Р21
Р31
Ра1
В,
Р12
Р22
Р23
Ра2
В3
Р13
Р23
Рзз
Ра3
Вь
Р1Ь
Р2Ь
Р3Ь
РаЬ
Введем вероятность гг выбора г-ой стратегии игрока А и вероятность д. выбора У-ой стратегии игрока В. Оптимальной стратегией игрока А будем считать ту, которая имеет наибольшую вероятность г. при минимальном математическом
ожидании уничтожения кораблей
а Ь
за к выстрелов М = .
I=1 у=1
Оптимальной стратегией игрока В
будем считать ту, которая имеет наибольшую вероятность q. при максимальном значении М.
...беро^Л-ЯосЛи попяфЛЯиф 6 ... корабля.
Можно видеть, что часть стратегий расположения кораблей и поиска являются неразличимыми. Действительно, рассмотрим квадратное поле 10 X 10 клеток и множество стратегий, когда один корабль расположен в угловой клетке, а второй вдали от него и от боковых стенок поля. Количество различных стратегий N =4 • 64 = 256, но вероятность обнаружения кораблей при случайном поиске для всех этих стратегий будет одна и та же. Следовательно, все они могут быть представлены одной стратегией.
Определим наиболее предпочтительную стратегию среди следующих эвристических стратегий игроков А и В.
Стратегии игрока А:
А1 - постановка кораблей в клетки вдали от углов, стенок и друг от друга (то есть нет пересечения соседних клеток);
А2 - постановка кораблей в углы поля.
^ Лакфе имееЛ м-НофесЛбо сЛраЛегий поиска.,
Стратегии игрока В: Вх - обстрел поля случайным образом; В2 - обстрел угловых клеток, а затем обстрел оставшегося поля случайным образом.
Матрица игры имеет вид:
Решение системы ищем при условии, что Ь0 принимает максимальное значение.
В1 В2
А1 Р11 Р12
А2 Р21 Р22
Предположим, что игрок А выбрал первую стратегию с вероятностью г1, а вторую стратегию - с вероятностью т2 (гх+т2 =1). Если игрок В выберет свою первую стратегию, то математическое ожидание для вероятности выигрыша за к выстрелов запишется в виде М1 = р11г1 + р21г2, при выборе второй стратегии М 2 = р12 г1 + р22 г2. Потребуем, чтобы записанные математические ожидания были меньше некоторого максимального значения М0 (цены игры).
Для нахождения вероятностей г1, г2 получим систему линейных алгебраических неравенств
Р11Г1 + Р21Г2 £ М0» Р12Г1 + Р22Г2 £ М0» г1 + г2 = 1
(1)
Задача (1) является задачей линейного программирования. Введем новые переменные х1 = г[/М0 , х2 = г2/М0 , Ь0 = 1/М0 . Система (1) примет вид
Р11 х1 + Р 21х 2 £ 1 Р12 Х1 + Р 22 х 2 £ 1 х1 + х2 = ^0 •
М 0
г =
Окончательно получим
= Р11Р22 - Р21Р12 Р11 + Р22 - Р12 - Р21 ,
Р22 ~ Р21_
Р11 + Р22 - Р12 - Р21 ,
г =
Р11 - Р12 Р11 + Р22 - Р12 - Р21
.по^^аЛо&ка кораблей & угли поля.
Очевидно, что расположение кораблей существенно влияет на игру, если п и к малы и сравнимы с количеством клеток в «хвостах». Приведем конкретное решение при следующих значениях параметров. Величина поля п = 20, количество выстрелов к = 15, значения вероятностей попадания в корабли возьмем из таблицы, р11 = 0,83, р21 = 0,66. Если игрок А расположил корабли в углах игрового поля, то вероятность попадания в них при обстреле углов равна единице р22 =1. Если корабли расположены в центре поля, а игрок В вначале обстреливает углы, а затем ведет поиск случайным образом, то вероятность может быть, получена с помощью имитационной модели при следующих параметрах п = 16, к = 11, р12 = 0,76.
Игрок А должен использовать первую стратегию с вероятностью г1 = 0,82, а вторую стратегию с вероятностью г2 = 0,18.
Аналогичным образом можно провести исследование вероятности выбора стратегии игрока В: д1 = 0,68 д2 = 0,32.
Выбор стратегии игроком А, в соответствии с теорией игр, осуществляется с помощью некоторого генератора случайных чисел, генерирующих например нуль и единицу с вероятностями г1, г2. Игрок В выбирает стратегию, используя другой генератор с вероятностями д2.
Предложенный в работе подход позволяет определить вероятности обнаружения кораблей за конечное число выстрелов для поля любой конфигурации и построить соответствующую матричную игру.
Приведенный пример анализа игры показывает возможность использования логических игр для углубленного изучения таких разделов математики, как комбинаторика, теория множеств и теория вероятностей. Заметим, что изучение даже простейших игровых ситуаций позволяет сформулировать проблемы, которые представляют интерес для современной информатики и теории поиска.
В заключение авторы выражают признательность доценту кафедры теории вероятностей факультета вычислительной математики и кибернетики Нижегородского государственного университета им. Н.И. Лобачевского Баркалову Александру Валентиновичу и Зорину Вла-
димиру Александровичу за проявленный интерес к работе и обсуждение развиваемых в ней подходов.
'Выбор с&ра&егми игрокам. 4 ...
с помащш
Кеко&орого геКерл&орл шсел,
Литература.
1. Бе^енко М Как выучить на творца. М.: Математическое образование, 1999, №2-3.
2. Яетроаян Л. А., Гарнае^ А.Ю. Игры поиска. СПб.: Изд. СПбГУ. 1992.
3. Яетроаян Л.А., Зенкевич Я.А., Селина £.А. Теория игр. М.: Высш. шк., Книжный дом «Университет», 1998.
4. А.Я. Вероятность. М.: Наука, 1980.
5. Ляхо# А.Ф. Математика и компьютерные игры. СПб.: Компьютерные инструменты в образовании, 2002, № 1.
Ляхов Александр Федорович, доцент кафедры теоретической механики механико-математического факультета Нижегородского государственного университета им. Н.И. Лобачевского (НГУ).
Ляхов Федор Александрович, студент I курса «Высшей школы1 общей и прикладной физики» НГУ.
© Наши авторы: 2002. Our authors, 2002,