Problemi facili, difficili, impossibili……

Slides:



Advertisements
Presentazioni simili
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Advertisements

I numeri naturali ….. Definizione e caratteristiche
Mat_Insieme Lavoro di Gruppo Prodotti Notevoli
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Il linguaggio della Matematica: Insiemi e operazioni
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
Informatica Generale Alessandra Di Pierro
Frontespizio Economia Monetaria Anno Accademico
La scelta del paniere preferito
I sistemi di riferimento
RSA Monica Bianchini Dipartimento di Ingegneria dellInformazione Università di Siena.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Ordini Parziali - Reticoli
CRITTOGRAFIA La crittografia, ovvero la scienza dei messaggi segreti sicuri, nasce come raccolta di tecniche e sistemi per nascondere messaggi tra regnanti,
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
L’elasticità della domanda rispetto al “proprio prezzo”
EIE 06/07 II / 1 Strumenti delle politiche agricole in economia aperta equilibrio di mercato in economia aperta politiche di un paese importatore politiche.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
Corso di Informatica per Giurisprudenza
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Cos’è un problema?.
Strutture di controllo in C -- Flow Chart --
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Contatore: esempio di circuito sequenziale
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Le operazioni con i numeri
LA CRITTOGRAFIA QUANTISTICA
1 Informatica Senza Computer? Chiariamoci un po le idee!!! Carlo Gaibisso Informatica senza Computer?
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Radix-Sort(A,d) // A[i] = cd...c2c1
1)Completa la seguente successione: C4, B7, E10, D13, G16,. A. G19 B
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Problemi facili, problemi difficili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
14 marzo 2002 Avvisi:.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
RITUALITÀ LA COMUNICAZIONE È DETERMINATA DA REGOLE SOCIALMENTE STABILITE PER OGNI PARTICOLARE SITUAZIONE. IN CERTE.
Complessità di un algoritmo
Vertici, spigoli e facce di cubi a più dimensioni
L’infinito l’infinito in matematica Il numerabile  o Il continuo C.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
IO E LA MATEMATICA PROCEDURALE
Numeri Interi senza segno
Minimo comune multiplo
Acceleratori e Reattori Nucleari
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Il numero più grande Accademia dei Lincei
TRASFORMATA DI FOURIER
La scomposizione col metodo di Ruffini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Problemi, algoritmi e programmazione
Complessità Computazionale
Transcript della presentazione:

Problemi facili, difficili, impossibili……      Problemi facili, difficili, impossibili…… ovvero Che cosa si può fare (o non si può fare) con un calcolatore Simona Ronchi Della Rocca Università di Torino Dipartimento di informatica INRIM, 25 settembre 2014

Sommario Problemi risolubili e non risolubili (a volte è impossibile…) Problemi trattabili e intrattabili (a volte è troppo costoso…) P=NP? (a volte non sappiamo dire…) Soluzioni parziali Avalle 2004 Informatica 2005/06

Che cosa è un problema? Ci restringiamo qui alla classe dei problemi che si possono comunicare ad un computer, cioè alla classe dei problemi risolubili per mezzo di un algoritmo. Algoritmo: Sequenza di regole deterministiche Programma: Algoritmo scritto in un formalismo leggibile dal calcolatore (linguaggio di programmazione)

Esempi di algoritmi ricetta di cucina istruzioni per l’uso della lavatrice regole per moltiplicare tra loro due numeri ………..

Problema algoritmico Un problema algoritmico è definito da: Insieme degli input (dati di ingresso) ammissibili L’insieme degli output (risultati) desiderati in funzione dell’input

Problemi algoritmici: esempi Problema della Primalità: Input:un numero intero positivo n Output: “si” se n è primo, “no” altrimenti (un numero è primo se è divisibile solo per 1 e per se’ stesso)

Esempi Problema dell’Ordinamento Input: una lista di parole in una lingua prefissata Output: una lista di parole, che contiene tutte le parole della lista in input, ma in ordine alfabetico

Esempi Problema del Fattoriale Input: un numero naturale n Output: n! = 1  2 …  n

Esempi Problema del Commesso Viaggiatore Input: una carta stradale, dove sono indicate le lunghezze dei collegamenti da città a città, due città A e B, e un numero n Output: “si” se esiste un itinerario da A a B che tocchi tutte le città della carta di lunghezza minore o uguale a n, “no” altrimenti

Esempi Problema della Piastrellatura Input: n tipi diversi di piastrelle (es. ) Output: “si” se è possibile, con quante piastrelle vogliamo di questi tipi, piastrellare ogni stanza associando le piastrelle in modo che i colori confinanti coincidano, “no” altrimenti.

Esempi Problema della Fermata Input: un programma P per il calcolatore, scritto in un qualunque linguaggio di programmazione, e un dato di input per P Output: “si” se l’esecuzione di P su quel dato di ferma, “no” altrimenti

Problemi risolubili e non risolubili Un problema è risolubile se esiste un algoritmo che, per ogni istanza dei dati di input, produce l’output voluto. Un problema è non risolubile se non esiste un algoritmo in grado di risolverlo.

Problemi risolubili e non risolubili Il problema della primalità è risolubile dal seguente algoritmo: Se n=1, rispondi NO e FINE. Altrimenti va al punto 2. Se n=2, rispondi SI e FINE. Altrimenti va al punto 3. Poni p=2. Se p divide n, allora rispondi NO e FINE. Altrimenti va al punto 5. Incrementa p di 1. Se p=n, rispondi SI e FINE, altrimenti va al punto 4.

Problemi risolubili e non risolubili Tra i problemi elencati, il problema della piastrellatura e quello della fermata non sono risolubili Per ognuno di questi si dimostra che non può esistere un algoritmo che lo risolva (l’esistenza della soluzione implica una contraddizione logica)

Dimostrazione della non calcolabilità del problema della fermata Programma = lista finita di simboli su un alfabeto dato Scegliamo un linguaggio di programmazione, e consideriamo tutti i programmi con input e output numerici (numeri naturali) I programmi sono infiniti, ma numerabili, cioè esiste una corrispondenza biunivoca tra questi e i numeri naturali (0,1,2,3…)

SCHEMA DELLA DIMOSTRAZIONE Lista di tutti i programmi: P0 P1 P2P3…… Indichiamo con Pi(j) il risultato (se esiste) dell’esecuzione del programma i sul dato j Dimostriamo che non è calcolabile il problema cosí definito: ALT(i) = 1 se Pi(i) si ferma, 0 altrimenti La non-calcolabilità di ALT implica la non calcolabilità del problema della fermata.

Assumiamo per assurdo che ALT sia calcolabile, allora esiste il programma SCAMBIA con questo comportamento: SCAMBIA(i) = 1 se ALT(i) = 0, NON SI FERMA altrimenti SCAMBIA = Pe, per un dato e QUALE E’ IL RISULTATO DI Pe(e)? Pe(e) =1 se ALT(e) = 0 (cioè se Pe(e) non si ferma), Pe(e) NON SI FERMA altrimenti (cioè se Pe(e) si ferma) ASSURDO!!!! Quindi ALT non è calcolabile. CVD

Attenzione!!! La definizione non risolubilità è ASSOLUTA Non dipende dalla potenza del computer usato o dalle risorse a disposizione. Un problema non risolubile rimarrà tale sempre!

Prima suddivisione risolubili problemi: non risolubili

Complessità di un algoritmo La complessità di un algoritmo misura quanto costa, in termini di risorse di tempo (e spazio), l’esecuzione dell’algoritmo.

Complessità di un problema Un problema può avere diversi algoritmi che lo risolvono, e con differenti complessità. Siamo interessati alla complessità minima, cioè alla minima quantità di risorse di tempo (e spazio) necessaria per l’esecuzione di un algoritmo che risolva il problema dato.

Come misurare? La quantità di risorse dipende dai dati di input (per calcolare il fattoriale di n dobbiamo fare tante moltiplicazioni quanto è il valore di n) Un problema è definito per ogni possibile valore di input Come usciamo dal paradosso?

Misurazioni asintotiche La complessità di un algoritmo (programma) è una funzione che misura come varia la quantità di tempo e/o spazio necessari per eseguirlo al variare della dimensione dei dati in ingresso. La complessità di un problema è la minima complessità di un algoritmo che lo risolva. Esempio: L’algoritmo che risolve il problema del fattoriale fa n operazioni di moltiplicazione, se l’input è n, quindi la sua complessità in tempo è lineare nella dimensione dell’input.

Esempio: il problema dell’ordinamento I primi algoritmi disegnati avevano complessità in tempo dell’ordine di n2 Si sono trovati poi algoritmi che risolvevano il problema in tempo dell’ordine di n  log(n). Si è poi dimostrato che la complessità minima per il problema dell’ordinamento è proprio n  log(n).

Quanto si è risparmiato? n  log n 2 4 3 9 6 10 100 40 10000 1000

Complessità polinomiale e esponenziale Sia n la dimensione dei dati. Un algoritmo ha: Complessità polinomiale se la sua funzione di complessità è maggiorata da c  nk, per qualche c e k costanti (si dice che la complessità appartiene a O(nk)) Complessità esponenziale se questa è maggiorata da c  kn, per qualche c e k costanti (si dice che la complessità appartiene a O(kn ))

Complessità polinomiale e esponenziale 2 4 3 9 8 10 100 1024 10000 * * maggiore del numero di microsecondi trascorsi dal BigBang!

Brutte notizie……. Se un algoritmo ha complessità dell’ordine di 2100, poiché tale numero è maggiore di quello dei miscosecondi trascorsi dal BigBang, non possiamo materialmente eseguirlo: dovremo attendere un tempo praticamente infinito prima di poter ottenere il risultato. Questo non dipende dalla velocità di calcolo del calcolatore su cui l’algoritmo viene eseguito!

Problemi trattabili e intrattabili Un problema è detto trattabile se la sua complessità è polinomiale (se si possono scrivere algoritmi di complessità polinomiale che lo risolvano) Un problema è detto intrattabile se la sua complessità è esponenziale (se ogni algoritmo che lo risolve è necessariamente esponenziale)

Suddivisione definitiva? intrattabili problemi: non risolubili trattabili

Esistono problemi intrattabili? Il problema del fattoriale (esponenziale in spazio) Il gioco della torre di hanoi (esponenziale in tempo) (usato con 64 dischi per rappresentare il tempo infinito dai monaci buddisti tibetani) Ci occuperemo d’ora in poi solo della complessità in tempo.

I problemi NP-completi NP è una classe di problemi tale che: Ogni loro soluzione nota consiste di un algoritmo di complessità esponenziale Non è mai stato dimostrato finora che non possano esistere delle soluzioni polinomiali

Perchè “NP-completi”? P è la classe dei problemi risolubili in tempo polinomiale (trattabili) NP è la classe di problemi risolubili in tempo polinomiale da una macchina con oracolo (oracolo è un oggetto virtuale in grado di suggerire ad ogni passo la scelta corretta) I problemi NP-completi sono nella classe NP e inoltre hanno soluzioni interdipendenti (cioè una soluzione di uno di essi si trasforma facilmente nella soluzione di tutti gli altri)

Chi sono? Il problema del commesso viaggiatore Il problema dell’orario scolastico Il problema dello zaino Il problema della soddisfacibilità logica ………………..

P=NP? Problema aperto P=NP I problemi che abbiamo elencato sono trattabili, ma non abbiamo ancora trovato gli algoritmi migliori per risolverli. PNP I problemi che abbiamo elencato sono davvero intrattabili: non è il caso di cercare ulteriormente.

Suddivisione definitiva? intrattabili problemi: non risolubili PNP trattabili P=NP

Ma come facciamo? Obiezione: I problemi NP-completi si incontrano quotidianamente, e ci sono soluzioni anche per dimensioni molto grandi dei dati. Risposta: Gli algoritmi usati non risolvono il problema, ma danno soluzioni parziali di casi particolari: ci sono scelte (politiche?) del programmatore dietro ogni soluzione proposta.

Il problema della sicurezza delle comunicazioni Alice e Bob vogliono scambiarsi messaggi in modo che questi siano “non comprensibili” da terzi. Soluzione: Usare due funzioni di codifica e decodifica dei messaggi, COD e DEC, tali che, se M è un messaggio: COD(M)=M* (messaggio criptato) DEC(COD(M))=M (messaggio originale) COD e DEC sono basate sulla nozione di CHIAVE

Esempi di codifica e decodifica Chiave: k (numero compreso tra 1 e 21) COD sostituisce ad ogni lettera del messaggio la lettera che occorre k posti in avanti nell’alfabeto (considerato come circolare). DEC fa l’operazione contraria. (Codice di Cesare) Il semplice codice di Cesare può essere complicato usando scelte diverse di k per lo stesso messaggio, basate su macchinari rotanti che dopo ogni scelta guidano alla scelta successiva (codice di Jefferson, macchina Enigma)

Come scambiarsi le chiavi? Problema: Prima di iniziare la comunicazione, Alice e Bob devono essere entrambi a conoscenza delle chiavi su cui sono basate COD e DEC. Se sono distanti, devono comunicarsele con un messaggio, ma questo deve essere a sua volta codificato e quindi……. regresso infinito!

Il sistema a chiave pubblica (1976, Diffie e Hellman) Ogni utente del sistema di comunicazione ha una chiave pubblica (nota a tutti) che viene usata per codificare i messaggi a lui indirizzati, e una chiave privata che solo lui conosce, che usa per la decodifica dei messaggi. Se Bob vuole mandare un messaggio M ad Alice, prende la chiave pubblica di Alice, CODA, e con questo codifica il messaggio. Alice, ricevuto il messaggio, userà la sua chiave privata DECA , per ottenere: DECA (CODA (M))=M

Non tutto è risolto! CODA e DECA devono essere l’inversa l’una dell’altra, cioè essere tali che: DECA (CODA (M))=M ma CODA è noto a tutti. In generale, data una funzione che ha un’inversa, si può calcolare l’inversa stessa. Ad esempio, se: CODA (M))=M2 È facilmente indovinabile che: DECA (M))= M

Il vero problema Problema 1: Trovare una funzione COD che sia facilmente calcolabile e che abbia un’inversa (DEC) ma sia impossibile calcolare DEC a partire da COD. Questo problema non è risolubile! Problema 2: Trovare una funzione COD che sia facilmente calcolabile e tale che calcolare la sua inversa sia un problema molto difficile. In questo modo una spia potrebbe molto difficilmente calcolare DEC e decodificare il messaggio (ma in linea di principio potrebbe!)

Una soluzione (approssimata) Formalizziamo meglio il problema Problema 3: Trovare una funzione COD tale che calcolare COD sia polinomiale (trattabile) mentre calcolare la sua inversa sia esponenziale (intrattabile). Non si conoscono soluzioni precise di questo problema, ma si può approssimare nel modo seguente: COD funzione calcolare la quale sia un problema trattabile DEC funzione calcolare la quale sia un problema che, anche se non dimostrato essere intrattabile, possiede per il momento solo soluzioni esponenziali.

Il sistema RSA Ronald Rivest, Adi Shamir e Leonard Adleman Alice sceglie 2 numeri primi P e Q molto grandi (di circa 200 cifre) e li moltiplica tra di loro. Il numero risultante PQ ha circa 400 cifre. La chiave pubblica di Alice è PQ . Per decodificare il messaggio, la funzione DEC deve conoscere i due fattori P e Q. Problema della Primalità: trattabile (quindi costruire la chiave è facile) Problema della Scomposizione: non si sa, ma si conoscono solo soluzioni esponenziali (quindi risalire alla decodifica è difficile).

Il sistema è sicuro? In assoluto no. Potrebbe sempre accadere che un intruso possa: Indovinare P e Q a partire dal prodotto (Gastone Paperone) Aver trovato un algoritmo per calcolare P e Q a partire dal loro prodotto che sia polinomiale, e quindi veloce (Archimede Pitagorico) Il sistema è probabilmente sicuro, nel senso che i casi 1 e 2 hanno bassa probabilità di accadere.

Morale….. Il calcolatore non è onnipotente: ci sono problemi che non si sanno risolvere. Poiché la maggior parte dei problemi che si incontrano nella vita quotididiana sono NP-completi, le soluzioni che ci vengono proposte sono molto spesso parziali e con vincoli aggiuntivi. Non esistono sistemi assolutamente sicuri, ma solo sistemi sicuri con una data probabilità. Se veniamo a sapere che qualcuno ha dimostrato che P=NP ritiriamo subito tutti i nostri soldi dal conto corrente….