+ All Categories
Home > Documents > Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno...

Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno...

Date post: 10-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
29
Algorithm Analysis 02 03 04 Computabilità Analisi Complessità Sviluppi 1 1
Transcript
Page 1: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

Algorithm Analysis

02

03

04

Computabilità

Analisi

Complessità

Sviluppi

1

1

Page 2: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

Calcolare il minimo di un insieme di interi

positivi.

Input: < a0; a1; a2; … ; an-1 >

Output:

1

2

3

2

Problema

Page 3: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

Memorizzo in una variabile min il

primo elemento dell’insieme.

Eseguo una scansione (ciclo)

dell’insieme A a partire dal secondo

elemento e confronto ogni elemento

di A con il valore memorizzato nella

variabile min

Se l’elemento corrente è < min,

aggiorno la variabile min (cioè

assegno a min l’elemento corrente).

Al termine del ciclo stampo il

minimo.

1

2

3

3

Analisi

Page 4: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

4 Pseudocodice

Page 5: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

5 Analisi L’algoritmo della ricerca del minimo risolve il

problema (correttezza).

Quante risorse utilizza e quali sono i tempi di esecuzione? (complessità computazionale)

Un algoritmo è corretto se, per ogni istanza di input, termina con l’output corretto

É fondamentale analizzare il tempo di calcolo impiegato per risolvere un problema e lo spazio occupato durante la

computazione (memoria RAM o disco) per poter progettare algoritmi efficienti

Page 6: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

6 Complessità T(n) = tempo di esecuzione = numero di operazioni elementari eseguite

S(n) = spazio di memoria = numero di celle di memoria utilizzate durante l’esecuzione

n = dimensione (taglia) dei dati di ingresso

Il tempo di accesso alle risorse può essere calcolato da una funzione costo. La funzione T(n) esprime il tempo necessario affinché l’algoritmo produca la soluzione.

Page 7: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

7 T(n) Caso peggiore: (spesso)

T(n) = tempo massimo dell’algoritmo su qualsiasi input di dimensione n

Caso medio: (talvolta) T(n) = tempo atteso su tutti gli input di dimensione n =

tempo di ogni input x la probabilità che ci sia quell’input (media pesata)

È necessaria un’assunzione sulla distribuzione statistica degli input (spesso distribuzione uniforme)

Caso migliore: (fittizio = prob. non si verificherà mai) Ingannevole per algoritmi lenti che sono veloci su qualche

input

Page 8: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

8 T(n) Generalmente si cerca un limite superiore perché:

Fornisce una garanzia all’utente L’algoritmo non potrà impiegare più di così

Per alcuni algoritmi si verifica molto spesso Es. ricerca in un DB di informazione non presente

Il caso medio spesso è cattivo quasi quanto quello peggiore Non sempre è evidente cosa costituisce un input medio

Page 9: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

9

Costo computazionale: Indichiamo con f(n) la quantità di risorse (tempo di esecuzione e occupazione di memoria) richiesta da un algoritmo su input di dimensione n, operante su una macchina a registri (MT). Si calcola l’ordine di grandezza di f(n) studiando l’analisi asintotica (limite superiore).

Page 10: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

10 Esempio T(n)

Page 11: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

11 T(n) Qual è il tempo di calcolo di un algoritmo nel caso

peggiore? Dipende dal computer usato

velocità relativa (confronto sulla stessa macchina)

velocità assoluta (su macchine diverse)

“Analisi asintotica” Ignorare le costanti dipendenti dalla macchina

Studiare il tasso di crescita di T(n) con n→∞

Page 12: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

12 T(n) Limite superiore del tasso di crescita del tempo di

esecuzione di un algoritmo «O grande»

Definizione: Sia g(n) una funzione non negativa. g(n) è in O(f(n)) se esistono due costanti positive c e n0 tali che g(n) <= cf(n) per

tutti gli n > n0

O(f(n)) = {g(n) : ∃c > 0, n0 ≥ 0 tali che ∀n ≥ n0 : g(n) ≤ cf(n)}

Significato: Per input abbastanza grandi (n>n0) l’algoritmo viene eseguito in un numero di passi inferiore a cf(n)

Limite asintotico superiore

g(n) = O(f(n))

Page 13: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

13 T(n) Attenzione!

A causa dei fattori costanti e dei termini di ordine inferiore che vengono ignorati

Se T1(n) > T2(n) [asintoticamente]: Per input piccoli algoritmo1 può richiedere meno

tempo di algoritmo2, ma…

Per input sufficientemente grandi algoritmo2 sarà eseguito più velocemente di algoritmo1

Page 14: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

Classi di complessità 1

LINEARE O(n):

Posseduta da algoritmi che

eseguono operazioni

proporzionale ad n o ripetute n

volte. Variante polinomiale se

cicli doppi, ecc…

2

3

COSTANTE O(1):

Posseduta da algoritmi che

eseguono lo sempre lo stesso

numero di operazioni indipendete

dalla dimensione dei dati.

4

14

LOGARITMICA O(n log n):

Posseduta da algoritmi di

ordinamento ottimi.

ESPONENZIALE O(n^k):

Posseduta dal Bubblesort e da

moltiplicazioni tra matrici o

similari.

Page 15: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

15 Esempio1 Dato un problema P e due algoritmi A1 e A2 che lo risolvono siamo interessati a determinare quale ha

complessità minore (qual è "il migliore" dal punto di vista dell'efficienza computazionale).

T1(n) = 3n² + n

T2(n) = n² + 10n

Per n>=4.5, T2(n) < T1(n). La complessità di A2 è minore per ingressi con dimensione maggiore di 4.5.

Soluzione: studio la disequazione T1>T2

Page 16: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

16 Esempio2 Ricerca se un elemento è presente in un vettore:

Le istruzioni (1) e (2) sono quelle dominanti, e vengono eseguite rispettivamente N+1 volte (per i=0..N) e N volte (per i=0..N-1): dunque il costo è lineare. T(n) = 2*(c1+c2) + (n+1)*c3 + n*c4 + n*c2 + n*(c2+c5) + c6

Page 17: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

17 Esempio2

Analisi Asintotica

T(n) = 2*(c1+c2) + (n+1)*c3 + n*c4 + n*c2 + n*(c2+c5) + c6

T(n) = (n+1)*c3 + n*(2*c2+c4+c5)

T(n) = a*(n+1)+b*n = a*n + b*n + a

T(n) = (a+b)*n funzione lineare

Page 18: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

18 Esempio3 Data la funzione T(x) è importante studiare il grafico

trovando il massimo e il minimo nel primo quadrante dell’asse cartesiano per capire quando si ottengono

tempi di esecuzione ridotti o tempi di esecuzione alti in modo da predire il comportamento del calcolatore e

comprendere:

- l’efficienza

- l’atteggiamento a regime

- possibili sovraccarichi

Page 19: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

19 Esempio3 T(n) = n⁴*log(n)

Dominio = n>0

Intersezione assi = A(0,0);B(1,0)

T(n)’= 4n³*log(n)+n⁴/n= 4n³*log(n)+n³= n³*(4log(x)+1)

T(n)’>= 0 ----> n>0; n>2.15

Min(2.15;21.70)

Page 20: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

20 Esempio4 Se T fosse una funzione a due variabili?

T(x,y)= x2 + y2 –2x

In questo caso è importante studiare i massimi e minimi (se esistono). Studiare il limite è più complicato.

Quindi l’unica cosa a cui cambiare significato in R 2 è il modulo, che andrà naturalmente sostituito con la distanza; per cui se (x0,

y0) è un punto di accumulazione per un insieme A dove è definita una funzione f(x, y) diremo che

Page 21: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

21 Esempio4

Page 22: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

Esercizi per casa ? 1)

2)

22

Dati due algoritmi con T1(n) = 4n² + 10n T2(n) = 3n² + 5n – 6, indicare l’efficienza computazionale.

Creare una funzione che calcola il valore minimo in un vettore e fare l’analisi asintotica.

3) Data T(n) = n*(n-3)² studiare i valori di massimo e minimo se presenti.

4) Data T(x,y) = 4x-x²-y² studiare i valori di massimo e minimo se presenti.

Page 23: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

22 Classificazione Problemi

Possiamo classificare i problemi in base alla quantità di risorse necessarie per ottenere la soluzione

Per certi gruppi di problemi, le difficoltà incontrate per trovare un algoritmo efficiente sono sostanzialmente le stesse

Possiamo raggruppare i problemi in tre categorie: 1. I problemi che ammettono algoritmi di soluzione efficienti;

2. I problemi che per loro natura non possono essere risolti mediante algoritmi efficienti e che quindi sono intrattabili;

3. I problemi per i quali algoritmi efficienti non sono stati trovati ma per i quali nessuno ha finora provato che tali algoritmi non esistano

Page 24: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

23 Classi di complessità

Classi di problemi risolubili utilizzando una certa quantità di risorse (per esempio di tempo)

Problemi decidibili

hanno una soluzione algoritmica

Problemi indecidibili

non hanno una soluzione algoritmica

Page 25: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

24 Problemi dedicibili

Problemi polinomiali (P)

problemi per i quali esistono soluzioni praticabili, cioè di complessità in O(f(n)) dove f(n) è un

polinomio oppure è limitato superiormente da un polinomio

Problemi polinomiali non deterministici (NP)

problemi risolvibili in tempo polinomiale o esponenziale da un algoritmo non deterministico

(non si sa a priori quale decisione prenderà: esperienza, decisione, probabilità, reazioni

chimiche, prova tutte le strade…)

Page 26: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

25 Problemi NP

Un commesso viaggiatore deve visitare alcuni suoi clienti in città diverse senza superare il

budget per le spese di viaggio: il suo problema è trovare un percorso (che parta dalla sua

abitazione, arrivi nelle varie città da visitare e poi lo riconduca a casa) la cui lunghezza totale

non superi i chilometri consentiti.

Page 27: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

27 Problemi NP

Algoritmo non deterministico Se esiste un percorso accettabile e lo selezioniamo per primo, l’algoritmo

termina velocemente

altrimenti … Seleziona uno dei possibili percorsi e calcola la sua distanza.

if(questa distanza non è

maggiore del chilometraggio consentito)

then (dichiara un successo)

else (non dichiarare nulla)

Page 28: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

26 Problemi NP

Soluzione tipica: Si considerano i potenziali percorsi in modo sistematico confrontando la lunghezza di ogni percorso con il limite

chilometrico finché si trova un percorso accettabile oppure sono state considerate tutte le possibilità

Non è una soluzione in tempo polinomiale Il numero dei tragitti da considerare aumenta più velocemente di

qualsiasi polinomio al crescere del numero delle città (n!)

La Clay Institute ha istituito nel 2000 un premio di un milione di dollari per chi riuscisse a risolvere uno dei sette problemi

matematici definiti i problemi del millennio. Uno di questi è quello di rendere i problemi NP = P.

Page 29: Presentazione standard di PowerPoint .pdf · Per input piccoli algoritmo1 può richiedere meno tempo di algoritmo2, ma… Per input sufficientemente grandi algoritmo2 sarà eseguito

Fine Seconda Parte

27


Recommended