12
2-06-2011 1 Complessita’ computazionale ed il problema P / NP Fondamenti di Informatica 2010/11 Lucchetto con combinazione (3 numeri tra 0 e 39) Perche’ e’ sicuro? (escludendo che lo si rompa) Ans: Combinazione di 3 numberi 0-39… Un ladro dovrebbe provare 40 3 = 64,000 combinazioni

Fondamenti di Informatica 2010/11 - di-srv.unisa.itcicalese/Fond-Inf/ComplessitaComputazionale.pdf · per fattorizzare interi in maniera efficiente (e “rompere” protocolli crittografici)

Embed Size (px)

Citation preview

2-06-2011

1

Complessita’ computazionale ed il problema P / NP

Fondamenti di Informatica 2010/11

Lucchetto con combinazione (3 numeri tra 0 e 39) Perche’ e’ sicuro? (escludendo che lo si rompa)

Ans: Combinazione di 3 numberi 0-39… Un ladro dovrebbe provare 403 = 64,000 combinazioni

2-06-2011

2

Tempo esponenziale

Tempo 2n per risolvere instanze di “taglia” n

Da tener presente:

Per n =300, 2n > numero di atomi dell’universo.

Incrementando n di 1 running time raddoppia!

Soddisfacibilita’ di formule Booleane

 Esiste un assegnamento che la rende vera?  E se abbiamo 100 variabili?  1000 variabili?  Quanto impiegheremmo per trovare

l’assegnamento che rende vera la formula?

(A + B + C) · (D + F + G) · (A + G + K) · (B + P + Z) · (C + U + X)

· = and + = or A = not A

2-06-2011

3

Discussione

C’e’ una differenza tra

essere creativi / brillanti

e

essere capaci di apprezzare/comprendere creativita’ / genialita’?

Esiste una dicotomia analoga per la computazione?

Genialita’ = Saper trovare to find l’“ago nel pagliaio”

Un Beethoven sa determinare “l’assegnamento giusto” alla formula Booleana della “bellezza musicale”

2-06-2011

4

Esistono numerosi problemi computazionali la cui soluzione richiede “trovare un ago in un pagliaio”….

CLIQUE Problem   In questo social network,

esiste una CLIQUE con 5 o piu’ studenti?

  CLIQUE: Gruppo di studenti, in cui ogni coppia di studenti sono amici

  Qual e’ un buon algoritmo per determinare clique?

  In che misura l’efficienza di tale algoritmo dipende dalla taglia della rete e della clique cercata?

2-06-2011

5

Il problema di “spargere la voce”   Social network   Ogni nodo rappresenta uno

studente   Due nodi sono connessi da un

arco se gli studenti sono amici   Anna comincia a mettere “voci in

giro”   La “voce” raggiungera’ Benjamin?   Suggerite un algoritmo per

rispondere alla domanda   Come cresce la complessita’

rispetto alla taglia della rete?   I server della “rete” devono

risolvere tale problema continuamente.

Ricerca esaustiva / Esplosione Combinatoriale

Algoritmi Naïve per molti problemi tipo “ago nel pagliaio” finiscono per testare tutte le possibili soluzioni running time esponenziale.

  Frequentissimo nell’universo computazionale

  E’ possibile trovare algoritmi migliori (come per “Spargere la Voce”)? Per es., running time O(n2).

2-06-2011

6

Armonia di gruppo

Dato un Social network di n studenti.

Dove gli archi corrispondono a coppie di studenti che NON vanno d’accordo.

Decidi se esiste un insieme di k studenti che costituisca un gruppo in armonia (ognuno va d’accordo con ognuno).

E’ il problema della Clique mascherato!

Il commesso viaggiatore (il problema dei corrieri UPS)

  Input: n locazioni e tutte le distanze tra coppie di punti, e una lunghezza k

  Scopo: decidere se esiste un modo per visitare tutte le locazioni percorrendo in totale una distanza <= k

2-06-2011

7

Il problema dell’Orario

  Input: n studenti, k corsi, liste degli studenti in ogni corso, m possibili orari per gli esami finali

  “Conflitto”: uno studente e’ in due corsi con l’esame programmato alla stessa ora

  Scopo: decidere se esiste la possibilita’ di programmare l’orario con al piu’ 100 conflitti?

Il problema P / NP

  P: problemi per i quali e’ possibile trovare una soluzione in tempo polinomiale (nc dove c e’ una costante e n e’ la “taglia dell’input”). Esempi: “ricerca binaria”, “Spargi la voce”

  NP: problemi per i quali una buona soluzione puo’ essere verificata in tempo nc. Esempi: Soddisfacibilita’ Booleana, Commesso Viaggiatore, Clique, Orario

  Domanda: Vale P = NP? “E’ possibile automatizzare la “genialita’”?”

(Nota: Indipendente dal Modello computazionele --- Turing-Post, pseudocodice, C, Java, etc.)

2-06-2011

8

Problemi NP-completi

I Problemi “piu’ difficili” nella classe NP  Se uno di essi in P allora ogni problema in NP

e’ anche in P.

Esempi: Soddifacibilita’, Commesso Viaggiatore, Clique,

Orario, …. e molti molti altri ancora (migliaia)

Come e’ possibile provare che tali problemi sono “I piu’ difficili”?

“Riduzione”

“Datemi un punto d'appoggio, ed io muoverò la Terra.”

– Archimedes (~ 250BC)

“Se mi date un algoritmo polinomiale per il problema della Soddifacibilita’ delle Formule Boolean, Vi dar’ un algoritmo polinomiale per ogni problema in NP.” --- Cook, Levin (1971)

“Ogni problema in NP e’ un problema di soddisfacibilita’ “mascherato”

2-06-2011

9

Cosa fare con I problemi NP-completi

1.  Euristiche (algoritmi che producono soluzioni ragionevoli per istanze reali)

2.  Algoritmi di Approssimazione (producono soluzioni sub-ottimali, ma con la possibilita’ di garantire il massimo margine di sub-ottimalita’)

Teoria della Complessita’ Computazionale: Studio dei problemi computazionalmente difficili.

  Studio della materia → focus su massa, carica, etc.

  Studio dei processi → focus sulla difficolta’ computazionale

Una nuova prospettiva?

2-06-2011

10

Esempio 1: Economia Teoria degli equilibri:

  Input: n agenti, ognuno con un portafoglio iniziale (beni, denaro, etc.) e con delle preferenze (funzione per misurare il guadagno)

  Equilibrio: sistema di prezzi tale che per ogni bene, domanda = offerta.

  Equilibrio esiste [Arrow-Debreu, 1954]. Gli Economisti assumono che i mercati lo trovino (come una “mano invisibile”)

  Ma, non e’ noto alcun algoritmo efficiente per calcolarlo. Come fa il mercato a computarlo?

Esempio 2: Problema della Fattorizzazione

Dato un numero n, trova due numberi p, q (diversi da 1) tali che n = p x q.

Come possiamo risolverlo?

Infatti: Si “assume” che tale problema sia “difficile”. E’ alla base di gran parte della crittografia.

2-06-2011

11

Esempio 3: Quantum Computation

  Principio fondamentale della meccanica quantistica: quando una particella va da A a B, usa tutti i possibili cammini allo stesso tempo

  [Shor’97] Possiamo usare il comportamento quantistico per fattorizzare interi in maniera efficiente (e “rompere” protocolli crittografici)

  E’ possibile costruire un computer quantistico, o la meccanica quantistica non descrive correttamente il nostro mondo fisico?

A B Peter Shor

Esempio 4: Intelligenza Artificiale

Qual’e’ la complessita’ computazionale di problemi quali riconoscimeto del linguaggio, giocare Ottimamente a scacchi?

Etc. etc.

Un possibile dimostrazione che il cervello non e’ un computer: Mostrare che esso continuamente risolve problemi che “necessariamente” (dimostrato) richiedono tempo esponenziale su un computer

2-06-2011

12

Perche’ la relazione P / NP e’ un problema da $1.000.000?   Se P = NP allora soluzioni “brillanti” diventano la norma

(best schedule, best route, best design, best math proof, etc…)

  Se P ≠ NP allora sappiamo qualcosa di nuovo e fondazionale non solo rispetto alla scienza dei computer (analogo a “Niente viaggia piu’ veloce della luce”).

Prossimo tema: Crittografia (mettere in pratica la complessita’ computazionale)