• Non ci sono risultati.

descrizione di come si deve eseguire un lavoro o risolvere un problema

N/A
N/A
Protected

Academic year: 2021

Condividi "descrizione di come si deve eseguire un lavoro o risolvere un problema"

Copied!
17
0
0

Testo completo

(1)

Algoritmi

Paolo Bison

Fondamenti di Informatica 1 A.A. 2004/05

Universit`a di Padova

(2)

Algoritmo



descrizione di come si deve eseguire un lavoro o risolvere un problema



sequenza di passi/istruzioni



Muh.ammad ibn M¯us¯a al- Khuw¯arizm¯ı

matematico arabo autore di

Al-jabr w’al muq¯abala



procedimento di calcolo



esistono anche in altri contesti:

processo algoritmo passo tipico

montare un istruzioni incolla

(3)

Esecuzione



esecutore

uomo/calcolatore



funzionalità dell’esecutore:



capire il significato di ogni passo



eseguire l’operazione corrispondente



descrizione

uomo linguaggio naturale calcolatore programma in un

linguaggio di programmazione



indipendenti dal linguaggio in cui sono espressi



potenza espressiva del linguaggio

(4)

Programmazione

problema

algoritmo

programma



fasi



progettare un algoritmo



esprimerlo in un linguaggio di programmazione (programma)

far eseguire il programma

(5)

Progettazione



Dato un problema come si progetta un algoritmo che lo risolva ?



NON ESISTE un algoritmo per progettare algoritmi



attività intellettuale



metodologie e linguaggi



prevedere tutti i possibili eventi che potrebbero verificarsi durante l’esecuzione

distruzione del vettore Arianne

(6)

Computabilità



Ci sono problemi per i quali non esistono algoritmi?



halting problem



Dato un problema, come possiamo sapere se esiste

un algoritmo che lo risolve?

(7)

Correttezza



Dato un algoritmo, come possiamo essere sicuri che è corretto?



metodi formali



metodi empirici



inaffidabilità dei programmi

(8)

Complessità



dato un algoritmo

quali sono le risorse necessarie per eseguirlo ? in quanto tempo ?



se ci sono più algoritmi per un dato problema, qual’è il

“migliore”?



esistono problemi per i quali il miglior algoritmo richiede tante risorse da rendere impossibile l’elaborazione?



crittografia

(9)

Algoritmo



un insieme di passi/istruzioni che definiscono una

sequenza di operazioni mediante le quali si risolve un problema (o una classe di problemi)



proprietà

finitezza

numero dei passi finito ed eseguito un numero finito di volte

determinatezza

istruzioni definite senza ambiguità in modo tale da garantire sempre gli stessi risultati a parità di

condizioni

realizzabilit`a

istruzioni devono essere conosciute all’esecutore

che sa come eseguirle

(10)

Top Down



approccio metodologico alla progettazione di algoritmi per affinamenti successivi



divide et impera



fasi



dato un problema



lo si scompone in sottoproblemi



ogni sottoproblema è scomposto in ulteriori sottoproblemi



così via finché ogni sotto-

P

P1 P2 P3

P P

(11)

Algoritmo del tè - I



algoritmo principale:



fai bollire dell’acqua



metti il tè nella tazza



versa l’acqua



si noti:



azioni(istruzioni) e oggetti (dati)



ambiguità

(12)

Algoritmo del tè - II



affinamento primo sottoproblema



fai bollire l’acqua:



riempi il bollitore



accendi il fuoco



attendi che bolla



spegni il fuoco

(13)

Bottom Up



approccio opposto al top down



dato un certo insieme di algoritmi/istruzioni elementari si cerca di aggregarli in maniera da costruire

l’algoritmo per la soluzione del problema o di suoi sottoproblemi



combinazione delle due metodologie

(14)

Algoritmo del tè - III

Se esecutore capace di strofinare si può accendere il fuoco con il seguente algoritmo:



strofina due legnetti



continua finché il fuoco appare

(15)

Rappresentazione



linguaggi per rappresentare algoritmi:



naturale



pseudocodice



flow chart



linguaggio di programmazione

(16)

Elementi di un linguaggio



sintassi

l’insieme della regole relative ai procedimenti tramite i quali le unità sintattiche si combinano in espressioni linguistiche



semantica

relazione fra le espressioni linguistiche e il mondo cui

si riferiscono

(17)

Do it yourself



Dato un esecutore capace solamente di disegnare e contare, sviluppare un algoritmo per calcolare la

somma di due numeri interi

Riferimenti

Documenti correlati

[r]

Quindi, per il teorema di esistenza e unicit`a locale, il problema di Cauchy dato ammette esattamente una soluzione.. (b) Le soluzioni stazionarie si ottengono risolvendo

Corso di Laurea in Scienze Fisiche Prova finale del

Tema 2: Classificazione delle singolarit`a e residui di una funzione analitica in un intorno bucato di un punto. Si completi la trattazione fornendo

 un insieme di passi/istruzioni che definiscono una sequenza di operazioni mediante le quali si risolve un problema (o una classe di problemi).

(e) Si verifichi geometricamente che il gradiente della funzione obiettivo pu`o essere espresso come combinazione lineare non negativa dei gradienti dei vincoli attivi solo nel

[r]

[r]