СОДЕРЖАНИЕ
Введение
1 Постановка задачи
2 Математические и алгоритмические основы решения задачи
3 Функциональные модели и блок-схемы решения задачи
4 Программная реализация решения задачи
5 Пример выполнения программы
Заключение
Список использованных источников и литературы
Введение
Игра «морской бой» достаточно хорошо известна и популярна. Практически каждый школьник в тот или иной период своей жизни играл в эту игру. В последние годы в связи с появлением компьютеров и новых обучающих и развивающих программ вновь возрос интерес к ней. Если набрать запрос о поиске игры в Интернет, то поисковая машина выдаст несколько тысяч ссылок. Здесь и реклама, и различные варианты игры, и качественные исследования оптимальных стратегий игры и т.д. Но мало кто знает о том, что эта игра имеет серьезное научное и практическое приложение, и для ее анализа могут быть использованы современные математические и компьютерные методы. В качестве примера такого приложения можно привести проблему эффективного поиска записей в больших базах данных, обладающих сложной многоуровневой структурой.
Остановимся на некоторых основных правилах классического варианта игры. Первый игрок, игрок А, расставляет корабли на квадратном игровом поле из n клеток (обычно это поле клеток). Корабли делятся на классы: одноклеточные, двухклеточные, трехклеточные и четырехклеточные. Игрок В на своем поле расставляет свои корабли. Заметим, что корабли не должны касаться друг друга. Игра состоит в том, что игроки по очереди называют координаты клеток, в которых, как они предполагают, расположены корабли противника, то есть как бы производят выстрел по выбранной клетке. О попадании или промахе игроку сообщается после выстрела. Игра продолжается до тех пор, пока у одного из игроков не будут уничтожены все корабли.
На первый взгляд, эта игра носит чисто вероятностный характер, так как игроки ведут обстрел, не зная расположения кораблей противника. Но, приобретя некоторый опыт игры, можно заметить, что существуют стратегии расстановки кораблей, которые уменьшают вероятность попадания в последний одноклеточный корабль. Например, можно расположить весь флот таким образом, чтобы он занимал минимальное место на игровом поле, а один или два корабля ставят на оставшемся пространстве как на рисунке 1. Поиск кораблей также можно проводить, придерживаясь определенной системы, которая позволяет наиболее быстро обнаружить в начале игры многоклеточные корабли, а затем на оставшемся пространстве искать одноклеточные корабли.
Рисунок 1
Эти качественные рассуждения показывают, что у игроков А и В существует множество неравнозначных различных стратегий игры, то есть может быть поставлен вопрос о поиске оптимальных стратегий.
Заметим, что все это разнообразие стратегий, как это будет показано ниже, определяется правилом, запрещающим ставить корабли вплотную, а также правилом окончания игры.
В дальнейшем будем рассматривать только одностороннюю игру: игрок А расставляет корабли, а игрок В ведет их поиск.
Математическую модель игры можно строить двумя способами. Первый способ состоит в том, что после каждого выстрела учитываются изменения поля игры и вероятности обнаружения кораблей. ............