SlideShare a Scribd company logo
1 of 15
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 2010

Stanley B. Lippman, Barbara E. Moo, Josee Lajoie
“C++ Primer”, 5th Edition Addison-Wesley

Prof. Pier Luca Lanzi
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
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
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
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
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: 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
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 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
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 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
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
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

More Related Content

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

Algoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corso
Algoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corsoAlgoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corso
Algoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corsoPier Luca Lanzi
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Actionscript 3 Design Pattern
Actionscript 3 Design PatternActionscript 3 Design Pattern
Actionscript 3 Design Patternluca mezzalira
 
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiAlgoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiPier Luca Lanzi
 
Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...
Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...
Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...Planetek Italia Srl
 

Similar to Algoritmi e Calcolo Parallelo 2012/2013 - Algoritmi e Strutture Dati (8)

Pensiero Orientato Agli Oggetti
Pensiero Orientato Agli OggettiPensiero Orientato Agli Oggetti
Pensiero Orientato Agli Oggetti
 
Algoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corso
Algoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corsoAlgoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corso
Algoritmi e Calcolo Parallelo 2012/2013 - Introduzione al corso
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Actionscript 3 Design Pattern
Actionscript 3 Design PatternActionscript 3 Design Pattern
Actionscript 3 Design Pattern
 
Relaxed FD Discoverer
Relaxed FD DiscovererRelaxed FD Discoverer
Relaxed FD Discoverer
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiAlgoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
 
Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...
Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...
Valorizzare le IDT conformi agli standard OGC® per produrre Linked Open Data ...
 

More from Pier Luca Lanzi

11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i VideogiochiPier Luca Lanzi
 
Breve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiBreve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiPier Luca Lanzi
 
Global Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomeGlobal Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomePier Luca Lanzi
 
Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Pier Luca Lanzi
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...Pier Luca Lanzi
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaPier Luca Lanzi
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Pier Luca Lanzi
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationPier Luca Lanzi
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationPier Luca Lanzi
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningPier Luca Lanzi
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningPier Luca Lanzi
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesPier Luca Lanzi
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationPier Luca Lanzi
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringPier Luca Lanzi
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringPier Luca Lanzi
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringPier Luca Lanzi
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringPier Luca Lanzi
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesPier Luca Lanzi
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsPier Luca Lanzi
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesPier Luca Lanzi
 

More from Pier Luca Lanzi (20)

11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi
 
Breve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiBreve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei Videogiochi
 
Global Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomeGlobal Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning Welcome
 
Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di apertura
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparation
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data exploration
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph mining
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text mining
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rules
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluation
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clustering
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clustering
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clustering
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 Clustering
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensembles
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethods
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rules
 

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

  • 1. Algoritmi e Strutture Dati Algoritmi e Calcolo Parallelo Prof. Pier Luca Lanzi
  • 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. 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. 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. 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. 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. Operazioni su Sequenze (1) Prof. Pier Luca Lanzi 7
  • 8. Operazioni su Sequenze (2) Prof. Pier Luca Lanzi 8
  • 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. Operazioni su Insiemi Prof. Pier Luca Lanzi 10
  • 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. Operazioni su Dizionari Prof. Pier Luca Lanzi 12
  • 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. 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. 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