1 / 25

1 2 3 4 5 6 7 8 9 10 11 12

9. 8. 7. 5. 7. 4. 0. 4. 3. 6. 1. 2. 3. 7. 3. 5. 1. 6. 2. 7. 8. 1. 4. 5. 7. 6. 3. 3. 1. 2. 4. 1. 3. 3. 3. 4. 2. 6. 2. 1. 1. 1. 3. 3. 6. 7. 1. 2. 1. 7. 2. 8. 9. 6. 1. 5. 7. 2. 3. 1. 8. 7. 3. 1. 3. 5. 4. 3. 7. 2. 6. 1. 4. 3. 3.

ciqala
Télécharger la présentation

1 2 3 4 5 6 7 8 9 10 11 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 9 8 7 5 7 4 0 4 3 6 1 2 3 7 3 5 1 6 2 7 8 1 4 5 7 6 3 3 1 2 4 1 3 3 3 4 2 6 2 1 1 1 3 3 6 7 1 2 1 7 2 8 9 6 1 5 7 2 3 1 8 7 3 1 3 5 4 3 7 2 6 1 4 3 3 4 3 2 1 2 6 1 1 3 3 1 2 1 2 Ordinamento dell’array 1 2 3 4 5 6 7 8 9 10 11 12 9 1 8 7 2 3 5 7 4 0 4 5 6 7 4 3 6 1 2 8 9 10 11 12

  2. Max-Heapfy(A,i) l= 2i, r=2i+1 m = i ifl A.heapsizeandA[l] > A[m] m=l ifr A.heapsizeandA[r] > A[m] m=r ifmi t=A[i], A[i] =A[m], A[m] =t Max-Heapfy(A,m)

  3. Build-Max-Heap (A) A.heapsize=A.length fori=A.lenght/2downto 1 Max-Heapfy(A,i)

  4. Heap-Sort(A) Build-Max-Heap(A) fori=A.lengthdownto 2 t=A[i], A[i] =A[1], A[1] =t A.heapsize= A.heapsize - 1 Max-Heapfy(A,1)

  5. Paragonare tra loro algoritmi Abbiamo una scala di complessità: vogliamo inserire ogni algoritmo in questa scala

  6. complessità massima complessità media complessità minima Un algoritmo può richiedere tempi diversi per input della stessa taglia.Ad esempio il tempo per ordinare n oggetti può dipendere dal loro ordine iniziale.

  7. Nell’analizzare la complessità tempo di un algoritmo siamo interessati a come aumenta il tempo al crescere della taglia ndell’input. Siccome per valori “piccoli” di n il tempo richiesto è comunque poco, ci interessa soprattutto il comportamento per valori “grandi” di n(il comportamento asintotico)

  8. Inoltre, siccome la velocità del processore influisce sul tempo calcolo per una costante moltiplicativa noi valuteremo la complessità a meno di una tale costante. Questo giustifica le seguenti definizioni:

  9. Notazione asintotica O (limite superiore asintotico) O(g(n))

  10. Scriveremo f(n) = O(g(n)) per dire che f(n) è una delle funzioni dell’insiemeO(g(n)) f(n) = O(g(n)) si legge: f(n) è “o grande” di g(n) Se f(n) = O(g(n)) rappresenta il tempo calcolo richiesto da un algoritmo diciamo che O(g(n)) è un limite superiore asintotico per la complessità tempo di tale algoritmo.

  11. infatti per c = 4 ed n0= 5 Vedremo che in generale per a2> 0 infatti per c = 3 ed n0= 1 esempi

  12. Notazione asintotica . (limite inferiore asintotico)

  13. Scriveremo f(n) = (g(n)) per dire che f(n) è una delle funzioni dell’insieme (g(n)). f(n) = (g(n)) si legge: f(n) è “omega” di g(n) Se f(n) = (g(n)) rappresenta il tempo calcolo richiesto da un algoritmo diciamo che (g(n)) è un limite inferiore asintotico per la complessità tempo di tale algoritmo.

  14. infatti per c = 1 ed n0= 10 Vedremo che in generale se a2> 0 infatti per c = 1 ed n0= 1 esempi

  15. Notazione asintotica . (limite asintotico stretto)

  16. Scriveremo f(n) = (g(n)) per dire che f(n) è una delle funzioni dell’insieme (g(n)). f(n) = (g(n)) si legge: f(n) è “theta” di g(n) Se f(n) = (g(n)) rappresenta il tempo calcolo richiesto da un algoritmo diciamo che (g(n)) è un limite asintotico stretto per la complessità tempo di tale algoritmo.

  17. per c1 = 1, c2 = 4 ed n0= 10 Dunque esempi Dunque

  18. altrimenti per ogni n n0 allora per ogni n n0.Assurdo! altrimenti per ogni n n0allora per ogni n n0.Assurdo!

  19. allora per ogni > 0 esiste n0 tale che pern≥n0 e quindi Metodo del limite Spesso è possibile determinare dei limiti asintotici calcolando il limite di un rapporto. Ad esempio se Preso 0 <<k e posto c1 = k  e c2 = k +

  20. ed in questo caso Se diciamo che ed in questo caso Se diciamo che Attenzione: quando il limite del rapporto non esiste questo metodo non si può usare.

  21. In generale per ogni funzione polinomiale di grado k con coefficiente ak > 0. Inoltre

  22. Per 0 < h < k e 1 < a < b :

  23. Valutare la difficoltà dei problemi esiste un algoritmo che risolve il problema con questa complessità limite superiore: O(n2)

  24. Un limite superiore per il problema dell’ordinamento Abbiamo visto che Insert-Sort per ordinare n oggetti richiede O(n2) operazioni Quindi O(n2) è un limite superiore

  25. Valutare la difficoltà dei problemi ogni algoritmo che risolve il problema ha complessità maggiore o uguale di questa limite inferiore: (n)

More Related