Presentazione di PowerPoint - Home page istituzione trasparente

annuncio pubblicitario
UD 3.4b: Trattabilità e
Intrattabilità
Dispense, cap. 4.2
Problemi Intrattabili
 Esistono problemi che, pur avendo un algoritmo
di soluzione, non forniranno mai una soluzione in
tempi “ragionevoli” nemmeno se utilizzassero il
calcolatore più grande pensabile, magari
grande quanto l’Universo stesso.
 Tali problemi sono stati classificati come risolvibili
ma praticamente intrattabili.
 E la cosa sorprendente e che questi problemi
non sono nemmeno molto complessi
Problemi Intrattabili
 Problemi praticamente intrattabili sembrano
sorgere spesso, ad esempio, nel gioco degli
scacchi, in quanto il diagramma delle possibili
posizioni delle pedine è costituito da un numero
talmente alto di punti che il più veloce calcolatore
esistente impiegherebbe anni per esaminarle tutte.
 Per molti dei problemi praticamente intrattabili
sono stati dati algoritmi di approssimazione, che
 forniscono una soluzione sub-ottimale
 che approssima il risultato ottimo a meno di una
percentuale, conosciuta a priori
Trattabilità Computazionale
 Individuare con chiarezza le classi dei problemi
risolubili in tempi “ragionevoli” mediante un
elaboratore …
… vale a dire con tempi di esecuzione che
 crescano in modo ragionevole
 al crescere della dimensione del problema
stesso.
Trattabilità Computazionale
 Tali problemi sono stati definiti trattabili ed il
concetto di trattabilità ha cominciato così a
rappresentare un secondo livello di costruttività
nella soluzione di un problema:
 da un punto di vista pratico, non solo si richiede
che un problema sia algoritmicamente risolubile
 ma anche che la sua soluzione sia ottenibile in
modo ragionevole, cioè, ad esempio con tempi
dell'ordine dei secondi, minuto o al massimo ore
di elaboratore, non certo giorni, mesi, anni.
Cosa si intende per Tempi “Ragionevoli”?
 Nella tabella seguente viene indicato il tempo
impiegato da un calcolatore capace di
eseguire 1.000.000 di istruzioni al secondo per la
soluzione di un problema
 di dimensione n, cioè con n valori dati in input
(ad esempio n numeri, n schede ecc. - n=10, 20,
30, 40 e 50),
 con un algoritmo che effettua un numero di passi
computazionali proporzionali a n, n2, n3, n5, 2n, 3n.
n
n2
n3
n5
2n
3n
10
0,00001 sec
0,0001 sec
0,001 sec
0,1 sec
0,001 sec
0,059 sec
20
0,00002 sec
0,0004 sec
0,008 sec
3,2 sec
1,0 sec
58 minuti
30
0,00003 sec
0,0009 sec
0,027 sec
24,3 sec
17,9 minuti
6,5 anni
40
0,00004 sec
0,0016 sec
0,064 sec
1,7 minuti
12,7 giorni
3.855 secoli
50
0,00005 sec
0,0025 sec
0,125 sec
5,2 minuti
35,7 anni
200.000.000 secoli
Problemi polinomiali e problemi
esponenziali
 Esaminando questa tabella emerge con
chiarezza la differenza che esiste tra
 problemi risolubili in tempi polinomiali (n, n2, n3,
n5)
 problemi che richiedono tempo esponenziale (2n,
3n).
 Questi ultimi, infatti, possono essere risolti solo
quando la dimensione dell'istanza è
sufficientemente piccola (n=10, 20);
Massima istanza
 Dato un computer generico e 6 algoritmi di
complessità diversa (ma, per semplicità,
possiamo supporre che risolvano lo stesso
problema) (n, n2, n3, n5, 2n e 3n) consideriamo
quanti dati questo computer può elaborare in 1
ora, per ognuno degli algoritmi.
 Poi supponiamo di avere un computer 100 o
1000 volte più veloce
 Calcoliamo quanti dati in più il computer più
veloce può elaborare nello stesso tempo, per
ognuno degli algoritmi
Il Fattore Tecnologico
f(n)
computer di
riferimento
computer 100 volte +
veloce
computer 1000 volte +
veloce
n
N1
100 N1
1000 N1
n2
N2
10 N2
31.6 N2
n3
N3
4.64 N3
10 N3
n5
N4
2.5 N4
3.9 N4
2n
N5
N5 + 6.64
N5 + 9.97
3n
N6
N6 + 4.19
N6 + 6.29
Algoritmi Lineari
 Se l’algoritmo impiega un tempo proporzionale
ad n, è evidente che il miglioramento delle
prestazioni del computer incide allo stesso
modo sul numero di operazioni che possono
essere eseguite nell’unità di tempo considerata
 L’algoritmo con complessità n
 sul computer lento riesce ad analizzare 1.000
“dati”,
 sul computer 1.000 volte più veloce ne analizza
1.000.000
Algoritmi Polinomiali
 Un algoritmo che ha una complessità di tempo
proporzionale ad n3 riesce, nello stesso tempo e
su un computer 1.000 volte più veloce, a
trattare solo 10 volte i dati che riesce a trattare
sul computer più lento.
 L’algoritmo con complessità n3
 sul computer lento riesce ad analizzare 1.000
“dati”,
 sul computer 1.000 volte più veloce ne analizza
10.000
Algoritmi Esponenziali
 Un algoritmo che ha una complessità di tempo
proporzionale a 2n riesce, nello stesso tempo e su un
computer 1.000 volte più veloce, a trattare solo 10
dati in più rispetto al computer più lento.
 L’algoritmo con complessità 2n
 sul computer lento riesce ad analizzare 1.000 “dati”,
 sul computer 1.000 volte più veloce ne analizza 1.010
 Le cose vanno ancora peggio per algoritmi con
complessità proporzionale a 3n
Considerazioni
 Non bastano i miglioramenti tecnologici
 Occorrono buoni algoritmi
 Gli algoritmi polinomiali sono ovviamente molto
più apprezzabili di quelli esponenziali
6 dic 2011
Problemi Praticamente Intrattabili
 Alcune proprietà intrinseche dell'Universo
limiteranno sempre le dimensioni e la velocità dei
calcolatori.
 Il più potente calcolatore che si possa immaginare
di costruire
 non potrà essere più grande dell'universo conosciuto,
 né potrà essere costituito da componenti più piccole
di un protone,
 né infine potrà trasmettere informazioni ad una
velocità superiore a quella della luce.
 Date queste limitazioni tale calcolatore non
potrebbe avere più di 10126 componenti.
Problemi Praticamente Intrattabili
 Due ricercatori dell'M.I.T. hanno dimostrato che
questo calcolatore impiegherebbe almeno 20
Miliardi di anni per risolvere alcuni problemi di
cui è nota la risolubilità in linea di principio.
 Poiché presumibilmente l'Universo non ha
un'età superiore a 20 Miliardi di anni, ciò sembra
sufficiente per affermare che questi problemi
costituiscono l'espressione più esasperata dei
problemi intrattabili.
Problemi Praticamente Intrattabili
 Un algoritmo, il cui tempo di esecuzione cresce
come cn è definito praticamente intrattabile.
 Se c è di poco superiore ad 1, l'algoritmo può
essere adoperato per dati di ingresso molto
piccoli: ma se i dati in ingresso sono grandi,
esplode la crescita esponenziale
 Esiste, inoltre, il pericolo che il problema non
ammetta intrinsecamente soluzioni più veloci di
quella esponenziale,
 Si parla, in questo caso, di Problemi
intrinsecamente intrattabili.
Scarica