Rozwiązać następujące równania rekurencyjne
Michał: Rozwiązać następujące równania rekurencyjne:
b) T(1)=2 T(n)=T(
n2)+2
n=2
m
T(2
m)=T(2
m−1)+2 <=> S(m)=S(m−1)
S(m)=S(m−1)+2=S(m−2)+4=S(m−3)+6=...=S(m−k)+2k=...
m=k=S(m−m)+2m=S(0)+2m= ?
Tutaj się zaciąłem, ponieważ nie wiem ile powinno wynosić S(0), pomoże ktoś ?
19 lis 13:00
jc: S(m)=T(2m) jak się domyślam, a czego nie napisałeś
S(0)=T(20)=T(1)=2
19 lis 13:22
Michał: ok, dzięki
19 lis 13:24
Mariusz:
Analizujesz złożoność jakiegoś algorytmu rekurencyjnego ?
Zapisz swój algorytm w równoważnej postaci iteracyjnej wtedy może łatwiej
będzie ci oszacować złożoność
Zadanie bonusik ile pamięci będzie potrzebował algorytm rekurencyjny
(rekurencja korzysta za stosu dlatego jeśli nie potrafimy zastąpić rekurencji
za pomocą instrukcji iteracyjnej to jawnie korzystamy ze stosu)
Niedawno widziałem podobną rekurencję dla algorytmu minmax metodą divide et impera
Złożoność wyszła O(n)
19 lis 14:01
Mariusz:
Twoja rekurencja to złożoność wyszukiwania binarnego zatem otrzymamy O(logn)
ale gdybyśmy mieli rekurencję
to otrzymalibyśmy złożoność liniową O(n)
19 lis 14:18