Complessità degli algoritmi e dei problemi

annuncio pubblicitario
3 CENNI DI TEORIA DELLA
COMPLESSITA’ COMPUTAZIONALE
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
1
Scopo: Stimare l’onere computazionale per risolvere
problemi di ottimizzazione e di altra natura
Due tipi di obiettivi:
• Determinare l’efficienza di un specifico algoritmo A
per risolvere un dato problema P
• Tentare di valutare la difficoltà intrinseca di un dato
problema P
Particolare attenzione ai problemi di ottimizzazione
combinatoria
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
2
3.1 Complessità degli algoritmi
Scopo: stimare l’onere computazionale di algoritmi
alternativi per risolvere un dato problema P al fine di
selezionare quello più efficiente
Definizione: Una istanza I di un problema P è un caso
specifico del problema.
Esempio
Problema P : ordinare m numeri interi c1, ..., cm
Istanza I : m = 3, c1 = 2, c2 = 7, c3 = 5
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
3
Tempo di calcolo valutato in termini di numero di
operazioni elementari ( aritmetiche, confronti, accessi
memoria,... ) necessarie per risolvere una data istanza I
Ipotesi: tutte le operazioni elementari richiedono
un’unità di tempo
Chiaramente il numero di operazioni elementari dipende
dalla dimensione dell’istanza I
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
4
Dimensione di una istanza
Definizione: La dimensione di un’istanza I, indicata |I|,
è il numero di bit necessari a codificare (descrivere) I.
Esempio
Istanza specificata dai valori di m e c1,..., cm
Poiché la codifica di un intero i richiede
|I|
log m + m · log cmax
log i
bit,
dove cmax= max{cj : 1 j m}
Per istanza m = 3, c1 = 2, c2 = 7, c3 = 5
|I|
log 3 + 3 · log 7
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
5
Rapidità di crescita asintotica:
f(n) = O(g(n)) se
c > 0 tale che f(n) c g(n)
per n sufficientemente grande
c·g(n)
f (n)
n0
Esempio
|I|
Si dice che f(n) è dell’ordine di g(n)
n
Per il problema di ordinamento di m interi
log m + m · log cmax = O(log m + m log cmax )
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
6
Ordine di complessità
Si cerca una funzione f (n) tale che, per ogni istanza I di
dimensione |I| n , il numero di operazioni elementari
per risolvere istanza I sia
f (n)
Osservazioni:
• Poiché f (n) è un limite superiore I con |I| n, si
considera il caso peggiore
• f (n) espressa in termini di rapidità di crescita asintotica
Esempio
Per l’ordinamento di m interi esistono algoritmi
con complessità O(m log m)
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
7
Definizione: Un algoritmo è polinomiale se richiede,
nel caso peggiore, un numero di operazioni elementari
f(n) = O(nd) dove d è costante e n = |I| è la
dimensione dell’istanza.
Si distinguono algoritmi con ordini di complessità:
O(2n)
O(nd)
polinomiale
esponenziale
Un algoritmo in O(n7) non è efficiente in pratica!
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
8
Esempi
• Algoritmo di Dijkstra per problema dei cammini minimi
Dimensione di una istanza: |I| = O(m log n + m log cmax)
Complessità: O(n2) dove n è il numero di nodi
Rapidità di crescita polinomiale rispetto a |I|
(|I| ≥ m ≥ n -1)
• Versione di base dell’algoritmo di Ford-Fulkerson per
problema di flusso massimo
Dimensione di una istanza: |I| = O(m log n + m log kmax)
Complessità: O(m2 kmax)
dove m è il numero di archi
Rapidità di crescita non polinomiale rispetto a |I|
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
9
3.2 Complessità dei problemi
Scopo: stimare la difficoltà intrinseca di un problema per
adottare l’approccio risolutivo più adeguato
Intuitivamente, la difficoltà intrinseca corrisponde alla
complessità del migliore “possibile” algoritmo!
Definizione: Un problema P è polinomiale ( “facile” ) se
esiste un algoritmo polinomiale che fornisce una soluzione
(ottima) per ogni istanza.
Esempi: cammini minimi, flussi di valore massimo,...
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
10
?
Esistono problemi “difficili”?
Per molti problemi di ottimizzazione i migliori
algoritmi noti tutt’oggi richiedono un numero di
operazioni elementari che cresce, nel caso peggiore,
esponenzialmente con la dimensione dell’istanza
N.B.: Non dimostra che sono effettivamente “difficili”!
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
11
Problema del commesso viaggiatore
“Travelling
Salesman
Problem”
(TSP)
Un commesso viaggiatore deve visitare ciascuna di n città
esattamente una volta e ritornare al punto di partenza nel minor
tempo possibile.
collegamenti con tempi
Problema
Dato G = (N, A) orientato con un costo cij Z per
ogni (i, j) A, determinare un circuito di costo
minimo che visita esattamente una volta ogni nodo.
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
12
Definizione: Un circuito C è hamiltoniano se passa
esattamente una volta per ogni nodo.
Indicando con H l’insieme di tutti i circuiti hamiltoniani
di G, il problema equivale a
m in
C H
c ij
(i, j ) C
H contiene un numero finito di elementi:
|H|
( n – 1 )!
Applicazioni: distribuzione, sequenziamento ottimo, VLSI,…
Numerose varianti ed estensioni (Vehicle Routing Problem --VRP)
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
13
http://www.tsp.gatech.edu
14
3.3 Teoria della NP-completezza
Si fa riferimento ai problemi di riconoscimento e non a
quelli di ottimizzazione
Definizione: Un problema di riconoscimento è un
problema che richiede una risposta “si”/“no”
Ad ogni problema di ottimizzazione viene associata una
versione di riconoscimento
Esempio
TSP-r
Dato G = (N, A) con distanze cij intere e un intero L, esiste
un circuito hamiltoniano di lunghezza L ?
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
15
Problemi di riconoscimento
Qualsiasi problema di ottimizzazione è almeno
altrettanto difficile della sua versione di riconoscimento
Esempio
Se si riesce a individuare un circuito hamiltoniano di
lunghezza minima si può chiaramente rispondere alla
domanda di TSP-r (ne esiste uno di lunghezza L?)
Se versione di riconoscimento è difficile
il problema di ottimizzazione è anch’esso difficile
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
16
Classe di complessità P
Definizione: P indica l’insieme dei problemi di
riconoscimento che si possono risolvere in tempo polinomiale.
Esempi: quelli associati ai problemi di alberi ottimi, di cammini
minimi e di flussi massimi
Per ciascuno di essi esiste un algoritmo che permette di
stabilire per ogni istanza I se la risposta è “si” o “no” in
tempo polinomiale in |I|
Definizione formale di P in termini di macchina di Turing
(deterministica) polinomiale
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
17
Classe di complessità NP
Definizione: NP indica l’insieme dei problemi di
riconoscimento tali che per ogni istanza con risposta “si”
esiste una prova concisa (certificato) che permette di
verificare in tempo polinomiale che la risposta è “si”.
Esempio
TSP-r poiché si può verificare in tempo polinomiale
se una sequenza di nodi è un circuito hamiltoniano e
se lunghezza L
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
18
Definizione formale:
NP indica l’insieme dei problemi di riconoscimento per i quali
un polinomio p(n) e un algoritmo di verifica del certificato
Avc tale che :
istanza I ha risposta “si”
un certificato (I) di dimensione
polinomiale (| (I)| p(|I|) ) e Avc applicato all’input “I, (I)” da
risposta “si” in un numero di operazioni elementari ≤ p(|I|).
N.B.: Non importa quanto è difficile ottenere il certificato (può
essere fornito da un “oracolo”) basta che esista e sia
verificabile in tempo polinomiale!
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
19
Chiaramente
P
NP
P
P
NP
Congettura
!
P
NP
Uno dei “Millennium Prize
Problems” 2000!
NP non sta per “Non Polinomiale” ma per “Nondeterministico Polinomiale” (fa riferimento alle
macchine di Turing non-deterministiche polinomiali)
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
20
Riduzione polinomiale tra problemi
Concetto di riduzione polinomiale permette di confrontare i
problemi di riconoscimento ed individuare quelli più difficili
Definizione:
Sia P1 e P2 NP, P1 si riduce in tempo polinomiale a P2
(P1 P2) se esiste un algoritmo per risolvere P1 che
• chiama un certo numero di volte un ipotetico algoritmo
per P2 ,
• e risulta polinomiale se si suppone che quello per P2
richieda un’unica unità di tempo.
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
21
Caso più semplice: l’algoritmo per P2 viene chiamato
un’unica volta.
Esempio
P1: Dato un grafo non orientato G = ( N, E ) con costi e
un intero L, ∃ un ciclo hamiltoniano di lunghezza L?
P2: Dato un grafo orientato G’ = ( N’, A’) con costi e un
intero L’, ∃ un circuito hamiltoniano di lunghezza L’ ?
P1
P2
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
22
Riduzione polinomiale dal caso non orientato a quello
orientato :
in tempo e spazio polinomiale
I1
P1 è facile costruire una particolare I2
1
4
1
2
6
G=(N,E)
L = 15 4
4
5
2
5
1
4
1
2
2
P2
3
3
tale che I1 ha risposta “si”
2
2
6
G’=(N’,A’)
L’ = 15 4
2
4
5
2
3
3
5
I2 ha la risposta “si”
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
23
Conseguenza:
Se P1 P2 e P2 è risolubile mediante un algoritmo
polinomiale, allora anche P1 può essere risolto in
tempo polinomiale.
P2
P
P1
P
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
24
Problemi NP-completi
Definizione: Un problema P è NP-completo se e solo se
1) appartiene a NP
2) ogni altro problema in NP è riducibile ad esso
in tempo polinomiale ( P’ P , P’ NP )
NP-completi
P
NP
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
25
Proprietà: Se un problema NP-completo P fosse risolubile
in tempo polinomiale (se P ), allora lo sarebbero tutti i
problemi di NP, cioè si avrebbe P =NP !!
eventualità considerata estremamente improbabile
La NP-completezza è quindi un forte indizio di difficoltà
intrinseca
cf. lunga lista di problemi di riconoscimento importanti che risultano
NP-completi e per i quali non sono noti algoritmi polinomiali
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
26
Esistono problemi NP-completi?
Soddisfacibilità (SAT)
Date m clausole booleane C1,…, Cm ( disgiunzioni -OR -- di variabili booleane yj e loro complementi y¯j ),
esiste un assegnamento di valori “vero” o ”falso” alle
variabili che rende vere tutte le clausole?
Esempio
C1 : ( y1
C2 : ( y¯1
C3 : ( y2
assegnamento:
y2 y3 )
y¯2 )
y¯3 )
y1 = vero, y2 = falso, y3 = falso
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
27
Primo problema dimostrato NP-completo:
Teorema (Cook 1971)
SAT è NP-completo
Stephen A.Cook 1939-
Tramite i concetti di macchina di Turing e riduzione polinomiale
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
28
(1974)
Richard M. Karp 1935-
Mostra che le versioni di riconoscimento di 21 problemi
di ottimizzazione combinatoria sono NP-completi
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
29
Come mostrare la NP-completezza?
Per stabilire che P2 NP è NP-completo “basta” mostrare
che un problema NP-completo P1 si riduce polinomialmente
a P2 :
P
P1,
P
NP , e P1
P
Esempio
P2 implica per transitività che
P2 ,
P
NP
P1: Dato G non orientato con costi e un intero L, ∃ un
ciclo hamiltoniano di lunghezza L?
P2: Dato G’ orientato con costi e un intero L’, ∃ un circuito
hamiltoniano di lunghezza L’ ?
P2
NP e P1
P2 con P1 NP-completo
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
30
Esempi di problemi NP-completi
• Dato G = (N, E) non orientato, esiste un ciclo
hamiltoniano?
(Karp 74)
• Dato G = (N, A) orientato, due nodi assegnati s e t, e un
intero L, esiste un cammino semplice (con nodi distinti)
da s a t che contiene un numero di archi L?
• Dato G = (N, A) orientato con costi sugli archi, due
nodi s e t, e un intero L, esiste un cammino semplice
da s a t di costo L?
• Dato un sistema lineare A x b con coefficienti interi,
esiste una soluzione x a valori 0, 1?
• ….
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
31
Problemi NP-difficili
Definizione: Un problema è NP-difficile se ogni problema
in NP è riducibile ad esso in tempo polinomiale (anche se
non appartiene ad NP )
Esempio
TSP poiché TSP-r (esiste un circuito hamiltoniano
di lunghezza L?) è NP-completo.
Tutti i problemi di otttimizzazione di cui la versione di
riconoscimento è NP-completa sono NP-difficili.
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
32
Esempi di problemi NP-difficili
• Dato G = (N, A) orientato con costi sugli archi, due nodi
assegnati s e t, determinare un cammino semplice di
costo massimo tra s e t.
• Dato G = (N, A) orientato con costi sugli archi, due
nodi s e t, determinare un cammino semplice di costo
minimo tra s e t.
• Dati matrice A m n, e vettori b m 1 e c n 1 con
componenti intere, trovare un x {0, 1}n che soddisfi
Ax b e minimizzi cTx.
• ….
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
33
Esercizio
Qual è la dimensione di un’istanza del problema
dell’albero di supporto di costo minimo?
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
34
Esercizio
Verificare che la programmazione lineare intera
è un problema NP-difficile.
Programmazione Lineare Intera (PLI):
Dati A, b e c interi, trovare un x a valori 0, 1 che
soddisfa Ax b e minimizza cTx.
Suggerimento: procedere per riduzione dal problema
di soddisfacibilità (SAT)
E. Amaldi – Fondamenti di R.O. – Politecnico di Milano
35
Scarica