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