slide1
Download
Skip this Video
Download Presentation
Tempo di computazione (Running Time) di programmi

Loading in 2 Seconds...

play fullscreen
1 / 35

Tempo di computazione (Running Time) di programmi - PowerPoint PPT Presentation


  • 95 Views
  • Uploaded on

Tempo di computazione (Running Time) di programmi. Misure del tempo: metodi principali Benchmarking Analisi Benchmarking : usato per confrontare programmi.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Tempo di computazione (Running Time) di programmi' - zalika


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Tempo di computazione (Running Time) di programmi

  • Misure del tempo: metodi principali
  • Benchmarking
  • Analisi
  • Benchmarking: usato per confrontare programmi.
  • Si cerca una collezione di input che sia rappresentativa dell’insieme dei possibili dati reali. Il giudizio di confronto viene espresso sugli input scelti.
  • Es. per algoritmi di sorting si può scegliere la collezione:
  • prime 20 cifre p
  • codici postali italiani
  • numeri telefonici di Roma
slide2

Tempo di computazione (Running Time) di programmi

ANALISI: analizza il r.t. di un dato programma

Si raggruppano input per dimensione

(es. ordinamento: dimensione= numero elementi da ordinare,

sisteme di n equazioni in n incognite: dimensione=n)

Running time: funzione T(n), con n=dimensione input,

che rappresenta il numero di “unità di tempo” usate

dall’algoritmo

Unità di tempo varia: es. numero di istruzioni semplici in

linguaggio usato (C).

Tempo effettivo dipende da vari paramentri: velocità del

processore usato, compilatore,….

slide3

Tempo di computazione (Running Time) di programmi

  • Worst case (caso peggiore): su diversi input di stessa dimensione n si possono avere r.t. differenti
  • T(n)=worst case r.t.
  • = max tempo su qualsiasi input di dimentsione n
  • Es. cerca min A[0..n-1] (dimensione=n)
  • small=0;
  • for(j=1; j<n; j++)
  • if(A[j]<A[small])
  • small=j;
  • | Linea | Numero operazioni
  • | 1. | 1
  • | 2. | 1 + n + (n-1) =2n
  • | 3. | n-1
  • | 4. | n-1 (worst case)
  • TOTALE: 1+2n+2(n-1)=4n-1 T(n)=4n-1
slide4

Tempo di computazione (Running Time) di programmi

Confronto di r.t.Dato un problema consideriamo 2 algoritmi A e B con r.t. T’(n) e T’’(n)

T’(n)=100nT’’(n)=2n2

T’’(n) n<50, T’’(n)<T’(n)

T’(n) n>50, T’’(n) > T’(n)

n=100, T’’(n) = 2 T’(n)

n=1000, T’’(n) = 20 T’(n)

n

slide5

Tempo di computazione (Running Time) di programmi

T’(n)=100nT’’(n)=2n2

Unità di tempo= 1ms (millisec)  1000 operazioni/sec

sec (1000ms) | max n per A | max n per B |

| (100n=1000*sec) | ( 2n2=1000*sec) |

1 | 10 | 22 |

10 | 100 | 70 |

100 | 1000 | 223 |

1000 | 10000 | 707 |

Se calcolatori diventano 100 volte più veloci

(unità di tempo =1/100 di ms  100.000 operazioni/sec)

In 10 sec A passa da n=100 ad n=10000 (*100)

B passa da n=70 ad n=707 (*10)

slide6

Notazione O-grande e r.t. approssimato

  • Dato un programma ed un input r.t. dipende ancora da
  • Calcolatore usato (velocità di esecuzione istruzioni)
  • Compilatore (numero istruzioni macchina/istruzione C)
  • Quindi non ha senso parlare di tempo in sec per analizzare un algoritmo.
  • Per nascondere effetti di 1. e 2. si usa la notazione
  • O-grande (big-Oh) che ignora le costanti
  • Es. 4m-1=O(m) (ignorando la costante moltiplicativa 4
  • e quella additiva 1)
slide7

Notazione O-grande e r.t. approssimato

Un r.t. T(n) si assume essere definito solo per n>0 e

che T(n)>0 per ogni n.

Definizione Dati il r.t. T(n) ed una funzione f(n), definita per ogni intero n>0,

T(n)=O(f(n))  Esistono n0>0 e c>0 tali che

per ogni n>n0 risulta T(n)<cf(n)

N.B. Notazione Asintotica (vale per n ‘’grande’’)

slide8

Notazione O-grande e r.t. approssimato

Definizione Dati il r.t. T(n) ed una funzione f(n), definita per ogni intero n>0,

T(n)=O(f(n))  Esistono n0>0 e c>0 tali che

per ogni n>n0 risulta T(n)<cf(n)

Es. Dato T(0)=0 e T(n)=(n+1)*(n+2), n>0

mostriamo che T(n)= O(n2). (cioè f(n)=n2)

Prendiamo n0=1, c=6:

T(n) =(n+1)(n+2)=n2+3n+2

<n2+3n2+2n2 (per n>1, n0=1<n<n2)

=6n2=c n2= c f(n)

slide9

Notazione O-grande e r.t. approssimato

Costanti non hanno valore

T(n)=O(d T(n)), per ogni costante d

Infatti: siano n0=0, c=1/d. Si ha

T(n)=(1/d) d T(n)= c (d T(n))

slide10

Notazione O-grande e r.t. approssimato

Low-order terms non hanno valoreDato il polinomio T(n)=aknk+ak-1nk-1+…+a1n+a0, con ak>0

risulta

T(n)=O(nk)

Prova:

slide11

Notazione O-grande e r.t. approssimato

Low-order terms non hanno valoreDato il polinomio T(n)=aknk+ak-1nk-1+…+a1n+a0, con ak>0

risulta

T(n)=O(nk)

slide12

Notazione O-grande e r.t. approssimato

Tasso di crescitaHa valore solo il termine che cresce più rapidamente. Se g(n) cresce più rap. di h(n)

g(n)+h(n)=O(g(n))

Es.T(n)=2n+n3=O(2n), infatti

Verificarlo in modo diretto esibendo le costanti n0 e c

slide13

Notazione O-grande e r.t. approssimato

Transitività

Se f(n)=O(g(n)) e g(n)=O(h(n))allora f(n)=O(h(n))

f(n)=O(g(n)) Esistono c’, n’ tali che f(n) < c’ g(n)

per ogni n>n’

g(n)=O(h(n)) Esistono c’’, n’’ tali che g(n) < c’’ h(n)

per ogni n>n’’

Quindi, prendiamo n0=max { n’,n’’ } e c=c’c’’

Per n>n0 f(n)<c’ g(n)< c’ (c’’ h(n)) = c h(n)

slide14

Notazione O-grande e r.t. approssimato

Si vuole come O-grande la funzione con il minimo tasso

di crescita!!!

Es. f(n)=12n +3, si ha f(n)=O(n)

risulta anche f(n)=O(n2), f(n)=O(n3), f(n)=O(2n),….

ma non è quello che vogliamo.

slide15

Notazione O-grande e r.t. approssimato

Esercizio.Mostrare che g(n)+f(n)=O(max{f(n),g(n)})

Esercizio.Mostrare che se T(n)=O(f(n)) e S(n)=O(g(n))

allora T(n)S(n)=O(f(n)g(n))

slide16

Running Time di programmi

  • Trova f(n) tale che T(n)=O(f(n))
  • Istruzioni semplici (assegnamento, confronto,…)
  • tempo costante O(1)
  • Cicli for: for (i=1,i<=n,i++) I
  • se I=operazione semplice risulta O(n)
  • Se I ha r.t. O(f(n)) risulta O(nf(n))
  • es. for(i=1,i<=n,i++) A[i]=1  T(n)=O(n)
  • for(i=1,i<=n,i++)
  • for(j=1,j<=n,i++) A[i]=A[i]+A[j]
  •  T(n)=O(n*n) =O(n2)
slide17

Running Time di programmi

  • If (C) I else I’: (normalmente C è O(1))
  • se I,I’ sono istruzioni semplici  O(1)
  • se I ha r.t. O(f(n)) e I’ ha r.t. O(g(n))
  •  O(max (f(n), g(n))
  • es. if (A[0]=0) for(i=1,i<=n,i++) A[i]=1;
  • else for(i=1,i<=n,i++)
  • for(j=1,j<=n,i++) A[i]=A[i]+A[j]
  •  T(n)=O(max (n, n2)) =O(n2)
slide18

Running Time di programmi

Cicli while e do while: simili al ciclo for

(non conosciamo esplicitamente il numero di iterazioni)

es. Dato un array A di n elementi

i=0;

while (x<>A[i] && i<n) i=i+1;

(caso peggiore: n iterazioni)  T(n)=nO(1)=O(n)

slide19

Running Time di programmi

Sequenze di istruzioni:si devono sommare i tempi

delle singole istruzioni. Si usa la regola della somma.

Date con

O(f1)

O(f2)

.

.

.

O(fm)

{I1;

I2;

.

.

.

Im;}

Risulta

O(f1(n))+ O(f2(n))+…+ O(fm(n))= O(fi(n))

fj(n)=O(fi(n)) per ogni j diverso da i.

slide20

Running Time di programmi

  • Chiamate a funzioni:si deve sommare il tempo
  • della funzione chiamata.
  • (se A chiama B: si calcola il r.t. di B e si somma al
  • r.t. delle altre istruzioni di A)
  • Chiamate ricorsive: determiniamo T(n) in modo induttivo
  • Tempo di una chiamata che non usa ricorsione = t (=O(1))
  • Si esprime T(n) in termini del tempo T(n’) della chiamata ricorsiva
slide21

Running Time di programmi

  • Chiamate ricorsive: determiniamo T(n) in modo induttivo
  • Tempo di una chiamata che non usa ricorsione=t (=O(1))
  • Si esprime T(n) in termini del tempo T(n’) della chiamata ricorsiva

Es. int fact(int n)

{ if (n<=1) return 1;

else return n*fact(n-1)}

T(1)=t

T(n)=T(n-1)+c

slide22

Running Time di programmi

Es. int fact(int n)

{ if (n<=1) return 1;

else return n*fact(n-1)}

T(1)=t

T(n)=c+ T(n-1)

Vogliamo il valore di T(n) (non dipendente da T(n’))

Abbiamo T(n)=c+ T(n-1)

=c+ c+ T(n-2)= 2c +T(n-2)

slide23

Running Time di programmi

Es. int fact(int n)

{ if (n<=1) return 1;

else return n*fact(n-1)}

T(1)=t

T(n)=c+ T(n-1)

Abbiamo T(n)=c+T(n-1)

=c+ c+ T(n-2)= 2c +T(n-2)

=2c +c +T(n-3)=3c +T(n-3)

slide24

Running Time di programmi

Es. int fact(int n)

{ if (n<=1) return 1;

else return n*fact(n-1)}

T(1)=t

T(n)=c+ T(n-1)

Abbiamo T(n)=c+T(n-1)

=c+ c+ T(n-2)= 2c +T(n-2)

=2c +c +T(n-3)=3c +T(n-3)

=ic +T(n-i) (per i=n-1)

=(n-1)c+T(1)

=(n-1)c+t=O(n)

slide25

Running Time di programmi

Esercizio. Dimostrare per induzione su n che la relazione di ricorrenza

T(1)=t

T(n)=c+ T(n-1)

ha come soluzione T(n)=(n-1)c + t

Base n=1. T(1)=t=(1-1)c+t. OK.

Passo. Sia n> 1. Assumiamo T(n)=(n-1)c + t. Consideriamo T(n+1)

T(n+1)=c + T(n) (per definizione)

=c + (n-1)c + t (per i.i.)

= nc +t

slide26

Running Time di programmi

  • Esercizio. Considerare la relazione di ricorrenza
  • T(0)=T(1)= 1
  • T(n)=2 T(n-2)
  • Determinare T(2), T(3), T(4), T(5):
  • T(2)=2, T(3)=2, T(4)=4, T(5)=4
  • Determinare T(n) in termini di T(n-4): T(n)=4 T(n-4)
  • Determinare T(n) in termini di T(n-6): T(n)=8 T(n-6)
  • Determinare T(n) in termini di T(n-2i): T(n)=2i T(n-2i)
  • Determinare T(n):
  • sen pari, i=n/2, T(n-2i)=T(0) T(n)=2n/2T(0)=2n/2
  • sen disp., i=(n-1)/2, T(n-2i)=T(1) T(n)=2(n-1)/2T(1) =2(n-1)/2
slide27

Soluzioni Relazioni di ricorrenza

  • T(1)=a
  • T(n)= b+T(n-1), n>1  T(n)=(n-1)b+a
  • 2. T(k)=a
  • T(n)=T(n-1)+g(n)  T(n)=a + g(k+1)+…+g(n)
  • T(n) = g(n)+T(n-1)
  • = g(n)+g(n-1)+T(n-2)=…
  • = g(n)+g(n-1)+…+g(k+1)+T(k)
  • T(1)=1
  • T(n)=T(n-1)+n  (g(i)=i) T(n)=1 + 2+…+n=n(n+1)/2
slide28

Soluzioni Relazioni di ricorrenza

4. T(1)=a

T(n)=2T(n/2)+g(n) 

slide29

Soluzioni Relazioni di ricorrenza

4. T(1)=a

T(n)=2T(n/2)+g 

slide30

Soluzioni Relazioni di ricorrenza

4. T(1)=a

T(n)=2T(n/2)+n 

ad