Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Complessità Computazionale: Scegliere il Giusto Algoritmo, Appunti di Informatica

Una introduzione alla complessità computazionale e ai criteri per scegliere il miglior algoritmo per risolvere un problema. Viene discusso il concetto di complessità temporale e come misurare il tempo di esecuzione di un algoritmo. Inoltre, vengono presentati esempi di calcolo della complessità di alcuni algoritmi e le classi di complessità. scritto da Rita Mirrhello il 14 giugno 2021.

Tipologia: Appunti

2020/2021

Caricato il 14/06/2021

rita-miritello-1
rita-miritello-1 🇮🇹

3

(4)

30 documenti

1 / 32

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
COMPLESSITA
COMPUTAZIONALE
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Anteprima parziale del testo

Scarica Complessità Computazionale: Scegliere il Giusto Algoritmo e più Appunti in PDF di Informatica solo su Docsity!

COMPLESSITA’

COMPUTAZIONALE

Quale algoritmo scegliere?

Per ogni problema esistono molteplici algoritmi in grado di risolverlo 06/14/2021 RITA MIRITELLO 2

Complessità temporale

Stimare la quantità di tempo che occorre alla CPU per eseguire il corrispondente programma 06/14/2021 RITA MIRITELLO 4

cronometrare i tempi di alcune istanze

 - COMPUTER1 COMPUTER 
  • Dim input A 1 A 2 A 1 A
  • 50 0,005 0,07 0,05 0,
  • 100 0,003 0,13 0,18 0,
  • 200 0,13 0,27 0,73 1,
  • 300 0,32 0,42 1,65 1,
  • 400 0,55 0,57 2,93 2,
  • 06/14/2021 RITA MIRITELLO

calcolo della complessità in funzione del

passo base

è necessario esprimere il tempo di calcolo di un algoritmo A mediante una funzione T(n) Dove n è la dimensione del problema FUNZIONE T(n) Esprime il tempo necessario affinchè un algoritmo A possa produrre la soluzione di un’istanza di dimensione n 06/14/2021 RITA MIRITELLO 7

Istruzione a costo unitario

Si definisce istruzione a costo unitario un’operazione la cui esecuzione non dipende né dal valore né dal tipo delle variabili, e prende il nome di passo base

  • (^) assegnamento
  • (^) operazioni I/O (da tastiera non da file)
  • (^) operazioni aritmetiche elementari
  • (^) valutazioni di espressioni booleane
  • (^) accesso a elementi di un array 06/14/2021 RITA MIRITELLO 8

Esempio 2

06/14/2021 RITA MIRITELLO 10 K=0; for (j=1;j<=n;j++) {k=k+1; cout<<k+234; } 1 Passo base 1 pb inizializzazione n+1 pb test n pb incremento 1n passo base 1n passo base Totale= 1+1+n+1+n+n+n = 3+4*n

  • (^) Si passa quindi dal numero di passo base alla complessità asintotica
  • (^) individuando il termine di complessità maggiore , cioè il blocco del programma che è maggiormente responsabile del tempo di elaborazione

int minimo (vettore vet) { int i, min; for (min = vet[0], i = 1; i < N; i ++) if (vet[i]<min) / istr. dominante / min = vet[i]; return min; } N-1 volte istruzione dominante

Complessità computazionale

http://digilander.libero.it/unno2/sort/ complessita.htm

#include #include using namespace std; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); }

#include #include #include <stdlib.h> #include<time.h> #include <math.h> #include #include using namespace std; int main() { vector V; for (int i=0; i<10; i++) { V. push_back (rand()%100); } sort (V.begin(), V.end()); for (int i=0; i<10; i++) {cout<< V.at(i);} cin>>n: int t= binary_searh (V.begin(), V.end(),n); return 0; }

v.push_back() v.at() v.size() v.empty() v.pop_back() v.begin() v.end() v.erase()