Esercizio. Strutture Dati
|
|
- Ada Borrelli
- 5 anni fa
- Visualizzazioni
Transcript
1 Esercizio Si scriva un metodo public Position<E> sibling(position<e> v) che preso in input un nodo v restituisca il fratello di v. Il metodo dovrà lanciare una BoundaryViolationException nel caso in cui v non abbia un fratello.
2 Code a Priorità E` un contenitore di oggetti ciascun oggetto possiede una chiave (key) che specifica la priorità dell'oggetto all'interno della collezione la chiave viene generalmente assegnata a un elemento nel momento in cui l'elemento viene inserito e può essere successivamente modificata ad ogni istante può essere rimosso soltanto l'elemento con la più alta priorità
3 Code a Priorità Per poter stabilire qual è l'oggetto con la più alta priorità è necessario definire una regola per confrontare le chiavi Come deve essere questa regola? deve rendere possibile il confronto fra ogni coppia di chiavi deve stabilire un ordine all'interno della collezione
4 Code a Priorità Relazione d'ordine è una relazione binaria su un insieme X che è riflessiva, antisimmetrica e transitiva. proprietà riflessiva: k k proprietà antisimmetrica: se k k' e k' k, allora k = k' proprietà transitiva: se k' k'' e k'' k''', allora k' k''' una relazione d'ordine si dice totale se k k' oppure k' k per ciascuna coppia di elementi k,k' in X se su una collezione è definita una relazione d'ordine totale, allora è ben definito il più piccolo valore della collezione (chiave più piccola)
5 Code a Priorità l'adt Coda a Priorità è così definito: E` un contenitore di elementi, ciascun elemento è una coppia (chiave, valore) Metodi principali insert(k,x): inserisce l'elemento con valore x e priorità k removemin() (o extractmin()): restituisce e rimuove un elemento con la più alta priorità, cioè un elemento con chiave minore o uguale di quella di ogni altro elemento
6 Code a Priorità Come fare per tenere traccia dell'associazione valore-chiave? composition pattern: un singolo oggetto (entry) è definito come composizione di altri oggetti chiave valore public interface Entry<K, V> { /** Restituisce la chiave memorizzata in questa entry. */ public K getkey(); /** Restituisce il valore memorizzato in questa entry. */ public V getvalue();
7 Code a Priorità Come confrontare le chiavi in modo da determinare la più piccola? Strategia 1 implementare una diversa coda a priorità per ogni tipo di chiave e per ogni possibile regola di confronto che si vuole usare Inconveniente: non è molto generale, richiede la riscrittura di molto codice simile
8 Code a Priorità Come confrontare le chiavi in modo da determinare la più piccola? Strategia 2 le chiavi sono istanze di una classe key che definisce il modo con cui fare il confronto con un opportuno metodo Inconveniente: non esiste un modo unico per confrontare due chiavi. Ci sono contesti in cui l'esito del confronto può essere diverso sulla stessa coppia di chiavi. Esempio: chiavi 4 e 11: 4 11 se 4 e 11 sono confrontate numericamente; 11 4 se 4 e 11 sono confrontate lessicograficamente;
9 Code a Priorità Come confrontare le chiavi in modo da determinare la più piccola? comparator pattern: invece di basarci sulle chiavi, per stabilire la regola di confronto definiamo un oggetto comparator (esterno alle chiavi): ogni volta che viene costruita una nuova Coda a Priorità, viene fornito un oggetto Comparator la Coda a Priorità dà la possibilità di definire un nuovo Comparator se il precedente diventa obsoleto Vantaggi: si può dare un'implementazione generale di Coda a Priorità che funziona in una grande varietà di contesti
10 ADT Comparator L'ADT Comparator fornisce un meccanismo di confronto basato sul seguente unico metodo: int compare(e a, E b): restituisce un intero i tale che: i < 0 se a < b; i = 0 se a = b; i > 0 se a > b. Si verifica una condizione di errore se a e b non possono essere confrontati java.util.comparator è l'interfaccia che definisce l'adt Comparator
11 ADT Comparator (interfaccia java.util.comparator) L'interfaccia java.util.comparator include anche il seguente metodo: equals() : confronta un comparatore con un altro comparatore
12 Elenco completo dei metodi Metodi generici size() isempty() Metodi di accesso min() Metodi di modifica insert(k,x) removemin()
13 Eccezioni EmptyPriorityQueueException: lanciato se il metodo min o removemin viene chiamato su una Coda a Priorità vuota InvalidKeyException: lanciato se il metodo insert(k,x) viene chiamato con una chiave k non valida che rende impossibile il confronto con il Comparator della Coda a Priorità (k null oppure k è di una classe incompatibile con le classi delle altre chiavi)
14 Interfaccia public interface PriorityQueue<K, V> { public int size(); public boolean isempty(); /** Restituisce senza rimuoverla una entry con chiave minima. */ public Entry<K,V> min() throws EmptyPriorityQueueException; /** Inserisce una coppia key-value e restituisce la entry creata. */ public Entry<K,V> insert(k key, V value) throws InvalidKeyException; /** Rimuove e restituisce una entry con chiave minima. */ public Entry<K,V> removemin() throws EmptyPriorityQueueException;
15 Implementazione con lista non ordinata Gli elementi (k,x) della Coda a Priorità P sono memorizzati in una lista L implementata come lista doppiamente concatenata Caratteristiche: inserimento veloce e cancellazione lenta insert(k,x) richiede tempo O(1) perché possiamo semplicemente creare un nuovo oggetto entry e=(k,x) e usare insertlast(e) min() e removemin() richiedono tempo O(n) perché richiedono lo scorrimento della lista (non ordinata) per determinare l'elemento con chiave minima
16 Implementazione con lista ordinata Gli elementi (k,x) della Coda a Priorità P sono memorizzati in ordine non decrescente di chiavi in una lista L implementata come lista doppiamente concatenata Caratteristiche: Cancellazione veloce e inserimento lento insert(k,x) richiede tempo O(n) perché bisogna inserire il nuovo oggetto entry e=(k,x) nel posto giusto per mantenere l'ordine non decrescente delle chiavi min() e removemin() richiedono tempo O(1) perché la chiave minima è all'inizio della lista
17 Implementazione con lista ordinata import java.util.comparator; public class DefaultComparator<E> implements Comparator<E> { public int compare(e a, E b) throws ClassCastException { return ((Comparable<E>) a).compareto(b);
18 Implementazione con lista ordinata import java.util.comparator; import nodelist.*; import position.*; public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> { protected PositionList<Entry<K,V>> entries; protected Comparator<K> c;... /** Classe interna per le entrate della coda a priorita` */ protected static class MyEntry<K,V> implements Entry<K,V> { protected K k; // chiave protected V v; // valore public MyEntry(K key, V value) { k = key; v = value; // metodi dell'interfaccia Entry public K getkey() { return k; public V getvalue() { return v;
19 Implementazione con lista ordinata public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> {... /** Crea la coda a priorita` con il comparatore di default. */ public SortedListPriorityQueue () { entries = new NodePositionList<Entry<K,V>>(); c = new DefaultComparator<K>(); /** Crea la coda a priorita` con un dato comparatore. */ public SortedListPriorityQueue (Comparator<K> comp) { entries = new NodePositionList<Entry<K,V>>(); c = comp; /** Crea la coda a priorita` con un dato comparatore e una data lista. * Si assume che gli elementi della lista siano in ordine non decrescente.*/ public SortedListPriorityQueue (PositionList<Entry<K,V>> list, Comparator<K> comp) { entries = list; c = comp;...
20 Implementazione con lista ordinata public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> {... /** Setta il comparatore per questa coda a priorita`. IllegalStateException se la coda a p. non e` vuota */ public void setcomparator(comparator<k> comp) throws IllegalStateException { if(!isempty()) throw new IllegalStateException("la coda a priorita` non e` vuota"); c = comp; public int size () {return entries.size(); public boolean isempty () { return entries.isempty();...
21 Implementazione con lista ordinata public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> {... /** Determina se una chiave e` valida. */ protected boolean checkkey(k key) throws InvalidKeyException { boolean result; try { // controlla se la chiave può essere confrontata con sé stessa result = (c.compare(key,key)==0); catch (ClassCastException e) { throw new InvalidKeyException("la chiave non è confrontabile"); return result;...
22 Implementazione con lista ordinata public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> { protected void insertentry(entry<k,v> e) { for (Position<Entry<K,V>> posentry : entries.positions()) if (c.compare(e.getkey(), posentry.element().getkey()) <= 0){ entries.addbefore(posentry, e); return; entries.addlast(e); 13 addbefore
23 Implementazione con lista ordinata public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> { protected void insertentry(entry<k,v> e) { for (Position<Entry<K,V>> posentry : entries.positions()) if (c.compare(e.getkey(), posentry.element().getkey()) <= 0){ entries.addbefore(posentry, e); return; entries.addlast(e); 28 addlast
24 Implementazione con lista ordinata public class SortedListPriorityQueue<K,V> implements PriorityQueue<K,V> { public Entry<K,V> insert (K k, V v) throws InvalidKeyException { checkkey(k);//metodo ausiliario per verificare che una chiave sia valida Entry<K,V> entry = new MyEntry<K,V>(k, v); insertentry(entry); // metodo ausiliario per l'inserimento return entry;
25 Esercizi Completare la classe SortedListPriorityQueue con gli altri metodi: public Entry<K,V> min() throws EmptyPriorityQueueException; public Entry<K,V> removemin() throws EmptyPriorityQueueException; Scrivere una classe UnsortedListPriorityQueue che implementa la Coda a Priorità con una lista non ordinata
26 Esercizio 1 Scrivere un metodo static<e> void PriorityQueueSort(PositionList<E> L, Comparator<E> comp) che prendendo in input una lista di nodi L e un comparatore comp, ordini la lista usando una coda a priorità.
27 Esercizio 2 Scrivere una classe PQStack<E> che implementi l'interfaccia Stack<E> usando una coda a priorità
ADT albero binario completo
ADT albero binario completo Un albero binario completo è un albero binario in cui ogni livello, fino al penultimo, è completamente riempito. L'ultimo livello è riempito da sinistra a destra a 1 nodo b
DettagliImplementazione con alberi binari di ricerca
public class LinkedBinaryTree implements BinaryTree { /** Espande una foglia in un nodo interno con due foglie come figli */ public void expandexternal(position v, E l, E r) throws InvalidPositionException
DettagliTDA Priority Queue. Situazioni concrete. Definizione. Alta priorità come trovarla? Relazione di ordine totale ( ) Le implementazioni che vedremo
TDA Priority Queue TDA Coda a priorità [GT3, cap.7,7.1-7.2] Situazioni concrete La vita è piena di decisioni ognuno ha le sue priorità Ad es., decidere se questo fine settimana studiare, dormire, uscire
DettagliCorso: Strutture Dati Docente: Annalisa De Bonis
Heap Corso: Strutture Dati Docente: Annalisa De Bonis Definizione l Un heap è un albero binario che contiene entrate della forma (key, value) nei suoi nodi e soddisfa le seguenti proprietà: l Heap-Order:
DettagliADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:
Come nella Mappa: un Dizionario è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore. ogni elemento (k,v) viene detto entrata (entry) del Dizionario. chiavi
DettagliIl TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliDefinizione informale
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliDefinizione informale. Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliEsercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati
Esercizio Scrivere una classe ListMap che implementa la mappa con una lista Esercizio Si scriva un metodo public static PositionList preorder(linkedbinarytree T) che preso in
DettagliListe concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:
Liste concatenate Collezione ordinata di nodi head tail next next next next element element element element Ø Anna Carlo Paolo Simona ciascun nodo contiene due riferimenti: - un riferimento "element" a
DettagliIl TDA List è la versione orientata agli oggetti della struttura dati lista. Una sequenza di nodi
List Il TDA List Il TDA List è la versione orientata agli oggetti della struttura dati lista Una sequenza di nodi La versione astratta del nodo sarà il TDA Position Possiamo scrivere dei metodi che prendono
DettagliList. Il TDA List. Interfaccia Position. Il TDA Position. Il TDA List 1. Ancora su Position
Il TDA List List Il TDA List è la versione orientata agli oggetti della struttura dati lista Una sequenza di nodi La versione astratta del nodo sarà il TDA Position Possiamo scrivere dei metodi che prendono
DettagliIl TDA Map. Tabelle hash
Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale
DettagliDefinizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica
Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale
DettagliIl TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash
Il TDA Map Tabelle hash Definizione informale Il TDA Map memorizza coppie formate da una chiave k e da un valore v La coppia è chiamata entry Ogni chiave deve essere unica Questa è la differenza principale
DettagliE` un tipo astratto di dati che supporta tutti i metodi dell'adt Array list e dell'adt Lista di nodi più i seguenti:
E` un tipo astratto di dati che supporta tutti i metodi dell'adt Array list e dell'adt Lista di nodi più i seguenti: Position atindex(int r): restituisce la posizione dell'elemento di indice r; si verifica
DettagliImplementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista
Liste concatenate Implementazione della coda con liste concatenate head (front della coda) tail (rear della coda) Ø e y a x v il front della coda è memorizzato nel primo nodo (head) della lista il rear
DettagliL ADT Priority Queues Implementazione di PQ mediante Sequenza Alberi Heap Heap Sort Adaptable Priority Queues
Priority Queues L ADT Priority Queues Implementazione di PQ mediante Sequenza Alberi Heap Heap Sort Adaptable Priority Queues Chiavi, Priorità, Ordinamento Totale ( 8..) Chiave (key) oggetto assegnato
DettagliImplementazione Java di un ADT
Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice
DettagliSTRUTTURE DATI: OLTRE GLI ARRAY LISTE
STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi
DettagliADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati
ADT Mappa Una mappa è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore ogni elemento (k,v) viene detto entrata (entry) della mappa entrate multiple con la
DettagliAlberi. Albero binario. Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro)
Albero binario Un albero binario è un albero (ordinato) in cui ciascun nodo può avere al massimo due figli (figlio destro e figlio sinistro) albero binario proprio: ogni nodo interno ha esattamente due
DettagliCode a priorità (comparatore) Set Mappe. TDA Priority Queue: def. informale
Oggi rivedremo Code a priorità (comparatore) Set Mappe TDA Priority Queue: def. informale Una coda a priorità (PQ) è un contenitore di elementi, ciascuno dei quali possiede una chiave (tipicamente numerica),
DettagliBinary Search Trees ( 10.1)
Binary Search Trees ( 10.1) Binary Search Trees AVL Trees Multy-ay Search Trees < > 1 4 = (,4) Trees External Searching Red-Black Trees 1 Dictionary ADT (.3) L ADT dizionario (Dictionary ADT) modella una
DettagliIl tipo astratto di dati Node List
Il tipo astratto di dati Node List Tipo di dati e operazioni Tipi di dati: oggetti arbitrari (come al solito) Operazioni: Metodi generici: - integer size() - boolean isempty() Metodi di accesso: - Position
DettagliCode a priorità. Progettazione di Algoritmi Matricole congrue a 1. Docente: Annalisa De Bonis
Code a priorità Progettazione di Algoritmi 2018-19 Matricole congrue a 1 Docente: Annalisa De Bonis 26 Coda a priorità Una coda a priorità è un collezione di elementi a ciascuno dei quali è assegnata una
DettagliAlberi Binari Alberi Binari
Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro
DettagliParte di laboratorio
Ultima lezione Parte di laboratorio Alcuni hints per l implementazione di DecoratedGraph 1 Uso delle Mappe per decorare Sia p la posizione di un nodo. Posso considerare una mappa con chiavi (Object) COLORE,
DettagliUn heap binario è un albero binario con le seguenti caratteristiche:
Heap Un heap binario è un albero binario con le seguenti caratteristiche: È quasi completo: tutti i livelli, tranna al più l ultimo sono completi e le foglie dell ultimo livello sono tutte adossate a sinistra.
DettagliInterfacce. Esempio: interfaccia I con una sola funzione g() public interface I {
Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliLINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR
LINKEDLIST: iteratore Il metodo iterator() restituisce un oggetto iteratore sulla lista per scandire gli elementi in sequenza a partire dall inizio della lista. public Iterator iterator() { return new
Dettaglisemplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente
1 of 23 22/11/2004 10.23 Liste: semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Rappresentazione grafica Lista semplice:
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliEsercizi proposti per il corso di Strutture Dati
Esercizi proposti per il corso di Strutture Dati 2010-2011 Da ricordare: 1. Non modificare il contenitore su cui si invoca il metodo: significa che posso eventualmente modificarlo durante l esecuzione
DettagliProgrammazione 2. Liste Doppiamente Lincate. Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno
Programmazione 2 Liste Doppiamente Lincate Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno .. Liste doppiamente linkate Le liste linkate semplici consentono di scorrere gli elementi soltanto in una direzione,
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliLezione 15 programmazione in Java. Nicola Drago Dipartimento di Informatica Università di Verona
Lezione 15 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO Il modificatore abstract Le classi
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.
DettagliHeap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
DettagliCoda a doppio ingresso (Deque)
Coda a doppio ingresso (Deque) Definizione informale Una coda a doppio ingresso o Deque è un TDA simile alla Coda che supporta inserimenti e cancellazioni ad entrambe le estremità Deque si pronuncia deck
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
DettagliMetodi di una Collection
Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare
DettagliCoda a doppio ingresso (Deque)
Coda a doppio ingresso (Deque) Definizione informale Una coda a doppio ingresso o Deque è un TDA simile alla Coda che supporta inserimenti e cancellazioni ad entrambe le estremità Deque si pronuncia deck
Dettaglilezione 9 min-heap binario Heap e Alberi posizionali generali
lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato
DettagliProgrammazione in Java Parte II
Programmazione in Java Parte II Lezione 7 Dott. Marco Faella Il Java Collection Framework Java Collection Framework (JCF) è una parte della libreria standard dedicata alle collezioni, intese come classi
Dettagliheap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata
heap heap concetti ed applicazioni heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. tutte le foglie sono a sinistra ma non è un BST!! 3. ogni nodo contiene una chiave maggiore
DettagliOrario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati
Orario delle lezioni LABORATORIO martedì 15.00-18.00 TEORIA mercoledì 16.00 18.00 lab Turing aula P/4 Libro di testo Data Structures & Algorithms in Java Michael T. Goodrich Roberto Tamassia John Wiley
DettagliFondamenti di Informatica T-1
Fondamenti di Informatica T-1 Interfaccia Comparable e Collezioni Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 22 Interfaccia
DettagliTDA Position (TDA List Sequence)
TDA Position (TDA List Sequence) [GT3, 5.3] TDA Position: motivazione Vediamo se e come è possibile definire qualcosa che ci permetta di accedere ai nodi in tempo costante (quasi come in un array ) conservando
DettagliDati e Algoritmi 1: A. Pietracaprina. Priority Queue (I Parte)
Dati e Algoritmi 1: A. Pietracaprina Priority Queue (I Parte) 1 Nozione di Entry Definizione Una Entry è una coppia (chiave, valore), dove la chiave proviene da un dominio K e il valore da un dominio V.
DettagliTipi di dati astratti
Tipi di dati astratti ADT 1 Dati strutturati e algoritmi Una struttura di dati è un insieme di regole per organizzare e manipolare dei dati Un algoritmo è un procedimento composto in passi elementari in
DettagliL' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi)
L' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi) le informazioni possono essere memorizzate sia sui vertici sia sugli archi del grafo Metodi fondamentali
Dettaglitipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
Dettagliheap concetti ed applicazioni
heap concetti ed applicazioni ADT coda di priorità operazioni getfirst restituisce l'elemento nella struttura con massima priorità deletefirst cancella l'elemento nella struttura con massima priorità insert
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliSET: specifica INTRODUZIONE. SET: esempio Si stampano i numeri casuali in ordine di generazione e il contenuto dell insieme.
INTRODUZIONE Il tipo di dati astratto insieme (set) definisce operazioni, quali inserimento e rimozione, su collezioni di oggetti che presentano molteplicità uno, cioè non sono ammessi duplicati. Una possibile
DettagliInformatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda
Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema
DettagliSOMMARIO STACK. STACK: specifica STACK
SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).
DettagliFondamenti di Informatica T1 Interfaccia Comparable Collezioni
Fondamenti di Informatica T1 Interfaccia Comparable Collezioni Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 19 Interfaccia Comparable Fa
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
DettagliImplementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
DettagliOLTRE LE CLASSI OLTRE LE CLASSI
OLTRE LE CLASSI Nella sua parte non statica, una classe fornisce la definizione di un ADT parte visibile esternamente (public) implementazione dati privati, protetti, o visibili nel package metodi privati,
Dettaglisemplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente
Liste doppie Liste: semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Rappresentazione grafica semplice: doppia: Gli
DettagliGerarchie e polimorfismo: liste
Gerarchie e polimorfismo: liste 1 Generalizzare le liste di interi List lista di oggetti non modificabile vorremo poi definire un sottotipo versione ordinata 2 List classe astratta usate i sottotipi per
DettagliAlberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica
Il TDA Tree Alberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero
DettagliLe liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo?
Liste Linkate Le liste con array Volendo usare una metafora, l implementazione delle liste tramite array è come infilare le perle (gli oggetti della lista) in un filo di lunghezza predefinita. E chiaro
DettagliOLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI. Alcune domande. Nella sua parte non statica, una classe
Nella sua parte non statica, una classe fornisce la definizione di un ADT parte visibile esternamente (public) implementazione dati privati, protetti, o visibili nel package metodi privati, protetti, o
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Argomenti Strutture dati elementari e loro implementazioni in Java: Vettori Liste Stack (Pile) Queue (Code) Esempi di applicazione Tipo di dato astratto Tipo di dato astratto
DettagliProva d Esame Compito A
Prova d Esame 19.04.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliRichiami Java e Arrays
Richiami Java e Arrays concetti base G.T. 1 casting G.T. 1.3.3 e 2.5 uso array G.T. 3.1 lista semplice G.T. 3.2 1 Concetti base Oggetto istanza (di una classe) classe (tipo di un oggetto) variabili di
DettagliESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:
ESERCIZI JAVA Esercizi sulle Interfacce Esercizio 1: Java mette a disposizione un'interfaccia chiamata Comparable. Quando un oggetto implementa questa interfaccia esso può implementare un metodo chiamato
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
Dettaglilezione 5 Tipo di dato Lista Liste
lezione 5 Liste Tipo di dato Lista Una lista permette di memorizzare dati in maniera sequenziale e permette di inserire, accedere e cancellare dati in posizioni arbitrarie (non come nel caso di pile e
DettagliBank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...
Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)
DettagliAlgoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni
DettagliLe liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5
Le liste ADT e strutture dati per la rappresentazione di sequenze L ADT delle liste Una lista di valori di tipo A è una sequenza finita: a1, a2, L, an dove ai A, per ogni i valore lunghezza posizione L
DettagliGerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1
Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per
DettagliSOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. TIPI DI DATI ASTRATTI. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as.
SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as. Confronto tra oggetti: Equals(). IComparable. IComparer. TIPI DI DATI ASTRATTI
DettagliEsercitazione su Albero Binario
Esercitazione su Albero Binario Costruzione iteratore nel preordine Costruzione albero simmetrico Attraversamento per livelli dell albero Costruttore di copia dell albero Esercitazione su Albero Binario
DettagliLe liste. Le liste linkate
Le liste Le liste linkate Molto spesso bisogna gestire insiemi di oggetti dello stesso tipo. Un modo molto semplice per tenere in memoria tali insiemi consiste nel creare un array per contenerli. Nome
DettagliAlberi. Definizioni principali
Definizioni principali Un albero è una struttura dati che contiene oggetti organizzati gerarchicamente (a differenza della lista di nodi, dell'array list, i cui elementi sono organizzati linearmente) radice
DettagliArray. Walter Didimo
Array Walter Didimo Un problema ricorrente Gli strumenti di programmazione che abbiamo visto sin qui non sono ancora sufficienti per risolvere tutti i problemi di base Consideriamo ad esempio il seguente
DettagliProva d Esame Compito A
Prova d Esame 19.07.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliLaboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Templates C++ ed Alberi di Ricerca
Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006 Templates C++ ed Alberi di Ricerca Marco Antoniotti Laboratorio Comunicazioni di servizio Da settimana prossima di venerdì 12, 19 e 26 1
DettagliEsercizio: Lista Circolare
Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.
DettagliInserimento in una lista ordinata
Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA7 B3 Gestione di una coda 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Tecnica di allocazione dinamica Concetto di coda e operazioni relative
DettagliCloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this
Clonazione Importante esempio di eccezione controllata è CloneNotSupportedException che può essere lanciata dal metodo nativo clone() della classe Object. La dichiarazione di clone() è la seguente: protected
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 09 ADT: Lista, Pila, Coda A. Miola Marzo 2007 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti Tipo
DettagliAlberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza
Alberi binari e di ricerca Introduzione L esercitazione corrente riguarda problemi su alberi binari semplici e di ricerca. 1. Nella prima parte vengono proposti esercizi da svolgere mediante le classi
DettagliBilanciamento Alberi Binari di Ricerca
Bilanciamento Alberi Binari di Ricerca G.T. 0.. e 0.. Alberi AVL (Adel'son-Vel'skii-Landis) Alberi Binari di Ricerca Albero Binario di Ricerca DEFINIZIONE: è un albero binario proprio ad ogni nodo interno
DettagliCorso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione
Domanda n. 1 Corso: Fondamenti di Informatica (Canale 5) a.a. 2016-17 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab10 Argomento: Algoritmi e complessita'
DettagliProva d Esame Compito A
Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliProgrammazione ad Oggetti Modulo A (Esame del 9/1/2015)
Programmazione ad Oggetti Modulo A (Esame del 9/1/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A public void m( int x ) System.out.println("A.m:" + x); public void m( double x )
Dettagli