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 c 1,..., c m Istanza I : m = 3, c 1 = 2, c 2 = 7, c 3 = 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 c 1,..., c m Poiché la codifica di un intero i richiede lo g i bit, I log m + m log c max dove c max = max{c j : 1 j m} Per istanza m = 3, c 1 = 2, c 2 = 7, c 3 = 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) Si dice che f(n) è dell ordine di g(n) n 0 n Esempio Per il problema di ordinamento di m interi I log m + m log c max = O(log m + m log c max ) 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(n d ) dove d è costante e n = I è la dimensione dell istanza. Si distinguono algoritmi con ordini di complessità: O(n d ) polinomiale O(2 n ) esponenziale Un algoritmo in O(n 7 ) 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 c max ) Complessità: O(n 2 ) 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 k max ) Complessità: O(m 2 k max ) 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 c ij 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 ( i, j ) C c ij 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 c ij 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 A vc tale che : istanza I ha risposta si un certificato (I) di dimensione polinomiale ( (I) p( I ) ) e A vc 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 P 1 e P 2 NP, P 1 si riduce in tempo polinomiale a P 2 (P 1 P 2 ) se esiste un algoritmo per risolvere P 1 che chiama un certo numero di volte un ipotetico algoritmo per P 2, e risulta polinomiale se si suppone che quello per P 2 richieda un unica unità di tempo. E. Amaldi Fondamenti di R.O. Politecnico di Milano 21
Caso più semplice: l algoritmo per P 2 viene chiamato un unica volta. Esempio P 1 : Dato un grafo non orientato G = ( N, E ) con costi e un intero L, un ciclo hamiltoniano di lunghezza L? P 2 : Dato un grafo orientato G = ( N, A ) con costi e un intero L, un circuito hamiltoniano di lunghezza L? P 1 P 2 E. Amaldi Fondamenti di R.O. Politecnico di Milano 22
Riduzione polinomiale dal caso non orientato a quello orientato : in tempo e spazio polinomiale I 1 P 1 è facile costruire una particolare I 2 P 2 4 1 2 1 4 2 2 6 G=(N,E) 4 5 3 G =(N,A ) L = 15 L = 15 5 2 3 4 6 4 1 2 5 1 4 2 5 2 2 3 3 tale che I 1 ha risposta si I 2 ha la risposta si E. Amaldi Fondamenti di R.O. Politecnico di Milano 23
Conseguenza: Se P 1 P 2 e P 2 è risolubile mediante un algoritmo polinomiale, allora anche P 1 può essere risolto in tempo polinomiale. P 2 P P 1 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 C 1,, C m ( disgiunzioni -- OR -- di variabili booleane y j e loro complementi y j ), esiste un assegnamento di valori vero o falso alle variabili che rende vere tutte le clausole? Esempio C 1 : ( y 1 y 2 y 3 ) C 2 : ( y 1 y 2 ) C 3 : ( y 2 y 3 ) assegnamento: y 1 = vero, y 2 = falso, y 3 = 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 P 2 NP è NP-completo basta mostrare che un problema NP-completo P 1 si riduce polinomialmente a P 2 : P P 1, P NP, e P 1 P 2 implica per transitività che P P 2, P NP Esempio P 1 : Dato G non orientato con costi e un intero L, un ciclo hamiltoniano di lunghezza L? P 2 : Dato G orientato con costi e un intero L, un circuito hamiltoniano di lunghezza L? P 2 NP e P 1 P 2 con P 1 NP-completo E. Amaldi Fondamenti di R.O. Politecnico di Milano 30
Dato G = (N, E) non orientato, esiste un ciclo hamiltoniano? (Karp 74) Dato un sistema lineare A x b con coefficienti interi, esiste una soluzione x con componenti 0-1?. Esempi di problemi NP-completi 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? 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
Programmazione Lineare Intera (PLI): Dati A m n, b m 1 e c n 1 con coefficienti interi, trovare x con componenti intere tale che Ax b e minimizza c T x. Proposizione (Karp 74): PLI è NP-difficile. 1) Verificare che la versione di riconoscimento del caso binario, r-pl0-1, appartiene a NP. r-pl0-1: Dato A x b con coefficienti interi, esiste una soluzione x {0, 1} n? 2) Mostrare che SAT (NP-completo) si riduce polinomialmente a r-pl0-1. (cf. esercizio 3.3) E. Amaldi Fondamenti di R.O. Politecnico di Milano 33
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 c T x.. E. Amaldi Fondamenti di R.O. Politecnico di Milano 34
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 35