Advertisement
fha

HeapReplace & hmqUpdate

fha
Apr 22nd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. \subsubsection{Analyse de la complexité temporelle}
  2.  
  3. En analysant le pseudocode de \textsc{HeapReplace}, on se rend compte que la seule opération coûteuse est l'appel de la procédure \textsc{heapify} aux lignes 5 \& 6. Sachant que cette procédure est appelée i fois avec $i = \floor{\text{heap.size}} / 2$, on conclut donc que la complexité de \textsc{HeapReplace} est égal à celle de \textsc{heapify} à une constante multiplication près. Analysons donc la complexité de \textsc{heapify}.
  4. \begin{itemize}
  5. \item Dans le meilleur des cas, la variable \textsc{largest} est toujours différente de i lors de chaque appel de \textsc{heapify}. Dès lors, la complexité de \textsc{heapify} vaut $T(n) = \Theta(log (n))$ qui correspond à la hauteur du noeud d'où découle la complexité de \textsc{HeapReplace} : $T(n) = \frac{n}{2} * log(n)$
  6.  
  7. \item Dans le pire des cas, la variable \textsc{largest} est égal à i à chaque itération ce qui revient à créer les tas en insérant les éléments tour à tour. Calculons le nombre N d'opération à effectuer dans un tel cas.
  8. On a $N =\sum_{i = 0}^{\log(n)} \frac{n*i}{2^{i+1}} = \frac{n}{2} * (\sum_{i = 0}^{\log(n)} i(\frac{1}{2})^{i})$. Nous allons maintenant résoudre cette dernière égalité en approchant le résultat. Sachant que $\frac{n}{2} * (\sum_{i = 0}^{\log(n)} i(\frac{1}{2})^{i}) \leq \frac{n}{2} * (\sum_{i = 0}^{\infty} i(\frac{1}{2})^{i})$ et que $\sum_{i = 1}^{\infty} i * x^{i} = \frac{x}{(1-x)^{2}}$. On arrive finalement sur le résultat suivant : $N \leq \frac{n}{2} * 2 = n$.
  9. En conclusion, la complexité de \textsc{heapify} vaut $\Theta (n)$ d'où découle la complexité de \textsc{HeapReplace} : $T(n) = \frac{n}{2} * n + C = \Theta(\frac{n^{2}}{2})$
  10. \end{itemize}
  11.  
  12. \subsection{\textsc{mqUpdate} dans le cas des tas}
  13.  
  14. On va chercher à décrire la complexité de \textsc{hmqUpdate} en fonction de la taille de la fenêtre $w$. On remarque que la seule opération coûteuse est l'appel de la procédure \textsc{heapReplace}. Déduction de la complexité en fonction des résultats précédents ?
  15. \begin{itemize}
  16. \item Dans le pire des cas, \textsc{hmqUpdate}
  17. \item Dans le meilleur des cas,
  18. \end{itemize}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement