Problemi, algoritmi, calcolatore -...

36
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin

Transcript of Problemi, algoritmi, calcolatore -...

Page 1: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Problemi, algoritmi, calcolatore

Informatica e ProgrammazioneIngegneria Meccanica e dei Materiali

Università degli Studi di Brescia

Prof. Massimiliano Giacomin

Page 2: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Problemi, algoritmi, calcolatori

Informatica e Programmazione – Università di Brescia 2Docente: M. Giacomin

Introduzione al corso “in a nutshell”

L’informatica studia in modo sistematico i calcolatori che eseguono algoritmi che risolvono problemi.

Inquadramento più formale dei concetti di:1. Problema2. Algoritmo3. Calcolatore

Page 3: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Informatica e Programmazione – Università di Brescia 3Docente: M. Giacomin

Il concetto di Problema

Page 4: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

ProblemaClasse di domande omogeneealle quali è possibile dare risposta mediante una procedura uniforme

Esempio di problema: �Quanto vale la radice quadrata intera di un numero intero positivo X?�

Istanza di un problemaUna specifica domanda del problema

Esempio: �Quanto vale la radice quadrata intera di 49?�

Soluzione di una istanza(detta anche �soluzione attesa�):la risposta alla specifica domanda che l’istanza rappresenta

Esempio (nel caso precedente): 7

Informatica e Programmazione – Università di Brescia 4Docente: M. Giacomin

Page 5: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Variabili di ingresso e uscita

Un problema è formulato mediante una o più variabili:

• Variabili di ingresso- termini variabili che, assumendo un valore del dominio, permettono di

generare le istanze del problema- i valori che esse assumono (elementi del loro dominio) vengono chiamati

dati (o, più esplicitamente, dati di ingresso)

• Variabili di uscita- termini variabili che caratterizzano le soluzioni attese (delle istanze)di un problema

- i valori che esse assumono vengono chiamati risultati

Informatica e Programmazione – Università di Brescia 5Docente: M. Giacomin

Page 6: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Esempio

Quanto vale la radice quadrata intera Y di un numero naturale X ?

Problema Variabile di ingresso

Variabile di uscita

Istanza

Quanto vale la radice quadrata Y del numero 49?

Dati = N (numeri naturali)

Risultati = N (numeri naturali)Soluzione istanza= 7

Classe di domande omogenee

Informatica e Programmazione – Università di Brescia 6Docente: M. Giacomin

Page 7: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Esempio 2

Quanto vale la radice quadrata Y di un numero naturale X ?

ProblemaVariabile di ingresso

Variabile di uscita

Istanza

Quanto vale la radice quadrata Y del numero 49?

Dati = N (numeri naturali)

Risultati = R (numeri reali)Soluzione istanza= 7

Classe di domande omogenee

Informatica e Programmazione – Università di Brescia 7Docente: M. Giacomin

Page 8: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Esempio 3

Quanto vale la potenza

Y di un numero naturale b elevato

a un altro numero naturale n ?

ProblemaVariabili di ingresso

Variabile di uscita

Istanza

Quanto vale la potenza

Y di 2 elevato a 3?

Dati = N x N (coppie di naturali)

Risultati = N

Soluzione istanza= 8

Informatica e Programmazione – Università di Brescia 8Docente: M. Giacomin

Page 9: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

PROBLEMI E FUNZIONI

Problema

P[X, Y](X1, X2, …, Xn): variabili di ingresso, con domini

D1, D2, …, Dn (insiemi di dati)

(Y1, Y2, …, Ym): variabili di uscita, con domini

R1, R2, …, Rm (insiemi di risultati)

Informatica e Programmazione – Università di Brescia 9Docente: M. Giacomin

Ogni problema è una funzione

D1 x D2 x … x Dn → R1 x R2 x … x Rm

Page 10: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Istanza del problema

P[X, Y] con X Î D = D1 x D2 x … x Dn

Informatica e Programmazione – Università di Brescia 10Docente: M. Giacomin

Soluzione attesa dell’istanza

Y Î R = R1 x R2 x … x Rm

assegnato a X Î D dalla funzione problema

Page 11: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Informatica e Programmazione – Università di Brescia 11Docente: M. Giacomin

Il concetto di Algoritmo

Page 12: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Algoritmo risolvente di un problema: metodo che specifica come produrre in modo uniforme la soluzione attesa per ogni possibile istanza mediante una sequenza di istruzioni

ALGORITMODATI RISULTATI

Informatica e Programmazione – Università di Brescia 12Docente: M. Giacomin

Idea di base

Page 13: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Proprietà di un algoritmo

• Finitezza: un algoritmo deve essere costituito da un numero finito di istruzioni

• Definitezza: le istruzioni di cui un algoritmo è costituito devono appartenere a un insieme finito e prefissato di tipi elementari

• Univocità: ogni istruzione deve essere univocamente interpretabile ed eseguibile

• Effettività: deve esistere un esecutore in grado di eseguire ogni istruzione dell’algoritmo in un tempo finito

La definizione di algoritmo presuppone che esso possa essere espressoin termini linguistici ben definiti, interpretato ed eseguito da un soggettoesecutore (il calcolatore). Da ciò conseguono le seguenti proprietà:

Informatica e Programmazione – Università di Brescia 13Docente: M. Giacomin

Page 14: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Per esprimere l’algoritmo per il calcolo della radice intera (ed altri)

in una forma evidente dal punto di vista visivo,

si può usare il formalismo degli schemi a blocchi(detti anche �diagrammi di flusso� o �flowchart�)

Linguaggio grafico i cui elementi sono:

• nodi (o blocchi) per indicare le istruzioni:

inizio e fine, elaborazioni, decisioni sulla base di condizioni

• archi orientati che collegano coppie di nodi, per indicare

l’ordine tra i nodi

Informatica e Programmazione – Università di Brescia 14Docente: M. Giacomin

Schemi a blocchi

Page 15: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

La simbologia comunemente utilizzata

inizio fine

blocco funzionale

Blocco decisionale(selezione a 2 vie)

condV F

NB: nel libro inizioe fine sono indicati semprecon un rettangolo

Informatica e Programmazione – Università di Brescia 15Docente: M. Giacomin

Page 16: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Variabili, espressioni e assegnamenti

• Variabile: �contenitore� di dati caratterizzata da un nome es. x

• Ad una variabile può essere assegnato un valore: p.es. x ¬ 10

• Le variabili possono comparire in espressioni aritmetiche (es. x-y) o logiche, che restituiscono un valore

• Le espressioni possono essere assegnate ad altre variabili: p.es.d ¬ x-y

d assume il valore dell’espressione x-y: il precedente valore di dviene sovrascritto

Informatica e Programmazione – Università di Brescia 16Docente: M. Giacomin

Page 17: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Informatica e Programmazione – Università di Brescia 17Docente: M. Giacomin

Esempio

Y ¬ 10

D ¬ Y-5

Y ¬ D-Y+5

D ¬ D+1

A questo punto:

- Y vale 0

- D vale 6

Page 18: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Esempio: il problema della radice quadrata intera

• Da dove partire per sviluppare un algoritmo?

Alcune istanze (e soluzioni)

Informatica e Programmazione – Università di Brescia 18Docente: M. Giacomin

4: soluzione attesa 2

5: soluzione attesa 2

9: soluzione attesa 3

10: soluzione attesa 3

Formalizzazione (identificazione del problema)

Dato un numero naturale X, trovare il massimo numero

naturale Y tale che Y2 ≤ X (radice quadrata intera)

Page 19: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

• Quale potrebbe essere un algoritmo risolvente?

5: 2*2 = 4, 3*3 = 9 Y = 29: 2*2 = 4, 3*3 = 9 Y = 31: 1*1 = 1 Y = 110: 2*2 = 4, 3*3 = 9, 4*4 = 16

Y = 3

Alcune istanze (e soluzioni)

Un’idea:

Parto da Y=1, controllo se Y2 < X… se sì allora Y=Y+1 e continuo,altrimenti significa che Y2 ≥ X:

se Y2 = X ok, altrimenti la soluzione deve essere Y-1: Y = Y-1

Informatica e Programmazione – Università di Brescia 19Docente: M. Giacomin

Page 20: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Y ¬ 1

fine

inizio

Y ¬ Y+1

Y2 < X

V

F

Y2 = XV

FY ¬ Y-1

Informatica e Programmazione – Università di Brescia 20Docente: M. Giacomin

Page 21: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Esecuzione passo passo

1 Y ¬ 1

2 Controllo se 1 < 8 (Y2 < X) è è vero

3 Calcolo di Y+1 e risultato in Y è Y = 2

4 Controllo se 4 < 8 (Y2 < X) è è vero

5 Calcolo di Y+1 e risultato in Y è Y = 3

6 Controllo se 9 < 8 (Y2 < X) è è falso

7 Controllo se 9 = 8 (Y2 = X) è è falso

8 Calcolo di Y-1 e risultato in Y è Y = 2

9 Fine

Considerando ad esempio l’istanza X = 8

Informatica e Programmazione – Università di Brescia 21Docente: M. Giacomin

Page 22: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

ALGORITMO RISOLVENTE UN PROBLEMA (formalmente)

Dato il problema P[X, Y]

(X1, X2, …, Xn): variabili di ingresso, con dominiD1, D2, …, Dn (insiemi di dati)

(Y1, Y2, …, Ym): variabili di uscita, con dominiR1, R2, …, Rm (insiemi di risultati)

Informatica e Programmazione – Università di Brescia 22Docente: M. Giacomin

A[X, Y] tale che eseguito con il dato X produce Y soluzione dell’istanza P[X, Y]

(Y Î R = R1 x R2 x … x Rm)

Page 23: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

problema P[X, Y]

istanza P[X, Y]

algoritmo A[X, Y]

risultato Y: soluzione di P[X, Y]

sostituzione di X con X esecuzione di A con il dato X

Informatica e Programmazione – Università di Brescia 23Docente: M. Giacomin

Page 24: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Informatica e Programmazione – Università di Brescia 24Docente: M. Giacomin

Il concetto di Calcolatore(e di computazione)

Page 25: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

CALCOLATOREdato: X

A[X, Y]

risultato: Y

P[X, Y]

P[X, Y]

algoritmo problema

istanza

soluzione

Informatica e Programmazione – Università di Brescia 25Docente: M. Giacomin

Il calcolatore come esecutore di algoritmi

Page 26: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

CALCOLATORE

Programma: sequenza di istruzioni di un linguaggio di programmazione (descrive un algoritmo)

Dati iniziali Risultati dell’esecuzione in corrispondenza dei dati iniziali

Assegnati a variabili di ingresso (input)

Assegnati a variabili di uscita (output)

Il calcolatore come esecutore di programmi

Informatica e Programmazione – Università di Brescia 26Docente: M. Giacomin

Page 27: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

• Un calcolatore è un sistema che, ricevendo in ingresso la

descrizione, in un opportuno linguaggio, di un algoritmo risolvente

A[X,Y] per un certo problema P[X,Y] e un dato X, produce come

risultato la soluzione Y dell’istanza P[X,Y]

• Per essere comprensibili al calcolatore, gli algoritmi devono essere

espressi in un linguaggio di programmazione:

Programma = algoritmo descritto formalmente attraverso un

linguaggio di programmazione

• Un calcolatore è quindi un esecutore universale di programmi- elabora puri simboli (per esso �privi di significato�)

- non risolve problemi (il problema non è un suo ingresso)

ma esegue programmi!

Informatica e Programmazione – Università di Brescia27Docente: M. Giacomin

NOTE AI DUE LUCIDI PRECEDENTI

Page 28: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Computazione• Computazione: esecuzione di un algoritmo da parte del calcolatore in

corrispondenza di determinati dati in ingresso• Passo di computazione: insieme delle azioni che l’esecutore compie

(durante l’esecuzione di un algoritmo) per eseguire una singola istruzione• Sequenza di computazione: sequenza di passi di computazione che

l’esecutore compie in corrispondenza di determinati dati in ingresso durante l’esecuzione di un algoritmo

Algoritmo = concetto statico Computazione = concetto dinamico

Informatica e Programmazione – Università di Brescia 28Docente: M. Giacomin

Page 29: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Sequenza di computazione finita

risultato: Y dato: X

A[X, Y] algoritmo

ESECUTORE

passo 1 è passo 2 è passo 3 … … è passo n

In questo caso, la computazione produce un risultato

Informatica e Programmazione – Università di Brescia 29Docente: M. Giacomin

Page 30: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Sequenza di computazione infinita

In questo caso, il risultato rimane indefinito

dato: X ESECUTORE

passo 1 è passo 2 è passo 3 … … è … …

A[X, Y] algoritmo NB: l’algoritmo

è comunque finito!

Informatica e Programmazione – Università di Brescia 30Docente: M. Giacomin

Page 31: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

Funzione calcolata da un algoritmo

fA

D

R

A[X, Y]

• Un algoritmo A[X, Y] calcola una funzione da D (dominio dellevariabili di ingresso) a R (dominio delle variabili di uscita):

- fA: D®R tale che fA(X) = Y

con Y prodotto dalla computazione di A[X, Y] con il dato X• La funzione è in generale parziale!

Informatica e Programmazione – Università di Brescia 31Docente: M. Giacomin

Page 32: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

• Un algoritmo risolve un problema se la funzione calcolata dall’algoritmo coincide con quella del problema

• Un algoritmo risolve un problema (calcola una funzione) e ne risolve uno solo (ne calcola solo una)

• Viceversa, per un problema risolubile (ovvero, tale che esiste un algoritmo che lo risolve) esistono infiniti algoritmi che lo risolvono!

- infatti, un algoritmo è descritto da una sequenza di istruzioni- è sufficiente pensare che possiamo aggiungere una sequenza diistruzioni che non hanno effetto sul risultato, ottenendo undiverso algoritmo che risolve lo stesso problema

- e possiamo farlo in infiniti modi (es. sommare e sottrarre 1 a/dauna variabile, sommare e sottrarre 2, ecc. ecc.)

Note importanti

Informatica e Programmazione – Università di Brescia 32Docente: M. Giacomin

Page 33: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

L’informatica teorica• Utilizzando strumenti matematici, studia macchine astrattedescritte formalmente, anziché macchine concrete.

• Permette di ottenere risultati su �cosa una macchina è in grado dicalcolare� e quindi �quali problemi possono essere risolti�a prescindere dalla tecnologia impiegata per realizzare i calcolatori

• La tecnologia cambia, i risultati generali no:- La �macchina analitica� di Charles Babbage (mai realizzata)

è stata progettata nel 1830- La �macchina di Turing� (di Alan Turing)

è stata pubblicata nel 1936- Il primo calcolatore elettronico solo nel 1943

Alcuni risultati (cenni):se qualcuno è interessato, può consultare i capitoli 15, 16, 17

Informatica e Programmazione – Università di Brescia 33Docente: M. Giacomin

Page 34: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

APPROFONDIMENTO

(NON RICHIESTO ALL�ESAME)

Page 35: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

5 A5Z1 G G 2

Q1

Q2

Q0

S1

S2

S1

S2S1

S2

£ £

SIMBOLO LETTO

SIMBOLO SCRITTO

DIREZIONE DI SPOSTAMENTO

S = {s0, … sm} £ Î SQ = {q0, … qm} q0 Î S

d: Q x S ® Q x S x {L, R}

£

La macchina di Turing

Page 36: Problemi, algoritmi, calcolatore - fimec.altervista.orgfimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni_ed... · Problemi, algoritmi, calcolatore Informatica e Programmazione

La tesi di Church-TuringTutte le funzioni che si possono calcolare sono calcolabili medianteuna Macchina di Turing

Il più potente calcolatore esistente al mondo e tutti i calcolatori che saranno costruiti in futuro sono equivalentiad una Macchina di Turing

Alcuni risultati formali• Le macchine di Turing sono numerabili

Þ tutti i possibili programmi (infiniti) si possono contare!• Esistono problemi (funzioni) non computabili, ovvero per i

quali non esistono algoritmi risolventi- i problemi (le funzioni) esistenti sono non numerabili

(non si possono contare) e quindi… sono di più!- un esempio: non esiste un algoritmo (programma) che, dato un qualunque algoritmo (programma) e un dato, può decidere se esso termina oppure no

- un altro esempio: non possiamo sapere in generale se un fatto è �conseguenza logica� di un insieme di fatti