Prosty algorytm - przypadek pesymistyczny

0

Poniższy algorytm wyznacza yz gdzie y i z należy N

Mnóż(y,z)

  1. x<-0
  2. while z>0
  3. **do if** z mod 2 = 1
    
  4.      ** then** x<-x+y
    
  5. y<- 2*y
  6. z<-[z/2]
  7. return x

Określ ile razy będzie wykonywane dodawanie(instrukcja w wierszu 4) w przypadku pesymistycznym.

Przypadek pesymistyczny rozumiem że wtedy gdy operacja wykona się maxymalną ilość razy. Czyli jeśli z = 15 lub 31 wtedy do if'a wejdzie za każdym razem. Macie pomysł jaki wzór mógł by być na ilość wykonań?
Wyliczyłem że może być to log2 (z)
Czy jest to dobra odpowiedź?

1

Pesymistyczny przypadek jest kiedy z jest postaci:
(((2n+1)*2+1)*2+1)*2+1)*2+1...
czyli np. 3, 7, 15, 31, 63, 127,
Wtedy liczba dodawań będzie maksymalna i wyniesie dokładnie log2(z+1), bo z+1 będzie akurat potęgą dwójki ;)
Można też uznać że jest to sufit z log2(z). Samo log2(z) to za mało.

0

Dzieki jestes wielki !! Jak bede mial jakies pytania napisze tutaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1