Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione agli Algoritmi e alle Strutture Dati - Prof. Sgarro, Appunti di Algoritmi E Strutture Di Dati

Schemi riassuntivi perfetti per l'esame di Algoritmi e Strutture Dati

Tipologia: Appunti

2018/2019

In vendita dal 18/06/2019

gaia-michelazzi
gaia-michelazzi 🇮🇹

1

(1)

4 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
COSE DA SAPERE DI
ALGORITMI E STRUTTURE
DATI
Algoritmo: procedura di calcolo ben denita che prende in
input uno o più valori e genera un valore, o un insieme di
valori, come output un algoritmo è quindi una sequenza di passi computazionali che
trasforma l’input in output.
Problema computazionale: il problema che l’algoritmo deve risolvere.
Istanza di un problema: sequenza di dati di input richiesti per calcolare la soluzione
del problema.
Algoritmo:
Corretto: per ogni istanza di input termina con l’output desiderato.
Errato: per qualche istanza di input fornisce una soluzione diversa da quella
desiderata o non termine aatto.
N.B. Anche un algoritmo errato può essere utilizzato, a patto che se ne possa
controllare il tasso di errore.
Come si descrivono gli algoritmi?
Flow-chart: sequenza di blocchi di forme diverse (a seconda del
ruolo ricoperto) di istruzioni lette dall’alto verso il basso
Codice macchina: codice scritto con un linguaggio di
programmazione qualsiasi
Pseudocodice: codice scritto in un linguaggio che unisce
quello macchina ad un linguaggio più comprensibile (nel nostro
caso l’italiano)
[noi useremo sempre lo pseudocodice per i nostri algoritmi]
Parole chiave
Analizzare un algoritmo: prevedere le risorse che l’algoritmo richiede
Risorse di primaria importanza: tempo di elaborazione
Risorse di secondaria importanza: memoria, larghezza di banda, hardware
Ecienza di un algoritmo: si misura in base al tempo di esecuzione
Tempo di esecuzione: numero di operazioni primitive (o passi)
che vengono eseguite, scritto in funzione della dimensione dell’input di
un algoritmo (dipende da problema che si sta studiando, per la maggior
parte dei casi è il numero di elementi dell’input)
Tempo di esecuzione di una riga: costante
Abbiamo 3 tempi di esecuzione:
Tempo di esecuzione nel caso migliore
Tempo di esecuzione nel caso medio (o tempo di esecuzione previsto)
Tempo di esecuzione nel caso peggiore
Il termine algoritmo
deriva dal nome del
matematico persiano al-
Khwarizmi, vissuto nel IX
secolo d.C. considerato il
padre del concetto di
algoritmo
pf3

Anteprima parziale del testo

Scarica Introduzione agli Algoritmi e alle Strutture Dati - Prof. Sgarro e più Appunti in PDF di Algoritmi E Strutture Di Dati solo su Docsity!

COSE DA SAPERE DI

ALGORITMI E STRUTTURE

DATI

Algoritmo : procedura di calcolo ben definita che prende in input uno o più valori e genera un valore, o un insieme di valori, come output un algoritmo è quindi una sequenza di passi computazionali che trasforma l’input in output.

Problema computazionale : il problema che l’algoritmo deve risolvere.

Istanza di un problema : sequenza di dati di input richiesti per calcolare la soluzione del problema.

Algoritmo:

  • Corretto: per ogni istanza di input termina con l’output desiderato.
  • Errato: per qualche istanza di input fornisce una soluzione diversa da quella desiderata o non termine affatto. N.B. Anche un algoritmo errato può essere utilizzato, a patto che se ne possa controllare il tasso di errore.

Come si descrivono gli algoritmi?

Flow-chart: sequenza di blocchi di forme diverse (a seconda del ruolo ricoperto) di istruzioni lette dall’alto verso il basso

  • Codice macchina: codice scritto con un linguaggio di programmazione qualsiasi
  • Pseudocodice: codice scritto in un linguaggio che unisce quello macchina ad un linguaggio più comprensibile (nel nostro caso l’italiano) [noi useremo sempre lo pseudocodice per i nostri algoritmi]

Parole chiave

  • (^) Analizzare un algoritmo : prevedere le risorse che l’algoritmo richiede ▲ (^) Risorse di primaria importanza: tempo di elaborazione ▲ (^) Risorse di secondaria importanza: memoria, larghezza di banda, hardware
  • Efficienza di un algoritmo : si misura in base al tempo di esecuzione
  • Tempo di esecuzione : numero di operazioni primitive (o passi ) che vengono eseguite, scritto in funzione della dimensione dell’input di un algoritmo (dipende da problema che si sta studiando, per la maggior parte dei casi è il numero di elementi dell’input)

Tempo di esecuzione di una riga: costante

Abbiamo 3 tempi di esecuzione:

  • (^) Tempo di esecuzione nel caso migliore
  • (^) Tempo di esecuzione nel caso medio (o tempo di esecuzione previsto)
  • (^) Tempo di esecuzione nel caso peggiore

Il termine algoritmo deriva dal nome del matematico persiano al- Khwarizmi, vissuto nel IX secolo d.C. considerato il padre del concetto di algoritmo

N.B. Solitamente si determina sempre il tempo di esecuzione nel caso peggiore, ovvero il tempo di esecuzione più lungo per qualsiasi input, per diversi motivi:

  1. Il tempo di esecuzione nel caso peggiore è un limite superiore al tempo di esecuzione per qualsiasi input conoscendo questo tempo abbiamo la garanzia che l’algoritmo non potrà impiegare più tempo
  2. Per alcuni algoritmi il caso peggiore si verifica molto spesso
  3. Il “caso medio “spesso è brutto quasi quanto quello peggiore
  • Efficienza asintotica : analisi del tasso di crescita del tempo di esecuzione per input di dimensioni sufficientemente grandi. (Si studia tramite la notazione asintotica o notazione di Landau)

Notazione asintotica o notazione di Landau

Le notazioni usate per descrive il tempo di esecuzione sono definite da funzioni il cui dominio è l’insieme nei numeri naturali (sebbene possano essere applicate anche a numeri reali).

Notazione

Per una data funzione indichiamo con l’insieme delle funzioni

una funzione appartiene all’insieme se esistono delle costanti positive e tali che essa possa essere compresa fra e per un valore sufficientemente grande di. in pratica il tempo di esecuzione di un algoritmo è compreso tra due valori ( caso medio )

Notazione

Per una data funzione indichiamo con l’insieme delle funzioni

una funzione appartiene all’insieme se esiste una costante positiva tale che sia un limite superiore per per un valore sufficientemente grande di. in pratica il tempo di esecuzione di un algoritmo sarà sempre minore di un certo valore ( caso peggiore )

Notazione

Per una data funzione indichiamo con l’insieme delle funzioni

una funzione appartiene all’insieme se esiste una costante positiva tale che sia un limite inferiore per per un valore sufficientemente grande di. in pratica il tempo di esecuzione di un algoritmo sarà sempre maggiore di un certo valore ( caso migliore )