Метод Монте-Карло – история названия

реклама
или метод статистического моделирования
п. Лисий Нос
11.07.2013
 в 1862 году финансист и банкир Морис Блан предложил построить
в Монако целый игорный город для решения финансовых проблем
 в 1866 году город Монте-Карло основан и назван в честь принца
Карла III
 Монте-Карло - административная территория княжества Монако,
«крупнейший» город, столица княжества
 Монте-Карло всемирно известен своими казино, отелями, пляжами
 В 1949 году
 создана
первая
быстродействующая
ламповая
ЭВМ
универсального назначения МЛКК-1, сконструированная учеными
Манчестерского университета (Англия), теоретические основы
которой
были
заложены
американским
математиком
Дж. фон Нейманом
 в свет выходит статья Н.Метрополиса и С.Улама «Метод МонтеКарло»
 Именно Дж. Нейман совместно с С. Уламом предложили первый
вариант метода Монте-Карло в связи с работой но расчету ядерных
реакторов
 Эффективное применение метода Монте-Карло, всегда связанное с
«перемалыванием» большого количества цифр, стало возможным
только благодаря применению ЭВМ
Станислав
Улам
Николас
Метрополис
Статистическое моделирование (по определению БСЭ)–
численный метод решения математических задач, при котором
искомые величины представляют вероятностными характеристиками
какого-либо случайного явления, это явление моделируется, после
чего нужные характеристики приближённо определяют путём
статистической обработки «наблюдений» модели.
Схема проведения вычислений в статистическом моделировании
 искомую величину представляют математическим ожиданием
числовой функции f от случайного исхода w некоторого явления (т. е.
интегралом по вероятностной мере Р):
E ( f ( )) 

f ( ) dP
 рассматривают оценку математического ожидания случайной
величины,
где 1 ,..., N – исходы,
f (1)  ...  f ( N )
Q  E ( f ( )) 
, состоявшиеся в результате
N
наблюдений
 таким образом, схема состоит в проведении
серии экспериментов
Метод Монте-Карло (ММК) позволяет решать задачи, в условиях
которых присутствует элемент неопределенности.
Пример 1.
При подбрасывании монеты может выпасть “орел” или
“решка”. Найти некоторую величину, например, долю
выпадения “орлов”.
Идея метода:
 На ЭВМ с помощью ДСЧ имитируются ситуации или
процессы, возможные по условию задачи, и которые
приводят к тем или иным исходам
 Все различные исходы проявятся, если многократно
рассмотреть случайное развитие одного и того же
начального состояния (смоделировать некоторое
количество историй — N)
 Закон больших чисел «разыгрываемых» историй
утверждает, что ср. арифметическое полученных в
каждом розыгрыше значений исследуемой величины
имеет предельное (при увеличении N) искомое
значение
 Это вероятностная сходимость. Погрешность
определения предельного значения
пропорциональна 1/ N
 Физика
1) Вычисление площади фигуры
 Химия
•
 Экономика
•
 Математика
•
 Оптимизация
•
 Теория
управления
И др.
N=1000
Фигура внутри единичного
квадрата
Сгенерируем в квадрате N
случайных точек
Пусть N* – количество точек,
попавших внутрь фигуры
Тогда при достаточно больших
значениях N площадь фигуры F
может быть оценена как
*
S
N
N
2) Вычисление числа Пи
(“Hit-or-Miss” – «попал - не попал»)
•
•
•
Круг единичного радиуса вписан в
квадрат со стороной 2: Sкв = 4
Сгенерируем в квадрате N случайных
точек
Пусть N* – количество точек,
попавших внутрь круга:
If x2+y2<=1 then N* = N* +1
•
Тогда при достаточно больших
значениях N площадь круга может
быть оценена как число Пи:
S (Пи) = 4N*/N
N=10000
Пример 2 (муниципальный этап олимпиады по информатике 1994 года по Ленинградской
области).
Три игрока (с номерами 1, 2 и 3), имеющие изначально X, Y и Z жетонов соответственно,
играют в следующую игру. В каждом раунде каждый игрок ставит на кон один жетон. Затем
бросают кубик, на котором цифры 4, 5, 6 заменены на 1, 2 и 3. При выпадении числа i игрок
с номером i забирает с кона все три жетона. Игра заканчивается, когда кто-нибудь из
игроков проигрывает все жетоны. Введем функцию f(X, Y, Z), как среднюю длительность игры
(среднее количество раундов) при заданных начальных капиталах X, Y, Z. Например, f(2, 2, 2)
= 2. Ваша задача состоит в том, чтобы определить эту функцию. Для этого необходимо
смоделировать
игру
на
компьютере,
накопить
экспериментальные
результаты,
проанализировать их, а затем выдвигать гипотезы о виде функции f, проверять их для
разных входных значений, и, отбросив неподходящие, найти решение.
Замечание.
Моделирование игры не вызывает
трудности. Также очевидно, что вид
функции симметричен относительно
порядка
задания
входных
параметров f(X, Y, Z)=f(Y, X, Z) и т.д.
Сложность задачи заключается в
нахождении вида функции, так как
результаты
моделирования
определяются не точно.
f(X, Y, Z) = XYZ / (X+Y+Z-2)
Данная задача достаточно хорошо характеризует метод
Монте-Карло, а именно:
Идею метода
ожидаемый результат игры может быть оценен
усреднением
результатов
большого
числа
игр
(это число так и называется
– математическим
ожиданием или средним значением).
То есть результат приближенно равен числу
1 N
x    xi ,
N i 1
где xi – результат игры i, а N- число всех проведенных
игр (испытаний)
Достоинство метода
незнание
a priori (до опыта) функциональных
зависимостей
исследуемой
задачи
в
целом,
выявление этих зависимостей a posteriori (после опыта).
Недостатки метода
неопределенное время расчета (варианты примера
при больших числах X, Y, Z);
приближенное вычисление
результата.
Последний недостаток компенсируется тем, что с использованием данного метода вместе со
значением x может одновременно определяться и его погрешность S по формулам:
x
N
S2
Sx 
N
2
При больших N формулу можно упростить:
В пределах [
-
x
а в пределах [
x
Sx
,
x
+
 2 S x ] или [
Sx
S2 
 (x
i 1
S x x
2
2
i
 x)2
N 1
2
, где
1 N 2
x    xi
N i 1
2
] с достоверностью 68.3% находится искомая величина,
x  3S x ] достоверность уже 95.4% и 99.7% соответственно.
Поэтому метод по праву называют порой прецизионным или точным в смысле, что известна точность
рассчитываемых величин, и это может служить точкой отсчета для проверки программ, использующих
другие приближенные методы.
Иногда, чтобы избежать потери значащих цифр при суммировании, среднее значение определяется в
программе после каждого испытания по формуле:
xn 
(n  1)  xn1 xn

n
n
ММК применяется для выбора наилучших стратегий в задачах, где
присутствуют много случайных факторов.
Пример 3 «Лучшее пари для простаков».
Игрок A выбирает комбинацию из цифр 0 и 1 длиной 3 знака (например, 001). Игрок B
выбирает свою комбинацию (отличную от игрока A). Подбрасывается монета и
записываются результаты бросания (например, 101101..., где 0 обозначает «орел»,
а 1 — «решка»). Игра прекращается в тот момент, когда в последовательности цифр на
конце возникает комбинация, выбранная A или B (побеждает A или B соответственно). Игра
повторяется.
а) Оценить шансы на выигрыш каждого из игроков R(A,B) (т.е. отношение числа выигрышей
игрока B к числу выигрышей игрока A).
б) Для выбранной игроком A комбинации определить такую комбинацию для игрока B,
которая ему дает больше шансов на выигрыш.
Указание. При решении задачи
полученные результаты по пункту a) не
будут совпадать с данными из таблицы,
так как число опытов ограничено, тем
не менее, позволяют дать качественный
ответ по пункту б).
Вывод: Пари является
беспроигрышным (!) для игрока B.
АB
000
001
010
011
100
101
110
111
000
-
1
2/3
2/3
1/7
5/7
3/7
1
001
1
-
2
2
1/3
5/3
1
7/3
010
3/2
1/2
-
1
1
1
3/5
7/5
011
3/2
1/2
1
-
1
1
3
7
100
7
3
1
1
-
1
1/2
3/2
101
7/5
3/5
1
1
1
-
1/2
3/2
110
7/3
1
5/3
1/3
2
2
-
1
111
1
3/7
5/7
1/7
2/3
2/3
1
-
ММК применяется для определения вероятности наступления
какого-либо события.
Пример 4 «Чипполино и сыщик».
Пусть
дана
ось
с
отмеченными
на
ней
целочисленными точками. Предположим, что
Чипполино первоначально находится в точке N, в
точке 0 находится убежище, а сыщик Моркоу
находится в точке M (0 < N < M). Чипполино ищет
убежище случайным образом, блуждая по соседним
целочисленным точкам. Если он попадет в точку 0,
то спрячется, а если попадет в точку M, то угодит в
руки сыщика. С какой вероятностью Чипполино
скроется от сыщика?
Примечание: Под вероятностью какого-либо события P мы
будем понимать предельное значение частоты события, а
именно: отношение числа успешных (приведших к
появлению данного события) испытаний Nу к общему числу
проведенных испытаний N, то есть
P  Nу / N.
Чем больше мы проведем испытаний, тем точнее мы
определим численное значение вероятности. Очевидно, что
вероятность P удовлетворяет условию:
0  P  1.
ММК универсален и применим как для задач, в условиях которых
присутствует элемент неопределенности, так и для
полностью детерминированных задач.
Пример 5 «Три окружности» (региональный этап олимпиады по информатике 1999 года по
Ленинградской области).
Найти площадь пересечения трех окружностей с заданными радиусами и координатами
центров окружностей.
Указание. Наилучший путь - это «использовать
геометрию» для анализа частных случаев
(когда нет пересечения, одна окружность
внутри другой), а метод Монте-Карло - для
общего случая.
Генератор случайных чисел можно использовать
для построения различных геометрических объектов.
Пример 6 «Лабиринт».
Лабиринты
служат
основой
многочисленных
игровых программ и олимпиадных задач.
Рассмотрим
лабиринта.
алгоритм
построения
простейшего
Задача 1. Оценить чего больше: несократимых или сократимых дробей.
Более строгая формулировка: какова вероятность того, что наудачу взятая дробь несократима?
Ответ достаточно сложен и равен 6/2 = 0.6079... (Н.Я. Виленкин, журнал “Квант”, №10, 1989 г)
Указание:
Рассмотрите несократимые дроби вида a/b, где 1 a, b .N. Количество их f(N). Нужно найти
предел f(N)/N2 для больших чисел N.
Выберите случайные натуральные числа (не превосходящие фиксированного достаточно
большого числа N) для числителя и знаменателя дроби. Повторите «эксперимент» n раз,
подсчитывая количество m несократимых дробей, используя алгоритм Эвклида для
нахождения наибольшего общего делителя числителя и знаменателя. Отношение m/n дает
оценку доли несократимых дробей.
Задача 2. Два цилиндра одинакового радиуса R=1 пересекаются под прямым углом. Найти
объем V их общей части.
Указание:
В журнале “Квант” (№2, 1988 г.) приводится геометрический формализм решения задачи:
V = 16R3/3.
Задача 3. На окружности задана точка, две другие точки выбираются на окружности
произвольно. Какова вероятность, что треугольник с вершинами в этих точках –
остроугольный?
Указание: Положение случайной точки на окружности можно задавать дугой в радианах от
заданной фиксированной точки (например, против часовой стрелки).
Тогда угол измеряется половиной дуги между его сторонами.
Задача 4 «Салфетка Серпинского».
Салфетку
Серпинского
можно
нарисовать
с
помощью
рекурсивного рисования средних линий треугольника.
Но существует и такой алгоритм с использованием случайных
чисел. Возьмите произвольный треугольник и выберите любую
точку внутри него. Следующей точкой возьмите середину отрезка
от заданной точки до произвольно выбранной вершины
треугольника. Принимая полученную точку за исходную,
продолжите процесс.
Оказывается, казалось бы «случайный» разброс точек также
создает закономерное кружево как на рисунке.
Задача 5. Смоделируйте равномерное распределение точек на сфере.
Указание.
Так как три координаты связаны уравнением сферы, то в качестве
независимых величин выберем координату Z и угол , который
определяет положение точки на круге, параллельном X-Y плоскости (на
высоте Z) от оси X. Используем свойство, что шаровым сегментам равной
высоты по оси Z соответствуют на сфере области равной площади.
Алгоритм по шагам:
1) Выбираем точку z, равномерно распределенную на [-1,1].
2) Выбираем угол , равномерно распределенный на [0, 2).
3) Полагаем r = 1  z 2 .
4) Полагаем x = r  cos().
5) Полагаем y = r  sin ().
Задача 6 (заключительный этап Всероссийской олимпиады по информатике 2001 года).
В МЧС поступило сообщение о возможном лесном пожаре в заданном
квадрате тайги. Для поиска места возгорания было послано N самолетов.
Однако ни один из экипажей пожар не обнаружил.
Известно, что с самолета видна полоса тайги, границы которой находятся
на расстоянии 50 км справа и слева от той линии на поверхности Земли,
над которой пролетает самолет, причем точки, находящиеся на
расстоянии ровно 50 км от этой линии, все еще видны.
Донесение с каждого самолета содержало информацию о том, в каких
двух различных точках (xb, yb) и (xe, ye) самолет входил в заданный
квадрат и покидал его соответственно. Между этими точками самолет
двигался строго по прямой.
Входные данные:
В первой строке файла записано натуральное число L – размер заданного квадрата тайги в км (0<L1000). Во
второй строке – натуральное число N (1N100) – количество самолетов. В каждой из последующих N строк
записано донесение с самолета – четыре вещественных координаты xb, yb, xe, ye. Координаты заданы в км.
Стороны квадрата тайги параллельны осям координат, его левый нижний угол находится в точке с
координатами (0,0), а правый верхний – в точке (L, L).
Выходные данные:
Выходной файл должен содержать одну строку. Если заданный квадрат был просмотрен полностью, то эта
строка должна состоять из слова OK, написанного заглавными латинскими буквами.
В противном случае в этой строке должны быть записаны через пробел координаты x и y какой-либо точки,
которая не попала ни в одну из просмотренных полос. Координаты нужно выводить в км с ошибкой не более
одного метра (1 км = 1000 м).
входной файл
выходной файл
Пример:
245
1
26.1 0 193.568 245
155.123 100
1. Есипов А.С., Паньгина Н.Н., Громада М.И. Информатика (задачник).
Санкт-Петербург, “Наука и Техника”, 2001
2. Паньгина Н.Н. Статистическое моделирование. Метод Монте-Карло. /
Статья в газете «Информатика» (Приложение к 1 сентября), №№ 45, 46,
2004
3. Ю.Н. Прошин и С.К. Сайкин ЧМММ. Лекция 3
4. Мееров И.Б. Статистическое моделирование и параллельные вычисления
Нижний Новгород, 2005 (Проект «Виртуоз»)
5. http://themanhattan.ru/travel.html
6. http://ru.wikipedia.org/wiki/ Монте-Карло
7. http://lessons-photoshop.org/istoriya-evm/vozniknovenie-i-razvitiemetoda-monte-karlo-ego-sovremennie-realizatsii
Паньгина Нина Николаевна,
учитель информатики высшей квалификационной категории,
Заслуженный учитель РФ
E-mail: [email protected]; [email protected]
Скачать