problemi, algoritmi,...
TRANSCRIPT
-
Problemi, algoritmi, calcolatore
Informatica e Programmazione Ingegneria Meccanica e dei Materiali
Universit degli Studi di Brescia
Prof. Massimiliano Giacomin
-
Problemi, algoritmi, calcolatori
Informatica e Programmazione Universit di Brescia 2 Docente: M. Giacomin
Introduzione al corso in a nutshell
Linformatica studia in modo sistematico i calcolatori che eseguono algoritmi che risolvono problemi.
Inquadramento pi formale dei concetti di: 1. Problema 2. Algoritmo 3. Calcolatore
-
Informatica e Programmazione Universit di Brescia 3 Docente: M. Giacomin
Il concetto di Problema
-
Problema Classe di domande omogenee alle 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 problema Una 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 listanza rappresenta
Esempio (nel caso precedente): 7
Informatica e Programmazione Universit di Brescia 4 Docente: M. Giacomin
-
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 5 Docente: M. Giacomin
-
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 6 Docente: M. Giacomin
-
Esempio 2
Quanto vale la radice quadrata 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 = R (numeri reali) Soluzione istanza = 7
Classe di domande omogenee
Informatica e Programmazione Universit di Brescia 7 Docente: M. Giacomin
-
Esempio 3
Quanto vale la potenza Y di un numero naturale b elevato
a un altro numero naturale n ?
Problema Variabili 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 8 Docente: M. Giacomin
-
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 9 Docente: M. Giacomin
Ogni problema una funzione
D1 x D2 x x Dn R1 x R2 x x Rm
-
Istanza del problema
P[X, Y] con X D = D1 x D2 x x Dn
Informatica e Programmazione Universit di Brescia 10 Docente: M. Giacomin
Soluzione attesa dellistanza
Y R = R1 x R2 x x Rm assegnato a X D dalla funzione problema
-
Informatica e Programmazione Universit di Brescia 11 Docente: M. Giacomin
Il concetto di Algoritmo
-
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
ALGORITMO DATI SOLUZIONE
Informatica e Programmazione Universit di Brescia 12 Docente: M. Giacomin
Idea di base
-
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 dellalgoritmo in un tempo finito
La definizione di algoritmo presuppone che esso possa essere espresso in termini linguistici ben definiti, interpretato ed eseguito da un soggetto esecutore (il calcolatore). Da ci conseguono le seguenti propriet:
Informatica e Programmazione Universit di Brescia 13 Docente: M. Giacomin
-
Per esprimere lalgoritmo 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 lordine tra i nodi
Informatica e Programmazione Universit di Brescia 14 Docente: M. Giacomin
Schemi a blocchi
-
La simbologia comunemente utilizzata
inizio fine
blocco funzionale
Blocco decisionale (selezione a 2 vie)
cond V F
NB: nel libro inizio e fine sono indicati sempre con un rettangolo
Informatica e Programmazione Universit di Brescia 15 Docente: M. Giacomin
-
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 dellespressione x-y: il precedente valore di d viene sovrascritto
Informatica e Programmazione Universit di Brescia 16 Docente: M. Giacomin
-
Informatica e Programmazione Universit di Brescia 17 Docente: M. Giacomin
Esempio
Y 10
D Y-5
Y D-Y+5
D D+1
A questo punto: - Y vale 0 - D vale 6
-
Esempio: il problema della radice quadrata intera
Da dove partire per sviluppare un algoritmo?
Alcune istanze (e soluzioni)
Informatica e Programmazione Universit di Brescia 18 Docente: 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)
-
Quale potrebbe essere un algoritmo risolvente?
5: 2*2 = 4, 3*3 = 9 Y = 2 9: 2*2 = 4, 3*3 = 9 Y = 3 1: 1*1 = 1 Y = 1 10: 2*2 = 4, 3*3 = 9, 4*4 = 16
Y = 3
Alcune istanze (e soluzioni)
Unidea:
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 19 Docente: M. Giacomin
-
1. Assegna a Y il valore 0 2. Incrementa Y di 1 3. Se Y2 < X: torna allistruzione 2 4. Se Y2 = X: FINE 5. Se Y2 > X: decrementa Y di 1 : FINE
Y 0
fine
inizio
Y Y+1
Y2 < X V
F
Y2 = X V
F Y Y-1
Informatica e Programmazione Universit di Brescia 20 Docente: M. Giacomin
-
Esecuzione passo passo
1 Y 0 2 Calcolo di Y+1 e risultato in Y Y =1 3 Controllo se Y2 < X vero 4 Calcolo di Y+1 e risultato in Y Y =2 5 Controllo se Y2 < X vero 6 Calcolo di Y+1 e risultato in Y Y =3 7 Controllo se Y2 < X falso 8 Controllo se Y2 = X falso 9 Calcolo di Y-1 e risultato in Y Y =2 10 Fine
Considerando ad esempio listanza X = 8
Informatica e Programmazione Universit di Brescia 21 Docente: M. Giacomin
-
ALGORITMO RISOLVENTE UN PROBLEMA (formalmente)
Dato il 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 22 Docente: M. Giacomin
A[X, Y] tale che eseguito con il dato X produce Y soluzione dellistanza P[X, Y] (Y R = R1 x R2 x x Rm)
-
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 23 Docente: M. Giacomin
-
Informatica e Programmazione Universit di Brescia 24 Docente: M. Giacomin
Il concetto di Calcolatore (e di computazione)
-
CALCOLATORE dato: X
A[X, Y]
risultato: Y
P[X, Y]
P[X, Y]
algoritmo problema
istanza
soluzione
Informatica e Programmazione Universit di Brescia 25 Docente: M. Giacomin
Il calcolatore come esecutore di algoritmi
-
CALCOLATORE
Programma: sequenza di istruzioni di un linguaggio di programmazione (descrive un algoritmo)
Dati iniziali Risultati dellesecuzione 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 26 Docente: M. Giacomin
-
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 dellistanza 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 Brescia 27 Docente: M. Giacomin
NOTE AI DUE LUCIDI PRECEDENTI
-
Computazione Computazione: esecuzione di un algoritmo da parte del calcolatore in
corrispondenza di determinati dati in ingresso Passo di computazione: insieme delle azioni che lesecutore compie
(durante lesecuzione di un algoritmo) per eseguire una singola istruzione Sequenza di computazione: sequenza di passi di computazione che
lesecutore compie in corrispondenza di determinati dati in ingresso durante lesecuzione di un algoritmo
Algoritmo = concetto statico Computazione = concetto dinamico
Informatica e Programmazione Universit di Brescia 28 Docente: M. Giacomin
-
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 29 Docente: M. Giacomin
-
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: lalgoritmo
comunque finito!
Informatica e Programmazione Universit di Brescia 30 Docente: M. Giacomin
-
Funzione calcolata da un algoritmo
fA
D
R
A[X, Y]
Un algoritmo A[X, Y] calcola una funzione da D (dominio delle variabili di ingresso) a R (dominio delle variabili di uscita): - fA: DR 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 31 Docente: M. Giacomin
-
Un algoritmo risolve un problema se la funzione calcolata dallalgoritmo 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 di istruzioni che non hanno effetto sul risultato, ottenendo un diverso algoritmo che risolve lo stesso problema - e possiamo farlo in infiniti modi (es. sommare e sottrarre 1 a/da una variabile, sommare e sottrarre 2, ecc. ecc.)
Note importanti
Informatica e Programmazione Universit di Brescia 32 Docente: M. Giacomin
-
Linformatica teorica Utilizzando strumenti matematici, studia macchine astratte descritte formalmente, anzich macchine concrete. Permette di ottenere risultati su cosa una macchina in grado di calcolare 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 33 Docente: M. Giacomin
-
APPROFONDIMENTO
(NON RICHIESTO ALLESAME)
-
5 A 5 Z 1 G G 2
Q1
Q2
Q0
S1
S2
S1
S2 S1
S2
SIMBOLO LETTO
SIMBOLO SCRITTO
DIREZIONE DI SPOSTAMENTO
S = {s0, sm} S Q = {q0, qm} q0 S : Q x S Q x S x {L, R}
La macchina di Turing
-
La tesi di Church-Turing Tutte le funzioni che si possono calcolare sono calcolabili mediante una Macchina di Turing
Il pi potente calcolatore esistente al mondo e tutti i calcolatori che saranno costruiti in futuro sono equivalenti ad 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