временная сложность алгоритма, который случайным образом выбирает m чисел из n чисел - PullRequest
0 голосов
/ 20 сентября 2019
  1. Есть n номеров.Он был разделен на две части.Каждому принадлежит одна из частей.Выбрать m чисел для сопряжения с данным номером B. С p выбрать номера из первой части, 1-p из следующей части.Реализовано это как loop flow .
first pick a number in n. marked as B.
while (pick m numbers)
    r <- random()
    if p <= r then
        while (1)
            randomly pick a number from the first n/2 numbers
            if (never picked before and not equal to B) then
                picked successful
                break
            end if
        end while
     else if p > r
        while (1)
            randomly pick a number from the other n/2 numbers
            if (never picked before and not equal to B) then
                 picked successful
                 break
           end if
        end while
     end if
end while

Сложность времени.

m * (mp, n/2) + m * (m(1-p), n/2) = m * (n/2)! * (1/((mp)!(n/2-mp)!) * (1/((m(1-p))!(n/2-m(1-p))!)?

Что такое сложность комбинации?O((n/2)!/((mp)!(n/2-mp)!).Может быть, эта программа не сложная комбинация.Я понятия не имею об этом.


Если числа не разбиты на две части, это означает, что выбирают m чисел из n чисел.То же самое со сложностью во времени выше?
first pick a number in n. marked as B.
while (pick m numbers)
    while (1)
        randomly pick a number from the n numbers
        if (never picked before and not equal to B) then
            pick successful
            break
        end if
    end while
end while

Сложность времени.

Это m * (m, n)= m * n!/m!(n-m)!?Что такое O(n!/m!(n-m)!)?

Если m=1, O(n!/m!(n-m)!)=O(n) или O(n!/m!(n-m)!)=O(n)=O(1)?

Если m=2, O(n!/2!(n-2)!)=O(1/2 n(n-1))=O(n^2)?Но он может работать только дважды и получить два правильных числа, так почему бы не O(2)?И если есть номер, который был выбран ранее.Вы должны положить его обратно, а затем выбрать снова.Так, чтобы это могло бежать три раза?Так O(n^2) средняя сложность времени?Что является худшим?

Если m<<n, O(n!/m!(n-m)!) близко к O(n) или O(n!/m!(n-m)!) ~ O(n) ~ O(1)?

Я путаюсь со сложностью времени.Можете ли вы помочь мне проанализировать это?Есть повторных .Но я не очень хорошо понял в моем loop случае.

[ doc 1 ] [ doc 2 ] получить все комбинации. Мне нужно получить только одну из комбинаций, а не все .

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...