problemi facili, difficili, impossibili…… ovvero

47
1 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

Upload: artemas-kristy

Post on 03-Jan-2016

72 views

Category:

Documents


2 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Problemi facili, difficili, impossibili…… ovvero

1

 

  

Problemi facili, difficili, impossibili……

ovveroChe cosa si può fare (o non si può

fare) con un calcolatore

Simona Ronchi Della RoccaUniversità di Torino

Dipartimento di informatica

INRIM, 25 settembre 2014

Page 2: Problemi facili, difficili, impossibili…… ovvero

2

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

Page 3: Problemi facili, difficili, impossibili…… ovvero

3

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 deterministicheProgramma: Algoritmo scritto in un formalismo

leggibile dal calcolatore (linguaggio di programmazione)

Page 4: Problemi facili, difficili, impossibili…… ovvero

4

Esempi di algoritmi

ricetta di cucina istruzioni per l’uso della lavatrice regole per moltiplicare tra loro due

numeri ………..

Page 5: Problemi facili, difficili, impossibili…… ovvero

5

Problema algoritmico

Un problema algoritmico è definito da:

Insieme degli input (dati di ingresso) ammissibili L’insieme degli output (risultati)

desiderati in funzione dell’input

Page 6: Problemi facili, difficili, impossibili…… ovvero

6

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)

Page 7: Problemi facili, difficili, impossibili…… ovvero

7

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

Page 8: Problemi facili, difficili, impossibili…… ovvero

8

Esempi

Problema del Fattoriale

Input: un numero naturale n

Output: n! = 1 2 … n

Page 9: Problemi facili, difficili, impossibili…… ovvero

9

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

Page 10: Problemi facili, difficili, impossibili…… ovvero

10

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.

Page 11: Problemi facili, difficili, impossibili…… ovvero

11

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

Page 12: Problemi facili, difficili, impossibili…… ovvero

12

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.

Page 13: Problemi facili, difficili, impossibili…… ovvero

13

Problemi risolubili e non risolubili

Il problema della primalità è risolubile dal seguente algoritmo:

1. Se n=1, rispondi NO e FINE. Altrimenti va al punto 2.

2. Se n=2, rispondi SI e FINE. Altrimenti va al punto 3.

3. Poni p=2. 4. Se p divide n, allora rispondi NO e FINE.

Altrimenti va al punto 5.5. Incrementa p di 1. Se p=n, rispondi SI e FINE,

altrimenti va al punto 4.

Page 14: Problemi facili, difficili, impossibili…… ovvero

14

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)

Page 15: Problemi facili, difficili, impossibili…… ovvero

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…)

15

Page 16: Problemi facili, difficili, impossibili…… ovvero

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.16

SCHEMA DELLA DIMOSTRAZIONE

Page 17: Problemi facili, difficili, impossibili…… ovvero

17

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

Page 18: Problemi facili, difficili, impossibili…… ovvero

18

Attenzione!!!

La definizione non risolubilità è ASSOLUTANon dipende dalla potenza del

computer usato o dalle risorse a disposizione.

Un problema non risolubile rimarrà tale sempre!

Page 19: Problemi facili, difficili, impossibili…… ovvero

19

Prima suddivisione

problemi:

risolubili

non risolubili

Page 20: Problemi facili, difficili, impossibili…… ovvero

20

Complessità di un algoritmo

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

Page 21: Problemi facili, difficili, impossibili…… ovvero

21

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.

Page 22: Problemi facili, difficili, impossibili…… ovvero

22

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?

Page 23: Problemi facili, difficili, impossibili…… ovvero

23

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.

Page 24: Problemi facili, difficili, impossibili…… ovvero

24

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).

Page 25: Problemi facili, difficili, impossibili…… ovvero

25

Quanto si è risparmiato?

n n2 n log n

2 4 2

3 9 6

10 100 40

100 10000 1000

Page 26: Problemi facili, difficili, impossibili…… ovvero

26

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 ))

Page 27: Problemi facili, difficili, impossibili…… ovvero

27

Complessità polinomiale e esponenziale

n n2 2n

2 4 4

3 9 8

10 100 1024

100 10000 *

* maggiore del numero di microsecondi trascorsi dal BigBang!

Page 28: Problemi facili, difficili, impossibili…… ovvero

28

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!

Page 29: Problemi facili, difficili, impossibili…… ovvero

29

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)

Page 30: Problemi facili, difficili, impossibili…… ovvero

30

Suddivisione definitiva?

problemi:

intrattabili

non risolubili

trattabili

Page 31: Problemi facili, difficili, impossibili…… ovvero

31

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.

Page 32: Problemi facili, difficili, impossibili…… ovvero

32

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

Page 33: Problemi facili, difficili, impossibili…… ovvero

33

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)

Page 34: Problemi facili, difficili, impossibili…… ovvero

34

Chi sono?

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

Page 35: Problemi facili, difficili, impossibili…… ovvero

35

P=NP?

Problema aperto

P=NP I problemi che abbiamo elencato sono trattabili, ma non abbiamo ancora trovato gli algoritmi migliori per risolverli.

PNP I problemi che abbiamo elencato sono davvero intrattabili: non è il caso di cercare ulteriormente.

Page 36: Problemi facili, difficili, impossibili…… ovvero

36

Suddivisione definitiva?

problemi:

intrattabili

non risolubili

trattabili

PNP

P=NP

Page 37: Problemi facili, difficili, impossibili…… ovvero

37

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.

Page 38: Problemi facili, difficili, impossibili…… ovvero

38

Il problema della sicurezza delle comunicazioni

Problema: 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

Page 39: Problemi facili, difficili, impossibili…… ovvero

39

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)

Page 40: Problemi facili, difficili, impossibili…… ovvero

40

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!

Page 41: Problemi facili, difficili, impossibili…… ovvero

41

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

Page 42: Problemi facili, difficili, impossibili…… ovvero

42

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

Page 43: Problemi facili, difficili, impossibili…… ovvero

43

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!)

Page 44: Problemi facili, difficili, impossibili…… ovvero

44

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.

Page 45: Problemi facili, difficili, impossibili…… ovvero

45

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 PQ ha circa 400 cifre. La chiave pubblica di Alice è PQ . 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).

Page 46: Problemi facili, difficili, impossibili…… ovvero

46

Il sistema è sicuro?

In assoluto no. Potrebbe sempre accadere che un intruso possa:1. Indovinare P e Q a partire dal prodotto (Gastone

Paperone)2. 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.

Page 47: Problemi facili, difficili, impossibili…… ovvero

47

Morale…..

1. Il calcolatore non è onnipotente: ci sono problemi che non si sanno risolvere.

2. 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.

3. Non esistono sistemi assolutamente sicuri, ma solo sistemi sicuri con una data probabilità.

4. Se veniamo a sapere che qualcuno ha dimostrato che P=NP ritiriamo subito tutti i nostri soldi dal conto corrente….