Компьютерра PDA N71 (06.11.2010-13.11.2010) - Компьютерра
Шрифт:
Интервал:
Закладка:
К слову, при получении чисел (шифров) в криптографии последнее требование желательно, но не обязательно. Здесь нет нужды увязывать наборы нулей и единиц с приведенным выше представлением стандартного числа αj. Если обнаруживаются слишком длинные серии нулей или единиц, то реализуются специальные алгоритмы, удаляющие следы повторяемости. Это тоже обуславливает существенное отличие "криптографических" чисел от стандартных случайных чисел, используемых в методах Монте-Карло: для последних длинные серии нулей и единиц в мантиссе вполне допустимы.
- Какие сигналы можно использовать в физических датчиках?
- Можно крутить рулетку, раскрасив предварительно круг в два цвета (например, в красный и черный); красный цвет может соответствовать единице, черный - нулю. К слову, этот возможный способ получения стандартных случайных чисел обусловил название методов Монте-Карло, ведь в знаменитом игорном центре тоже крутят рулетку. Недостаток этого способа получения случайных чисел: долгое время реализации и отсутствие автоматизации процесса получения случайных нулей и единиц. Зато здесь более-менее гарантирована вероятность 1/2, если круг раскрашен двумя цветами пополам.
Автоматизация процесса формирования мантиссы стандартного случайного числа связана с применением различных случайных шумов. Иногда используются шумы самого компьютера. Более надежными и быстрыми считаются квантовые генераторы случайных шумов, в которых используются специальные свойства потоков малых (элементарных) частиц.
Проблему получения равных вероятностей появления нуля и единицы часто решают следующим образом. Сигнал замеряют дважды. Возможны следующие исходы: оба раза сигнал был (состояние СС), оба раза сигнала не было (состояние НН), первый был - второго не было (состояние СН) и первый не был - второй был (состояние НС). Если даже вероятность появления сигнала не равнялась в точности 1/2, то все равно состояния НС и СН являются равновероятными. То есть можно фиксировать только эти два состояния (приписав, например, состоянию НС единицу, а СН - нуль), а состояния СС и НН игнорировать.
Есть много ученых и практиков, убежденных в том, что только физические датчики могут дать "настоящие", "поистине случайные" наборы нулей и единиц. Ирония ситуации состоит в том, что уверенность этих исследователей часто зиждется на незнании природы того или иного шума (а вдруг он возникает благодаря каким-то вполне детерминированным - неслучайным - процессам?!).
Применение физических датчиков в расчетах по методу Монте-Карло имеет следующие трудности и недостатки. Во-первых, надежный датчик представляет собой недешевый прибор, в котором кроме всего прочего должны быть предусмотрены быстрые обмены информацией с компьютером. Во-вторых, требуется постоянная проверка выдаваемых датчиком последовательностей (здесь используется мощный аппарат критериев и методик математической статистики), так как даже сверхнадежное техническое устройство дает сбои. В-третьих, имеются отмеченные выше трудности получения равномерного распределения стандартного случайного числа.
Поэтому большинство расчетов по методу Монте-Карло производится с использованием генераторов псевдослучайных чисел.
- Как устроены генераторы псевдослучайных чисел?
- Большинство таких генераторов основаны на применении так называемого метода вычетов и его модификаций. Идея довольно проста. Берется дробное число αi с большим "хвостом" (то есть с длинной мантиссой), умножается на большое целое число M, в результате получается большое целое плюс дробная часть. Потом целую часть результата убирают, а дробную берут в качестве следующего числа:
αi+1 = {Mαi}
Оказывается, если множитель M взять достаточно большим (например, в современных генераторах используются множители порядка M = 5100109) получается, что "хвосты" αi+1 ведут себя как настоящие стандартные случайные числа α.
На самом деле "настоящее" (теоретическое) значение стандартного случайного числа получить невозможно, так как α представляет собой дробь с бесконечной мантиссой, состоящей из нулей и единиц (такую дробь в принципе воспроизвести нельзя). Здесь ситуация похожа на проблему воспроизведения вещественных (в частности, иррациональных) чисел на компьютере.
На практике в методе вычетов при представлении чисел αi берут "длинные" мантиссы (например, в современных генераторах используется T = 128 разрядов мантиссы).
В методе вычетов имеется также проблема периодичности: не позднее, чем через 2T шагов произойдет "зацикливание" генератора. В расчетах по методу Монте-Карло не рекомендуется использование более чем L/2 обращений к генератору; здесь L - длина периода, равная числу шагов метода вычетов, после которого начинается повторение последовательности αi. При удачном подборе множителя M можно получить величину периода L = 2T - 2 (это едва ли не "рекордный" результат). Для T = 128 величина L/2 равна 2125, этого вполне хватает для широкого класса современных задач, решаемых с помощью численного статистического моделирования.
Решение проблем конечности мантиссы (периодичности) не гарантирует качества получаемых чисел αi. Требуется проведение тестов, показывающих, что эти числа по свойствам близки к настоящим (теоретическим) стандартным случайным числам α (тем, что имеют бесконечную мантиссу). Здесь используют широкий спектр критериев и методик математической статистики.
Тестом можно считать и любую задачу с известным ответом, решаемую методом Монте-Карло. В этом смысле процесс проверки генераторов псевдослучайных чисел неограничен. Более того, для любого генератора, основанного на методе вычетов, можно найти "тяжелую" задачу, с которой он "не справится" (то есть правильный ответ не получится). Для такой задачи придется проводить усовершенствование метода вычетов. В частности, можно увеличить длину контролируемой мантиссы T и множитель M.
Следует, однако, учитывать, что увеличение этих величин ведет к росту компьютерных затрат при обращении к подпрограммам типа RAND и RANDOM (если в этих подпрограммах "запаян" метод вычетов). Вообще следует отметить, что обращение к генератору случайных чисел - достаточно дорогостоящая компьютерная операция (по сравнению, например, с простым сложением или умножением чисел). Поэтому считается, что тот алгоритм метода Монте-Карло будет работать эффективнее (быстрее), который использует меньше обращений к генератору псевдослучайных чисел.
- А какие задачи решаются методом Монте-Карло?
- В пятидесятые годы XX столетия расцвет метода Монте-Карло был связан с разработкой проблемы защиты ядерных реакторов. Прежде чем конструировать системы защиты от излучения "в железе", проводились компьютерные расчеты на основе математической модели процесса, схематично выглядевшей следующим образом.
Излучение трактовалось как поток малых частиц ("фотонов"), пролетающих сквозь слой защиты, в котором хаотично расположены крупные частицы. "Фотон", сталкиваясь с крупной частицей, либо захватывается ею ("поглощается"), либо рассеивается по некоторому вероятностному закону. Можно проследить (реализовав на компьютере) траектории фотонов и подсчитать, какая доля фотонов поглощается в слое защиты. Если эта доля близка к единице, то защита может считаться хорошей.
При реализации траектории "фотона" до поглощения нужны выборочные значения случайных величин с различными законами распределения. Для получения таких значений используют преобразования стандартных случайных чисел αj.
Далее выяснилось, что с описанным случайным процессом движения "фотонов" можно соотнести определенное уравнение (интегральное уравнение Фредгольма второго рода), на основе которого можно строить так называемые весовые оценки для вычисления требуемых характеристик (функционалов) физического процесса. Введение весов позволяет в ряде случаев упростить компьютерную реализацию траекторий "фотонов".
Вычисляемые в данной задаче характеристики (функционалы) можно также трактовать как сумму интегралов бесконечной кратности.
Вообще в литературе метод Монте-Карло обычно представляется как специальный способ вычисления многократных интегралов. Часто для иллюстрации рисуют такую картинку.