Jump to content

Метод псевдонима

В кружке слева имеется от 5 строк до 5 полей в столбце с надписью «Принятие». Первая и вторая коробки сплошные, и в каждой есть цифра 1. Вторая коробка наполовину заполнена, и в ней стоит цифра 0,5. Четвертая клетка заполнена цифрой 1, а пятая клетка заполнена на три четверти цифрой 0,75. В каждом поле есть стрелка, ведущая от заполненной области к его индексу, т. е. первое поле указывает на 1, второе — на двойку и т. д. Имеется второй столбец из пяти полей с надписью «Псевдоним», каждый из которых соответствует одному из первые коробки. Три пусты, но в третьем стоит 2, а в пятом — 1. Имеется стрелка от пустой части третьего поля в первом столбце к третьему квадрату во втором столбце и аналогично для пятого поля.
Диаграмма таблицы псевдонимов, представляющая распределение вероятностей〈0,25, 0,3, 0,1, 0,2, 0,15〉

В вычислительной технике метод псевдонимов представляет собой семейство эффективных алгоритмов выборки из дискретного распределения вероятностей , опубликованных в 1974 году Аластером Дж. Уокером. [ 1 ] [ 2 ] То есть он возвращает целочисленные значения 1 ≤ i n в соответствии с некоторым произвольным дискретным распределением вероятностей p i . Алгоритмы обычно используют время предварительной обработки O ( n log n ) или O ( n ) , после чего случайные значения могут быть извлечены из распределения за время O (1) . [ 3 ]

Операция

[ редактировать ]

Внутри алгоритм обращается к двум таблицам: вероятностей таблице U i и таблице псевдонимов K i (для 1 ≤ i n ). Чтобы получить случайный результат, бросают игральную кость , чтобы определить индекс i в двух таблицах. , Затем подбрасывают смещенную монету выбирая результат i с вероятностью U i или K i в противном случае (вероятность 1 - U i ). [ 4 ]

Более конкретно, алгоритм работает следующим образом:

  1. Сгенерируйте равномерную случайную величину 0 ≤ x < 1 .
  2. Пусть я = ⌊ nx ⌋ + 1 и y = nx + 1 − i . (Это делает i равномерно распределенным на {1, 2, ..., n }, а y равномерно распределенным на [0, 1) .)
  3. Если y < U i , верните i . Это предвзятый подбрасывание монеты.
  4. В противном случае верните K i .

Альтернативная формулировка таблицы вероятностей, предложенная Марсальей и др. [ 5 ] как и метод квадратной гистограммы , позволяет избежать вычисления y , вместо этого проверяя условие x < V i = ( U i + i − 1)/ n на третьем этапе.

Генерация таблиц

[ редактировать ]

Распределение может быть дополнено дополнительными вероятностями p i = 0, чтобы увеличить n до удобного значения, например степени двойки .

Чтобы сгенерировать две таблицы, сначала инициализируйте U i = np i . При этом разделите записи таблицы на три категории:

  • Группа «переполнения», где U i > 1 ,
  • «Неполная» группа, где U i < 1 и K i не инициализирован, и
  • «точно полная» группа, где U i = 1 или K i Инициализирована .

Если U i = 1 , соответствующее значение K i никогда не будет учитываться и не имеет значения, но значение K i = i является разумным. Это также позволяет избежать проблем, если вероятности представлены в виде чисел с фиксированной точкой , которые не могут точно представлять U i = 1 .

Если не все записи таблицы заполнены точно, повторите следующие шаги:

  1. Произвольно выберите переполненную запись U i > 1 и недостаточную запись U j < 1 . (Если один из них существует, то должен быть и другой.)
  2. Выделите неиспользуемое пространство в записи j для результата i , установив K j i .
  3. Удалите выделенное пространство из записи i, заменив U i U i - (1 - U j ) = U i + U j - 1 .
  4. Запись j теперь полностью заполнена.
  5. Назначьте запись i соответствующей категории на основе нового значения U i .

Каждая итерация перемещает по крайней мере одну запись в категорию «точно полная» (а последняя перемещает две), поэтому процедура гарантированно завершится не более чем через n -1 итераций. Каждая итерация может быть выполнена за время O (1) , поэтому таблицу можно настроить за время O ( n ) .

Все они [ 3 ] : 974  указывает, что ошибки округления с плавающей запятой могут привести к нарушению гарантии, упомянутой в шаге 1. Если одна категория опустошается раньше другой, для оставшихся записей U i может быть установлен в 1 с незначительной ошибкой. Решение, учитывающее плавающую запятую, иногда называют методом Уокера-Возе или методом псевдонима Восе .

Из-за произвольного выбора на шаге 1 структура псевдонима не уникальна.

Поскольку процедура поиска немного быстрее, если y < U i (поскольку с K i не нужно обращаться), одной из целей во время создания таблицы является максимизация суммы U i . Оптимальное выполнение этого оказывается NP-трудной задачей . [ 5 ] : 6  но жадный алгоритм достаточно близок к этому: грабить у самых богатых и отдавать самым бедным. То есть на каждом шаге выбирают наибольшее U i и наименьшее U j . Поскольку для этого требуется сортировка U i , это требует O ( n log n ) времени .

Эффективность

[ редактировать ]

Хотя метод псевдонимов очень эффективен, если генерирование равномерного отклонения само по себе происходит быстро, бывают случаи, когда он далек от оптимального с точки зрения использования случайных битов. полной точности Это связано с тем, что он каждый раз использует случайную величину x , даже если требуется всего несколько случайных битов.

Один случай возникает, когда вероятности особенно хорошо сбалансированы, поэтому многие U i = 1 . Для этих значений i y K i не требуется, и создание является пустой тратой времени. Например, если p 1 = p 2 = 1 2 , то 32-битная случайная величина x может использоваться для генерации 32 выходных данных, но метод псевдонима сгенерирует только один.

Другой случай возникает, когда вероятности сильно несбалансированы, поэтому многие U i ≈ 0 . Например, если p 1 = 0,999 и p 2 = 0,001 , то в большинстве случаев для определения применимости случая 1 требуется всего несколько случайных битов. В таких случаях табличный метод, описанный Marsaglia et al. [ 5 ] : 1–4  является более эффективным. Если мы делаем много выборов с одинаковой вероятностью, нам в среднем может потребоваться гораздо меньше, чем один несмещенный случайный бит. Используя методы арифметического кодирования , мы можем приблизиться к пределу, заданному функцией двоичной энтропии .

Литература

[ редактировать ]

Реализации

[ редактировать ]
  1. ^ Уокер, Эй Джей (18 апреля 1974 г.). «Новый быстрый метод генерации дискретных случайных чисел с произвольным распределением частот». Электронные письма . 10 (8): 127–128. Бибкод : 1974ElL....10..127W . дои : 10.1049/эл:19740097 .
  2. ^ Уокер, Аластер Дж. (сентябрь 1977 г.). «Эффективный метод генерации дискретных случайных величин с общими распределениями» . Транзакции ACM в математическом программном обеспечении . 3 (3): 253–256. дои : 10.1145/355744.355749 . S2CID   4522588 .
  3. ^ Jump up to: а б Восе, Майкл Д. (сентябрь 1991 г.). «Линейный алгоритм генерации случайных чисел с заданным распределением» (PDF) . Транзакции IEEE по разработке программного обеспечения . 17 (9): 972–975. CiteSeerX   10.1.1.398.3339 . дои : 10.1109/32.92917 . Архивировано из оригинала (PDF) 29 октября 2013 г.
  4. ^ «Дротики, кости и монеты: выборка из дискретного распределения» . KeithSchwarz.com . 29 декабря 2011 года . Проверено 27 декабря 2011 г.
  5. ^ Jump up to: а б с Марсалья, Джордж ; Цанг, Вай Ван; Ван, Цзинбо (12 июля 2004 г.), «Быстрая генерация дискретных случайных величин» (PDF) , Journal of Statistical Software , 11 (3): 1–11, doi : 10.18637/jss.v011.i03
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 053095a81a2bd1c8e9b68ccc6f160365__1719091260
URL1:https://arc.ask3.ru/arc/aa/05/65/053095a81a2bd1c8e9b68ccc6f160365.html
Заголовок, (Title) документа по адресу, URL1:
Alias method - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)