Problemi, algoritmi,...

download Problemi, algoritmi, calcolatorefimec.altervista.org/Informatica_&_Programmazione/Lucidi_Lezioni... · elementari • Univocità ... algoritmo che lo risolve) esistono infiniti algoritmi

If you can't read please download the document

Transcript of Problemi, algoritmi,...

  • 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