La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Teoria della Complessità Concetti fondamentali q Loggetto della teoria della complessità è stabilire se un problema sia facile o difficile q La difficoltà

Presentazioni simili


Presentazione sul tema: "1 Teoria della Complessità Concetti fondamentali q Loggetto della teoria della complessità è stabilire se un problema sia facile o difficile q La difficoltà"— Transcript della presentazione:

1 1 Teoria della Complessità Concetti fondamentali q Loggetto della teoria della complessità è stabilire se un problema sia facile o difficile q La difficoltà di un problema è una caratteristica generale e non associata a particolari istanze del problema stesso Definizione Un problema è la richiesta a rispondere ad una domanda circa le proprietà di una struttura matematica in funzione di parametri costanti e dei valori non fissati di variabili

2 2 Esempio ê Dato un grafo G=(V,E), esiste un percorso hamiltoniano di lunghezza

3 3 Definizioni fondamentali Istanza di un problema Un particolare caso del problema per cui sono stati specificati i valori assunti dai parametri. Un problema è linsieme delle sue infinite istanze. Problemi di decisione Risposta SI/NO (es., un ciclo hamiltoniano di lunghezza

4 4 Problemi di ricerca Trovare una soluzione (una prova della risposta SI) (es., trovare un ciclo hamiltoniano di lunghezza

5 5 Facilità di un problema Esiste un algoritmo di soluzione efficiente Difficoltà di un problema Non esiste un algoritmo di soluzione efficiente l Stabilire la difficoltà di un problema ê misurare lefficienza del (migliore) algoritmo risolutore l Misurare lefficienza di un algoritmo ê determinare la complessità computazionale dellalgoritmo

6 6 Efficienza di un algoritmo Tempo richiesto per trovare la soluzione Quantità di memoria richiesta per i dati del problema Dimensione dellistanza del problema (Numero di variabili, vincoli, grandezza dei dati) Quantità di informazioni necessarie per codificare unistanza

7 7 Codifica di unistanza di problema Esempio: Un problema di PL Codificare i dati (n+mxn+m coeff.) c i, i=1,...n; a ij, i=1,...,n, j=1,...,m; b j, j=1,...m Sistema binario (codifica di un numero x): k+1 bit, con k log 2 k+1 più 1 bit per il segno Numeri a precisione finita: interi e razionali come rapporto tra interi Codifica Ragionevole l utilizza almeno 2 simboli l non introduce dati irrilevanti né richiede una generazione esponenziale di dati

8 8 Esempio: Codifica decimale (ragionevole) 1 cifra (0-9) 10 simboli 10 (2 cifre) 100 simboli 10x10=100 (3 cifre) 1000 simboli 100x10=1000 (4 cifre) simboli mentre il numero di simboli cresce di fattori 10 il numero di cifre cresce come il logaritmo Esempio: Codifica unaria (non ragionevole) 1 cifra (1) 1 simbolo 10 decimale (10 cifre) 10 simboli 100 decimale (100 cifre) 100 simboli 1000 decimale (1000 cifre) simboli mentre il numero di simboli cresce di fattori 10 il numero di cifre cresce linearmente

9 9 Esempio: Generazione esponenziale di dati Problema di decisione difficile: dato un grafo determinare se esiste un ciclo hamiltoniano di lunghezza

10 10 Efficienza di un algoritmo Tempo richiesto per risolvere unistanza del problema codificata ragionevolmente Il tempo di calcolo della soluzione è definito in maniera indipendente dalle caratteristiche del particolare calcolatore utilizzato. Tempo di soluzione: numero delle operazioni elementari necessarie allalgoritmo per risolvere unistanza di una dimensione data. Operazioni elementari: addizioni, moltiplicazioni, confronti.

11 11 Definizione La funzione di complessità nel tempo, f(k), dove k è la dimensione di unistanza, è la funzione che restituisce il massimo numero di operazioni elementari necessarie ad un algoritmo per risolvere le istanze di dimensione k di un problema. l La funzione di complessità nel tempo è determinata per mezzo della worst case analysis. l Un modo alternativo di valutare la complessità è lanalisi statistica (più complicato).

12 12 Occorre conoscere solo il comportamento asintotico (k ) della funzione di complessità nel tempo, ossia lordine di f(k) Definizione La funzione f(k) è di ordine g(k), indicato come O(g(k)), se k ed una costante c tali che f(k) c g(k) per k k Esempio: un polinomio è O(k n )

13 13 Definizione Un algoritmo è di tipo polinomiale se ha una funzione di complessità nel tempo che è O(k p ) per un certo p fissato. Definizione Un algoritmo è di tipo esponenziale se non ha una funzione di complessità nel tempo di tipo polinomiale.

14 14 Definizione Una funzione f(k) è di ordine esponenziale se non è limitata da alcun polinomio, ossia per k k, c 1, c 2 >0 e d 1, d 2 >1 Classe P Appartengono alla classe P tutti i problemi di decisione che possono essere risolti da algoritmi di tipo polinomiale (Polynomial time algorithm). I problemi in P sono ben risolti poiché per essi esiste un algoritmo efficiente

15 15 Esempio:tre algoritmi su un calcolatore che esegue una operazione in s k O(f(k)) polinomiale esponenziale Legenda: s=secondi, m=minuti, c=secoli (!)

16 16 La complessità computazionale non dipende dalla velocità del calcolatore utilizzato. Esempio: un calcolatore 1000 volte più veloce (10 -9 s) quante operazioni potrebbe eseguire in più per i tre algoritmi?

17 17 Esempio: Sono algoritmi polinomiali gli algoritmi per determinare il minimo albero ricoprente in un grafo: Kruskal è O(nlogn), Prim è O(n2) Il problema (di decisione) dello shortest spanning tree: dato un grafo stabilire se esiste un albero ricoprente di lunghezza

18 18 Classe NP Appartengono alla classe NP tutti i problemi di decisione per cui, essendo nota una soluzione, è possibile verificare in tempo polinomiale che la risposta è affermativa (Non deterministic Polynomial time algorithm) La codifica di una soluzione è detta certificato di ammissibilità

19 19 Esempio: Problema: Dato il grafo G, esiste un circuito hamiltoniano di lunghezza

20 20 I problemi NP sono quelli che sono risolvibili da un algoritmo di tipo polinomiale non deterministico (Non deterministic Polynomial time algorithm). Un algoritmo NP: Guessing stage)Un oracolo indovina la soluzione (non deterministico) Checking stage)Verifica in tempo polinomiale della soluzione (ovviamente nella realtà non esistono tali algoritmi) P NP Congettura P NP NPP

21 21 Esempi di problemi di decisione o Shortest spanning tree: è P e NP o PL (determinare se esiste una soluzione >K): è NP e dal 1979 è stato provato che è P (algoritmo dellellissoide) o Ciclo hamiltoniano di lunghezza

22 22 Problemi di decisione e problemi di ottimizzazione l Le definizioni della teoria della complessità fanno riferimento a problemi di decisione. l Quanto detto si può estendere ai problemi di ottimizzazione è un algoritmo che risolve un problema di decisione può essere utilizzato allinterno di un algoritmo di tipo polinomiale per risolvere il corrispondente problema di ottimizzazione.

23 23 Esempio: Problema di decisione (CH(k)) Dato il grafo G, esiste un circuito hamiltoniano di lunghezza

24 24 Sia S lalgoritmo per risolvere CH(k). Lalgoritmo per risolvere TSP può essere costituito dalla seguente procedura dicotomica: 1.Siano A e B la minima e massima lunghezza degli archi di G ed m il numero di nodi di G. Allora m A lunghezza circuto hamiltoniano m B Porre k= m(B-A)/2 2.Usare S per risolvere CH(k). 3.Se la risposta di S è si, porre k=k/2 altrimenti k=k(3/2) ed andare a 2. Poichè i coefficienti sono interi, al più ci saranno (log(m(B-A))+1 iterazioni.

25 25 Problema Complementare I problemi complementari (co-problemi) sono quelli per cui viene formulata una domanda in termini negati. Esempio: Il problema complementare del ciclo hamiltoniano di lunghezza

26 26 I problemi complementari dei problemi in P sono ancora in P. P=co-P Congettura NP co-NP P NP co-NP P NP co-NP Esempio: Il certificato di ammissibilità per il problema complementare del ciclo hamiltoniano: la lista di tutti i possibili cicli hamiltoniani per un grafo completo con m nodi è pari a m! esponenziale quindi non verificabile in tempo polinomiale

27 27 Trasformazioni ed NP-completezza Definizione Si definiscono come problemi più difficili di una classe quei problemi appartenenti alla classe che risultano almeno difficili quanto ogni altro é Se si riuscisse a risolvere efficientemente uno dei problemi più difficili allora si potrebbero risolvere efficientemente anche tutti gli altri problemi della classe

28 28 Trasformazione polinomiale E un algoritmo che, data unistanza I di un problema, produce in tempo polinomiale unistanza I di un problema in modo tale che, se la risposta è SI per I, allora la risposta è SI anche per I La trasformazione polinomiale di a ( ridotto a ) Le trasformazioni polinomiali sono transitive

29 29 Classe NP-C (NP-Completi) Appartengono alla classe NP-C tutti i problemi di decisione della classe NP che sono almeno difficili quanto ogni altro problema in NP. Il problema è NP-C se NP, è possibile I problemi NP-C sono quelli a cui possono essere ridotti con una trasformazione polinomiale tutti i problemi in NP

30 30 Conseguenze: Se fosse possibile risolvere efficientemente un NP-C allora tutti i problemi NP sarebbero stati risolti efficientemente. l Per dimostrare P=NP basterebbe provare che un solo problema NP-C è P P NP co-NP NP-C

31 31 Il problema della soddisfacilità (SAT) E stato il primo problema NP di cui è stata dimostrata lappartenenza ad NP-C SAT Problem Data unespressione booleana in forma congiuntiva normale in n variabili, x 1,..., x n, e loro complementi, dire se lespressione è soddisfacibile. Forma congiuntiva normale: un AND di OR: dove le espressioni in parentesi sono clausole di cardinalità h

32 32 Esempio: Data dire se esiste unassegnazione VERO-FALSO alle variabili per cui E=VERO. Teorema di Cook (1971) Il problema SAT è NP-C se h 3. Per dimostrare che NP è tale che NP-C, per la transitività di è sufficiente dimostrare che un NP-C (ad esempio, SAT) si riduce ad esso,.

33 33 Estensione ai problemi di ottimizzazione. Problemi NP-hard Un problema è NP-hard se esiste un problema NP-C che può essere ridotto ad esso con una trasformazione polinomiale.

34 34 l Sono NP-hard problemi (anche non NP) almeno difficili quanto ogni problema NP-C. Se NP-C per alcune delle sue istanze (le più grandi) non potrà essere trovata la soluzione ottima in un tempo accettabile per mezzo di algoritmi esatti (enumerazione esplicita o implicita). In generale è possibili determinare soluzioni accettabili per NP-C per mezzo di o algoritmi approssimati (soluzioni sub-ottime) o algoritmi euristici

35 35 Esempi di problemi Problemi P n Programmazione Lineare Continua n Matching n Min Spanning Tree n Shortest Path (Dijkstra O(m 3 ), Bellman-Ford O(m 2 )) n Sistemi equazioni lineari Problemi NP-C n Travelling Salesman Problem n SAT n Set partitioning, packing, covering n 0-1 Integer programming n Knapsack


Scaricare ppt "1 Teoria della Complessità Concetti fondamentali q Loggetto della teoria della complessità è stabilire se un problema sia facile o difficile q La difficoltà"

Presentazioni simili


Annunci Google