fondamenti di informatica 2010/11 -...
TRANSCRIPT
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)