I am confused on defining the function f(n) using another function
Non essere confuso, in realtà è piuttosto semplice. La notazione O grande è una diseguaglianza. Ciò significa che possiamo trovare più limiti superiori per f (n) e comunque essere corretti, quindi, sebbene possiamo scrivere f (n) = O (f (n)) ed essere corretti è, a seconda di f (n), spesso non quello che intendiamo esprimere.
È una misura dei tassi di crescita. f (n) = 2n non cresce più velocemente di f (n) = n. Entrambe le crescite sono lineari.
f(n) = O(n*f(n))
Immagino tu intenda che il secondo n sia un costante c.
Per definizione di Big O, questa costante è già nella diseguaglianza. Quindi quando scrivi il solito f (n) uguale a Big O (g (n)) stai effettivamente scrivendo abs(f(n)) <= c * abs(g(n))
. Se riesci a trovare un fattore costante, non devi menzionarlo, perché la definizione di Big O, la disequazione, si occupa già di questo e g (n) viene quindi considerato un limite superiore di f (n).
Forse la formulazione comune può aiutarti: f (n) = O (g (n)) significa che la funzione f
non cresce più velocemente di g
, tranne forse per un fattore costante c
.