complessità e approssimazione -...

48
1 Complessità e Approssimazione Corso di Laurea in Scienze dell'Informazione Corso di Laurea Specialistica in Matematica Docente: Mauro Leoncini

Upload: lamnhan

Post on 14-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

1

Complessità e Approssimazione

Corso di Laurea in Scienze dell'InformazioneCorso di Laurea Specialistica in Matematica

Docente: Mauro Leoncini

2

Aspetti organizzativi

● Sito web: http://algo.ing.unimo.it/people/mauro quindi seguire i link alla didattica

● Ricevimento (semestre di lezione): Mercoledì h 16.30-17.30, Giovedì h 11-12

● Materiale didattico: trasparenze e materiale disponibile in rete (segnalato dal docente)

● Modalità d'esame: solo orale● CFU assegnati: 7 per CdL Scienze dell'Informazione, 5

per CdL specialistica in Matematica

3

Argomenti trattati

● Esistenza di problemi computazionalmente difficili● Abbondanza in molti contesti applicativi (logica,

teoria dei grafi, ricerca operativa, economia, biologia, informatica, ...)

● Teoria della NP-completezza (NP-completeness)● Algoritmi di approssimazione per problemi NP-

difficili (NP-hard)● Algoritmi probabilistici● Difficoltà come risorsa: crittografia a chiave

pubblica e firma digitale

4

Richiami dal corso di Algoritmica

● Problema e istanza– il problema dell'ordinamento– un ben preciso insieme di chiavi da ordinare (istanza)

● Dimensione di un'istanza: numero di bit/word sufficiente a rappresentare l'istanza in modo compatto

● Esempio: un numero intero n è rapprentato in modo compatto mediante notazione binaria; la dimensione è dunque log n

● Esempio: un grafo G=(V,E) tale che V={1,2,....,n} ed |E|=m è rappresentabile in modo compatto mediante n+2m numeri in notazione binaria

5

Richiami dal corso di Algoritmica (2)

● Misuriamo il costo computazionale di un dato algoritmo– contando il numero di operazioni elementari (a livello

di bit o di word)– in funzione della dimensione delle istanze di input– considerando, per ogni data dimensione, il costo

massimo (analisi worst-case)● Considerare le operazioni a livello di bit può

essere necessario nel caso di problemi che coinvolgono (anche) numeri

● Importanza di codificare i problemi in modo compatto

6

Richiami dal corso di Algoritmica (3)

● La complessità computazionale di un problema è la quantità minima di risorse (spazio o tempo) sufficienti per risolverlo, ovvero il costo dell'algoritmo di minimo costo che risolve il problema

● Anche la complessità può quindi essere analizzata nel worst-case, sia a livello di bit che di word

● Molti autori usano anche la locuzione “complessità di un algoritmo”, che noi invece eviteremo

7

Un primo esempio: il crivello di Eratostene

● Input n● Tentativamente, marca i numeri 2,3,4,...,n come primi● i = 2● Finché i ⌊sqrt(n)⌋

– trova il primo numero j i marcato come primo– smarca i numeri 2j, 3j, ....,⌊n/j⌋×j – i=j+1

● Stampa i numeri ancora marcati●

● Esempio: n=18 (⌊sqrt(18)⌋=4)● 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

8

Un primo esempio: il crivello di Eratostene

● Input n● Tentativamente, marca i numeri 2,3,4,...,n come primi● i = 2● Finché i ⌊sqrt(n)⌋

– trova il primo numero j i marcato come primo– smarca i numeri 2j, 3j, ....,⌊n/j⌋×j – i=j+1

● Stampa i numeri ancora marcati●

● Esempio: n=18 (⌊sqrt(18)⌋=4)● 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

9

Un primo esempio: il crivello di Eratostene

● Input n● Tentativamente, marca i numeri 2,3,4,...,n come primi● i = 2● Finché i ⌊sqrt(n)⌋

– trova il primo numero j i marcato come primo– smarca i numeri 2j, 3j, ....,⌊n/j⌋×j – i=j+1

● Stampa i numeri ancora marcati●

● Esempio: n=18 (⌊sqrt(18)⌋=4)● 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

10

Il crivello di Eratostene

● Il costo dell'algoritmo è O(n)● Tuttavia, la dimensione dell'input non è n, bensì

log n● Ne consegue (correttamente) che il crivello di

Eratostene è un algoritmo (di costo) esponenziale● Considerare n come dimensione dell'input

equivale a scrivere l'input in unario, quindi in modo non compatto

● Qual è la complessità del problema risolto dal crivello di Eratostene?

11

Alcuni problemi che ricorreranno spesso

● SAT (abbreviazione di SATisfiability): data una formula proposizionale F in forma normale congiuntiva, dire se esiste un assegnamento di verità alla proposizioni elementari che rende vera F

● Esempio: F = (a∨b) ∧ (¬b∨c) ∧ (¬a∨¬c) è soddisfattibile assegnando ad a il valore vero e a b e c il valore falso

● k-SAT: come SAT, ma ogni espressione in and contiene esattamente k letterali

12

Alcuni problemi che ricorreranno spesso (2)

● INDEPENDENT SET: dato un grafo G=(V,E) e un intero k non maggiore di |V|, dire se esiste un sottoinsieme V' di V di dimensione almeno k tale che in G non ci sono archi che uniscono vertici di V'

● Esempio: nel grafo seguente esiste un insieme indipendente di dimensione 3

13

Alcuni problemi che ricorreranno spesso (3)

● VERTEX COVER: dato un grafo G=(V,E) e un intero k non maggiore di |V|, dire se esiste un sottoinsieme V' di V di dimensione al più k tale che ogni arco di G ha almeno un estremo in V'

● Esempio: nel grafo seguente esiste una copertura degli archi con 4 vertici

14

Alcuni problemi che ricorreranno spesso (4)

● SET COVER: data una collezione di sottoinsiemi B1,

B2, ..., B

m, di uno stesso insieme S, ed un intero k m,

dire se ci sono k sottoinsiemi la cui unione coincide con S

● Esempio: sia S={1,2,3,4,5,6}, B1={1,4}, B

2={2,4,6},

B3={1,5}, B

4={3,5,6}; è facile vedere che 3

sottoinsiemi sono necessari e cheS = B

1 B

2 B

4 = B

2 B

3 B

4

15

Alcuni problemi che ricorreranno spesso (5)

● TSP (Travelling Salesman Problem): date tutte le (n-1)n/2 distanze fra n città e un valore t, dire se esiste un cammino chiuso di lunghezza non maggiore di t che tocca tutte le città una e una sola volta

● HAMILTONIAN GRAPH: dato un grafo con n vertici, dire se è Hamiltoniano, cioè se contiene un cammino chiuso che passa una e una sola volta da ogni nodo (

16

Il problema fondamentale: stabilire la difficoltà dei problemi● Non possiamo cercare risultati “precisi” del tipo: il

problema A si risolve in tempo O(n2)● In modo molto più “brusco”, possiamo invece

classificare i problemi in facili o difficili (o addirittura solo presumibilmente difficili)

● Ma che cosa vuol dire, per un problema, essere (computazionalmente) facile/difficile?

17

Il problema fondamentale: stabilire la difficoltà dei problemi (2)● Cominciamo col fissare una scala di difficoltà● Al riguardo, definiamo alcune importanti famiglie di

funzioni– polinomi: sono del tipo nk, con k>0 costante– superpolinomi: sono del tipo nlogkn, con k>0 costante – esponenziali: sono del tipo bnk, con b>1 e k>0 costanti

● Due problemi le cui complessità sono funzioni nella stessa famiglia hanno la stessa difficoltà

● Diversamente, esponenziale è più difficile di superpolinomiale che è più difficile di polinomiale

18

Classi di problemi

● I problemi vengono classificati utilizzando le amplie classi di funzioni ricordate

● Alcune classi importanti–P = {A: esiste una costante k e un algoritmo P che risolve

ogni istanza I di A in tempo al più |I|k}

–EXPTIME = {A: esiste una costante k e un algoritmo P

che risolve ogni istanza I di A in tempo al più 2|I|k }

–PSPACE = {A: esiste una costante k e un algoritmo P che risolve ogni istanza I di A usando al più |I|k bit di memoria}

● Risulta P  PSPACE  EXPTIME e    P  EXPTIME

19

Più precisamente ...● ... il nucleo della teoria che svilupperemo

considererà solo problemi decisionali● Tipi di problemi

– decisionali: sono quelli che ammettono risposta SI/NO, o VERO/FALSO (ad esempio: il numero p è primo?)

– di ricerca: sono quelli che chiedono di trovare una soluzione (ad esempio, trovare una componente connessa di un grafo)

– di ottimizzazione: chiedono di trovare la migliore soluzione (ad esempio, trovare il cammino minimo che congiunge due vertici di un grafo orientato pesato)

● Le classi P, PSPACE e EXPTIME sono definite in termini di problemi decisionali

20

Ritorniamo alla domanda fondamentale: quand'è che un problema è facile?

● Se il bit-cost di ogni possibile algoritmo per A è esponenziale, allora A è certamente difficile

● Se invece esiste un algoritmo di bit-cost polinomiale, allora diciamo che A è facile

● Sembra non accettabile. E se il polinomio fosse n100 ?

21

Una spiegazione

● Il costo esponenziale deriva dalla (eventuale) necessità di analizzare un numero esponenziale (nella dimensione dell'input) di “oggetti”

● Esempio: nel caso di SAT, se la formula contiene n proposizioni elementari, ci sono 2n possibili assegnamenti di verità. Ce n'è almeno uno buono?

● Esempio: nel caso del TSP ci sono (n-1)! possibili permutazioni che corrispondono ad altrettanti ordini di attraversamento delle città (immaginando di partire ed arrivare alla città 1). Ce n'è una cui corrisponde una lunghezza minore di t?

22

Una spiegazione (2)● Se un algoritmo è polinomiale non può dunque

esaminare tutte le possibili soluzioni, deve usare una strategia più intelligente

● Questa osservazione teorica è supportata da considerazioni pratiche, cioè funziona davvero– se un problema ammette un algoritmo polinomiale, allora

quasi sempre il polinomio è di grado basso– e quasi sempre esistono implementazioni concrete

efficienti● La classe di tutti i polinomi ha importanti proprietà

di chiusura (somma, prodotto e composizione di polinomi producono ancora polinomi)

23

Ricapitolando

● Se prendiamo per buona la spiegazione data– i problemi nella classe P sono facili

– i problemi nell'insieme differenza EXPTIME\P sono difficili

● Sfortunatamente, i problemi che abbiamo elencato come pure molti altri di grande interesse applicativo non sono a tutt'oggi classificabili ne' come facili ne' come difficili

24

La “situazione” attuale

● Per SAT non abbiamo di un algoritmo polinomiale è un problema difficile?

● Non abbiamo però neppure una dimostrazione (cioè una prova certa) della sua difficoltà è un problema facile?

● Detto in altri termini: per SAT non abbiamo limiti superiori di complessità polinomiali ne' limiti inferiori esponenziali

● Per gli altri problemi la situazione è la stessa

25

Un obiettivo più “modesto” (rispetto alla classificazione in facile/difficile)

● Esplorare lo spazio dei problemi computazionalmente difficili

● ... dando evidenza (in assenza di prove certe) della difficoltà di alcuni problemi

● ... caratterizzando almeno una ampia classe di essi da un punto di vista matematico– il problema A è almeno tanto difficile quanto B– il problema A è il più difficile nell'ambito di una

classe C

26

Uno strumento fondamentale: le riduzioni● Supponiamo di disporre di un algoritmo che

risolve un problema B, che possiamo utilizzare come sottoprogramma

● Diremo che un problema A è riducible a B in tempo polinomiale (o che A è polinomialmente riducibile a B), e scriveremo A

PB, se esiste un

algoritmo per A che impiega tempo polinomiale attribuendo costo unitario ad ogni eventuale chiamata del sottoprogramma (o black-box) per B.

27

Significato delle riduzioni

● Se APB allora B è almeno tanto difficile quanto A

● Infatti, per le proprietà di chiusura dei polinomi, se esiste un algoritmo polinomiale per B, allora esiste

anche per A● Alternativamente, se la complessità di A è

esponenziale (o superpolinomiale) allora non può esistere un algoritmo polinomiale per B, pena contraddizione

● Se APB e B

PA allora A e B hanno la stessa

difficoltà (scriveremo APB)

28

Generalità dei problemi decisionali

● Come già anticipato, nel perseguire il nostro obiettivo considereremo solo problemi di tipo decisionale

● Non è una limitazione– è ovvio che la versione decisionale di INDEPENDENT

SET è non più difficile della versione di ottimizzazione– tuttavia, curiosamente, è vero anche il contrario– lo stesso si può dire per tutti gli altri problemi considerati o

che considereremo– per verificare questo fatto, usiamo una riduzione

29

Una (auto)riduzione per INDEPENDENT SET (IS)● Disponiamo di un sottoprogramma D per risolvere la

sola versione decisionale di IS e vogliamo costruire un algoritmo per la versione di ottimizzazione

● Se il grafo ha n vertici, con un processo di ricerca binaria si determina la dimensione massima k di un IS mediante al più log n chiamate a D

● Si procede quindi in successione alla individuazione di k vertici che formano un IS– si considera un vertice v, – lo si elimina dal grafo– (continua)

30

Una (auto)riduzione per INDEPENDENT SET (IS)

– (continua) si verifica (con una chiamata a D) se la dimensione del massimo IS si riduce

– in caso affermativo, il nodo v è necessariamente parte dell'IS di dimensione massima, e dunque viene inserito nell'insieme risultato; inoltre, si elimina dal grafo ogni vertice adiacente a v e si procede cercando un IS di dimensione k-1

– altrimenti si procede cercando ancora un IS di dimensione k● Il numero di “chiamate” a D è al più è n+log n ● Dunque, se D impiegasse tempo polinomiale, anche la

versione di ottimizzazione sarebbe facile

31

Prime riduzioni per problemi decisionali

● Stabiliremo i seguenti risultati, che illustrano l'uso delle riduzioni

● IS e VC hanno la stessa difficoltà● SC è almeno tanto difficile quanto VC● IS è almeno tanto difficile quanto 3-SAT

32

Difficoltà relativa di IS e Vertex Cover (VC)● Un semplice risultato: dato un grafo G=(V,E), un

sottoinsieme S di V è un IS se e solo se V \ S è un VC– se (x,y) è un arco di G, allora al più solo uno fra i

vertici x e y può stare in S, e quindi almeno uno fra x e y sta in V \ S, ne consegue che l'arco (x,y) è coperto e dunque V \ S è un VC

– anche il viceversa è immediato● Questo implica che un grafo G ha un IS di

dimensione almeno k se e solo se G ha un VC di dimensione non maggiore di n-k (n=|V|)

33

Difficoltà relativa di IS e VC● È facile immaginare le riduzioni in termini

algoritmici: data una black-box per VC, se voglio sapere se il grafo G in input ha un IS di dimensione almeno k, chiedo alla black-box se G ha un VC di dimensione non maggiore di n-k e fornisco la stessa risposta data dalla black-box

● Vale cioè ISPVC

● Poiché vale anche ISPVC, risulta IS

PVC e

cioè i due problemi hanno la stessa difficoltà

34

Set COVER (SC) è almeno tanto difficile quanto VC ● In altri termini VC

PSC

● Dato un problema di vertex covering su un grafo G=(V,E), poniamo S=E e B

i={archi incidenti nel

nodo i}, cioè ogni sottoinsieme è in corrispondenza biunivoca con un vertice

● Naturalmente, se esiste una collezione di k sottoinsiemi che copre S, allora i vertici corrispondenti formano un vertex cover

35

● In altri termini 3-SATPIS

● Data una formula booleana in forma normale congiuntiva con k espressioni in and, ognuna con esattamente 3 letterali in or, costruiamo un grafo fatto di k triangoli opportunamente collegati

● Esempio: sia data la formula F = (a∨b∨¬c) ∧ (¬a∨¬b∨c) ∧ (¬a∨b∨¬c)

il grafo corrispondente avrà 3 triangoli (slide successiva)

IS è non meno difficile di 3-SAT

36

IS è non meno difficile di 3-SAT (2)

● Ogni vertice v di un triangolo (oltre agli altri vertici dello stesso triangolo) è collegato con tutti quei vertici logicamente incompatibili con il letterale rappresentato da v

● È facile verificare che la formula (con k espressioni in and) è soddisfattibile se e solo se il grafo ha un independent set di dimensione k

a b

c

a b

c

a b

c

37

IS è non meno difficile di 3-SAT (3)

● Algoritmicamente, la riduzione è un po' più complessa di quelle viste in precedenza

● Data la formula, il programma deve “costruire” il grafo con i triangoli e quindi invocare la black-box per IS

● Tutte le riduzioni viste finora (con l'ovvia eccezione dell'autoriduzione per IS) sono però costituite da una sola chiamata alla black-box (mentre la definizione di riduzione consente un numero polinomiale di invocazioni)

38

La struttura comune delle riduzioni

● APB

Costruzione inputper la black-box

Black box per B

no

siinput

algoritmo per A

39

Alcune osservazioni finali● Le riduzioni viste finore

3-SATPISPVCPSC,

● oltre a VC PIS e

● La riducibilità è una relazione transitiva (deriva dalle proprietà dei polinomi)

● Ne consegue, ad esempio, che 3-SATPSC

40

A che punto siamo?

● Mediante le riduzioni possiamo arrivare a conclusioni del tipo “il problema B è almeno tanto

difficile quanto A” o anche “A e B sono problemi di uguale difficoltà”

● Non siamo in grado di dare una caratterizzazione più ampia dei problemi (apparentemente) difficili, semplicemente perché non sappiamo bene neppure .... di quali problemi stiamo parlando!

● In altri termini, quali sono le caratteristiche comuni di 3-SAT, IS, VC ...?

41

La classe NP● Sembra esserci una chiara differenza, ben

sperimentabile in molti contesti, fra lo sforzo necessario a trovare una soluzione di un problema e verificare che un candidato costituisce effettivamente una soluzione

● Esempi: – in matematica, calcolare un integrale e verificare che

una funzione è primitiva di un'altra funzione– negli scacchi, trovare le mosse che portano ad un matto

e verificare che una sequenza porta effettivamente allo scacco matto

– in automobile, trovare una destinazione o verificare la correttezza delle indicazioni del navigatore satellitare

42

La classe NP (2)● I problemi considerati

– per SAT, è facile verificare (in tempo proporzionale alla lunghezza della formula F) se un assegnamento di verità dato ai letterali della formula soddisfa F

– per IS, è facile verificare (in tempo proporzionale al numero di archi) se un insieme di vertici è indipendente

– per TSP, è facile verificare (in tempo proporzionale al numero di città) se la lunghezza di un dato ciclo è minore della soglia richiesta

– ....

43

La classe NP (3)

● Dato un problema decisionale A, l'insieme degli input legali per i quali la risposta è sì è detto insieme delle istanze positive per A

● Un programma C è detto certificatore efficiente per A se soddisfa le seguenti condizioni(1) C accetta due parametri in input(2) C impiega tempo polinomiale nella dimensione

dell'input(3) esiste una costante k tale che, per ogni istanza

positiva I di A esiste una stringa S (certificato) di lunghezza al più |I|k tale che C(I,S)=sì

44

La classe NP (4)

● Definizione della classe NP: insieme dei problemi decisionali che posseggono un certificatore efficiente

● Un risultato immediato: P  NP● Stabilire se l'inclusione sia propria è uno dei principali

problemi aperti in Informatica e uno dei sette “Millennium Prize Problems” del “Clay Mathematics Institute” http://www.claymath.org/millennium/

● NP è in realtà l'acronimo di Nondeterministic Polinomial (Time)

45

Il nuovo interrogativo

● Quali sono i problemi candidati a stare in NP \ P, sempre che questo insieme non sia vuoto?

● Dalle riduzioni viste possiamo dire, ad esempio, che se ci stesse 3-SAT, cioè se si provasse che 3-SAT è

difficile, a maggior ragione ci starebbe anche IS● Equivalentemente, se non ci stesse IS (cioè se si

potesse provare che IS è facile) allora non ci

starebbe neanche 3-SAT● Esiste un problema A “più difficile della classe NP”,

tale cioè che o A NP \ P oppure NP \ P è vuota?

46

Problemi completi● I problemi “più difficili” per una data classe vengono

detti problemi completi per quella classe● Un problema A è completo per la classe NP (o, più

semplicemente, NP-completo) se e solo se– A NP– se B NP allora B

PA

● Un problema completo “racchiude” tutta la difficoltà della classe

● Trovare un problema completo sembra sensibilmente più difficile che stabilire la difficoltà relativa di due problemi specifici (non è neppure detto che esista!)

47

Il risultato fondamentale

● Esistono problemi NP-completi (risultato dovuto indipendentemente a Cook e Levin)

● In particolare, SAT è NP-completo (teorema di Cook)● La dimostrazione non è neppure troppo complessa!● In breve, il teorema di Cook fa vedere che

– i problemi in NP possono essere decisi da un opportuno modello di calcolo, la Macchina di Turing (MdT) non deterministica

– data la descrizione di una MdT M e un input I per M, si può costruire una espressione in forma normale congiuntiva che è soddisfattibile se e solo se l'output di M su input I è sì

– la lunghezza della formula è polinomiale in |M| e in |I|

48

Altri problemi NP-completi

● Per dimostrare che un problema A è NP-completo non occorre “rifare l'equivalente del teorema di Cook” per A!

● È invece sufficiente trovare un problema B che si sa

essere NP-completo e dimostrare che BPA

● Ad esempio, alla luce delle riduzioni già operate, se provassimo che SAT

P3-SAT dimostreremmo anche

che 3-SAT, IS, VC e SC sono problemi NP-completi● In questo modo il “vocabolario” di problemi NP-

completi cresce