|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: May 2010
Messaggi: 161
|
Complessità di un algoritmo
Come si fa a calcolare la complessità di un semplice algoritmo tipo questo?
Codice:
#include <stdio.h> #include <math.h> #include <qfloat.h> qfloat f(int n){ if (n == 1 ) return 1; else return 2 / (2+f(n-1)); } void main(){ printf("Continued Fraction (f(n)=1+2/2+f(n-1)\n\n"); qfloat a, tre, radice3; int b; radice3=sqrtq(3); a=1; b=1; while(a != radice3){ a=1+f(b); printf("%d) %104.1qf %qe\n",b,a, a-radice3); b++; } } ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Feb 2012
Città: Torino
Messaggi: 170
|
Provo a rispondere io al tuo quesito (anche se è da un paio d'anni che non affronto più le complessità):
Suppongo tu sappia cosa sia un'equazione alle ricorrenze, quindi vediamo un attimo come interpretare la complessità della funzione qFloat(). Questa funzione ricorre su se stessa, quando il parametro passato è diverso da 1; in questo caso viene richiamata qFloat() decrementando di uno il valore passato. Senza formulare una T(n) e svilupparla mediante unfolding, puoi già dire che sicuramente la tua qFloat è O(n), in quanto la funzione verrà richiamata un numero di volte (chiamate che effettuano operazioni elementari) pari al parametro che passi alla funzione meno 1, quindi O(n). La notazione O-grande indica un limite superiore "lasco", ossia il tuo algoritmo non si comporterà mai peggio della classe di complessità a cui appartiene. Se ci sono altre domande, chiedi pure!
__________________
Trattative concluse positivamente con: - fibi85 - chiadoz - Jecko - Mara91 - TiViBi - j0h - raizen89 - Luk388 - davide_e_basta |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
@MaxDembo81: se poi la questione ti dovesse interessare molto, qui c'è un corso online fatto di videoletture (della Stanford, in inglese) Design and Analysis of Algorithms
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:08.