conp La classe conp contiene i complementi dei linguaggi in NP. conp = { L L è in NP} Esempi di problemi in conp:

Documenti analoghi
Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale la classe conp e le relazioni tra P, NP,coNP e EXPTIME

Sommario. Problemi di decisione, di ricerca e di ottimizzazione: come sono legate le complessità delle diverse versioni dei problemi?

Orari Corso. Docenti corso. Algoritmi. Orari Ricevimento Studenti. Martedì 16:00-18:00, aula F/4 Venerdì 11:00-13:00, aula F/4

Orari Corso. Docenti corso. Algoritmi. Orari Ricevimento Studenti. Martedì 16:00-18:00, aula F/4 Venerdì 11:00-13:00, aula F/4

Orari Corso. Docenti corso. Algoritmi. Libro di testo. Martedì 16:00-18:00, aula F/5 Giovedì 16:00-18:00, aula F/5. a. a.

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP

Aniello Murano Classe dei problemi NP. Nella lezione precedente abbiamo visto alcuni problemi che ammettono soluzione polinomiale

Sommario. Complessità di tempo e spazio di una TM che si ferma sempre.

Sommario. Problemi di decisione, di ricerca e di ottimizzazione: come sono legate le complessità delle diverse versioni dei problemi?

Lucchetto con combinazione (3 numeri tra 0 e 39)

Lucchetto con combinazione (3 numeri tra 0 e 39)

NP completezza. Problemi astratti

NP completezza. Vittorio Maniezzo - Università di Bologna

3-SAT CLIQUE VERTEX-COVER INDEPENDENT-SET 3-COLORING

Note sulle classi di complessità P, NP e NPC per ASD (DRAFT)

Sommario. Esempi di problemi NP-completi: 3-COLORING TSP. HamCycle

Automi e Linguaggi Formali

Dentro P e oltre NP?

Problemi decisionali. Esempi

Teoria della Complessità Concetti fondamentali

Partizioni intere. =! i# P. Es: Dato {38, 17, 52, 61, 21, 88, 25} possiamo rispondere positivamente al quesito poiché

Problemi intrattabili, classi P e NP. Problemi intrattabili, classi P e NP

Problemi intrattabili

COPPIE DI NUMERI PRIMI RSA

Teoria della NP-completezza

Teoria della complessità

una possibile funzione unidirezionale

Algoritmo per A. !(x) Istanza di B

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Certificati dei problemi in NP

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

idea della crittografia a chiave pubblica

Teoria della NP-completezza. Damiano Macedonio

una possibile funzione unidirezionale

una possibile funzione unidirezionale

Problemi, istanze, soluzioni

Capitolo 9: Trattabilitá e intrattabilitá dei problemi

Il problema di P e NP

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

a cura di Luca Cabibbo e Walter Didimo

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

PSPACE completezza. Un linguaggio A è PSPACE completo se. 1. A è in PSPACE, cioè esiste una TM T che accetta A con complessità di spazio polinomiale.

Soluzioni della settima esercitazione di Algoritmi 1

Progetto e analisi di algoritmi

Teoria della Complessità Computazionale

Algoritmi e Strutture Dati

idea della crittografia a chiave pubblica

Algoritmi Avanzati Soluzioni dello scritto del 2 febbraio 2004 (appello straordinario)

Teoria della Complessità Computazionale

Sommario. Macchina di Turing universale Proprietà dei problemi Turing riconoscibili Linguaggi non Turing riconoscibili.

Problemi difficili e ricerca esaustiva intelligente

Algoritmi e Strutture Dati

Analisi e implementazione dell algoritmo di Dijkstra (Parte 1)

La matematica negli algoritmi. Maat: dea egizia dell ordine. Liber Abaci 1202

Fattorizzazione di interi e crittografia

Problemi di ricerca in insiemi ordinati

Minori di Grafi: Teoria ed applicazioni algoritmiche

crittografia a chiave pubblica

Esercizi: la classe NP

una possibile funzione unidirezionale

Crittografia e sicurezza delle reti. 1. Classi complessità probabilistiche e OWF 2. Test primalità

crittografia a chiave pubblica

Complessità Strutturale e NP-Completezza

Il problema di P e NP

idea della crittografia a chiave pubblica

NUMERI PRIMI E CRITTOGRAFIA

Aritmetica 2009/10 Compitino 1/12/2009. (a) Contare gli elementi nilpotenti di A. (b) Contare gli elementi zero-divisori di A.

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing

LA METAFORA DELL UFFICIO

Introduzione alla programmazione

una possibile funzione unidirezionale

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

11.4 Chiusura transitiva

Cifrari simmetrici. Crittografia a chiave pubblica. Problemi. Gestione delle chiavi

COMPITO DI ALGEBRA 1 18 giugno 2019

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Cammini Minimi. Algoritmo di Dijkstra. Cammino in un grafo

Complessità computazionale. Complessità e Crittografia

Cammini Minimi. Algoritmo di Dijkstra

ISTRUZIONI A B K A, B, K A<B? SI A<B? SI A<B? SI

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1

Teoria della Complessità Concetti fondamentali. la teoria della complessità computazionale tenta di rispondere a domande del tipo

Note per la Lezione 21 Ugo Vaccaro

Aniello Murano NP- Completezza (prima parte)

E necessaria la chiave segreta? RSA. Funzioni One-way con Trapdoor. Un secondo protocollo

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

Complessità Computazionale

Grafo clique e operatore K

Capitolo 11. Teoria della computazione Pearson Addison-Wesley. All rights reserved

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Appunti lezione Capitolo 13 Programmazione dinamica

Il problema del commesso viaggiatore (TSP) la somma delle distanze tra le città. essere espresso dalla domanda:

Transcript:

conp La classe conp contiene i complementi dei linguaggi in NP. conp = { L L è in NP} Esempi di problemi in conp: UnSAT = {φ φ è falsa per ogni assegnamento alle variabili } NoCLIQUE = {<G,k> G è un grafo non diretto senza un k-clique}

conp: altro esempio TAUT = {φ φ è vera per ogni assegnamento alle variabili } TAUT è in conp? sì, perché untaut è in NP (prova analoga a quella per SAT!) Verificatore per untaut: Input <<φ>,c> 1.verifica che c sia un assegnamento di valori di verità per tutte le variabili di φ 2.verifica se φ risulta falsa e in tal caso accetta, altrimenti rifiuta.

conp-completi: un esempio TAUT = {φ φ è vera per ogni assegnamento alle variabili } TAUT è conp-completo? SAT è NP-completo e quindi anche NP-hard, quindi unsat è conp-hard Possiamo provare che unsat p TAUT, così anche TAUT è conp-hard, inoltre abbiamo visto che TAUT è in conp, quindi possiamo concludere che TAUT è NP-completo. La riduzione: se consideriamo f: φ φ osserviamo che φ è in unsat φ è in TAUT Se NP=coNP allora TAUT e unsat sarebbero in NP. In particolare avremmo un verificatore polinomiale per le tautologie.

PRIMES and COMPOSITES E facile provare che COMPOSITES è in NP. COMPOSITES={x x=p*q, per p,q interi e p,q 1} Basta dare in input a un verificatore gli interi x e p come istanza del problema e certificato. not COMPOSITES = PRIMES = {x x è un numero primo}. Quindi PRIMES è in conp La prova che PRIMES è in NP è meno semplice (teorema di PRATT, 1975) Quindi PRIMES NP conp. Non si dimentichi che PRIMES è in P.

dove P, NP, conp e EXPTIME P NP EXPTIME EXPTIME = TIME(2 nk ) e P conp EXPTIME Prova P conp. Infatti P=coP (l insieme dei complementi dei linguaggi in P) e P NP cop conp, infatti se P NP allora L P L NP L conp, quindi P=coP conp.

P, NP e conp P NP conp ma P = NP conp? Non noto (si suppone di no) Se P = NP allora NP = conp, perché P = cop, o equivalentemente è vero che se NP conp allora NP P Ma può essere che sia vero sia NP = conp che NP P! Se un linguaggio in NP conp fosse NPcompleto, allora NP = conp

P, NP e conp : i possibili scenari NP = co-np= P a NP = co-np P b NP P co-np NP P co-np c d (il più probabile)

NP conp Per i problemi in NP conp disponiamo di un verificatore polinomiale sia per le istanze sì che per le istanze no. Quindi sono problemi per i quali può essere ragionevole aspettarsi l appartenenza a P e che difficilmente possono essere NP-completi. Per esempio FACTOR.

FACTOR FACTOR: Dati due interi positivi z e U, c è un divisore intero non banale di z minore di U? Istanza 1. z = 23.536.481.273 e U = 110.000. risposta SI: z = 104.729 x 224.737. Istanza 2. z = 23.536.481.273 e U = 100.000. risposta NO : 104.729 x 224,737 è la fattorizzazione in fattori primi di z. Istanza 3. z = 23.536.481.277 e U = 23.536.481.277 risposta NO : z è un numero primo.

Algoritmo deterministico per FACTOR CercaFattori(x,U) prec: (U x) Perché un numero z è composto se e soltanto se ha un fattore minore o uguale di z. k = 2 while k U if x mod k = 0 then esci e SI else k = k +1 NO L algoritmo CercaFattori nel caso peggiore esegue x volte il ciclo. Quindi se n è la lunghezza della rappresentazione binaria di x (quindi x è minore di 2 n+1 ) allora l algoritmo ha una complessità in O(2 n/2 ). Infatti considera tutti i numeri binari tra 2 e 2 n/2. Per esempio se x = 2 64 = 18 446 744 073 709 551 616 ci sono 2 32 = 4 294 967 296 numeri da verificare, se x = 2 1024, cioè circa 10 308, ci sono circa 10 154 numeri da verificare. Si stima che l età dell universo sia circa 10 13 e il numero di particella sia minore di 10 100.

Algoritmo non deterministico e polinomiale per FACTOR CercaFattoriNonDet(x,U) prec: (U x) non deterministicamente scegli un numero k tra 2 e U if x mod k = 0 then SI else NO L algoritmo CercaFattoriNondet lavora in tempo polinomiale

Riduzioni a FACTOR PRIMES P COMPOSITES P FACTOR. FACTOR P PRIMES? Si pensa di no! Il sistema crittografico RSA è basato sulla dicotomia tra le complessità dei due problemi: per la codifica si moltiplicano grandi primi generati efficientemente per rompere il sistema si deve fattorizzare efficientemente

FACTOR in NP e in conp FACTOR: Dati due interi positivi z e U, c è un divisore non banale di z minore di U? FACTOR è in NP in virtù dell algoritmo che abbiamo visto o equivalentemente perché si può costruire un verificatore polinomiale: Il verificatore riceve in input z e il certificato, un fattore d 2 e d U, e verifica se z=d(n/d). Un verificatore polinomiale per not FACTOR riceve in input z e una sequenza di numeri maggiori di U. La sequenza è lunga al più lg z perchè la più lunga scomposizione in fattori primi di un numero si ottiene considerando il più piccolo primo e 2 lg z = z. Questo garantisce la polinomialità della lunghezza del certificato. Con il test di primalità si verifica se i numeri dati sono primi, mentre basta moltiplicare i numeri e vedere se il risultato è z per verificare se si tratta della scomposizione in numeri primi di z.

FACTOR in NP e in conp NP-hard conp-hard SAT NP P co-np Factor TAUT Chiamiamo FACTORIZE il problema di trovare la fattorizzazione in interi primi. Possiamo provare che FACTOR P FACTORIZE: FACTORIZE P FACTOR: se esiste un divisore di x minore di U, perchè FACTOR(x,U) dà vero, usiamo la ricerca binaria per trovarlo e poi dividiamo x per il fattore trovato e ripetiamo FACTOR PFACTORIZE: banale

numeri RSA: n = p1p2 Un numero RSA è il prodotto di due primi. Il più grande RSA fattorizzato: RSA-768 ha 232 cifre decimali (768 bits), e era fattorizzato nel 2009, da Thorsten Kleinjung, Kazumaro Aoki, Jens Franke, Arjen K. Lenstra, Emmanuel Thomé, Pierrick Gaudry, Alexander Kruppa, Peter Montgomery, Joppe W. Bos, Dag Arne Osvik, Herman te Riele, Andrey Timofeev, e Paul Zimmermann. [35] RSA-768 = 1230186684530117755130494958384962720772853569595334792197322452 1517264005072636575187452021997864693899564749427740638459251925 5732630345373154826850791702612214291346167042921431160222124047 9274737794080665351419597459856902143413 RSA-768 = 3347807169895689878604416984821269081770479498371376856891243138 8982883793 878002287614711652531743087737814467999489 3674604366679959042824463379962795263227915816434308764267603228 3815739666511279233373417143396810270092798736308917

IL tempo di calcolo Il tempo CPU speso per trovare i fattori di RSA-768 (768 bits), facendo lavorare in parallelo alcuni computer è pari a circa 2000 anni di calcolo su un singolo calcolatore veloce. In pratica i numeri coinvolti nelle applicazioni basate sull RSA sono lunghi da 1024 a 4096 bits. Da Wikipedia: https://en.wikipedia.org/wiki/rsa_factoring_challenge

Algoritmo quantistico polinomiale per FACTOR Nel 1994 Peter Shor (MIT) ha sviluppato un algoritmo in grado di risolvere FACTOR in tempo polinomiale con un calcolatore quantistico. Dattani and Bryans nel 2012, usando l algoritmo di Shor, hanno fattorizzato il più grande numero fino ad ora: 56153 = 241 x 233.

The beginning of the end for encryption schemes? Questo era il titolo della notizia data dal MIT, nelle news, della pubblicazione nel marzo del 2016 su Science dell articolo di Thomas Monz, Daniel Nigg, Esteban A. Martinez, Matthias F. Brandl, Philipp Schindler, Richard Rines, Shannon X. Wang, Isaac L. Chuang, Rainer Blatt dal titolo Realization of a scalable Shor algorithm

Isomorfismo tra grafi GI è il problema di determinare se due grafi G=(V,E) e G =(V,E ) sono isomorfi, cioè se esiste una funzione biettiva f: V -> V tale che se {u,v} è un arco di G, allora {f(u),f(v)} è un arco di G. Informalmente il problema può porsi come il problema di stabilire se due grafi disegnati diversamente sono lo stesso grafo. Esempio (preso da Wikipedia): I due grafi sono isomorfi, basta associare vertici dell uno a quelli dell altro con lo stesso colore.

Isomorfismo tra grafi: un problema in NP GI = {(G,G ) G e G sono grafi non diretti e isomorfi tra loro} è in NP Infatti non è difficile immaginare un verificatore A che prende in input due grafi G=(V,E) e G =(V,E ) e un potenziale isomorfimo. L isomorfismo può essere rappresentato da una sequenza di n coppie in VxV, dove n è il numero dei vertici dei due grafi. Si verifica se le coppie sono tutte distinte e senza ripetizioni, cioè se la funzione così rappresentata è una biezione. Si verifica se per ogni arco {u,v} in G c è l arco {u,v } in G dove (u,u ) e (v,v ) sono nella sequenza di coppie fornita in input. Se è così dopo la verifica che in G non ci siano archi non controllati il verificatore può dare risposta positiva. Questo lavoro è fatto in tempo polinomiale.

Isomorfismo tra grafi: algoritmi L algoritmo migliore, risultato recente, dicembre 2015 poi revisionato in gennaio 2017, e non ancora pubblicato di Làszlò Babai (premio Knuth 2015) è di complessità quasi polinomiale, cioè in 2 O((lg n) c), per una costante c>0. L algoritmo migliore precedente, sempre di Babai, con Luks, è stato presentato al FOCS (IEEE Symposium on Foundations of Computer Science) nel 1983 e ha complessità in 2O( n lg n) Per le applicazioni c è un euristica che lavora molto bene i cui autori sono Brendan McKay e Adolfo Piperno, che la descrivono in un articolo apparso sul Journal of Symbolic Computation, nel 2014. Altre informazioni: http://pallini.di.uniroma1.it

Isomorfismo tra grafi è NP-completo? Non si sa. Quindi GI è un problema non noto essere in P e nemmeno NP-completo. Se fosse un problema non in P e non NP-completo sarebbe un esempio concreto e naturale di un problema intermedio la cui esistenza è stata dimostrata da Ladner (pubblicato nel Journal of the ACM (JACM) nel 1975): se P NP allora esiste un problema in NP che non è in P né in NP-completo. Questi problemi sono chiamati NP-intermedi. C è una lista di problemi considerati buoni candidati a entrare nella classe degli NP-intermedi; tra questi problemi c è stato PRIMES, fino al 2002, ora comprende per esempio sia GI che FACTOR. Ora ci si aspetta che GI esca dalla lista, per essere collocato in P. NP NP-completi P NP-intermedi