Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Algorytmy początki, silnia, przyjęte założenie

Ostatnio zmodyfikowano 2015-09-02 19:40
Autor Wiadomość
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ć:
C/C++
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) ????
P-137169
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?
P-137170
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~stefanekzf​jAiSD_Wyklad6_dzienne.pd​f


P-137172
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.
P-137177
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
P-137179
« 1 »
  Strona 1 z 1