Я зіткнувся з такою проблемою моделювання: заданий набір відомих реальних чисел, розподіл на визначається через
Я зіткнувся з такою проблемою моделювання: заданий набір відомих реальних чисел, розподіл на визначається через
Відповіді:
Ось досить очевидний рекурсивний пробовідбірник в кращому випадку (з точки зору ваг ), але експоненціальна в гіршому випадку.
Припустимо, ми вже вибрали та бажати вибрати . Нам потрібно обчислити
Тепер, звичайно, питання в тому, як зробити обчислення .
Якщо у нас це є , тоді для будь-якого з провідними записами , і так стає:
У протилежному випадку , у нас це є і так .
В іншому випадку ми повинні повторити, використовуючи .
Припустимо, що пам'ять не є проблемою, і ми можемо кешувати всі підрахунки в , на дереві - аж до того, що ми потрапили в один із «приємних» випадків, після якого будь-які дзвінки займають постійний час. (Нам все одно потрібно буде обчислити це все дерево, щоб вибрати.) Потім, колись це дерево о обчислень побудовано, пробовідбірник візьме лише час. Питання в тому, скільки часу потрібно для побудови дерева, або рівнозначно, яке воно велике.
Ми, звичайно, швидше потрапимо в "приємні" випадки, якщо сортуються, .
У кращому випадку, . Тоді ми негайно потрапляємо на "приємний" випадок для будь-якого або , тому побудова дерева займає постійний час, і займає весь пробовідбірник час.
У гіршому (відсортованому) випадку, . Тоді питання: наскільки велике загальне дерево?
Ну, і перші шляхи до припинення - це звичайно і довжини . Отже, дерево є повною до цієї глибини, і так містить щонайменшевузли. (У ньому є більше; ви, ймовірно, можете знайти це з таким аргументом, як ті, що використовуються в проблемах зі зруйнуванням азартних гравців, але я не міг знайти його за дві хвилини Гуглінга і мене це особливо не хвилює - досить погано ....)
Якщо у ваших налаштуваннях є лише кілька дуже великих це, мабуть, досить практичний підхід. Якщо всі подібної величини, ймовірно, це все ще експоненціально і занадто дорого для великих .