La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Problemi facili, problemi difficili. Un rappresentante di commercio… …deve recarsi a Cagliari, Carbonia, Muravera, Oristano e Sanluri (non importa in.

Presentazioni simili


Presentazione sul tema: "Problemi facili, problemi difficili. Un rappresentante di commercio… …deve recarsi a Cagliari, Carbonia, Muravera, Oristano e Sanluri (non importa in."— Transcript della presentazione:

1 Problemi facili, problemi difficili

2 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? Quale percorso gli conviene fare?

3 Cosè un algoritmo? E una procedura: formulata mediante un numero finito di istruzioni esatte, ciascuna delle quali contiene un numero finito di simboli; se eseguita correttamente, produce il risultato desiderato in un numero finito di passi; deve poter essere eseguita (in linea di principio) con carta e matita da un essere umano non aiutato da una macchina; Non deve richiedere luso di creatività o ingegno.

4 Esempi Addizioni e moltiplicazioni in colonna; Estrazione della radice quadrata; Conversione di numeri decimali periodici in frazione; Tavole di verità.

5 Quandè che un algoritmo è efficiente? Prima proposta: Quando produce la soluzione desiderata in un tempo rapido DIFETTI: la velocità di calcolo dipende dal computer su cui lalgoritmo è implementato e dal linguaggio di programmazione usato Si vuole una definizione di efficienza che non dipende da questi fattori accidentali

6 Macchina di Turing E un modello matematico astratto dellattività di esecuzione di algoritmi. Si compone di: un alfabeto finito un nastro potenzialmente infinito in entrambe le direzioni, diviso in celle (ognuna può contenere al più un simbolo) un lettore che può osservare solo una cella per volta Una memoria capace di un numero finito di stati, detti stati interni UNA MACCHINA DI TURING SI IDENTIFICA ASTRATTAMENTE CON LA SUA TAVOLA DELLE ISTRUZIONI

7 Macchina di Turing per loperazione di addizione 100S1 110S2 201S3 211S2 300D4 311S3 400H4 410H4

8 Se eseguo un algoritmo A su una (qualsiasi) macchina di Turing: La lunghezza dellinput è il numero di 1 presenti sul nastro allinizio del calcolo La lunghezza del calcolo è il numero di passi necessari alla macchina per terminare lesecuzione dellalgoritmo QUESTE NOZIONI NON DIPENDONO DALLA MACCHINA DI TURING SU CUI LALGORITMO E IMPLEMENTATO

9 Algoritmi efficienti Un algoritmo A è polinomiale (P) quando la lunghezza del calcolo è data da una funzione polinomiale della lunghezza dellinput N = lunghezza del calcolo n = lunghezza dellinput A è polinomiale sse esistono k, C t.c. per ogni n N < Cn k

10 Algoritmi inefficienti Un algoritmo A è esponenziale quando la lunghezza del calcolo è data da una funzione esponenziale della lunghezza dellinput Esempio: N = 2 n

11 Perché polinomiale = efficiente, esponenziale = inefficiente? Aumento della lunghezza del calcolo in funzione della lunghezza dellinput: N = n N = 2 n

12 Torniamo al nostro rappresentante… Se deve visitare n località, i percorsi possibili sono n! La funzione fattoriale cresce più rapidamente di 2 n LALGORITMO DELLA RICERCA ESAUSTIVA E TIPICAMENTE INEFFICIENTE!!!

13 Inzà, ta faeusu? Fortunatamente, per casi specifici del problema, si danno algoritmi efficienti: Programmazione dinamica (Held e Karp 1962): n = 13 Branch and bound (Crowder e Padberg 1979): n = 318

14 Problemi decisionali Variante decisionale del problema del commesso viaggiatore: Dato un insieme di località e un numero B, esiste un percorso che tocchi tutti i luoghi e abbia una lunghezza al massimo pari a B?

15 Macchina di Turing non deterministica Esistono istruzioni ambigue: ad esempio Quando si trova di fronte a più istruzioni contrastanti, la macchina sceglie quella che massimizza la rapidità del calcolo 401S5 400D4

16 Algoritmi NP Un algoritmo A è NP quando la lunghezza del calcolo su una macchina di Turing non deterministica è data da una funzione polinomiale della lunghezza dellinput

17 Esiste un algoritmo NP per il nostro rappresentante di commercio? Sì: 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, il risultato corretto sarà calcolato in tempo polinomiale La probabilità che ciò si verifichi nella realtà è 1/n!

18 Problemi NP-completi Un problema è NP-completo se una sua eventuale soluzione implica una soluzione di ogni altro problema NP TEOREMA DI COOK: Determinare se una formula logica è una tautologia mediante le tavole di verità è un problema NP-completo (Anche il commesso viaggiatore, e molti altri problemi, lo sono)

19 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 di dollari in contanti (Clay Institute)

20 Programmazione lineare Algoritmi inefficienti in teoria possono funzionare bene con dati semplici (ossia nella maggior parte dei problemi pratici). ESEMPIO: programmazione lineare, che funziona nei problemi di ottimizzazione

21 Esempio dellindustria tessile (1) Unindustria produce due tessuti, A e B, usando lana rossa, verde e gialla In magazzino ci sono: 1400 kg lana rossa 1800 kg lana verde 1800 kg lana gialla

22 Esempio dellindustria tessile (2) Il profitto dellazienda è 12 Euro per ogni pezza di tessuto A e 8 Euro per ogni pezza di tessuto B La lana occorrente per ciascuna pezza è: Tess. A Tess. B rossa4 kg verde6 kg3 kg gialla2 kg6 kg

23 Esempio dellindustria tessile (3) Come dobbiamo usare la lana in modo da massimizzare il profitto? X = numero di unità di tessuto A Y = numero di unità di tessuto B P = 12X + 8Y 4X + 4Y <= X + 3Y <= X + 6Y <= <= X; 0 <= Y

24 Altri metodi usati Metodo del simplesso (Dantzig 1947) esponenziale ma in pratica funziona (calcolo teorico dellefficienza fatto sul caso più sfavorevole) Metodo ellissoidale (Shor 1970) polinomiale ma non funziona bene in pratica Metodo di Karmarkar (1984) polinomiale e funziona bene in pratica (non si va da un vertice allaltro di un politopo, ma ci si muove al suo interno)


Scaricare ppt "Problemi facili, problemi difficili. Un rappresentante di commercio… …deve recarsi a Cagliari, Carbonia, Muravera, Oristano e Sanluri (non importa in."

Presentazioni simili


Annunci Google