Lucchetto con combinazione (3 numeri tra 0 e 39)

2-06-2011
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
1
2-06-2011
Tempo esponenziale
Tempo 2n per risolvere instanze di “taglia” n
Incrementando n di 1  running time raddoppia!
Da tener presente:
Per n =300,
2n > numero di atomi dell’universo.
Soddisfacibilita’ di formule
Booleane
(A + B + C) · (D + F + G) · (A + G + K) · (B + P + Z) · (C + U + X)
· = and
+ = or
A = not A
 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?
2
2-06-2011
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”
3
2-06-2011
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?
4
2-06-2011
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).
5
2-06-2011
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
6
2-06-2011
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.)
7
2-06-2011
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”
8
2-06-2011
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.
Una nuova prospettiva?
 Studio della materia → focus su massa, carica, etc.
 Studio dei processi → focus sulla difficolta’
computazionale
9
2-06-2011
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.
10
2-06-2011
Esempio 3: Quantum Computation
A
B
Peter Shor
   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?
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
11
2-06-2011
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)
12