Sei sulla pagina 1di 11

Lezione 1 - Introduzione

Insegnamento di Algoritmi
Docente: Massimiliano Goldwurm

Corso di laurea triennale in Matematica


Università degli Studi di Milano

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Informazioni

Sito Ariel: https://mgoldwurma.ariel.ctu.unimi.it/v5/Home/


Pagina web:
users.mat.unimi.it/users/goldwurm/Algoritmi(Matematica)/
I Programma
I Riferimento al corso di Laboratorio
I Dispense
I Testi di riferimento o consigliati
I Modalità d’esame
I Orari di ricevimento e informazioni di indisponibilità
I riferimenti agli appelli d’esame e ai progetti di Laboratorio

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Problemi

Funzione
f : I −→ S


 I e S sono insiemi numerabili
 I = Insieme delle istanze


dove S = Insieme delle soluzioni
ogni x ∈ I ∪ S rappresentabile con




un numero finito di bit

Problema NOME(parametri)
Istanza : x ∈ I (specifica)
Soluzione : f (x) ∈ S (specifica)

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Esempi

Problema Ordinamento(Z, ≤)
Istanza : A = (a1 , a2 , . . . , an ) ∈ Zn , n ∈ N+
Soluzione: B permutazione ordinata di A rispetto a ≤
+∞
[
dove I=S= Zn
n=1

Problema Correttezza sintattica in C (A = alfabeto ASCII)


+
Istanza : p∈ A
Vero se p e’ un programma in C
Soluzione:
Falso altrimenti

dove A+ è l’insieme di tutte le stringhe (parole)


non vuote nell’alfabeto A

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Tipi di problemi

 Problema P
I Decisione S = {Vero, Falso}, Istanza : x ∈I
Domanda: f (x) = 1?

Esempio: correttezza sintattica (primo passo della
compilazione)
I Ricerca
I Enumerazione S = N
I Ottimizzazione (I, S, sol, µ), sol : I → 2S
I .......

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Algoritmo (def. intuitiva):
- funzione f : I → S (≡ Problema)
- procedura effettiva A su un dato modello di calcolo M :
sequenza finita di istruzioni definite su M
per ogni x ∈ I in ingresso, A restituisce f (x) ∈ S in uscita
A esegue un numero finito di operazioni elementari di M
A termina sempre su ogni input
Nel nostro contesto
I M = Modello di calcolo (R.A.M.) → Linguaggio RAM
I A definito a diversi livelli di astrazione:
1. Programma in Linguaggio RAM
2. Programma in Linguaggio ad alto livello (Algol
like)

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Esempio (programma ad alto livello)
Procedura Inserimento (Z, ≤)
Input: un vettore A = (A[1], A[2], . . . , A[n]) tale che
n > 1 e A[i] ∈ Z per ogni i ∈ {1, 2, . . . , n};
begin
leggi A e calcola n = |A|
for i = 2, . . . , n do
begin
a := A[i]
j := i − 1
while j ≥ 1 ∧ a < A[j] do
begin
A[j + 1] := A[j]
j := j − 1
end
A[j + 1] := a
end
stampa A (Output)
end
Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione
La procedura è ad alto livello
può essere ”tradotta” in linguaggio RAM (modello di calcolo)

Domande naturali:
- l’algoritmo è corretto ?
- quanto tempo richiede ?
- quanto spazio richiede ?

Obiettivo generale: trovare l’algoritmo migliore per lo stesso


problema

Come confrontare l’efficienza di algoritmi diversi per lo stesso


problema?

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Analisi
Algoritmo A per un problema P (f : I → S):
I funzione dimensione

| · | : I → N, |x| dimensione di x ∈ I
I funzioni tempo e spazio
TA : I → N, TA (x) tempo richiesto da A su input x
SA : I → N, SA (x) spazio richiesto da A su input x
I Analisi nel caso peggiore
TA : N → N
TA (n) = max{TA (x) | |x| = n} o sup
I Analisi nel caso medio
Dist. di probabilità su ogni In = {x ∈ I | |x| = n}, n ∈ N
TA : N → R
TA (n) = E (TA (x) | x ∈ In )
I comportamento asintotico di {TA (n)}n o {TA (n)}n
Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione

 Sintesi
Problematiche Analisi
Classificazione

Tempi associati a comportamenti asintotici


Hp: 1 op. elementare in 1 nanosec. (νs) ≡ 109 op. al secondo

dim. n = 10 n = 20 n = 50 n = 100 n = 103 n = 104 n = 105 n = 106

tempi
n 10νs 20νs 50νs 0, 1µs 1µs 10µs 0, 1ms 1ms
n log2 n 33, 2νs 86, 4νs 0, 28µs 0, 6µs 9, 9µs 0, 1ms 1, 6ms 19, 9ms
n2 0, 1µs 0, 4µs 2, 5µs 10µs 1ms 0, 1s 9, 7s 16, 5mn
n3 1µs 8µs 125µs 1ms 1s 16, 5mn 11, 6g ≈ 30a
2n 1µs 1ms 13g ≈ 1011 c ∞ ∞ ∞ ∞
3n 59µs 3, 5s ≈ 105 c ∞ ∞ ∞ ∞ ∞
tempi accettabili n, n log n
=⇒ tempi possibili n2 , n3
tempi inaccettabili 2n , 3n

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione


Massima dim. di input processato in un minuto
Complessità in tempo Max Dimensione
n 6 × 1010
n log2 n 26 × 108
n2 24 × 104
n3 39 × 102
2n 35

Confronti tra macchine con velocità diverse


Hp: C2 sia M volte più veloce di C1
Massima dim. di input processato in un tempo dato

Complessità in tempo Max dim. su C 1 Max dim. su C 2


n d1 M · d1
n lg n d2 ≈ M · d√
2 (per d2  0)
n2 d3 M · d3
2n d4 d4 + lg M

Insegnamento di Algoritmi Docente: Massimiliano Goldwurm Lezione 1 - Introduzione