74
правки
Изменения
→Описание алгоритма
Пусть <tex> B = \{b_1, b_2 ..., b_k\} </tex> - множество различных элементов, которые могут находиться в данном комбинаторном объекте.
Будем получать элементы по порядку: сначала определим, какой элемент будет стоять на первом месте, потом на втором и так далее. Считаем, что мы построили префикс длинны <tex>i</tex>: <tex>I = \{a_1, a_2, \ldots, a_i\}</tex>. Будем выбирать элемент <tex>a_{i+1}</tex> из множества всех возможных так, чтобы вероятность выбора элемнта <tex>b_jb \in B </tex>, была пропорциональна числу комбинторных обьектов размера <tex> n </tex> с префиксом <tex>\{a_1, a_2, \ldots, a_i, b_j\}I + b </tex>. Для этого разобъем отрезок чисел <tex>[1, s\]\subset\mathbbN </tex>. где <tex> s </tex> - число различных комбинаторных объектов с текущим префиксом, на <tex> k </tex> диапазонов так, чтобы размер диапазаоны <tex> d_j </tex>был равен числу объектов с префиксом <tex> I + b_j </tex>.