27
Complessit computazionale Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Complessit computazionale 1 / 20

Francesco Paoli - people.unica.itpeople.unica.it/francescopaoli/files/2012/04/Complessit... · Quale percorso gli conviene fare? Francesco Paoli (Istituzioni di logica, 2016-17) Complessità

  • Upload
    lytu

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Complessità computazionale

Francesco Paoli

Istituzioni di logica, 2016-17

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 1 / 20

Un rappresentante di commercio

. . . deve recarsi a Cagliari, Carbonia, Muravera, Oristano e Sanluri(non importa in quale ordine).

Più chilometri percorre, più aumentano i costi (in tempo e in denaro).

Quale percorso gli conviene fare?

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 2 / 20

Un rappresentante di commercio

. . . deve recarsi a Cagliari, Carbonia, Muravera, Oristano e Sanluri(non importa in quale ordine).

Più chilometri percorre, più aumentano i costi (in tempo e in denaro).

Quale percorso gli conviene fare?

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 2 / 20

Un rappresentante di commercio

. . . deve recarsi a Cagliari, Carbonia, Muravera, Oristano e Sanluri(non importa in quale ordine).

Più chilometri percorre, più aumentano i costi (in tempo e in denaro).

Quale percorso gli conviene fare?

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 2 / 20

Quando un algoritmo è effi ciente?

Prima proposta: Quando produce la soluzione desiderata in untempo “rapido”.

DIFETTI: la velocità di calcolo dipende dal computer su cuil’algoritmo è implementato e dal linguaggio di programmazione usato.

Si vuole una definizione di effi cienza che non dipende da questi fattoriaccidentali.

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 3 / 20

Quando un algoritmo è effi ciente?

Prima proposta: Quando produce la soluzione desiderata in untempo “rapido”.DIFETTI: la velocità di calcolo dipende dal computer su cuil’algoritmo è implementato e dal linguaggio di programmazione usato.

Si vuole una definizione di effi cienza che non dipende da questi fattoriaccidentali.

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 3 / 20

Quando un algoritmo è effi ciente?

Prima proposta: Quando produce la soluzione desiderata in untempo “rapido”.DIFETTI: la velocità di calcolo dipende dal computer su cuil’algoritmo è implementato e dal linguaggio di programmazione usato.

Si vuole una definizione di effi cienza che non dipende da questi fattoriaccidentali.

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 3 / 20

Se eseguo un algoritmo su una macchina di Turing:

La lunghezza dell’input è il numero di “1”presenti sul nastroall’inizio del calcolo.

La lunghezza del calcolo è il numero di passi necessari alla macchinaper terminare l’esecuzione dell’algoritmo.

QUESTE NOZIONI NON DIPENDONO DALLA MACCHINA DITURING SU CUI L’ALGORITMO E’IMPLEMENTATO

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 4 / 20

Algoritmi effi cienti

DefinitionUn algoritmo A è polinomiale (P) quando la lunghezza del calcolo èmaggiorata da una funzione polinomiale della lunghezza dell’input.

Se N è la lunghezza del calcolo, n è lunghezza dell’input, A è polinomialesse esistono k,C tali che per ogni n

N < Cnk

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 5 / 20

Algoritmi ineffi cienti

DefinitionUn algoritmo A è esponenziale (P) quando la lunghezza del calcolo èmaggiorata solo da funzioni esponenziali della lunghezza dell’input.

Ad esempio, N = 2n

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 6 / 20

Perché polinomiale = effi ciente, esponenziale =ineffi ciente?

Aumento della lunghezza del calcolo in funzione della lunghezza dell’input:

1 2 3 5 10N = n2 1 4 9 25 100N = 2n 2 4 8 32 1024

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 7 / 20

Perché polinomiale = effi ciente, esponenziale =ineffi ciente? (2)

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 8 / 20

Torniamo al nostro rappresentante...

Se deve visitare n località, i percorsi possibili sono n!La funzione fattoriale cresce più rapidamente di 2n

L’ALGORITMO DELLA RICERCA ESAUSTIVA E’TIPICAMENTEINEFFICIENTE!!!

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 9 / 20

Problemi di decisione

Variante decisionale del problema del commesso viaggiatore:

“Dato un insieme di località e un numero B, esiste unpercorso che tocchi tutti i luoghi e abbia una lunghezza almassimo pari a B”?

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 10 / 20

Macchine di Turing non deterministiche

Presentano istruzioni che violano la clausola di determinatezza. Adesempio:

4 0 1 L 54 0 0 R 4

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 11 / 20

Algoritmi NP

DefinitionUn algoritmo A è NP quando la lunghezza del calcolo su una macchina diTuring non deterministica è data da una funzione polinomiale dellalunghezza dell’input.

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 12 / 20

Algoritmo NP per il rappresentante di commercio

1 Sceglie a caso il primo luogo da visitare, poi il secondo, poi il terzo. . . ;2 Calcola il percorso totale;3 Lo confronta col numero assegnato B.Supponendo che a ogni stadio si “indovini” la località successiva, ilrisultato corretto sarà calcolato in tempo polinomiale. La probabilitàche ciò si verifichi nella realtà è 1

n!

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 13 / 20

Problemi NP-completi

DefinitionUn problema è NP−completo se una sua eventuale soluzione polinomialeimplica una soluzione polinomiale di ogni altro problema NP.

Theorem(Cook). Determinare se una formula della logica proposizionale èsoddisfacibile mediante le tavole di verità è un problema NP-completo.

Anche il commesso viaggiatore, e molti altri problemi NP, lo sono.

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 14 / 20

P=NP?

E’convinzione generale che i problemi NP non siano P. . .

. . . ma nessuno è mai riuscito a dimostrarlo.

PROVATECI: se ci riuscite avrete gloria imperitura. . .

. . . e 1.000.000 di dollari in contanti (Clay Institute)

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 15 / 20

P=NP?

E’convinzione generale che i problemi NP non siano P. . .

. . . ma nessuno è mai riuscito a dimostrarlo.

PROVATECI: se ci riuscite avrete gloria imperitura. . .

. . . e 1.000.000 di dollari in contanti (Clay Institute)

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 15 / 20

P=NP?

E’convinzione generale che i problemi NP non siano P. . .

. . . ma nessuno è mai riuscito a dimostrarlo.

PROVATECI: se ci riuscite avrete gloria imperitura. . .

. . . e 1.000.000 di dollari in contanti (Clay Institute)

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 15 / 20

P=NP?

E’convinzione generale che i problemi NP non siano P. . .

. . . ma nessuno è mai riuscito a dimostrarlo.

PROVATECI: se ci riuscite avrete gloria imperitura. . .

. . . e 1.000.000 di dollari in contanti (Clay Institute)

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 15 / 20

Programmazione lineare

Algoritmi ineffi cienti in teoria possono funzionare bene con datisemplici (ossia nella maggior parte dei problemi pratici).

ESEMPIO: programmazione lineare, che funziona nei problemi diottimizzazione.

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 16 / 20

Esempio dell’industria tessile (1)

Un’industria produce due tessuti, A e B, usando lana rossa, verde e giallaIn magazzino ci sono:

1400 kg lana rossa

1800 kg lana verde

1800 kg lana gialla

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 17 / 20

Esempio dell’industria tessile (2)

Il profitto dell’azienda è 12 Euro per ogni pezza di tessuto A e 8 Euro perogni pezza di tessuto B.La lana occorrente per ciascuna pezza è:

Tessuto A Tessuto Blana rossa 4 kg 4 kglana verde 6 kg 3 kglana gialla 2 kg 6 kg

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 18 / 20

Esempio dell’industria tessile (3)

Come dobbiamo usare la lana in modo da massimizzare il profitto?X = numero di unità di tessuto AY = numero di unità di tessuto B

P = 12X + 8Y 4X + 4Y ≤ 1400

6X + 3Y ≤ 1800 2X + 6Y ≤ 1800

0 ≤ X 0 ≤ Y

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 19 / 20

Esempio dell’industria tessile (4)

Francesco Paoli (Istituzioni di logica, 2016-17) Complessità computazionale 20 / 20