Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] fibonacci a złożoność
Forum PHP.pl > Forum > PHP
hhg
na stronie wikipedii na samym dole:
http://pl.wikipedia.org/wiki/Algorytm_Euklidesa

czytam:
<quote>Ciekawostki
* Największej liczby kroków algorytmu wymagają dwa kolejne elementy ciągu Fibonacciego</quote>

w takim razie dlaczego mój skrypt:

  1. <?php
  2.  
  3. include('funkcje.inc');
  4.  
  5. $time = array();
  6. $operation = array();
  7. $max = 8;
  8.  
  9. // ciag fibonacciego a NWD
  10. for ($i = 1; $i < $max; $i++)
  11. {
  12. $time_start = getmicrotime();
  13. $operation[$i] = dif_ite(fib($max),fib($i));
  14.  
  15. $time_end = getmicrotime();
  16.  
  17. $time[$i] = round($time_end - $time_start,5);
  18. echo 'Dla fib(' . $i . ') oraz fib(' . $max . ') czas wykonania operacji NWD algorytmu Euklidesa zajal ' . $time[$i] . ' sekund.<br /><br />';
  19. }
  20.  
  21.  
  22. ?>



gdzie include('funkcje.inc'); są tu:

zwraca wyniki takie:

co prawda czas niby rosnie ale chodzi o złożonośc = liczbe operacji. A ta maleje!!

co robie źle?
Nigger
Jedne operacje np mnożenie zajmują kilkanascie razy więcej cykli zegarowych niż inne np dodawanie ...
A pozatym to co Ty piszesz to jest bardzo mało prawdopodbne. W 99,999 % przypadkach złozoność idzie w parze z czasem.
Hacker
  1. <?php
  2. dif_ite(fib($max),fib($i));
  3. ?>

na
  1. <?php
  2. div_ite(fib($max),fib($i));
  3. ?>


i złożoność jest taka, jaka ma być
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.