Ожидаемое время выполнения O (n).
С вероятностью p >= 1/2
, первое i
даст decision(i) == true
, поэтому цикл завершится после одного вызова decision
.
Пусть q = 1 - p
будет вероятностью того, что этого не произошло.Тогда с вероятностью q * p
второй i
даст decision(i) == true
, поэтому цикл завершится после двух вызовов decision
.
Аналогично, с вероятностью q^2 * p
, третий i
даст decision(i) == true
, поэтому цикл завершится после трех вызовов на decision
и т. д.
Взяв сумму, мы получим ожидаемое количество вызовов на decision
как 1 + q + q^2 + q^3 + ...
,При q <= 1/2
сумма составляет не более 1 + 1/2 + 1/4 + 1/8 + ...
, верхний предел которой равен 2
.Таким образом, ожидаемое количество вызовов ограничено 2
.
Всего, так как каждый вызов decision
занимает O(n)
время, ожидаемое время выполнения составляет O(2*n)
, которое все еще O(n)
поскольку 2
является константой.