![Page 1: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/1.jpg)
PROGRAMMAZIONE I
A.A. 2018/2019
![Page 2: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/2.jpg)
COMPUTATIONAL THINKING
Formalizzato da una psicologa Americana Jeanette Wing in un articolo sulla rivista ACM nel 2008 ühttps://www.ncbi.nlm.nih.gov/pmc/articles/PMC2696102/
Il pensiero computazionale è l'insieme dei processi mentali coinvolti nella formulazione di un problema e della sua soluzione in modo tale che un umano o una macchina possa effettivamente eseguire.Il pensiero computazionale è un processo iterativo basato su tre fasi:üFormulazione del problema (astrazione);üEspressione della soluzione (automazione);üEsecuzione della soluzione e valutazione della stessa
(analisi).
![Page 3: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/3.jpg)
Algoritmi e codingüRegole logiche da impiegare nella risoluzione di un problema
e la sequenza in cui devono essere applicate üEsecuzione dei passi della sequenza sopra su un particolare
dispositivo di calcolo
Computational thinking steps
![Page 4: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/4.jpg)
STORIA DELLA SCIENZA DELLACOMPUTAZIONE
[Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel)
[1936] Definizione formale di algoritmo e di funzione calcolabile, Church e Turing in contemporanea
[1971] Individuazione di problemi intrattabili, Cook e Levin in contemporanea
![Page 5: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/5.jpg)
GÖDELE L’ESISTENZADI DIO
![Page 6: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/6.jpg)
ALAN TURING
Matematico e crittoanalistaCollaborando alla “Bomba” è riuscito a rompere la cifratura effettuata dai Nazisti durante la 2mondialeüAlcuni analisti pensano che grazie a lui la guerra sia durata
due anni menoInventore della Macchina di Turing
Padre dell’Intelligenza Artificiale üTest di Turing (nessun computer lo ha passato fino ad oggi)https://it.wikipedia.org/wiki/Premio_Turing
![Page 7: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/7.jpg)
ALAN TURING
![Page 8: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/8.jpg)
I RISULTATI SONO
Non tutte le funzioni matematiche sono calcolabili con un algoritmo. üLe funzioni matematiche sono più degli algoritmi
Per alcuni problemi (intrattabili), il numero di operazioni richieste aumenta esponenzialmente rispetto alla dimensione dei dati trattati üPer esempio rispetto alla lunghezza di un arrayüNon sappiamo ancora se qualche algoritmo più efficiente
possa essere ideato (si pensa di no)
![Page 9: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/9.jpg)
UN ESEMPIO VICINO A NOI
Un algoritmo (programma) che prende in input un programma ed un input e stabilisce se il programma termina su tale input NON ESISTE (non è calcolabile).üHalting problem
![Page 10: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/10.jpg)
BACK TO ESONERO
Computabilità ma anche complessità (ritorno all’esercizio dell’esonero)
L’esercizio dell’esonero può essere risolto analizzando l’array, scandendolo con dei for
Per pseudocodice, pseudocodifica, pseudolinguaggio o linguaggio di progettazione si intende un linguaggio il cui scopo è la rappresentazione di algoritmi in alternativa al classico diagramma di flusso e non soggetto a molte limitazioni intrinseche di quest'ultimo tipo di rappresentazione
![Page 11: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/11.jpg)
INTERVALLO DI SOMMA MASSIMA
+1 +3+3 -2 +3-6+4 -4 +1 -9 +6
![Page 12: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/12.jpg)
ALGORITMO CUBICO
![Page 13: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/13.jpg)
ALGORITMO QUADRATICO
![Page 14: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/14.jpg)
STUDIANDO MEGLIO IL PROBLEMA
i a-1 a
Proposizione 1: Ogni porzione che termina immediatamente prima dellaporzione di somma massima (da i a a-1), ha somma negativa(dimostrazione per assurdo).
somma ≤ 0
Proposizione 2: Ogni porzione che inizia dove inizia la porzione di sommamassima ed è inclusa in essa (da a a j con a ≤ j ≤ v), ha somma positiva(dimostrazione per assurdo).
j v
Da a a v è l’intervallo di somma massima
somma ≥ 0
![Page 15: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/15.jpg)
IN PRATICA
Sommo passo passo tutti gli elementi dell’array (quello con le differenze tra giorno successivo e giorno precedente) dall’indice 0 in poi
Appena trovo che la somma fino ad un indice (a-1) è minore di zero, sono sicuro di poter scartare tutto l’intervallo fino a a-1. L’intervallo massimo potrà esistere da questo punto in poi
a e v nella prossima slide vengono aggiornati con l’intervallo di costo massimo, in base alle proprietà della slide precedente
![Page 16: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/16.jpg)
ALGORITMO LINEARE
![Page 17: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/17.jpg)
COMPLESSITÀ (UN’INTRODUZIONE)
Data la lunghezza n di un array L’algoritmo cubico esegue O(n3) passi. Almeno n3/32
L’algoritmo quadratico esegue O(n2) passi
Se il nostro computer esegue un miliardo di operazioni al secondo, üL’algoritmo cubico impiega per processare un array di un
milione di elementi: (106)3 x 10-9 = 109 (piu di 30 anni)üL’algoritmo quadratico ci mette (106)2 x 10-9 = 103 (16 minuti)üL’algoritmo lineare 106 x 10-9 = 10-3 (un millesimo di
secondo)
![Page 18: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/18.jpg)
E NEL FUTURO?
È meglio sviluppare un algoritmo più efficiente o comprare un computer più potente?
Quanti elementi processo in un tempo T?ü∛T, √T e TE se compro un computer più potente che mi fa k operazioni in un tempo T?
ü∛kT, √kT e kT che equivale a ü∛k x ∛ T, √k x √ T e kT
Comprare un computer più potente rende più velocel’algoritmo già più efficiente
![Page 19: PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel) [1936] Definizione](https://reader031.vdocuments.net/reader031/viewer/2022022114/5c69034a09d3f25c6a8c680e/html5/thumbnails/19.jpg)
LETTURA CONSIGLIATA
Creare l’algoritmo, pensare al problema, è piu importante chescrivere il programma in un linguaggio di programmazione.
Un informatico risolve i problemi.