Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Strutture dati per insiemi disgiunti
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 19 - Tecniche risolutive per problemi intrattabili Alberto Montresor Università di Trento This.
Argomenti della lezione
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Strutture dati lineari
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
G. Mecca – – Università della Basilicata Basi di Dati Progettazione di Basi di Dati: Introduzione versione 2.0 Questo lavoro è concesso.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Concetti Fondamentali versione.
Tecnologie di Sviluppo per il Web
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Programmazione Procedurale in Linguaggio C++
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Il problema del dizionario
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
Astrazioni sul controllo Iteratori. 2 Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di.
Algoritmi e Strutture Dati IV. Heap e Code di Priorità
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Il Linguaggio C.
Java Collections.
UN SEMPLICE PIANO DI MARKETING
RICERCA DI MERCATO PER NON ADDETTI
Strutture dati per insiemi disgiunti
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Note di comunicazione business to business A cura di Bonucchi & Associati srl Questo documento è di supporto a una presentazione verbale. I contenuti potrebbero.
MODELLO LOGICO DEI DATI
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Lanalisi di settore a cura di Bonucchi & Associati srl Questo documento è di supporto a una presentazione verbale. I contenuti potrebbero non essere correttamente.
CALCOLO DEL TERMINE INCOGNITO
Le opportunità di marketing per le PMI offerte dal web 2.0 a cura di Bonucchi e associati Srl Questo documento è di supporto a una presentazione verbale.
Alberi CORDA – Informatica A. Ferrari Testi da
Esempi di posizionamento prodotti
Algoritmi e Strutture Dati
Programmazione Procedurale in Linguaggio C++
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Algoritmi e Strutture Dati Strutture Dati Elementari.
Gestione della memoria
Logica binaria Moreno Marzolla
Programmazione Procedurale
Transcript della presentazione:

Algoritmi e Strutture Dati Capitolo 3 - Tipi di dato e strutture di dati Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. © Alberto Montresor

Forniti direttamente dal linguaggio Introduzione 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 dato primitivi Forniti direttamente dal linguaggio Esempi: int (+,-,*,/, %), boolean (!, &&, ||) © Alberto Montresor

“Specifica” e “implementazione” di un tipo di dato astratto Tipi di dati “Specifica” e “implementazione” di un tipo di dato astratto Specifica: “manuale d'uso”, nasconde i dettagli implementativi all'utilizzatore Implementazione: realizzazione vera e propria Esempi Numeri reali vs IEEE754 Pile vs Pile basate su vettori, Pile basate su puntatori java.util.Map vs java.util.TreeMap © Alberto Montresor

I dati sono spesso riuniti in insiemi detti strutture di dati Strutture dati I dati sono spesso 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 Una struttura di dati è composta quindi da: un modo sistematico di organizzare i dati un insieme di operatori che permettono di manipolare la struttura Alcune tipologie di strutture di dati: lineari / non lineari (presenza di una sequenza) statiche / dinamiche (variazione di dimensione, contenuto) omogenee / disomogenee (dati contenuti) © Alberto Montresor

Contenente elementi generici (Item), potenzialmente anche duplicati Sequenza Caratteristiche: Dinamica e lineare Contenente elementi generici (Item), potenzialmente anche duplicati Ordine all’interno della sequenza è importante Interfaccia E’ possibile aggiungere / togliere elementi, specificando la posizione s = s1, s2, ..., sn L’elemento si è in posizione posi Esistono le posizioni (fittizie) pos0, posn+1 E’ possibile accedere direttamente ad alcuni elementi (testa / coda) E’ possibile accedere sequenzialmente a tutti gli altri elementi © Alberto Montresor

Sequenza © Alberto Montresor

Sequenza © Alberto Montresor

Struttura dati “generale”: insieme dinamico Insiemi (Set) 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 © Alberto Montresor

Insiemi dinamici © Alberto Montresor

Dizionari (Dictionary o Map) Il dizionario rappresenta il concetto matematico di relazione univoca Relazione 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 inserire una nuova associazione chiave- valore, cancellando eventuali associazioni precedenti; rimuovere un’associazione chiave-valore esistente © Alberto Montresor

Dizionari © Alberto Montresor

è formato da un insieme finito di elementi detti nodi Alberi e grafi Un albero ordinato è formato da un insieme finito di elementi detti 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 Operazioni Visita: ispezione completa di tutti i nodi di un albero o di un grafo Specifica completa più avanti © Alberto Montresor

Le specifiche viste finora possono essere arricchite: Discussione 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 © Alberto Montresor

Alcune realizzazioni sono “naturali” Sequenza ↔ lista Realizzazione 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 © Alberto Montresor