Метод Монте-Карло придумал Станислав Улам; точнее, сделал из него рабочий инструмент. Улам – американский математик родом из Польши, ученик Банаха.
С 1943 года он работал в лаборатории Лос-Аламос, в Манхэттенском проекте; в 1946 году случилось ему как-то заболеть. Выздоравливая, он проводил время за пасьянсом Кэнфилд. Улам – профессиональный математик; а значит, видел задачи на каждом шагу. Вот и заинтересовался – от нечего делать – какова вероятность того, что пасьянс сойдется. Комбинаторике эта задача не поддавалась, и тогда он решил взять да и провести, скажем, сотню экспериментов и прямо подсчитать долю успехов.
А потом перешёл к тому, чем его мозг был занят на работе постоянно, – к физике. В то время прогресс в ядерной физике тормозился нерешенной задачей – процессом рассеивания нейтронов на ядрах. Улам сообразил, что его подход даст решение сложного дифференциального уравнения, только нужно его представить в виде случайного процесса.
Он поделился своими соображениями с Нейманом, и они решили опробовать идею на реальной задаче. В Лос-Аламосе соблюдали секретность, и задаче дали имя – Монте-Карло; с намеком на дядю Улама – азартного игрока.
Метод Монте-Карло стал одной из составляющей успеха в создании водородной бомбы. Военные разработки, конечно, сильно продвигают математику вперед. Там ставят амбициозные задачи, да и мотивация повешенная – кнут и пряник никто не отменял.
С методом Монте-Карло проще всего познакомиться на примере вычисления площади.
Вот на картинке фигура внутри квадрата. Как найти ее площадь? Мои знакомые биологи делали так: вырезали квадрат из бумаги и взвешивали на высокоточных весах. Потом маникюрными ножницами вырезали фигуру и взвешивали и её тоже. Остается найти отношение площадей как отношение весов.
Метод Монте-Карло работает почти так же, только вместо весов у нас – случайные точки. Равномерно набросаем на прямоугольник точек наугад. Сосчитаем точки внутри фигуры и вообще все, попавшие в прямоугольник. Отношение этих чисел даст отношение площадей, а площадь прямоугольника найти совсем просто, во втором классе еще научились.
Для плоской фигуры метод Монте-Карло не так важен, тут можно было бы просто палетку наложить; но в многомерных задачах он реально полезен.
Откуда же набрать случайных точек для этого метода?
В наше время генераторы случайных чисел изначально встроены в языки программирования; а в середине XX века такой роскоши еще не было – генераторы распространились вслед за методом, а не наоборот. Для Монте-Карло компьютер должен выдать не одну точку, а длинную последовательность. Числа в этой последовательности должны быть жестко детерминированы, чтобы компьютер мог их выдавать по формуле; и вместе с тем выглядеть они должны совершенно случайно, непредсказуемо. Так ведут себя хаотические последовательности (см. «Откуда в математике хаос»). На самом деле генераторы выдают не случайные числа, а псевдослучайные – непредсказуемые, но жестко детерминированные. Они используются не только в методе Монте-Карло, но и в многих других, – например, в задачах оптимизации. Математики и хаос приспособили себе на службу, и он постоянно, день за днем, работает на нас в самых разных алгоритмах, хотя мы обычно об этом и не догадываемся.