Analisi della complessità degli algoritmi

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Elementi di complessità
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Analisi della complessità degli algoritmi
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Lez. 51 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Complessita'
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
Il problema della ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
La forma normale di un’equazione di secondo grado è la seguente:
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Ordinamento di una lista: bubble-sort
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Ricerca della Legge di Controllo
Il Linguaggio Macchina
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
ESERCIZIO: la Torre di Hanoi
ALGORITMI E COMPLESSITÀ
Elementi di Informatica di base
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Vedremo in seguito che (n log n) è un limite stretto per il problema dellordinamento. Per ora ci limitiamo a dimostrare che: La complessità nel caso pessimo.
La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni.
Sistemi di riferimento
Ricorsione Strumento potente per definizioni matematiche
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
Complessità di un algoritmo
Complessità degli algoritmi (cenni) CORDA – Informatica A. Ferrari.
Complessità del problema Se non facciamo ipotesi sul tipo degli elementi della sequenza le uniche operazioni permesse sono confronti e assegnazioni. Problema.
Algoritmi e Strutture Dati Luciano Gualà
La ricorsione.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quarta giornata Risolvere efficientemente un problema in P: la sequenza di Fibonacci Guido.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Ordinamento in tempo lineare Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, ossia per algoritmi che non fanno alcuna.
Il problema della ricerca Algoritmi e Strutture Dati.
Corso di Studi in Informatica Applicata – Università di Catania, Campus di Comiso Dr. Simone Faro – – Diapositiva
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Realizzazione software
Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati.
Complessità Computazionale
Le proprietà delle potenze
Informatica 3 V anno.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione.
Il PENSIERO COMPUTAZIONALE
Rudimenti di Complessità Corso di Programmazione II Prof. Dario Catalano.
1 DISTRIBUZIONI DI PROBABILITÁ. 2 distribu- zione che permette di calcolare le probabilità degli eventi possibili A tutte le variabili casuali, discrete.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi Complessità e Trasportabilità Lezione n°3.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

Analisi della complessità degli algoritmi Unità F1 Analisi della complessità degli algoritmi

Obiettivo principale Confrontare algoritmi corretti che risolvono lo stesso problema, allo scopo di scegliere quello migliore in relazione a uno o più parametri di valutazione.

Valutazione con un parametro Se si ha a disposizione un solo parametro per valutare un algoritmo, per esempio il tempo d’esecuzione, è semplice la scelta: il più veloce. Ogni altra caratteristica non viene considerata.

Valutazione con più parametri Nel caso di due parametri normalmente si considera il tempo. numero di passi (istruzioni) che occorrono per produrre il risultato finale. Passi e non secondi o millisecondi perché il tempo varia al variare delle potenzialità del calcolatore. lo spazio occupazione di memoria

Durata delle istruzioni Le istruzioni non hanno tutte lo stesso tempo di esecuzione. Il tempo di esecuzione di un algoritmo è una somma pesata delle istruzioni: Ttotale=(i0*t0*n0)+(i1*t1*n1)+…+(im*tm*nm) ij è l’istruzione, tj è il costo dell’istruzione, il tempo di esecuzione nj è il numero di volte che viene eseguita.

Misura dell’efficienza L’approssimazione di una funzione con una funzione asintotica è molto utile per semplificare i calcoli sul tempo di esecuzione di un algoritmo. La notazione asintotica di una funzione consente di descriverne il comportamento in modo semplificato, ignorando dettagli della formula. Esempio: per valori sufficientemente alti di x il comportamento della funzione f(x) = x2 – 3x + 1 è approssimabile con la funzione f(x) = x2. Per un algoritmo con un input di dimensione n, possiamo definirne l’efficienza dicendo che “l’algoritmo per calcolare il risultato finale impiega al più f(n) passi”, “l’algoritmo ha complessità f(n)”.

Terminologia O (O grande) equivale al simbolo <=. Corrisponde a “al più come”. “la complessità dell’algoritmo è O(f(n))” equivale a “il tempo d’esecuzione dell’algoritmo è <= a f(n)”. o (o piccolo) equivale al simbolo <. “la complessità dell’algoritmo è o(f(n))” equivale a “il tempo d’esecuzione dell’algoritmo è strettamente < a f(n)”. Θ (teta) corrispondente al simbolo =. “la complessità dell’algoritmo è Θ(f(n))” equivale a “il tempo d’esecuzione dell’algoritmo è = a f(n)”.

Terminologia Ω (omega grande) equivale al simbolo >=. “la complessità dell’algoritmo è Ω(f(n))” equivale a dire “il tempo d’esecuzione dell’algoritmo è >= a f(n)”. ω (omega piccolo) equivale al simbolo >. “la complessità dell’algoritmo è ω(f(n))” è uguale a “il tempo d’esecuzione dell’algoritmo è strettamente > di f(n)”.

Complessità computazionale La complessità computazionale di un algoritmo è la quantità di tempo necessaria per produrre il risultato finale. La complessità si esprime sotto forma di una funzione matematica che mette in relazione il tempo di esecuzione di un algoritmo con la dimensione dei dati di input. Il caso peggiore per un algoritmo è il caso in cui questo, per generare il risultato, impiega più tempo.

Complessità In molti casi la complessità è legata al tipo o al numero dei dati di input Ad esempio la ricerca di un valore in un vettore ordinato dipende dalla dimensione del vettore La complessità può dipendere anche dalla disposizione e dal tipo di dati Sempre nell’algoritmo di ricerca in un vettore ordinato avremo il caso: Ottimo Pessimo Medio

Tipi di complessità lineare; logaritmica; quadratica; esponenziale; fattoriale.

Lineare l’algoritmo ha complessità O(n) Esempio: algoritmo di ricerca sequenziale di un elemento in un array

Logaritmica Esempio ricerca dicotomica in un array La ricerca dicotomica ha complessità O(log2(n))

Quadratica Un esempio è l’algoritmo di ordinamento bubblesort eseguito su un array di elementi l’algoritmo ha complessità O(n2)

Esponenziale l’algoritmo della Torre di Hanoi ha complessità Ω(2n), La Torre di Hanoi è un rompicapo matematico composto da tre paletti e un certo numero di dischi di grandezza decrescente, che possono essere infilati in uno qualsiasi dei paletti. Il gioco inizia con tutti i dischi incolonnati su un paletto in ordine decrescente, in modo da formare un cono. Lo scopo del gioco è portare tutti dischi sull’ultimo paletto, potendo spostare solo un disco alla volta e potendo mettere un disco solo su un altro disco più grande, mai su uno più piccolo

Torre di Hanoi

Fattoriale E’ quella che cresce più velocemente rispetto a tutte le precedenti. Esempio: algoritmo che calcola tutti gli anagrammi di una parola di n lettere distinte. la complessità di un tale algoritmo è Θ(n!)

logaritmica < lineare < quadratica < esponenziale < fattoriale

Calcolo complessità e confronto Alcuni esempi Calcolo complessità e confronto

Algoritmo 1 – Calcolo x5 1 1 1 1x5 2x4 17 1 ALGORITMO 1 x,i,p: intero INIZIO leggi(x) i1 p x MENTRE i<5 ESEGUI p p*x i i+1 FINEMENTRE scrivi(p) FINE 1 1 1 1x5 2x4 17 1

Algoritmo 2 – Calcolo xn 1 1 1 1 3xn+1 3n+6 1 ALGORITMO 2 x,i,p: intero INIZIO leggi(x) leggi(n) in p 1 MENTRE i>0 ESEGUI p p*x i i-1 FINEMENTRE scrivi(p) FINE 1 1 1 1 3xn+1 3n+6 1

Ricerca sequenziale Ciclo eseguito: FUNZIONE RicercaSequenziale(V:vettore;N,P:Intero):Booleano Trovato : Booleano I : Intero INIZIO Trovato Falso I 1 MENTRE (I<N) AND (NOT Trovato) ESEGUI SE V[I]=X ALLORA Trovato Vero FINESE I I+1 FINEMENTRE RITORNO(Trovato) FINE Ciclo eseguito: Caso ottimo 1 volta Caso pessimo n volte Caso medio n/2 volte

Ricerca binaria Ciclo eseguito: ottimo 1 volta pessimo log n volte FUNZIONE RicercaBinaria(V:vettore;N,X:Intero):Booleano Primo, Ultimo, Centro : Intero ; Trovato : Booleano INIZIO Primo 1; Ultimo N; Trovato Falso MENTRE (Primo<=Ultimo) AND (NOT Trovato) Centro (Primo+Ultimo)/2 SE V[Centro]=X ALLORA Trovato Vero ALTRIMENTI SE V[Centro]<X ALLORA Primo  Centro+1 ALTRIMENTI Ultimo  Centro-1 FINESE FINEMENTRE RITORNO(Trovato) FINE Ciclo eseguito: ottimo 1 volta pessimo log n volte medio log n volte

Confronto fra n - n/2 - log(n)