Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая_Сpp.rtf
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
717.07 Кб
Скачать

С одержание

Введение

1 Постановка задачи

2 Математические и алгоритмические основы решения задачи

3 Функциональные модели и блок-схемы решения задачи

4 Программная реализация решения задачи

5 Пример выполнения программы

Заключение

Список использованных источников и литературы

                  1. Вступ

Гра «морський бій» досить добре відома і популярна. Практично кожен школяр у той чи інший період свого життя грав у цю гру. В останні роки у зв'язку з появою комп'ютерів і нових навчальних і розвиваючих програм знову зріс інтерес до неї. Якщо набрати запит про пошук ігри в Інтернет, то пошукова машина видасть кілька тисяч посилань. Тут і реклама, і різні варіанти гри, і якісні дослідження оптимальних стратегій гри і т.д. Але мало хто знає про те, що ця гра має серйозне наукове і практичне додаток, і для її аналізу можуть бути використані сучасні математичні та комп'ютерні методи. Як приклад такого додатка можна навести проблему ефективного пошуку записів у великих базах даних, що володіють складною багаторівневою структурою.

Зупинимося на деяких основних правилах класичного варіанту гри. Перший гравець, гравець А, розставляє кораблі на квадратному ігровому полі з n клітин (зазвичай це поле клітин). Кораблі діляться на класи: одноклітинні, двохклітинні, трьохклітинні і чотирьохклітинні. Гравець В на своєму полі розставляє свої кораблі. Зауважимо, що кораблі не повинні торкатися один одного. Гра полягає в тому, що гравці по черзі називають координати клітин, в яких, як вони припускають, розташовані кораблі супротивника, тобто як би роблять постріл з обраної клітці. Про попадання або промаху гравцеві повідомляється після пострілу. Гра продовжується до тих пір, поки у одного з гравців не будуть знищені всі кораблі.

На перший погляд, ця гра носить чисто імовірнісний характер, так як гравці ведуть обстріл, не знаючи розташування кораблів супротивника. Але, придбавши деякий досвід гри, можна помітити, що існують стратегії розстановки кораблів, які зменшують вірогідність попадання в останній одноклітинний корабель. Наприклад, можна розташувати весь флот таким чином, щоб він займав мінімальне місце на ігровому полі, а один або два кораблі ставлять на просторі, що залишився як на малюнку 1. Пошук кораблів також можна проводити, дотримуючись певної системи, яка дозволяє найбільш швидко виявити на початку гри багатоклітинні кораблі, а потім на просторі, що залишився шукати одноклітинні кораблі.

Рисунок 1

Ці якісні міркування показують, що у гравців А і В існує безліч нерівнозначних різних стратегій гри, тобто може бути поставлене питання про пошук оптимальних стратегій.

Зауважимо, що все це розмаїття стратегій, як це буде показано нижче, визначається правилом, що забороняє ставити кораблі впритул, а також правилом закінчення гри.

Надалі будемо розглядати тільки односторонню гру: гравець А розставляє кораблі , а гравець В веде їх пошук .

Математичну модель гри можна будувати двома способами. Перший спосіб полягає в тому, що після кожного пострілу враховуються зміни поля гри та ймовірності виявлення кораблів. Така форма гри називається розгорнутою, а сама гра представляється багатокроковою. Складність застосування цього підходу пов'язана з необхідністю визначення ймовірностей подій, які є комбінацією великого числа елементарних подій. При збільшенні числа пострілів k кількість комбінацій зростає пропорційно k! (факторіалів k).

Другий спосіб полягає в тому, що в якості вихідної безлічі подій розглядається безліч стратегій, елементи яких представляють повну послідовність n пострілів. У цьому випадку гра стає однокрокової, тобто гравець проводить вибір не однієї клітини при пострілі, а вибирає послідовність з n пострілів. Така форма гри називається нормальною. Другий підхід до побудови гри носить інтегральний характер, проте, в цьому випадку виникає проблема, пов'язана з поняттям закінчення гри.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]