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


Complessità e algoritmi, Appunti di Informatica

in questi appunti è spiegata la suddivisione della complessità degli algoritmi in spaziale, temporale e asintotica e sono descritte le caratteristiche dei più importanti algoritmi di ordinamento.

Tipologia: Appunti

2022/2023

Caricato il 01/07/2023

sara-saccardi
sara-saccardi 🇮🇹

3 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Complessità e algoritmi di ordinamento
La complessità degli algoritmi si divide in:
TEMPORALE: è il tempo necessario per l’esecuzione dell’algoritmo.
Cresce al crescere delle dimensioni dei dati input. Le istruzioni
possono essere di natura diversa: in virgola mobile, di controllo (es.
gli if) e di accesso alla memoria secondaria e alle periferiche
(es. hard disk esterni).
SPAZIALE: è la memoria necessaria per l’esecuzione
dell’algoritmo.
ASINTOTICA: definisce le risorse usate da un algoritmo al crescere
della dimensione del problema affrontato. Si applica a funzioni
matematiche; si deve quindi trasformare il tempo di esecuzione in
una funzione in funzione della dimensione dei dati input.
n=dimensione dell’input dell’algoritmo; T(n)=tempo impiegato per
l’esecuzione dell’algoritmo; f(n)=una qualsiasi funzione di n.
Possono verificarsi 3 casi: caso migliore, intermedio, peggiore
(richiedono rispettivamente da meno a più operazioni). Solitamente ci si
riferisce al caso peggiore.
Gli algoritmi vengono divisi in classi in base alla loro complessità
temporale asintotica:
a complessità costante O (1) o lineare O (n): sono molto veloci;
a complessità polinomiale O (na): se l’esponente è piccolo;
a complessità esponenziale O (an): se a>1 e l’esponente è molto
piccolo. È considerata quasi inusabile perché richiede troppe
informazioni.
VARI ALGORITMI DI ORDINAMENTO-
Gli algoritmi di ordinamento servono per ordinare una sequenza di
elementi.
1. Il merge sort consiste nel suddividere un problema in sotto-
problemi, risolvere quest’ultimi e ricomporli per ottenere la
soluzione al problema originale. È composto da tre fasi:
divisione
ordinamento
fusione
I due sotto-vettori si ordinano dividendoli fino ad ottenere un solo
elemento, poi vengono riuniti nel processo inverso.
pf2

Anteprima parziale del testo

Scarica Complessità e algoritmi e più Appunti in PDF di Informatica solo su Docsity!

Complessità e algoritmi di ordinamento

La complessità degli algoritmi si divide in:  TEMPORALE : è il tempo necessario per l’esecuzione dell’algoritmo. Cresce al crescere delle dimensioni dei dati input. Le istruzioni possono essere di natura diversa: in virgola mobile, di controllo (es. gli if) e di accesso alla memoria secondaria e alle periferiche (es. hard disk esterni).  SPAZIALE : è la memoria necessaria per l’esecuzione dell’algoritmo.  ASINTOTICA : definisce le risorse usate da un algoritmo al crescere della dimensione del problema affrontato. Si applica a funzioni matematiche; si deve quindi trasformare il tempo di esecuzione in una funzione in funzione della dimensione dei dati input. n =dimensione dell’input dell’algoritmo; T(n) =tempo impiegato per l’esecuzione dell’algoritmo; f(n) =una qualsiasi funzione di n. Possono verificarsi 3 casi : caso migliore , intermedio , peggiore (richiedono rispettivamente da meno a più operazioni). Solitamente ci si riferisce al caso peggiore. Gli algoritmi vengono divisi in classi in base alla loro complessità temporale asintotica:  a complessità costante O (1) o lineare O (n): sono molto veloci;  a complessità polinomiale O (n a ): se l’esponente è piccolo;  a complessità esponenziale O (an): se a>1 e l’esponente è molto piccolo. È considerata quasi inusabile perché richiede troppe informazioni. VARI ALGORITMI DI ORDINAMENTO- Gli algoritmi di ordinamento servono per ordinare una sequenza di elementi.

  1. Il merge sort consiste nel suddividere un problema in sotto- problemi, risolvere quest’ultimi e ricomporli per ottenere la soluzione al problema originale. È composto da tre fasi:  divisione  ordinamento  fusione I due sotto-vettori si ordinano dividendoli fino ad ottenere un solo elemento, poi vengono riuniti nel processo inverso.
  1. Il quick sort consiste nel dividere il vettore in due sotto-vettori che contengono rispettivamente tutti gli elementi maggiori e minori rispetto al primo elemento del vettore detto “ perno ”. Il caso peggiore si verifica quando il perno finisce in fondo/in cima al vettore.
  2. Il selection sort scorre l’array, trova l’elemento più piccolo e lo scambia con quello in posizione i=0. Fatto ciò, incrementa i.
  3. Il bubble sort ad ogni iterazione considera una ad una tutte le possibili coppie di elementi adiacenti, scambiandoli se in ordine errato. L’algoritmo termina quando l’array è ordinato. Tipo di algoritmo Pro Contro Merge sort Prestazioni elevate Complicato da implementare Quick sort Prestazioni elevate Complessità nel caso peggiore = O (n^2 ) Selection sort Semplice da implementare Inefficiente con numero di elementi elevato Bubble sort Semplice da implementare Molto inefficiente