Domanda

T (1) = c    
T (n) = T (n/2) + dn

Come faccio a determinare Bigo di questa fretta?

È stato utile?

Soluzione

L'uso ripetuto backsubstitution e trovare il modello. Un esempio qui .

Altri suggerimenti

Non sono del tutto sicuro di quello che è dn, ma supponendo che si intende una costante moltiplicata per n:

Secondo Wolfram Alpha , la soluzione dell'equazione ricorrenza per:

f(n) = f(n / 2) + cn

è:

f(n) = 2c(n - 1) + c1

che renderebbe questo O(n).

Bene, la parte ricorrenza della relazione è T (n / 2) parte, che è in effetti dimezzare il valore di n ogni volta.

In questo modo si avrà bisogno di circa. (Log2 n) passi per raggiungere la condizione di terminazione, quindi il costo complessivo dell'algoritmo è O (log2 n). È possibile ignorare la parte dn come è un'operazione costante di tempo per ogni passo.

Si noti che come detto, il problema non è necessariamente terminare in quanto dimezzare un valore arbitrario di n volte è improbabile per colpire esattamente 1. Ho il sospetto che il T (n / 2) parte dovrebbe effettivamente letto T (piano (n / 2)) o qualcosa di simile, al fine di garantire che questo termina.

Il teorema uso del padrone vedi http://en.wikipedia.org/wiki/Master_theorem

A proposito, il comportamento asintotico della recidiva è O (n) dove D è positivo e sufficientemente minore di n (dimensione del problema)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top