Algorytmy początki, silnia, przyjęte założenie
Ostatnio zmodyfikowano 2015-09-02 19:40
Vader_NoLord Temat założony przez niniejszego użytkownika |
Algorytmy początki, silnia, przyjęte założenie » 2015-09-02 18:50:37 Cześć - zacząłem uczyć się algorytmów, potrzebuję pomocy osób które naprawdę rozumieją tą dziedzinę nauki. Chodzi o pewne zagadnienie z książki którą czytam - przytoczę fragment. ------------------------------- "Rekurencyjna definicja silni 0! = 1 n! = n*(n-1)!, n >= 1, n należy do N Odpowiadająca tej formule funkcja C++ ma następującą postać: int silnia( int n ) { if( n == 0 ) return 1; else return n * silnia( n - 1 ); }
Przyjmijmy dla uproszczenia założenie, bardzo zresztą charakterystyczne w tego typu zagadnieniach, że najbardziej czasochłonną operacją jest tutaj instrukcja porównania if. Przy takim założeniu czas, w jakim wykona się program możemy zapisać również w postaci referencyjnej: T(0) = tc T(n) = tc + T(n-1) --- dla n >= 1
T(0) -- czas wykonania funkcji dla danej wejściowej 0(zero) tc -- czas wykonania jedenej instrukcji porównaia " --------------------------------------- chodzi mi o zdanie ---> "Przyjmijmy dla uproszczenia założenie, bardzo zresztą charakterystyczne w tego typu zagadnieniach... " Moje pytania brzmią - Skąd wiedział jakie założenie trzeba przyjąć ?? Skąd wiedział że najbardziej czasochłonną operacją jest instrukcja porównania ?? Czemu akurat instrukcja porównania a nie np n*silnia(n-1) ???? |
|
pekfos |
» 2015-09-02 19:15:34 Skąd wiedział jakie założenie trzeba przyjąć ?? |
Bo 'jest bardzo charakterystyczne w tego typu zagadnieniach'. To tylko dla uproszczenia oszacowania. Skąd wiedział że najbardziej czasochłonną operacją jest instrukcja porównania ?? |
Z wiedzy o działaniu komputera. Wywołanie jest równie wolne, ale tak mu się napisało. Mnożenie też jest wolne, ale jak wolne w porównaniu do tamtych dwóch..? To jest tylko dla oszacowania. Czemu akurat instrukcja porównania a nie np n*silnia(n-1) ???? |
Masz 3 życzenia, a nie masz pomysłu na trzecie..? Po co dwa razy to samo pytanie? |
|
Vader_NoLord Temat założony przez niniejszego użytkownika |
» 2015-09-02 19:21:16 Ok racja 0! = 1 n! = n*(n-1)!, n >= 1, n należy do N T(0) = tc T(n) = tc + T(n-1) <--- Rozumiem założenie jest przyjęte z definicji silni, ok ale czemu jest tu znak plus a nie znak mnożenia jak w definicji silni ? Ale zaraz - coś znalazłem w artykule strona 2. http:www.ujk.edu.pl~stefanekzfjAiSD_Wyklad6_dzienne.pdf |
|
pekfos |
» 2015-09-02 19:35:18 T(n) = tc + T(n-1) <--- Rozumiem założenie jest przyjęte z definicji silni, ok ale czemu jest tu znak plus a nie znak mnożenia jak w definicji silni ? |
Mylisz silnię z czasem jej obliczania. |
|
Vader_NoLord Temat założony przez niniejszego użytkownika |
» 2015-09-02 19:40:28 Aha ok dzięki za pomoc temat zamknięty |
|
« 1 » |