Teoria della complessità. Introduzione alla complessità degli algoritmi

Documenti analoghi
Corso di Linguaggi e Traduttori 1 AA TEORIA DELLA COMPUTAZIONE (cenni)

Stima di somme: esercizio

Insiemi numerici. Sono noti l insieme dei numeri naturali: N = {1, 2, 3, }, l insieme dei numeri interi relativi:

CAPITOLO 3. Quicksort

1. a n = n 1 a 1 = 0, a 2 = 1, a 3 = 2, a 4 = 3,... Questa successione cresce sempre piú al crescere di n e vedremo che {a n } diverge.

Algoritmi e Strutture Dati (Elementi)

Algoritmi e Strutture Dati Esercizi Prima parte

Tutorato di Probabilità 1, foglio I a.a. 2007/2008

Algoritmi e Strutture di Dati

2,3, (allineamenti decimali con segno, quindi chiaramente numeri reali); 4 ( = 1,33)

algoritmi e strutture di dati

(a 0, a 1, a 2,..., a n,...) (0, a 0 ), (1, a 1 ), (2, a 2 ),... (1, 3, 5, 7,...) Lezione del 26 settembre. 1. Successioni.

Es. di Ordine di crescita. Di quanto aumenta il running time se la taglia ~nlog(n) operazioni. dell input)

2T(n/2) + n se n > 1 T(n) = 1 se n = 1

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09, CANALE E-O)

Algebra delle matrici

Esercizi sull estremo superiore ed inferiore

ESERCIZI SULLE SERIE

SUCCESSIONI DI FUNZIONI

i-esima statistica d ordine di un insieme = i-esimo elemento più piccolo

Appunti complementari per il Corso di Statistica

0.1 Esercitazioni V, del 18/11/2008

Formulazione di Problemi Decisionali come Problemi di Programmazione Lineare

STUDIO DEL LANCIO DI 3 DADI

Probabilità e Statistica (cenni)

Soluzioni degli esercizi del corso di Analisi Matematica I

Progetto e analisi di algoritmi

Congruenze in ; l insieme quoziente / n

Precorso di Matematica, aa , (IV)

a n (x x 0 ) n. (1.1) n=0

Programmazione dinamica vs. divide-et-impera

Serie di potenze / Esercizi svolti

Lezione 2. . Gruppi isomorfi. Gruppi S n e A n. Sottogruppi normali. Gruppi quoziente. , ossia, equivalentemente, se x G Hx = xh.

Le successioni: intro

Trasmissione del calore con applicazioni numeriche: informatica applicata

Tracce di soluzioni di alcuni esercizi di matematica 1 - gruppo 42-57

Lezioni di Matematica 1 - I modulo

a'. a' e b n y se e solo se x, y, divisi per n danno lo stesso resto.

SERIE DI POTENZE Esercizi risolti. Esercizio 1 Determinare il raggio di convergenza e l insieme di convergenza della serie di potenze. x n.

Elementi di calcolo combinatorio

Entropia ed informazione

T n = f n log n = log n. 1 ] 1 ] 1 = sono verificate le disuguaglianze c 1

1 Esponenziale e logaritmo.

A. EQUAZIONI LINEARI IN DUE INCOGNITE E SISTEMI DI 1 GRADO

Congruenze in ; l insieme quoziente / n

1.6 Serie di potenze - Esercizi risolti

NUMERI REALI Mauro Saita Versione provvisoria. Settembre 2012.

TEORIA DELLE MATRICI. dove aij K. = di ordine n, gli elementi aij con i = j (cioè gli elementi a 11

In questo capitolo approfondiremo le nostre conoscenze su sequenze e collezioni,

REGRESSIONE LINEARE E POLINOMIALE

Esercizi Determinare il dominio di de nizione delle seguenti funzioni: a.

Equazioni Differenziali

Esercizi sui numeri complessi per il dodicesimo foglio di esercizi

Scritto da Maria Rispoli Domenica 09 Gennaio :32 - Ultimo aggiornamento Domenica 20 Febbraio :50

Statistica Corso Base (Serale) Dott.ssa Cristina Mollica

13/10/16. Codice 1: Italiana 00. Macchina 00 Razzo 01 Aereo 10

Unità Didattica N 33 L algebra dei vettori

Corso Propedeutico di Matematica

Matematiche Complementari 24 gennaio 2012

Popolazione e Campione

Matematica I, Limiti di successioni (II).

SOLUZIONE DI ESERCIZI DI ANALISI MATEMATICA IV ANNO 2015/16, FOGLIO 2. se x [n, 3n]

( 4) ( ) ( ) ( ) ( ) LE DERIVATE ( ) ( ) (3) D ( x ) = 1 derivata di un monomio con a 0 1. GENERALITÀ

PROPRIETÀ DELLE POTENZE IN BASE 10

Elementi di Teoria dell Informazione

Elementi di statistica

Corso di Laurea Triennale in Matematica Calcolo delle Probabilità I (docenti G. Nappo, F. Spizzichino)

Popolazione e Campione

Delimitazioni inferiori e superiori alla complessita di un problema

2.5 Convergenza assoluta e non

Le successioni: intro

Trasmissione del calore con applicazioni numeriche: informatica applicata

x n (1.1) n=0 1 x La serie geometrica è un esempio di serie di potenze. Definizione 1 Chiamiamo serie di potenze ogni serie della forma

1 Congruenze. Definizione 1.1. Siano a, b, n Z con n 2, definiamo a b (mod n) se n a b.

Calcolo Combinatorio

Daniela Tondini

Alcuni concetti di statistica: medie, varianze, covarianze e regressioni

Trasformata Z, linearizzazione

3. Calcolo letterale

AM110 - ESERCITAZIONI V - VI. Esercizio svolto 1. Dimostrare che ogni insieme finito ha un massimo ed un minimo.

Corso di Informatica

Appendice A. Elementi di Algebra Matriciale

DETERMINANTI (SECONDA PARTE). NOTE DI ALGEBRA LINEARE

Analisi Matematica I

SECONDO ESONERO DI AM1 10/01/ Soluzioni

ALGEBRA I MODULO PROF. VERARDI - ESERCIZI. Sezione 1 NUMERI NATURALI E INTERI

Unità Didattica N 32 Grandezze geometriche omogenee e loro misura

06 LE SUCCESSIONI DI NUMERI REALI

Esercitazione parte 1 Medie e medie per dati raggruppati. Esercitazione parte 2 - Medie per dati raggruppati

Il Teorema di Markov. 1.1 Analisi spettrale della matrice di transizione. Il teorema di Markov afferma che

Analisi Matematica Soluzioni prova scritta parziale n. 1

Prova parziale 30 aprile 2018 Possibili soluzioni

(A + B) ij = A ij + B ij, i = 1,..., m, j = 1,..., n.

Giulio Cesare Barozzi: Primo Corso di Analisi Matematica Zanichelli (Bologna), 1998, ISBN

Campionamento casuale da popolazione finita (caso senza reinserimento )

Aritmetica 2016/2017 Esercizi svolti in classe Seconda lezione

Statistica 1 A.A. 2015/2016

CAMBIAMENTO DI BASE IN UNO SPAZIO VETTORIALE

9 LIMITI DI SUCCESSIONI NUMERICHE

Transcript:

Teoria della complessità Itroduzioe alla complessità degli algoritmi Doato Malerba Premessa Lo studio della computabilità aiuta a compredere quali problemi ammettoo ua soluzioe algoritmica e quali o. Per i problemi computabili, è iteressate cooscere la complessità degli algoritmi che li risolvoo. Algoritmo: sequeza di passi computazioali che trasformao u valore (o u isieme di valori) i igresso i u valore (o u isieme di valori) i uscita.

Premessa La complessità di u algoritmo corrispode a ua misura delle risorse di calcolo cosumate durate la computazioe. È tato più elevata quato maggiori soo le risorse cosumate. Teoria della complessità Teoria della complessità computazioale: braca dell'iformatica che studia l'uso delle risorse di calcolo ecessarie per la computazioe di algoritmi e per la soluzioe di problemi. Questo studio è importate al fie di: poter cofrotare algoritmi diversi che risolvoo lo stesso problema stabilire se dei problemi ammettoo algoritmi risolutivi che o soo praticamete computabili, cioè che richiedoo risorse che o soo praticamete dispoibili.

Misure statiche Le misure statiche soo basate sulle caratteristiche dell algoritmo e prescidoo dai valori dell iput su cui esso opera. Esempi: Numero di istruzioi Numero di cicli misura strutturale Misure diamiche Le risorse di iteresse predomiate ella teoria della complessità soo: tempocomplessità i tempo spazio di memoriacomplessità i spazio Queste soo misure diamiche, che tegoo coto sia delle caratteristiche dell algoritmo che dell iput su cui esso opera. Soo misure basate sulle caratteristiche di ua computazioe. 3

Defiizioe assiomatica Ua misura diamica è u isieme di fuzioi calcolabili i associate agli algoritmi P i tale che:. Per ogi i, P i (x) termia se e solo se i (x) è defiita;. Esiste u predicato totale calcolabile M tale che M(i,x,m)=vero se e solo se i (x)=m. M. Blum (967). A machie idepedet theory of the complexity of recursive fuctios, J. of the ACM, 4, 3-336. Defiizioe assiomatica La secodo assioma assicura che esiste u modo effettivo per decidere se ua computazioe ha speso o più di m uità di risorsa. Utilizzado ripetutamete il predicato M risulta quidi possibile calcolare, per qualuque computazioe P i (x) che termia, la misura diamica di complessità i (x) associata a P i (x). 4

Defiizioe assiomatica Si osservi che il primo assioma o implica il secodo. Se prediamo come i gli stessi algoritmi P i il primo assioma sarebbe verificato. Per assurdo suppoiamo che ache il secodo assioma sia verificato. Se suppoiamo che gli algoritmi P i siao descritti da matrici fuzioali di macchie di Turig T i, dev essere decidibile il predicato T i (x)=y. Ma questo implicherebbe la possibilità di risolvere il problema della termiazioe per macchie di Turig che è oto o essere decidibile. Defiizioe assiomatica Si osservi che il secodo assioma o implica il primo. Se prediamo i (x)=k costate per ogi i. I tal caso il secodo assioma è evidetemete verificato metre o lo è il primo. Se suppoiamo che gli algoritmi P i siao descritti da matrici fuzioali di macchie di Turig T i, la seguete defiizioe: i (x)= umero di trasizioi eseguite da T i (x) soddisfa etrambi gli assiomi. 5

Defiizioe assiomatica Blum trasse da questa defiizioe delle proprietà delle misure di complessità del tutto idipedeti dal modello di calcolo. Tuttavia, per caratterizzare sufficietemete la complessità di algoritmi e/o problemi occorre itrodurre u modello di calcolo all itero del quale defiire particolari misure di complessità. Misure diamiche di complessità per macchie di Turig determiistiche Come già visto, ua misura diamica della complessità i tempo per le macchie determiistiche può essere rappresetata dal umero di trasizioi che occorroo i ua computazioe massimale. Ua misura diamica della complessità i spazio potrebbe essere il umero di celle del astro utilizzate da ua macchia di Turig determiistica durate la sua computazioe. 6

Misure diamiche di complessità per macchie di Turig determiistiche Potremmo raffiare questa defiizioe facedo riferimeto allo spazio di lavoro addizioale, cioè alla quatità di celle di astro utilizzate per eseguire ua computazioe, o cosiderado lo spazio richiesto per la descrizioe dei dati di igresso. Si oti tuttavia che i ogi caso questa misura diamica di complessità i spazio o soddisfa il primo assioma di misura diamica, poiché ua computazioe può o termiare pur richiededo ua quatità fiita di astro. Misure diamiche di complessità per macchie di Turig determiistiche Questo problema è aggirato cosiderado la misura diamica di complessità i spazio o defiita ogiqualvolta la computazioe T i (x) o termia. È possibile però sapere se ua computazioe T i (x) che utilizza u umero limitato di celle termia o meo? I altre parole, la defiizioe di misura diamica di complessità i spazio è operativa, cioè soddisfa etrambi gli assiomi? 7

Misure diamiche di complessità per macchie di Turig determiistiche Lemma. Se è possibile determiare u limite fiito k sul umero di celle di astro richiesto dalla computazioe T i (x), allora è ache possibile decidere i tempo fiito se la computazioe termia o meo. Dimostrazioe. Suppoiamo che T i sia ua MT co u alfabeto di c simboli (icluso blak) ed s stati (s= Q ). Per ipotesi esiste u limite superiore k sul umero di celle di astro utilizzate ella computazioe di T i (x). Misure diamiche di complessità per macchie di Turig determiistiche Facciamo partire la macchia e osserviamola metre esegue le prime N=c k sk trasizioi. Se la macchia o si ferma prima, allora possiamo asserire che o si fermerà più perché è etrata i u ciclo. Ifatti il valore di N è u limite superiore al umero di differeti cofigurazioi istataee assumibili durate la computazioe di T i (x): esso prevede che, per tutte le cofigurazioi di c simboli i k celle, la computazioe scadisca tutte le k celle, e per ogua di esse, passi i tutti gli s stati possibili. 8

Misure diamiche di complessità per macchie di Turig o determiistiche Nel caso di macchia di Turig o determiistica MTN i la complessità i tempo è defiita el modo seguete. Sia MTN i (x) ua computazioe o determiistica. Distiguiamo i tre casi:. Esiste almeo ua computazioe massimale accettate. Allora la complessità i tempo è defiita come la miima complessità fra quelle massimali accettati.. Tutte le computazioi soo massimali e rifiutati. Allora la complessità i tempo è defiita come la miima complessità fra quelle massimali rifiutati. 3. Le computazioi massimali soo rifiutati e almeo ua o è massimale. Allora la complessità i tempo o è defiita. Misure diamiche di complessità per macchie di Turig o determiistiche La complessità i spazio el caso di macchie di Turig o determiistiche è defiita i modo aalogo. 9

Misure diamiche di complessità per macchie a registi Le misure diamiche di complessità per macchie a registri soo già state itrodotte per studiare il costo di ua simulazioe di ua RAM mediate ua MT (e viceversa). Ua prima misura di complessità i tempo si limita a cotare il umero di istruzioi eseguite i ua computazioe. Essa si basa sull assuzioe che ogi istruzioe ha u costo uitario (modello di costo uiforme). Misure diamiche di complessità per macchie a registi Ua misura di complessità più realistica tiee coto della taglia degli operadi delle istruzioi (modello a costi logaritmici). Aalogamete possiamo defiire ua misura diamica della complessità i spazio per RAM i due modi alterativi:. Numero di registri usati durate la computazioe (assuzioe di costo uiforme). Somma su tutti i registri, icluso l accumulatore, di l(x i ), dove x i è il massimo itero memorizzato el registro i-esimo durate la computazioe (assuzioe di costo logaritmico) 0

U modello di calcolo basato su liguaggio imperativo ad alto livello Descriveremo u algoritmo mediate operazioi semplici, come assegazioe ed operazioi aritmetiche, operazioi composte di selezioe (if the else ) e iterazioe ( while do, repeat util ). chiamate di procedure e fuzioi Pascal semplificato Modello di costo Per poter valutare la complessità i tempo o spazio di u algoritmo è ecessario iazitutto defiire u modello di costo che stabilisca come calcolare il cosumo di ua risorsa.

Modello di costo temporale Assumiamo quato segue:. il costo di u'operazioe di assegazioe, aritmetica, logica e di cofroto sia uitario;. il costo di u'operazioe di selezioe if cod the S else S sia dato dal costo di esecuzioe del test cod più la somma dei costi delle istruzioi del blocco S, el caso i cui la codizioe sia vera, o la somma dei costi delle istruzioi del blocco S el caso i cui la codizioe sia falsa; Modello di costo temporale 3. il costo di u'istruzioe di ciclo while cod do S sia dato da: costo del test cod + (costo del test cod + costo delle istruzioi i S) * umero di volte i cui il ciclo è ripetuto; 4. il costo di u'istruzioe di ciclo repeat S util cod sia dato da: ( costo del test cod + costo delle istruzioi i S) * umero di volte i cui il ciclo è ripetuto;

Modello di costo temporale 5. il costo di u'istruzioe di ciclo for i to do S sia pari a: costo uitario per l'iizializzazioe di i + (costo uitario del test [i] di fie ciclo + costo delle istruzioi i S + costo di icremeto di i) * + costo uitario del test [i ] di fie ciclo; 6. il costo dell accesso al valore di ua variabile o a u elemeto di u array sia ullo. Modello di costo temporale 7. il costo di ua chiamata di u sottoprogramma sia pari alla somma dei costi di esecuzioe di tutte le istruzioi che lo compogoo. I questo modo assumiamo che il costo di attivazioe della procedura (passaggio di parametri, allocazioe di variabili, ecc.) sia zero. Le ipotesi precedeti elimiao la dipedeza dalla macchia e dal compilatore ell aalisi della complessità di u programma, ma portao a risultati approssimati. 3

Esempio Cosideriamo il seguete algoritmo che calcola il fattoriale: fatt for i to do fatt fatt*i; Allora se =3, il costo per il calcolo di 3! i base a questo algoritmo è: iizializzazioe di fatt + iizializzazioe di i a + test i, quado i ( + moltiplicazioe + assegazioe a fatt + costo di icremeto di i, ) * umero di volte i cui il ciclo è ripetuto 3 + test i, quado i > = 8 Operazioi domiati I geerale, el decidere come caratterizzare la complessità di tempo di u algoritmo, si cosiderao particolari operazioi che costituiscoo il meccaismo domiate del procedimeto risolutivo. Esempi: I cofroti, gli scambi e gli spostameti caratterizzao gli algoritmi di ordiameto. Le operazioi di moltiplicazioe caratterizzao il calcolo del fattoriale. Le operazioi di addizioe caratterizzao il calcolo di ua sommatoria. 4

Operazioi domiati I geerale, l operazioe domiate è caratterizzata dal fatto di essere l operazioe eseguita più volte ella computazioe defiita da u algoritmo. Per idividuare l operazioe domiate, sarà spesso sufficiete adare ad esamiare direttamete le operazioi coteute ei cicli più iteri. Esempio: Nel calcolo del fattoriale l operazioe domiate è la moltiplicazioe. Modello di costo temporale Il modello di costo itrodotto per u semplice liguaggio di programmazioe imperativo ad alto livello sottitede u criterio di costo uiforme per le operazioi. Questo vuol dire che fra ua operazioe di assegazioe, di addizioe, di moltiplicazioe o si fa alcua differeza. Ioltre si assume che ua cella di memoria possa coteere iteri arbitrariamete gradi. No sempre simili semplificazioi soo accettabili. 5

Criterio di costo logaritmico Per teere coto del fatto che, i u calcolatore reale, ua cella di memoria ha ua capacità limitata, si assume che per coteere umeri arbitrariamete gradi occorre u umero di celle proporzioale al logaritmo dei umeri stessi e per eseguire ua istruzioe si deve pagare u costo proporzioale al logaritmo degli operadi. Così, l icremeto di ua uità per 0 ha costo 0, metre l aalogo icremeto per ha costo. Criterio di costo logaritmico Avevamo osservato che il seguete programma RAM che calcola x y ha complessità i tempo O(y) sotto assuzioe di costo uiforme, metre sotto assuzioe di costo logaritmico è O(y logx) 6

Criterio di costo logaritmico La complessità i spazio è determiata degli iteri memorizzati ei registri da 0 a 3. Sotto assuzioe di costo uiforme la complessità i spazio è O(). Sotto assuzioe di costo logaritmico è O(ylogx), dal mometo che il più grade itero memorizzato i uo di questi registri è x y e l(x y )=ylogx. Se cosiderassimo questo programma come eseguito da u reale processore, il costo uiforme sarebbe realistico solo se ua sigola parola del calcolatore potesse memorizzare u itero grade quato x y. Criterio di costo logaritmico D altrode, se x y fosse maggiore del massimo itero rappresetabile i ua parola, ache la complessità i tempo logaritmica sarebbe piuttosto irrealistica, dal mometo che si assume che due iteri i e j possao essere moltiplicati i u tempo O(l(i)+l(j)), metre ad oggi o è oto alcu metodo che coseta di eseguire la moltiplicazioe di due iteri di bit co u costo computazioale o(log). Riepilogado, se è ragioevole assumere che ciascu umero icotrato i ua computazioe possa essere memorizzato i ua parola, allora l assuzioe di costo uiforme è appropriata. Altrimeti ua aalisi più realistica dovrà basarsi su u modello di costo logaritmico. 7

Criterio di costo logaritmico Altro esempio: Il costo del calcolo di! è sotto assuzioe di costo uiforme (si fao moltiplicazioi). Il costo approssimato è i ilogi Approssimazioe di Stirlig:! e Modello di costo i spazio Detto A u array di 0 elemeti di tipo itero, allora l'algoritmo che calcola la sommatoria dei umeri i A: somma 0 for i to do somma somma + A[i]; ha la seguete complessità i spazio: somma + i + A 0 = 8

Modello di costo i spazio Come per la complessità i tempo, ache i questo caso approssimeremo la complessità i spazio cosiderado solo i dati strutturati e trascurado i dati di tipo semplice. Ioltre, ache i questo caso si sta facedo ua assuzioe di costo uiforme. Complessità i tempo L'iteresse maggiore ell'ambito della teoria della complessità è rivolto alla complessità i tempo, e ciò per due motivi:. la tecologia attuale mette a disposizioe memorie di grade ampiezza a costi coteuti;. la memoria, a differeza del tempo, è ua risorsa che può essere riutilizzata. 9

Defiire la complessità: i fuzioe di cosa? Oltre alla defiizioe di u modello di costo, è ecessario affrotare u altro problema per giugere ad u'aalisi rigorosa della complessità di u algoritmo: idividuare i parametri i fuzioe dei quali dev'essere defiita la complessità. A questo proposito si deve osservare che il tempo di computazioe di u algoritmo dipede quasi sempre dai dati di igresso. Esempio: La complessità i tempo per il calcolo di 4! è 3, metre è 8 il tempo ecessario per calcolare 3! co lo stesso algoritmo. Dimesioe dell iput I geerale la complessità di u algoritmo è fuzioe della dimesioe dell iput, ovvero della mole dei dati del problema da risolvere. Si può adottare u criterio che prescida dal tipo dei dati i igresso (umeri, strighe, vettori, ecc.), cosiderado come parametro la quatità di memoria utilizzata per rappresetare i dati i igresso. La rappresetazioe dovrà essere ragioevole e o iaturalmete dilatata. 0

Dimesioe dell iput Nel caso di iput umerico la scelta fra ) valore dell iput ) lughezza della sua rappresetazioe può far apparire lieare il costo di u algoritmo che è ivece espoeziale. Esempio: calcolo del fattoriale di. Le moltiplicazioi soo, ma se la dimesioe dell iput è log allora il umero di moltiplicazioi è espoeziale i. Dimesioe dell iput Esempio: l algoritmo che decide se x è u umero primo provado a dividere x per tutti i umeri aturali i<x esegue O(x) passi (divisioi). Assumedo, per semplicità, che ua divisioe sia eseguita i tempo costate rispetto al valore dei rispettivi operadi, la complessità risulterà espoeziale per ua codifica biaria di x co log (x+) bit, metre sarà poliomiale (lieare, addirittura) se si utilizza ua rappresetazioe uaria (e.g., co x barre ). Si osservi che le le due codifiche o soo poliomialmete correlate.

Dimesioe dell iput Date due codifiche di u itero x, e(x) e e'(x), esse si dirao poliomialmete correlate se esistoo due poliomi p, p' tali che, per ogi x e(x) p'( e'(x) ) e'(x) p( e(x) ) dove idica la lughezza della codifica. I seguito supporremo che la codifica dei dati i igresso sia ragioevole, ovvero: Cosidereremo codifiche i base k dei valori umerici Rappreseteremo isiemi mediate eumerazioe delle codifiche dei loro elemeti. Rappreseteremo relazioi e fuzioi mediate eumerazioe delle codifiche dei relativi elemeti (coppie e -ple) Rappreseteremo grafi come coppie di isiemi (di odi e archi) Dimesioe dell iput Aziché cosiderare la dimesioe complessiva della rappresetazioe dei dati si può assumere per semplicità u parametro caratterizzate la lughezza dell iput. Esempio: calcolo del valore di u poliomio i u puto. La dimesioe dell iput è il grado del poliomio.

Fuzioe di complessità Determiare la complessità i tempo (o i spazio) di u algoritmo sigifica determiare ua fuzioe di complessità f() che forisca la misura del tempo (o dello spazio di memoria occupato), al variare della dimesioe dell iput,. Esempio: Adottado come modello di costo quello basato su assuzioe di costo uiforme, si evice che la fuzioe di complessità per l'algoritmo di calcolo del fattoriale è: f() = 5+3 Acora sull operazioe domiate Data la defiizioe di fuzioe di complessità f() si può chiarire ulteriormete il cocetto di operazioe domiate. Diciamo che u operazioe i u algoritmo è domiate quado, detto () il umero di volte che essa viee ripetuta durate la realizzazioe di u algoritmo i fuzioe della dimesioe dell iput, verifica c () f() dove c è ua opportua costate. 3

Termii domiati La teoria della complessità si occupa i particolare di studiare l'adameto asitotico delle fuzioi di complessità f(). Il vataggio è che lo studio asitotico forisce u criterio chiaro per poter cofrotare due algoritmi. Esempio: A: f () = 3-4+ A: f () = +3 Per =, risulta f () < f (), metre per =3,4,... risulta f () > f (). Come stabilire, duque, quale sia l'algoritmo più efficiete? L'aalisi asitotica ci cosete di rispodere al quesito: A è più efficiete perché> : f () > f (). Termii domiati Nello studio asitotico vegoo trascurate le costati moltiplicative e, se la f() risulta costituita da più termii, vegoo trascurati quei termii la cui crescita asitotica sia iferiore a quella di altri termii. Esempio Le segueti fuzioi di complessità: f () = 3 + + f () = 4 f 3 () = 4 + soo asitoticamete equivaleti, i quato crescoo tutte co il quadrato di. Nello studio della complessità asitotica degli algoritmi si ricorre alle segueti defiizioi di ordie di gradezza. 4

Ordie O Def. di ordie O (o grade) Ua fuzioe f() è di ordie O(g()) se esistoo due costati positive c ed 0 tali che: 0 f() cg(). La g() idica u limite superiore al comportameto asitotico della fuzioe f, ovvero f o si comporta asitoticamete peggio di g. Esempio: La seguete fuzioe di complessità: f() = 3 + 3 - è u O( ) (c=4, 0 =3) I geerale, f() è u O( k ) per ogi k. Fra le varie fuzioi g() tali che il costo dell'algoritmo sia u O(g()) si è geeralmete iteressati alla miorate. O(g()) deota l'isieme di tutte le fuzioi f() di ordie O(g()). Ordie di u poliomio Proposizioe. Se f()= a m m + a m- m- + + a + a 0 è u poliomio di grado m, allora f() è u (m). Dimostrazioe. f() = a m m + a m- m- + + a + a 0 = a m a m a m 0 m am a0 m am m ( a m + a m- + + a + a 0 )m Quidi posto c= a m + a m- + + a + a 0 ed 0 = si ha: f() cm. 5

Legge trasitiva per O La relazioe è O grade di soddisfa la proprietà trasitiva, cioè se f() è O(g()) e g() è O(h()) abbiamo ache che f() è O(h()). f() è O(g()) f() c g(). g() è O(h()) g() c h(). Basta predere come 0 =max(, ) e c=c c. Fuzioi icommesurabili No sempre due fuzioi f() e g() possoo essere cofrotate mediate u O-grade, cioè o sempre si può affermare che f() è O(g()) oppure g() è O(f()). Ci soo coppie di fuzioi icommesurabili, essua delle quali è O-grade dell altra. Quidi O-grade defiisce ua relazioe d ordie parziale. Esempio: f ( ) dispari pari g( ) pari dispari 6

Ordie o Def. di ordie o (o piccolo) Ua fuzioe f() è di ordie o(g()) se per ogi costate positiva c esiste u 0 tale che: 0 f() < cg(). La g() è u limite superiore stretto, per cui f()= è u O() ma o u o(). Ituitivamete, ella otazioe-o, la fuzioe f() diveta isigificate rispetto a g() ma mao che cresce; cioè: f lim ( ) 0 g( ) Ordie Def. di ordie (omega grade) Ua fuzioe f() è di ordie (g()) se esistoo due costati positive c ed 0 tali che: 0 cg() f(). La g() idica u limite iferiore al comportameto asitotico della fuzioe f, ovvero f o si comporta asitoticamete meglio di g. Esempio: La fuzioe di complessità: f() = 3 + 3 - è u ( ) (c=, 0 =). I geerale, f() è u ( k ) per ogi k. Siamo tuttavia iteressati alla maggiorate. (g()) deota l'isieme di tutte le fuzioi f() di ordie (g()). 7

Ordie Def. di ordie (omega piccolo) Ua fuzioe f() è di ordie (g()) se per ogi costate positiva c esiste u 0 tale che: 0 cg() < f(). La g() idica u limite iferiore stretto al comportameto asitotico della fuzioe f, ovvero f, per cui possiamo dire che f() = 3 è u () ma o u ( ). Quidi f() diveta arbitrariamete grade rispetto a g(), ovvero: f lim ( ) g( ) Ordie Def. di ordie (theta) Ua fuzioe f() è di ordie (g()) se essa è allo stesso tempo di ordie O(g()) e (g()). Quidi devoo esistere tre costati positive c, c ed 0 tali che: 0 c g() f()c g(). Se f() è di ordie (g()), allora f si comporta asitoticamete esattamete come la g, per cui l'adameto di g caratterizza precisamete quello di f. Formalmete possiamo ache scrivere: f lim ( ) c g( ) co c>0 (g()) deota l'isieme di tutte le fuzioi f() di ordie (g()). 8

Risultati oti per somme di iteri No sempre si riescoo a scrivere direttamete delle fuzioi di complessità i forma chiusa, ovvero come espressioe aalitica di. I diversi casi si giuge a formulazioi di f() i termii di somme di poteze di iteri per le quali o è immediato stabilire l'ordie di complessità Si riportao alcui risultati oti relativi a somme di poteze di iteri che ricorroo spesso elle aalisi di complessità degli algoritmi: Risultati oti per somme di iteri a) f ( ) i f() è () ( ) f ( ) b) i i f() è () ( )( ) f ( ) c) i i 6 f() è (3) I geerale si ha che: k k k i termii di ordie iferiore i k Quidi possiamo cocludere che: k f ( ) i i è di ordie (k+). 9

Aalisi di algoritmi ricorsivi Si fa uso di relazioi di ricorreza el caso di aalisi della complessità di algoritmi ricorsivi, cioè di algoritmi che richiamao se stessi su sotto isiemi di dati e che foriscoo le soluzioi fiali combiado le soluzioi parziali otteute dalle loro esecuzioi sui sotto isiemi. Esempio: cosideriamo la seguete fuzioe che calcola ricorsivamete il fattoriale di u umero : fuctio fatt() if = 0 the fatt else begi m - fatt fatt(m)* ed Aalisi di algoritmi ricorsivi Se si idica co f() la complessità i tempo della fuzioe fatt(), allora sotto assuzioe di costo uiforme si ha che: f() = se = 0 f() = + {cofroto = 0} f( - ) + {calcolo di fatt( - )} + {calcolo di m} {calcolo di fatt} se > 0 Quidi la complessità della fuzioe è espressa mediate la seguete relazioe di ricorreza: f() = se = 0 f() = 5 + f( - ) se > 0 30

Risolvere relazioi di ricorreza Le relazioi di ricorreza possoo essere viste come equazioi dove l'icogita è ua fuzioe. I pratica vogliamo trovare ua defiizioe di f i forma esplicita, data ua i forma implicita. Come fare? Il metodo più semplice: espadere le relazioi stesse, sostituedo successivamete alla relazioe di parteza per f() quella riscritta per f(-) fiché o resta che ua formula chiusa per f() compredete e costati. Esempio: el caso dell'algoritmo del fattoriale si ha: f() = 5 + f(-) = = 5 + (5 + f(-)) =... = 5 + (5 + (5 +... + (5 + f(0)))) = = + 5* Per relazioi di ricorreza più complesse, questo metodo può essere iefficace. Risolvere relazioi di ricorreza I geerale, i u algoritmo espresso ricorsivamete, la complessità può essere formulata attraverso ua relazioe di ricorreza i cui è riportato: ) il costo di calcolo dei risultati parziali otteuti mediate chiamate ricorsive ) il costo del lavoro di combiazioe dei risultati parziali svolto prima e dopo le chiamate ricorsive. Possiamo defiire vere e proprie classi di relazioi ricorreza i base alle caratteristiche del lavoro di combiazioe svolto. Di seguito foriamo direttamete l'ordie di complessità per alcue di queste classi di ricorreza. 3

Lavoro di combiazioe idipedete da a) relazioi lieari di ordie h f()=c f()=c... f(h)=c h f()= a f(-) + a f(-) +... + a h f(-h) + b per > h Allora f() è O(a ) co a >, ovvero f è espoeziale. b) relazioi lieari di ordie h, co a h = e a j = 0 per j h- f()=c f()=c... f(h)=c h f()= f(-h) + b per > h Allora f() è O(), cioè è lieare. c) relazioi co partizioe dei dati f()=c f()= af(/k) + b per =k m, m itero e > Se a = allora f() è O(log ). Se a > allora f() è O( logk ). Lavoro di combiazioe proporzioale a a) relazioi lieari di ordie h, co a h = e a j = 0 per j h- f()=c f()=c... f(h)=c h f()= f(-h) + b + d per > h Allora f() è O( ). b) relazioi co partizioe dei dati f()=c f()= a f(/k) + b + d per =k m, m itero e > Se a < k allora f() è O(). Se a = k allora f() è O( log ). Se a > k allora f() è O( logk a ). 3

Divide et Impera Ua tecica di risoluzioe dei problemi cosiste ella scomposizioe di u problema i sottoproblemi, alcui dei quali dello stesso tipo del problema di parteza, ma più semplici, e ella successiva combiazioe delle soluzioi dei sottoproblemi i modo da otteere la soluzioe del problema di parteza. Questa tecica, spesso usata ricorsivamete, cosete di trovare algoritmi efficieti. Lo scheletro di ua procedura ricorsiva DIVIDE-ET-IMPERA per risolvere u problema P di dimesioe è il seguete: Divide et Impera procedure DIVIDE-ET-IMPERA(P,); begi if <=k the {risolvi P direttamete} else begi {dividi P i h sottoproblemi P,, P h di dimesioe,, h, co i <} for i := to h do DIVIDE-ET-IMPERA(P i, i ) {combia i risultati di P,, P h i modo da otteere la soluzioe per P} ed ed 33

Divide et Impera Il calcolo della complessità di algoritmi progettati secodo la tecica divide et impera è effettuato mediate la relazioe di ricorreza: f ( ) costate per k f ( ) d( ) c( ) f ( i ) per! k i dove d() e c() deotao la complessità rispettivamete della divisioe del problema e della composizioe dei suoi risultati. Se i dati soo partizioati i maiera bilaciata, cioè tutti gli i soo all icirca uguali, allora l algoritmo può risultare molto efficiete. Esempi di algoritmi otteuti mediate questa tecica soo la ricerca biaria, il quicksort e il mergesort. h Complessità el caso pessimo, ottimo e medio Molte volte la complessità di u algoritmo o può essere caratterizzata da ua sola fuzioe di complessità. A parità di dimesioe dei dati, il tempo di calcolo può dipedere dalla specifica cofigurazioe dei dati. Esempio: Il seguete algoritmo determia la posizioe del primo valore false i u array le cui compoeti soo di tipo booleao: i trovato A[] while trovato do begi i i + if i > the trovato false else trovato A[i] ed result i La dimesioe dei dati è data dal umero di elemeti di A, cioè. 34

Complessità el caso pessimo, ottimo e medio L operazioe domiate rispetto alla quale valutare la complessità è il cofroto. La complessità i tempo o dipede solo da. Nel caso i cui i dati soo distribuiti i modo tale che A[]=false, si ha: f() = Nel caso i cui l'array A o cotiee u valore false si ha: f() = + Complessità el caso pessimo, ottimo e medio Di solito si cosiderao tre tipi di complessità: " caso pessimo: si ottiee cosiderado quella particolare cofigurazioe che, a parità di dimesioe dei dati, dà luogo al massimo tempo di calcolo; " caso ottimo: si ottiee cosiderado la cofigurazioe che dà luogo al miimo tempo di calcolo; " caso medio: si riferisce al tempo di calcolo mediato su tutte le possibili cofigurazioi dei dati, sempre per ua determiata dimesioe dei dati. Nell'esempio precedete, si ha: f ott () = f pess () = + 35

Complessità el caso pessimo, ottimo e medio La determiazioe della fuzioe di complessità el caso medio è u po' più complicata, e richiede la coosceza della distribuzioe di probabilità sulle possibili cofigurazioi dei dati. Esempio: Ricerca del primo false. Suppoedo che tutte le cofigurazioi di false e true siao ugualmete probabili (assuzioe di distribuzioe uiforme), si ha / di probabilità che false si trovi al primo posto. Complessità el caso pessimo, ottimo e medio false false false false false false false true 3 false false true false... 8 false true true true } } 9 true false false false 0 true false false true... 6 true true true true 36

Complessità el caso pessimo, ottimo e medio Idicato co E l'eveto: E : A[] = false allora si avrà: P(E ) = / Nel caso si verifichi E il costo computazioale è dato da: costo(e ) = Aalogamete, si ha /4 di probabilità che false o si trovi al primo posto ma al secodo. Idicato co E l'eveto: E : A[] = true # A[] = false allora si avrà: P(E ) = /4 e si può facilmete mostrare che il costo computazioale è dato da: costo(e ) = 3 Complessità el caso pessimo, ottimo e medio I geerale, l'eveto: E k : A[] = true # A[] = true##a[k-] = true # A[k] = false co k, ha probabilità / k di verificarsi: P(E k ) = / k e ioltre: costo(e k ) = + (k - ) Ifie la probabilità di avere tutti true i A è /, dal mometo che esiste ua sola cofigurazioe sulle possibili i cui ciò si verifica. Quidi, l eveto E + : A[] = true # # A[] = true ha probabilità e costo segueti: P(E + ) = / costo(e + ) = + 37

38 Complessità el caso pessimo, ottimo e medio Allora il costo medio (o costo atteso) della ricerca del primo false i A è dato dalla media pesata dei costi dei sigoli eveti E i, dove i pesi soo dati dalle probabilità degli eveti stessi: f P E E med i i i ( ) ( ) ( ) costo 4 3 k k ( ( )) ( ( )) ( ) 0 4 ( ) ( ) ( ( )) ( ( )) ( ) k k 4 4 k k k ( ) ( ) k k k 4 k k k 4 Complessità el caso pessimo, ottimo e medio i i i i 0 $ $ % & & ' Si dimostra che: q q q i i 0 da cui 0 i i Ioltre si dimostra che: 0 ) ( ) ( q q q q iq i i da cui 0 i i i

Complessità el caso pessimo, ottimo e medio quidi f med ( ) Si osservi che f med () 3 e che lim ( ) 3 f med 3 quidi f med () è di ordie (c), dove c è ua qualsiasi costate maggiore di 0. Riepilogado: " caso pessimo: (); " caso ottimo: (); " caso medio: (3). Complessità el caso pessimo, ottimo e medio I alcui algoritmi tutte le possibili cofigurazioi dei dati soo equivaleti per quato riguarda la complessità i tempo. I questo caso la complessità ottima, pessima e media coicidoo. Esempio: Il seguete algoritmo: couter for i to do if A[i] the coutercouter + ; result couter deve ecessariamete aalizzare tutti gli elemeti di A per cotare il umero di true. Quidi: f ott () = f pess () = f med () 39

Le classi di complessità computazioale L'aalisi della complessità asitotica degli algoritmi cosete di categorizzare gli stessi i classi di complessità: costate () logaritmica (log ) lieare () log ( log ) quadratica () cubica (3) espoeziale (a) co a> Gli algoritmi co complessità costate soo più efficieti di quelli co complessità logaritmica, che a loro volta soo più efficieti di quelli co complessità lieare, e così via. Per idicare ciò si scrive ache che: () < (log ) < () < ( log ) < ( ) < ( 3 ) < (a ) Le classi di complessità computazioale Si osservi che la crescita di fuzioi di complessità di ordie () o ( log ) è molto più leta che per fuzioi di complessità di ordie superiore. 40

Le classi di complessità computazioale U algoritmo co complessità espoeziale sarà praticamete utilizzabile solo per valori piccolissimi di, come mostra chiaramete la seguete tabella: log log 3 4 8 4 3,3 0 33, 0 0 3 > 0 3 6,644 0 664,4 0 4 0 6 >>0 5 9,966 0 3 9.966,0 0 6 0 9 >>0 50 3,87 0 4 3.877 0 8 0 >>0 500 Le classi di complessità computazioale Per algoritmi di complessità espoeziale l'aumeto della velocità di calcolo di u elaboratore o serve a molto, poiché ciò cosete di risolvere ello stesso tempo problemi solo di poco più complessi di quelli risolvibili precedetemete. complessità i tempo calcolatori attuali calcolatori 000 volte più veloci 000 3,6 3 3 0 3 a 4 4 + 9,97 La tabella riporta i tempi di computazioe relativi a diverse fuzioi di complessità ed a diverse dimesioi dei dati di igresso, ell'ipotesi che u'operazioe elemetare vega eseguita i u (sec. U aumeto di 000 volte della velocità di calcolo farebbe crescere solo di 0 uità la dimesioe delle istaze di u problema risolubili i u'ora co u algoritmo di complessità. 4

Le classi di complessità computazioale Beché sia iteressate studiare gli algoritmi di ogi ordie di complessità, la suddivisioe che riveste la massima importaza è quella tra algoritmi poliomiali ed espoeziali. Gli algoritmi poliomiali hao complessità O( k ), co k>0, metre gli algoritmi espoeziali hao complessità (a g() ), co a> e g() fuzioe crescete di. Quidi soo poliomiali gli algoritmi di complessità (log ) e ( 4 ), metre soo espoeziali gli algoritmi ( log ), ( ), e ( log ). La suddivisioe tra le due famiglie idica, i liea di pricipio, quali algoritmi abbiao importaza pratica e quali o. Tesi della computazioe sequeziale Quesito: è possibile che algoritmi poliomiali per u modello di calcolo sequeziale risultio espoeziali per u altro modello e viceversa? Tesi della computazioe sequeziale: calcolatori diversi possoo simularsi a viceda (secodo quato afferma la tesi di Church) seza però che u algoritmo cambi classe (poliomiale o espoeziale) per effetto della simulazioe. La tesi di Church afferma i pratica che tutti gli elaboratori soo i grado di risolvere gli stessi problemi La tesi della computazioe sequeziale è più forte, i quato afferma che la complessità degli algoritmi o cambia sigificativamete da calcolatore a calcolatore (qui per cambio sigificativo itediamo che si passa da complessità poliomiale ad espoeziale o viceversa). 4

Tesi della computazioe sequeziale Alla base della tesi della computazioe sequeziale c è l ipotesi ragioevole che il rapporto tra i tempi di esecuzioe di due operazioi elemetari equivaleti, su due calcolatori diversi A e B, sia al più ua fuzioe poliomiale r(). Ne segue che u algoritmo di complessità poliomiale p() su A, avrà al più complessità poliomiale p()r() su B. Tesi della computazioe sequeziale Alla base della tesi della computazioe sequeziale c è l ipotesi ragioevole che il rapporto tra i tempi di esecuzioe di due operazioi elemetari equivaleti, su due calcolatori diversi A e B, sia al più ua fuzioe poliomiale r(). Ne segue che u algoritmo di complessità poliomiale p() su A, avrà al più complessità poliomiale p()r() su B. 43