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