ALG7
3.8. Zadania 77
b) T(n2) e 0(«3);
c) 7’(2"+l) e 0(2");
d) r((n + l)!) e 0(«!);
e) 7'(«)eO(n)=»{7(«)}'eO(/t:);
f) Twój własny przykład?
Zad. 3-2
Jednym z analizowanych już wcześniej przykładów był tzw. ciąg Fibonnaciego. Funkcja obliczająca elementy tego ciągu jest nieskomplikowana:
int fib(int n)
l
if (n==C)
return 1;
el se
lf (n~l)
return 1;
else
return fib(n-1)+fib(n-2);
)
Proszę określić, jakiej klasy jest to funkcja.
Zad. 3-3
Proszę przeanalizować jeden ze swoich programów, taki, w którym jest dużo wszelkiego rodzaju zagnieżdżonych pętli i tego rodzaju skomplikowanych konstrukcji. Czy nie dałoby się go zoptymalizować w jakiś sposób?
Prz4vkładowo często się zdarza, że w pętlach są inicjowane pewne zmienne i to za każdym przebiegiem pętli, choć w praktyce wystarczyłoby je zainicjować tylko raz. W takim przypadku „sporną” instrukcję przypisania „wyrzuca się” przed pętlę, przyspieszając jej działanie. Podobnie odpowiednio układając kolejność pewnych obliczeń, można wykorzystywać częściowe wyniki, będące rezultatem pewnego bloku instrukcji, w' dalszych blokach - pod warunkiem oczywiście, że nie zostały „zamazane” przez pozostałe fragmenty programu. Zadanie polega na obliczeniu złożoności praktycznej naszego programu przed i po optymalizacji i przekonaniu się „na własne oczy" o osiągniętym (ewentualnie) przyspieszeniu.
L
Wyszukiwarka
Podobne podstrony:
ALG7 2.9. Zadania 472.9.Zadania Wybór reprezentatywnego dla rekurencji zestawu zadań wcale nie byłALG7 6.7. Podsumowanie 187 ( while (n!=l) (n--;b~3-a-b; M*=2;} cout << "Przesuń dysk nrALG7 Rozdział 1Zanim wystartujemy Zanim na dobre rozpoczniemy operowanie takimi pojęciami jak wspomALG7 1.5. Poprawność algorytmów 27 {warunki wstępne 1} poszukiwany-program {warunki końcowe} MożliwALG7 2.4. Niebezpieczeństwa rekurencji 37 return (x-10); else return MacCarthy(MacCarthy(x111}); 1ALG7 3.1. Dobre samopoczucie użytkownika programu 57 mów zostaną wprowadzone na reprezentatywnych pALG7 3.5. Przykład 4: Różne typy złożoności obliczeniowej 67 Koszt algorytmu oznaczmy klasycznie prALG 7 5.1. Listy jednokierunkowe 97 public: int pusta() // czy lista jest pusta? {ALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12ALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i uALG7 5.2. Tablicowa implementacja list 1275.2.3.Listy innych typów Listy jednokierunkowe są bardzoALG7 5.6. Drzewa i ich reprezentacje 147 Numery znajdujące się przy węzłach mają charakter wyłączniALG7 5.7. Uniwersalna struktura słownikowa 157 zostaną stworzone. Jedynie na poziomie litery ‘F’ zoALG7 6.1. Jak pracuje kompilator? 167 ASM(Instr2) koniec: ASM(instr) znacza ciąg instrukcji asembleALG7 6.5. Metoda funkcji przeciwnych 177 Dokonaliśmy zatem tego, co było naszym celem: pozbawiliśmyALG7 7.3. Transformacja kluczowa 197 Istnieją dwie wartości parametru 67, które „rozrzucają” kluczealg W 7 ID4 3> ni ■ i 0{§Ę r » ;alg W 7 ID6 I^/I/IAM^ i o Sit j^y j^-t ą/f^ S. Vw ~ YALG7 4.3. Duicksort, algorytm klasy Q(N log2N) 874.3. Quicksort, algorytm klasy 0(Nlog2N) Jest to swięcej podobnych podstron