Изменения

Перейти к: навигация, поиск

Методы генерации случайного сочетания

16 байт добавлено, 10:48, 27 декабря 2012
м
Нет описания правки
* Удалим элемент из множества
Эту процедуру необъодимо необходимо повторить <tex>k</tex> раз.
===Псевдокод===
sort(res);
Здесь <tex>a[]</tex> --- исходный массив элементов, <tex>res[]</tex> --- массив, где будет находиться результат, <tex>exist[]</tex> --- такой массив, что если <tex>exist[i] == 1</tex>, то <tex>i</tex> элемент присутствует в множестве S.
Сложность алгоритма - <tex>O(n^2)</tex>
===Доказательство корректности алгоритма===
Заметим, что всего перестановок <tex>n!</tex>, но так как наш массив состоит только из 0 и 1, то перестановка только 0 или только 1 ничего в нем не меняет. Заметим, что число перестановок нулей --- <tex>(n - k)!</tex>, единиц --- <tex>k!</tex>. Следовательно всего уникальных перестановок --- <tex dpi = "180">{n! \over k!(n - k)!}</tex>. Все они равновероятны, так как содержат одинаковое количество равновероятных элементарных исходов. Но <tex dpi = "180">{n! \over k!(n - k)!}</tex> --- число сочетание из <tex>n</tex> по <tex>k</tex>. То есть каждому сочетанию сопоставляется одна уникальная перестановка. Следовательно, генерация сочетания происходит также равновероятно.
===Оценка временной сложности===
34
правки

Навигация