algoritmi e complessitÀ. pastasciutta allolio 1. mettere 2 litri di acqua in una pentola 2. mettere...
TRANSCRIPT
![Page 1: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/1.jpg)
ALGORITMI E COMPLESSITÀ
![Page 2: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/2.jpg)
Pastasciutta all’olio
1. Mettere 2 litri di acqua in una pentola2. Mettere la pentola sopra al gas3. Portare l’acqua in ebollizione4. Buttare in acqua 20 g di sale5. Aggiungere 80 g di pasta6. Spegnere il fuoco dopo il tempo indicato sulla
confezione della pasta7. Scolare l’acqua in un apposito scolapasta8. Servire in un piatto aggiungendo 10 ml di olio9. Cospargere il tutto con 10 g di parmigiano
![Page 3: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/3.jpg)
La divisione con resto
![Page 4: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/4.jpg)
Cos’è un algoritmo?
È una procedura automatica, cioè eseguibile da un essere non pensante (ad esempio un computer), per risolvere in un numero finito di passi un certo problema
Un algoritmo è un insieme ordinato di passi eseguibili e non ambigui
![Page 5: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/5.jpg)
Algoritmo
![Page 6: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/6.jpg)
Rappresentazione grafica
Annaffiare tutte piante della casa
Annaffio tutte le piante che hanno bisogno di acqua che riesco
L’acqua è sufficiente?
No
Riempio l’annaffiatoio d’acqua
Si Lavoro finito
![Page 7: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/7.jpg)
Pastasciutta all’olio 2
1. Mettere un po’ d’acqua in una padella2. Mettere la padella sopra al gas3. Portare l’acqua in ebollizione4. Buttare in acqua sale q.b.5. Aggiungere una porzione di pasta6. Spegnere il fuoco quando la pasta è cotta7. Scolare l’acqua in un apposito scolapasta8. Servire in un piatto aggiungendo un filo d’olio9. Cospargere il tutto con una spolverata di
parmigiano
![Page 8: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/8.jpg)
Finitezza
Un algoritmo per essere tale, deve produrre un output in un numero finito di passi
Questo significa che finirà in un tempo finito qualora venga eseguito da un computer
La finitezza è una condizione necessaria per un algoritmo
![Page 9: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/9.jpg)
Questo è un algoritmo?
![Page 10: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/10.jpg)
Correttezza
Ovvero per ogni input valido, l'output dell'algoritmo è una soluzione per il problema
La correttezza non è una condizione necessaria per un algoritmo (un algoritmo non corretto è comunque un algoritmo)
![Page 11: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/11.jpg)
Efficienza
Si indica col termine efficienza la velocità di un algoritmo nel risolvere un problema
L’efficienza dipende da molte variabili esterne: tipo di calcalatore, input differenti, ecc.
Come trovare una misura univoca dell’efficienza dell’algoritmo?
![Page 12: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/12.jpg)
Complessità computazionale
La misura univoca dell’efficienza di un algoritmo si basa sul numero di istruzioni da eseguire nel caso peggiore possibile
Il numero di istruzioni dipende dalle dimensioni dell’input
![Page 13: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/13.jpg)
Classi di complessità
I problemi vengono classificati in differenti classi di complessità
La complessità è sempre funzione della dimensione dell’input (dice come aumentano le istruzioni al crescere delle dimensioni dell’input)
![Page 14: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/14.jpg)
Tempo/Memoria
Per diminuire la complessità di un algoritmo è utile memorizzare le soluzioni di sottoproblemi in modo da non doverle ricalcolare più volte
Si rischiano però problemi insuperabili di spazio per la memoria
![Page 15: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/15.jpg)
Programma ≠ Algoritmo
Un algoritmo non è un programma!
Un programma è l’implementazione di uno o più algoritmi
![Page 16: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/16.jpg)
Strutture dati
Organizzazione dell’input: vengono usate in ogni programma per raggruppare in modo logico i dati e accedervi in modo veloce.
Sono utilizzate dall'algoritmo e ne influenzano l'efficienza
![Page 17: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/17.jpg)
Calcolabilità
Per ogni problema esiste un algoritmo che lo risolve?
Può essere utile sapere se esiste o no un algoritmo per un determinato problema
È stato dimostrato che per certi problemi non esiste un algoritmo risolutivo
![Page 18: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/18.jpg)
Ruolo nel pensiero razionale
Matematica…. Latino… perché non l’informatica?
È universalmente riconosciuto il valore di alcune discipline per esercitare e stimolare il ragionamento: l’informatica si presta molto bene
Computational thinking!
![Page 19: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/19.jpg)
Relazione con altre Scienze
Al giorno d’oggi l’informatica assume un ruolo centrale tra le scienze
Algoritmi di ogni genere sono usati da fisici, matematici, biologi, ecc.
![Page 20: ALGORITMI E COMPLESSITÀ. Pastasciutta allolio 1. Mettere 2 litri di acqua in una pentola 2. Mettere la pentola sopra al gas 3. Portare lacqua in ebollizione](https://reader034.vdocuments.pub/reader034/viewer/2022052321/5542eb64497959361e8cd79a/html5/thumbnails/20.jpg)
Importanza in informatica
Gli algoritmi sono come il prezzemolo
Gli algoritmi sono tra i fondamenti dell’informatica
Hanno dato vita a molti studi teorici (teorie della complessità e della calcolabilità)
Sono presenti in ogni settore, dalla teoria all’ingegneria