Algoritmi e Strutture Dati
Algoritmi e Calcolo Parallelo

Prof. Pier Luca Lanzi
Riferimenti

•

•

2

Bertossi Alan A., Montresor Alberto. “Algoritmi e
strutture di dati” (seconda edizione), CittàStudi ...
Tipo di Dato Astratto

•
•

•

3

Dato
In un linguaggio di programmazione, un dato è un
valore che una variabile può assum...
Tipi di Dati Astratti

•

•
•
•

4

Sono definiti da due parti: la specifica e l’implementazione
La specifica è il manuale...
Strutture Dati

•

5

I dati sono riuniti in insiemi detti strutture di dati
Sono particolari tipi di dato, caratterizzati...
Sequenza

•

6

Struttura di dati
Dinamica e lineare
Contenente elementi generici (Item), potenzialmente anche
duplicati
O...
Operazioni su Sequenze (1)

Prof. Pier Luca Lanzi

7
Operazioni su Sequenze (2)

Prof. Pier Luca Lanzi

8
Insiemi

•

9

Struttura dati “generale”: insieme dinamico
Può crescere, contrarsi, cambiare contenuto
Operazioni base: in...
Operazioni su Insiemi

Prof. Pier Luca Lanzi

10
Dizionari

•
•

•

11

Il dizionario rappresenta una relazione univoca R : D → C
Insieme D è il dominio (elementi detti ch...
Operazioni su Dizionari

Prof. Pier Luca Lanzi

12
Alberi e Grafi

•

13

Un albero ordinato
Un insieme finito di “nodi”
Un nodo particolare è designato
come radice
I rimane...
Discussione

•

•
•

14

Le specifiche viste finora possono essere arricchite
Operatori min() e max() nel tipo di dato Set...
Implementazione

•
•

•

15

Alcune realizzazioni sono “naturali”
Sequenza ↔ lista
Albero astratto ↔ albero basato su punt...
Upcoming SlideShare
Loading in …5
×

Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati

467 views

Published on

Slide del corso di Algoritmi e Calcolo Parallelo per il corso di laurea magistrale in Ingegneria Matematica 2012/2013 - Politecnico di Milano

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
467
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati

  1. 1. Algoritmi e Strutture Dati Algoritmi e Calcolo Parallelo Prof. Pier Luca Lanzi
  2. 2. Riferimenti • • 2 Bertossi Alan A., Montresor Alberto. “Algoritmi e strutture di dati” (seconda edizione), CittàStudi 2010 Stanley B. Lippman, Barbara E. Moo, Josee Lajoie “C++ Primer”, 5th Edition Addison-Wesley Prof. Pier Luca Lanzi
  3. 3. Tipo di Dato Astratto • • • 3 Dato In un linguaggio di programmazione, un dato è un valore che una variabile può assumere  Tipo di dato astratto Un modello matematico, dato da una collezione di valori e un insieme di operazioni ammesse su questi valori  Tipi di dati primitivi Forniti direttamente dal linguaggio Esempi: int (+,-,*,/, %), boolean (!, &&, ||)   Prof. Pier Luca Lanzi
  4. 4. Tipi di Dati Astratti • • • • 4 Sono definiti da due parti: la specifica e l’implementazione La specifica è il manuale d'uso, nasconde i dettagli implementativi all'utilizzatore L’implementazione è la realizzazione vera e propria Esempi Numeri reali (la specifica) – IEEE754 (l’implementazione) Grafi (la specifica) – matrici d’adiacenza (l’implementazione)   Prof. Pier Luca Lanzi
  5. 5. Strutture Dati • 5 I dati sono riuniti in insiemi detti strutture di dati Sono particolari tipi di dato, caratterizzati più dall'organizzazione dei dati più che dal tipo dei dati stessi Il tipo dei dati contenuti può essere addirittura parametrico Esempio: un vettore di interi, un vettore di stringhe    • • Una struttura di dati è composta da Un modo sistematico di organizzare i dati Un insieme di operatori che permettono di manipolare la struttura   Tipologie di strutture di dati: Lineari / non lineari (presenza di una sequenza) Statiche / dinamiche (variazione di dimensione, contenuto) Omogenee / disomogenee (dati contenuti)    Prof. Pier Luca Lanzi
  6. 6. Sequenza • 6 Struttura di dati Dinamica e lineare Contenente elementi generici (Item), potenzialmente anche duplicati Ordine all’interno della sequenza è importante    • Interfaccia È possibile aggiungere / togliere elementi, specificando la posizione s = s1, s2, ..., sn L’elemento si è in posizione posi Esistono le posizioni (fittizie) pos0, posn+1 È possibile accedere direttamente ad alcuni elementi (testa / coda) È possibile accedere sequenzialmente a tutti gli altri elementi      Prof. Pier Luca Lanzi
  7. 7. Operazioni su Sequenze (1) Prof. Pier Luca Lanzi 7
  8. 8. Operazioni su Sequenze (2) Prof. Pier Luca Lanzi 8
  9. 9. Insiemi • 9 Struttura dati “generale”: insieme dinamico Può crescere, contrarsi, cambiare contenuto Operazioni base: inserimento, cancellazione, verifica contenimento Il tipo di insieme (= struttura) dipende dalle operazioni    • Elementi Elemento: oggetto “puntato” da un riferimento/puntatore Composto da: campo chiave di identificazione, dati satellite, campi che fanno riferimento ad altri elementi dell'insieme   Prof. Pier Luca Lanzi
  10. 10. Operazioni su Insiemi Prof. Pier Luca Lanzi 10
  11. 11. Dizionari • • • 11 Il dizionario rappresenta una relazione univoca R : D → C Insieme D è il dominio (elementi detti chiavi) Insieme C è il codominio (elementi detti valori)   Associazione chiave-valore Operazioni ammesse: Ottenere il valore associato ad una particolare chiave (se presente), o nil altrimenti Inserire una nuova associazione chiave-valore, cancellando eventuali associazioni precedenti; Rimuovere un’associazione chiave-valore esistente    Prof. Pier Luca Lanzi
  12. 12. Operazioni su Dizionari Prof. Pier Luca Lanzi 12
  13. 13. Alberi e Grafi • 13 Un albero ordinato Un insieme finito di “nodi” Un nodo particolare è designato come radice I rimanenti nodi, se esistono, sono partizionati in insiemi ordinati e disgiunti, anch’essi alberi ordinati Grafi Insiemi di nodi e archi che connettono i nodi    • •  Operazione tipica è la visita o ispezione completa di tutti i nodi Prof. Pier Luca Lanzi
  14. 14. Discussione • • • 14 Le specifiche viste finora possono essere arricchite Operatori min() e max() nel tipo di dato Set, se esiste ordinamento totale Concetti di insieme e dizionario sono collegati Insieme delle chiavi/insieme dei valori Scorrere tutte le chiavi   Prof. Pier Luca Lanzi
  15. 15. Implementazione • • • 15 Alcune realizzazioni sono “naturali” Sequenza ↔ lista Albero astratto ↔ albero basato su puntatori Esistono tuttavia realizzazioni alternative Insieme come vettore booleano Albero come vettore dei padri La scelta della struttura di dati ha riflessi sull’efficienza e sulle operazioni ammesse Dizionario come hash table: lookup in tempo O(1), ma niente ordinamento Dizionario come albero: lookup in tempo O(log n), con ordinamento       Prof. Pier Luca Lanzi

×