PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi...

19
PROGRAMMAZIONE I A.A. 2018/2019

Transcript of PROGRAMMAZIONE I - dmi.unipg.it · STORIA DELLA SCIENZA DELLA COMPUTAZIONE [Fine ’800 inizi...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

LETTURA CONSIGLIATA

Creare l’algoritmo, pensare al problema, è piu importante chescrivere il programma in un linguaggio di programmazione.

Un informatico risolve i problemi.