+ All Categories
Home > Documents > Informatica, Algoritmi, Linguaggi - lia.disi.unibo.it · PDF fileAlgoritmi Quelli che abbiamo...

Informatica, Algoritmi, Linguaggi - lia.disi.unibo.it · PDF fileAlgoritmi Quelli che abbiamo...

Date post: 06-Feb-2018
Category:
Upload: hoangbao
View: 218 times
Download: 0 times
Share this document with a friend
31
Elementi di Informatica e Elementi di Informatica e Applicazioni Numeriche T Applicazioni Numeriche T Informatica, Algoritmi, Linguaggi
Transcript

Elementi di Informatica eElementi di Informatica eApplicazioni Numeriche TApplicazioni Numeriche TInformatica, Algoritmi, Linguaggi

Cos'è l'informatica?Cos'è l'informatica?

Che cos'è l'Informatica?

Cos'è l'informatica?Cos'è l'informatica?

Che cos'è l'Informatica?

Non è facile da definire!

Dell'informatica possiamo dire che:

■ È parente stretta della matematica■ Ha a che fare con il modo in cui risolviamo i problemi■ Si può fare anche senza un calcolatore!

Vediamo qualche esempio...

Un Primo EsempioUn Primo Esempio

Problema: cercare un parola su un dizionario

Come risolverlo?

Un Primo EsempioUn Primo Esempio

Proviamo a descrivere un metodo di soluzione:

■ Sia la parola da cercare■ Aprire il dizionario a caso■ Siano le parola in cima alla pagina sx/dx■ Se , ci restringiamo alle pagine precedenti e ripetiamo■ Se , ci restringiamo alle pagine successive e ripetiamo■ Altrimenti cerchiamo sulla pagina

w

, ,w′ w″

w < w′

w > w″

w

Un Secondo EsempioUn Secondo Esempio

Problema: trovare il massimo di un insieme di tessere numerate

Come risolverlo?

Un Secondo EsempioUn Secondo Esempio

Proviamo a descrivere un metodo di soluzione:

■ Prendiamo in mano un numero a caso (sia questo )■ è temporaneamente il nostro massimo■ Prendiamo in mano tutti gli altri numeri uno per volta■ Sia il numero corrente■ Se , allora è il nuovo massimo. Mettiamo da parte ■ Altrimenti, mettiamo da parte e passiamo al prossimo numero

mm

vv > m v m

v

Un Terzo EsempioUn Terzo Esempio

Problema: riposizionarci per ordine alfabetico

Come risolverlo?

Un Terzo EsempioUn Terzo Esempio

Proviamo a descrivere un metodo di soluzione:

■ La prima coppia è in ordine?■ Se non lo è, si scambia■ Poi guardiamo la seconda coppia e così via■ Alla fine, si ripete tutto il processo■ Quando non ci sono più scambi, l'aula è ordinata

AlgoritmiAlgoritmi

Quelli che abbiamo visto sono esempi di algoritmi

Un algoritmo è processo che risolve un problema

Più formalmente, sia data una funzione:

f : ↦DI DO

■ sono il dominio di ingresso e di uscita (input/output)■ descrive quali input vanno mappati in quali output

,DI DOf

In altre parole: una funzione descrive un problema

AlgoritmiAlgoritmi

Proviamo a migliorare la definizione:

Un algoritmo è un procedimento che computa (o valuta) una funzione f : ↦DI DO

Una funzione può ammettere diversi algoritmi

■ In tal caso, gli algoritmi di dicono equivalenti■ Per uno stesso valore in ...■ ...Due algoritmi equivalenti producono lo stesso valore in

DIDO

Un algoritmo per essere tale deve soddisfare quattro proprietà...

Proprietà Fondamentali degli AlgoritmiProprietà Fondamentali degli Algoritmi

(1) Applicabilità a tutti i dati di ingresso: l'algoritmo deveessere applicabile a qualunque dato di ingresso in DI

■ Se non vale, l'algoritmo non computa veramente ■ Eccezione: magari la computa in parte

f

(2) Eseguibilità: ogni azione elementare dell'algoritmodeve essere eseguibile in tempo finito

■ Se non vale, l'algoritmo è "inutile" in pratica■ Eccezione: magari può essere utile per una dimostrazione

Proprietà Fondamentali degli AlgoritmiProprietà Fondamentali degli Algoritmi

(3) Finitezza: per ogni valore in , l'algoritmo deveterminare dopo un numero finito di passi

DI

■ Di nuovo, se non vale, l'algoritmo è "inutile" in pratica■ Eccezione: di nuovo, magari può essere utile per una dimostrazione

(4) Non Ambiguità: Ogni azione deveessere interpretabile in modo non ambiguo

■ Se non vale, i risultati possono essere incontrollabili

Nel resto della lezione vediamo alcune conseguenze di queste proprietà

Eseguibilità => ElaboratoreEseguibilità => Elaboratore

Per eseguire un algoritmo è necessario un elaboratore

Questo è un elaboratore:

Eseguibilità => ElaboratoreEseguibilità => Elaboratore

Per eseguire un algoritmo è necessario un elaboratore

Questo è un elaboratore:

Eseguibilità => ElaboratoreEseguibilità => Elaboratore

Per eseguire un algoritmo è necessario un elaboratore

Questo è un elaboratore (Wozniak, Apple I, 1976):

Eseguibilità => ElaboratoreEseguibilità => Elaboratore

Per eseguire un algoritmo è necessario un elaboratore

Questo è (parte di) un elaboratore (Analytical Engine, 1837):

Eseguibilità => ElaboratoreEseguibilità => Elaboratore

Per eseguire un algoritmo è necessario un elaboratore

Questo è un elaboratore (in un certo senso):

Cos'è un ElaboratoreCos'è un Elaboratore

Dal nostro punto di vista:

Un elaboratore è una entità che può:■ Memorizzare informazioni■ Eseguire sul tali informazioni alcune operazioni elementari

Quindi l'elaboratore determina:

■ I dati elementari che possiamo usare■ Le operazioni elementari che possiamo effettuare

E.g. dati = numeri interi, operazioni: '+', '<', '='

Cos'è un ElaboratoreCos'è un Elaboratore

Dal nostro punto di vista:

Un elaboratore è una entità che può:■ Memorizzare informazioni■ Eseguire sul tali informazioni alcune operazioni elementari

Una osservazione importante:

■ Per poter eseguire qualunque algoritmo■ Sono sufficienti pochissimi tipi di dato ed operazioni elementari

Dimostrazione dovuta ad Alan Turing, Alonzo Church (negli anni '30)

Finitezza e ComputabilitàFinitezza e Computabilità

Vediamo ora una domanda interessante:

Può esistere una funzione ben definitache non può essere computata da un algoritmo?

f

Sì! Il risultato è del matematico Kurt Gödel, nel 1931

Riuscite a fare un esempio?

Suggerimento:

■ Ha a che fare con la proprietà di finitezza...■ Quale potrebbe richiedere un algoritmo infinito?f

Funzioni Non ComputabiliFunzioni Non Computabili

Un primo esempio (mezzo riuscito):

f (a, b) = {v ∈ ℝ | a < v < b} associa a due numeri e l'insieme dei reali compresi tra di essif a b

■ Ci sono infiniti numeri reali tra e !■ Ci vuole un tempo infinito per costruire questo insieme

a b

Funzioni Non ComputabiliFunzioni Non Computabili

Un primo esempio (mezzo riuscito):

f (a, b) = {v ∈ ℝ | a < v < b} associa a due numeri e l'insieme dei reali compresi tra di essif a b

■ Ci sono infiniti numeri reali tra e !■ Ci vuole un tempo infinito per costruire questo insieme

a b

Perché "mezzo riuscito"?

■ Se l'elaboratore offre gli insiemi infiniti come dato elementare...■ ...Allora non c'è problema!

E.g. un essere umano può benissimo ragionare con insiemi infiniti!

Funzioni Non ComputabiliFunzioni Non Computabili

Un secondo esempio:

f (a) = { 10

se l'affermazione "a" è veraaltrimenti

è un dimostratore: stabilisce se una certa affermazione è vera o falsaf

Funzioni Non ComputabiliFunzioni Non Computabili

Supponiamo di avere a = ''Questa affermazione è falsa''

Allora succede che: a vera ⇒ a falsa ⇒ a vera ⇒ …

Funzioni Non ComputabiliFunzioni Non Computabili

■ Se cerchiamo di valutare ■ La valutazione inizia un ciclo infinito!

a = "Questa affermazione è falsa''

Nel corso, ci occuperemo solo di funzioni computabili

Però se avete tempo, leggete : ne vale la pena!questo blog post

Non-ambiguità e FormalizzazioneNon-ambiguità e Formalizzazione

Consideriamo ora la non-ambiguità:

Per definire in modo non ambiguo un algoritmo:

Ci serve un linguaggio (per esempio testuale) che:

■ Deve avere una sintassi non-ambigua■ Cioè: delle regole sintattiche rigide e ben definite

■ Il linguaggio deve avere una semantica non-ambigua■ Cioè: ogni componente del testo ha un solo significato

Un linguaggio di questo tipo si chiama linguaggio formale

Linguaggi di ProgrammazioneLinguaggi di Programmazione

Si chiama linguaggio di programmazione un linguaggio formale:

■ La cui semantica è definita in base ad operazioni elementari...■ ...Che possono essere eseguite su un elaboratore

Si chiama programma un testoscritto in un linguaggio di programmazione

■ Quindi, un programma è un testo che può essere eseguito!

Un algoritmo può essere definito usando un programma

■ Spesso si usa il termine "codificare" o "implementare"

Linguaggi di Programmazione - Un EsempioLinguaggi di Programmazione - Un Esempio

Questo è un programma per l'esempio 2 (max di una serie di numeri)

V = randi(20000, 1, 2000);

m = V(1);

for v = V(2:end)

if m < v

m = v;

end

end

■ È scritto in Matlab, il sistema che utilizzeremo■ Non cercate di capire i dettagli adesso: ci arriveremo!

Informatica: la Scienza degli Algoritmi?Informatica: la Scienza degli Algoritmi?

■ Abbiamo fatto un gran parlare di algoritmi■ È di questo che si occupa l'informatica?

Non esattamente: non tutti i programmi sono algoritmi

■ Ci sono programmi che eseguono indefinitamente■ E.g. server web (aspetta richieste indefinitamente)■ E.g. programmi di controllo di impianti

■ Programmi che non "calcolano un risultato"■ E.g. interfacce utente

Questi programmi usano algoritmi, ma non sono algoritmi

Cos'è l'Informatica?Cos'è l'Informatica?

Ma in sostanza cosa fa un programma?

■ Rappresenta informazioni■ Elabora informazioni

Il che ci porta alla definizione di Informatica che adotteremo!

L'Informatica è la scienza della rappresentazionee dell'elaborazione dell'informazione


Recommended