• Non ci sono risultati.

Michele Tomaiuolo Fondamentidi informatica Complessità

N/A
N/A
Protected

Academic year: 2023

Condividi "Michele Tomaiuolo Fondamentidi informatica Complessità"

Copied!
23
0
0

Testo completo

(1)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Complessità

Fondamenti di informatica

Michele Tomaiuolo

tomamic@ce.unipr.it

http://www.ce.unipr.it/people/tomamic

(2)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Ricerca lineare

// Schede: ordinate e numerate da 0 a N-1 Leggi ValoreCercato

Trovato ← Falso Indice ← 0

Finché Indice < N E Non Trovato { ValoreScheda ← Schede[Indice]

Se ValoreScheda = ValoreCercato Trovato ← Vero

Altrimenti

Indice ← Indice + 1 }

Se Trovato Scrivi "La posizione è " + Indice

(3)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Ricerca binaria

// Schede: ordinate e numerate da 0 a N-1 Leggi ValoreCercato

Primo ← 0 ; Ultimo ← N – 1 ; Trovato ← Falso Finché Primo ≤ Ultimo E Non Trovato {

Medio ← (Primo+Ultimo)/2 ; X ← Schede[Medio]

Se X > ValoreCercato { Ultimo ← Medio - 1

} Altrimenti Se X < ValoreCercato { Primo ← Medio + 1

} Altrimenti { Trovato ← Vero }

} Se Trovato Scrivi "La posizione è " + Medio

Altrimenti Scrivi "Valore non trovato"

(4)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Costo di un algoritmo

Spazio, memoria richiesta

Tempo, necessario all'esecuzione

Di solito si contano i cicli, in funzione di n O i confronti/scambi tra elementi dell'array

– Array in memoria centrale, accesso lento

– Altre variabili nei registri del processore

Test e misure empiriche

(5)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Confronto tra algoritmi

Caso peggiore negli algoritmi di ricerca: elemento non presente

Ricerca lineare: n confronti

Ricerca binaria:  log

2

(n) confronti

– A ogni iterazione l'insieme è dimezzato

– Il numero di iterazioni è pari a quante volte un numero n può essere diviso per 2

fino a ridurlo a 1

2

k

≥ n → k ≥ log

2

n

(6)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Def. di complessità

Una funzione f(n) ha ordine O(g(n)) sse:

Esistono due costanti positive c e m tali che |f(n)| ≤ c|g(n)| per ogni n > m

Un algoritmo ha una complessità O(g(n)) sse:

Il tempo di calcolo t(n), sufficiente per eseguire l'algoritmo con ogni istanza* di dimensione n, ha ordine O(g(n))

– (*) Insieme di dati su cui è definito il problema

– (*) Quindi conta il caso peggiore

(7)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Analisi asintotica

Per n abbastanza grande, a meno di una costante moltiplicativa, f(n) non supera in modulo g(n)

Comportamento dell'algoritmo al limite, per dimensione delle istanze tendente all'infinito Es. n = 1 000 000

– Ricerca lineare:

1 000 000 cicli

– Ricerca binaria:

20 cicli

e

x

x

2

x·log(x) x

√x

log(x)

(8)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Complessità intrinseca

Limite inferiore di complessità di un problema Una funzione f(n) è Ω(g(n)) sse

Esistono due costanti positive c e m tali che

|f(n)| ≥ c|g(n)| per ogni n > m

Un problema ha una delimitazione inferiore alla complessità Ω(g(n)) sse

– Per ogni algoritmo risolutivo…

∃ una istanza (caso peggiore)…

per cui il tempo di calcolo t(n) è Ω(g(n))

(9)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Algoritmo ottimale

Algoritmo che risolve un problema P, con le due seguenti condizioni:

Costo di esecuzione O(g(n))

P ha una delimitazione inferiore Ω(g(n))

Es. L'algoritmo della ricerca binaria è ottimale

Si può dimostrare che log

2

(n) è la minima complessità possibile per la ricerca

– Ma ricerca lineare funziona anche per liste non ordinate!

(10)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Algoritmi di ordinamento

La ricerca binaria dimostra l'importanza di avere dati ordinati

Ordinateur, ordenador

Algoritmi più semplici hanno complessità n

2

– Confronto tra ciascun elemento e gli altri

Algoritmi divide et impera

Complessità n·log

2

(n)

– Complessità instrinseca

(11)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Bubble sort

// Schede: N schede, numerate da 0 a N-1 Ultimo ← N – 1

Finché Ultimo > 0 { I ← 0

Finché I < Ultimo {

Se Schede[I] > Schede[I + 1] { Scambia(I, I + 1)

} I ← I + 1 }

Ultimo ← Ultimo – 1 }

B B C C A A

FF DD

E E G G H H

Confronti e scambi Confronti e scambi

Nel primo ciclo, il valore maggiore

sale fino in cima Nel primo ciclo, il valore maggiore

sale fino in cima

(12)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Analisi Bubble Sort

Gli elementi maggiori salgono rapidamente

“come bollicine di champagne”

Caso peggiore: lista rovesciata

Numero di confronti e scambi: n

2

/2

(n-1)+(n-2)+...+2+1 = n(n-1)/2 = n

2

/2 - n/2 ≈ n

2

/2

Complessità n

2

Anche in media, circa stessi valori

(13)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Selection sort

// Schede: N schede, numerate da 0 a N-1 I ← 0

Finché I < N - 1 { PosMin ← I

J ← I + 1

Finché J < N {

Se Schede[J] < Schede[PosMin] { PosMin ← J

}

J ← J + 1

} Scambia(PosMin, I) I ← I + 1

}

A A B B C C E E G G F F H H

Sx: parte ordinata

Sx: parte ordinata Dx: parte da ordinareDx: parte da ordinare DD

Si cerca a dx il valore

minimo Si cerca a dx

il valore minimo

(14)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Analisi Selection Sort

Ad ogni ciclo principale, si seleziona il valore minore Caso peggiore: lista rovesciata

Numero di confronti n·(n-1)/2; complessità n

2

Numero di scambi: n-1 scambi

Anche in media, circa stessi valori

(15)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Insertion sort

// Schede: N schede, numerate da 0 a N - 1 I ← 1

Finché I < N {

Valore ← Schede[I]

J ← I – 1

Finché J ≥ 0 E Schede[J] > Valore { Schede[J + 1] ← Schede[J]

J ← J – 1 }

Schede[J + 1] ← Valore I ← I + 1

}

A A D D G G C C B B F F H H

Sx: parte ordinata

Sx: parte ordinata Dx: parte da ordinareDx: parte da ordinare EE

Si cerca a sx il posto per il primo val a dx Si cerca a sx il posto per il primo val a dx

(16)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Analisi Insertion Sort

La prima parte è ordinata, vi si inserisce un elemento alla volta, più facile trovare il posto

– In media si scorre solo 1/2 della prima parte

Caso peggiore: lista rovesciata

Cicli: 1+2+...+(n-1) = n·(n-1)/2; compl: O(n

2

)

In media n

2

/4 confronti e n

2

/4 scambi Ottimizzazioni

– Ricerca binaria in parte ordinata, ma scambi

(17)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Quick Sort

// N schede, ordinare quelle tra Prima e Ultima Se Prima < Ultima {

Pivot ← Schede[Ultima]

J ← Prima; I ← Prima Finché I < Ultima {

Se Schede[I] ≤ Pivot { Scambia(I, J)

J ← J + 1 }

I ← I + 1

} Scambia(Ultima, J)

QuickSort(Prima, J - 1) QuickSort(J + 1, Ultima) }

Prima di J:

valori minori di pivot Prima di J: valori minori

di pivot

I scorre tutte le schede

tranne l'ultima (pivot) I scorre tutte le schede

tranne l'ultima (pivot)

C C A A B B G G E E F F H H

Val ≤ Pivot

Val ≤ Pivot Val > PivotVal > Pivot DD

H H C C G G A A B B E E F F D D

Pivot Pivot

(18)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Analisi Quick Sort

Dato un insieme, sceglie un valore pivot Crea due sottoinsiemi: x ≤ pivot, x > pivot Stesso algoritmo sui 2 insiemi (ricorsione)

Caso peggiore: lista rovesciata, n

2

– Dipende da scelta pivot, ma esiste sempre

Caso medio: n·log

2

(n)

t(n) = α·n + 2·t(n/2)

(19)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Merge Sort

// N schede, ordinare quelle tra Prima e Ultima Se Prima < Ultima {

Media ← (Prima + Ultima) / 2 MergeSort(Prima, Media)

MergeSort(Media + 1, Ultima) Merge(Prima, Media, Ultima) }

D D G G H H C C E E F F

AA BB

Merge: O(n) Confronti sempre tra

primi valori Merge: O(n) Confronti sempre tra

primi valori Ad ogni passo

la lista viene divisa nel mezzo Ad ogni passo la lista viene divisa

nel mezzo

G G D D A A H H E E F F C C B B G G D D A A H H E E F F C C B B G G D D A A H H E E F F C C B B G G D D A A H H E E F F C C B B

Costo ∝ n

Costo ∝ 2·n/2

Costo ∝ 4·n/4

(20)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Merge, con appoggio

// Fondere Schede: Prima…Media e Media+1…Ultima I ← Prima ; J ← Media + 1 ; K ← 0

Finché I ≤ Media E J ≤ Ultima { Se Schede[I] ≤ Schede[J]) {

Tmp[K] ← Schede[I] ; I ← I + 1 } Altrimenti {

Tmp[K] ← Schede[J] ; J ← J + 1 } K ← K + 1

}

Finché I ≤ Media { Tmp[K] ← Schede[I] ; I ← I+1 ; K ← K+1 } Finché J ≤ Ultima { Tmp[K] ← Schede[J] ; J ← J+1 ; K ← K+1 } K ← Prima

Finché K ≤ Ultima { Scheda[K] ← Tmp[K–Prima] ; K ← K+1 }

(21)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Analisi Merge Sort

Simile a Quick Sort, ma non si sceglie pivot

– La fusione ha complessità lineare

Caso peggiore, caso medio: n·log

2

(n)

Spazio: la fusione richiede altra memoria: n

– Ma si può evitare il costo con liste collegate, o con spostamenti in place

– Accessi sequenziali, buon uso cache

Integraz. con Insertion Sort (Python, Java7)

(22)

ondamenti di informaticaondamenti di informatica ell'informazione – UniPRell'informazione – UniPR ipr.it/people/tomamic/ipr.it/people/tomamic/

Classi di complessità

Costante: numero op. non dipende da n

Sotto-lineare: n

k

, k<1; log(n), ricerca binaria Lineare: numero op. ∝ n, ricerca lineare

Sovra-lineare: n·log(n), merge sort Polinomiale: n

k

, k≥2, insertion sort

Algoritmo efficiente: fino a classe polinomiale

Problema trattabile: ∃ algoritmo efficiente

(23)

maiuolo – Fondamenti di informaticamaiuolo – Fondamenti di informatica gegneria dell'informazione – UniPRgegneria dell'informazione – UniPR /www.ce.unipr.it/people/tomamic//www.ce.unipr.it/people/tomamic/

Complessità esponenziale

Complessità esponenziale: k

n

– Es. elenco sottinsiemi, strategia perfetta per scacchi

Complessità super-esponenziale: n!, n

n

, …

– Es. elenco permutazioni

Problemi intrattabili:

∄ algoritmo efficiente

– Soluzioni non esatte/ottime, euristiche

– Minimi locali

e

x

x

2

x·log(x) x

√x

log(x)

Riferimenti

Documenti correlati

Così ad esempio, alla metà degli anni '90 del secolo scorso, due antropologi di rilievo come Marc Augè e Clifford Geertz, con un background culturale differente,

This paper reviews the major (Calcium, Phosphorus, Potassium, Sodium, Chlorine, Sulphur, Magnesium) and the trace elements (Iron, Copper, Cobalt, Iodine, Manganese, Zync,

Available Open Access on Cadmus, European University Institute Research Repository.... European

Fig.. ste aree della Sardegna le cavità minerarie e le grotte di miniera sono di primaria importanza per molte specie di pipistrelli che trovano rifu- gio nel loro interno. La

In discussing Northanger Abbey it is essential to see that the problems Catherine, the heroine, has in understanding herself and her experience are not different from the problems

Jean Guiguet specifically identifies Virginia Woolf with her six protagonists: She is in love with words, like Bernard: in love with books, like Neville: a lover of action, like

Simona scarsa medio-bassa medio-tardiva rotonda blu scuro Sofia scarsa medio-elevata medio-precoce ovale blu scuro Speranza medio-scarsa media intermedia rotonda

Secondo Bobbio, questa impostazione, nella misura in cui prevede che la funzione del potere politico (del diritto positivo) sia quella di rafforzare e garantire,