У меня возникли проблемы с полным пониманием того, как записать повторяемость для ожидаемого времени работы рандомизированного алгоритма.Базовый рандомизированный алгоритм рекурсии
Я считаю, что я делаю это правильно, но если кто-то сможет его осмотреть, это будет огромной помощью.
Вот псевдокод для алгоритма:
printIntegers(A, n) // an array A of integers is the input, with n integers
if A.length > 0
for i = 1 to n
print A[i]
randInt = rand(1, 10)
if randInt != 10
return
else
printIntegers(A, n-1)
Единственной случайная часть генератора случайных чисел от 1 до 10. Я пытаюсь понять, как это будет переводить в рецидиве.
Я имею в виду:
T(n) = O(n) if a != 10 probability = 9/10
T(n-1) + O(n) a = 10 = 1/10
T(n-2) + O(n)
....
T(0) + O(n)
Это имеет смысл в моей голове, а затем ожидаемое время работы будет O (N). Правильно ли я подхожу к этому?
Спасибо, не могли бы вы детализировать уравнение без учета ожидаемых значений? Это отбрасывает меня немного. – rigatoni
Объясняется и исправляется множество ошибок. – user1952500