ADT albero binario completo
|
|
- Marina Rostagno
- 5 anni fa
- Visualizzazioni
Transcript
1 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 c 2 nodi livelli completamente riempiti: contengono il massimo numero possibile di nodi d e f g h i l m n 4 nodi l'ultimo livello può contenere un numero di nodi inferiore al massimo possibile, ma deve essere riempito da sinistra a destra
2 ADT albero binario completo L'ADT albero binario completo è un caso speciale dell'adt albero binario a b c d e f g ultimo nodo Metodi aggiuntivi: h i l m n add(e): aggiunge e restituisce un nuovo nodo esterno (foglia) v che memorizzerà l'elemento e in modo tale che il risultante albero sia un albero binario completo avente v come ultimo nodo remove(): rimuove l'ultimo nodo dell'albero restituendo il suo elemento
3 ADT albero binario completo Relativamente all'operazione di add si possono verificare sostanzialmente due casi: CASO 1 (ultimo livello non pieno) a a b c b c d e d e f
4 ADT albero binario completo Relativamente all'operazione di add si possono verificare sostanzialmente due casi: CASO 2 (ultimo livello pieno) a a b c b c d e f g d e f g h
5 ADT albero binario completo Interfaccia public interface CompleteBinaryTree<E> extends BinaryTree<E> { public Position<E> add(e elem); } public E remove();
6 ADT albero binario completo Implementazione con arraylist Tutti i nodi dell'albero binario completo sono memorizzati in un array list A a la radice è memorizzata all'indice 1 b c per ogni nodo v memorizzato all'indice i: d e f g - il suo figlio sinistro è memorizzato all'indice 2i - il suo figlio destro è memorizzato all'indice 2i + 1 h i l m n a b c d e f g h i l m n l'ultimo nodo è memorizzato in A[n] i 2i 2i+1
7 ADT albero binario completo Implementazione con arraylist a le operazioni di add e remove richiedono tempo O(1) viene coinvolto solo l'ultimo elemento dell'arraylist b c d e f g h i l m n a b c d e f g h i l m n i 2i 2i+1
8 ADT albero binario completo Implementazione con arraylist a le operazioni di add e remove richiedono tempo O(1) viene coinvolto solo l'ultimo elemento dell'arraylist b c d e f g h i l m n o a b c d e f g h i l m n o i 2i 2i+1
9 ADT albero binario completo Implementazione con arraylist a b c d e f g le operazioni di add e remove richiedono tempo O(1) viene coinvolto solo l'ultimo elemento dell'arraylist in caso venga usato un arraylist estensibile, si può dimostrare che le operazioni di add e remove richiedono O(1) in tempo ammortizzato h i l m n o a b c d e f g h i l m n o i 2i 2i+1
10 ADT albero binario completo Implementazione con arraylist public class ArrayListCompleteBinaryTree<E> implements CompleteBinaryTree<E> { protected IndexList<BTPos<E>> T; // indexed list of tree positions protected static class BTPos<E> implements Position<E> { E element; int index; // indice di questa posizione nell'array list public BTPos(E elt, int i) { element = elt; index = i; } public E element() { return element; } public int index() { return index; } public E setelement(e elt) { E temp = element; element = elt; return temp; } public String tostring() { return("[" + element + "," + index + "]"); } }...
11 ADT albero binario completo Implementazione con arraylist public ArrayListCompleteBinaryTree() { T = new ArrayIndexList<BTPos<E>>(); T.add(0, null); // the location at rank 0 is deliberately empty } /** Returns the number of (internal and external) nodes. */ public int size() { return T.size() - 1; } /** Returns whether the tree is empty. */ public boolean isempty() { return (size() == 0); } /** Returns whether v is an internal node. */ public boolean isinternal(position<e> v) throws InvalidPositionException { return hasleft(v); // if v has a right child it will have a left child } /** Returns whether v is an external node. */ public boolean isexternal(position<e> v) throws InvalidPositionException { return!isinternal(v); } /** Returns whether v is the root node. */ public boolean isroot(position<e> v) throws InvalidPositionException { BTPos<E> vv = checkposition(v); return vv.index() == 1; }...
12 ADT albero binario completo Implementazione con arraylist public boolean hasleft(position<e> v) throws InvalidPositionException { BTPos<E> vv = checkposition(v); return 2*vv.index() <= size(); } /** Returns whether v has a right child. */ public boolean hasright(position<e> v) throws InvalidPositionException { BTPos<E> vv = checkposition(v); return 2*vv.index() + 1 <= size(); } /** Returns the root of the tree. */ public Position<E> root() throws EmptyTreeException { if (isempty()) throw new EmptyTreeException("Tree is empty"); return T.get(1); } /** Returns the left child of v. */ public Position<E> left(position<e> v) throws InvalidPositionException, BoundaryViolationException { if (!hasleft(v)) throw new BoundaryViolationException("No left child"); BTPos<E> vv = checkposition(v); return T.get(2*vv.index()); }...
13 ADT albero binario completo Implementazione con arraylist public Position<E> right(position<e> v) throws InvalidPositionException { if (!hasright(v)) throw new BoundaryViolationException("No right child"); BTPos<E> vv = checkposition(v); return T.get(2*vv.index() + 1); } /** Returns the parent of v. */ public Position<E> parent(position<e> v) throws InvalidPositionException, BoundaryViolationException { if (isroot(v)) throw new BoundaryViolationException("No parent"); BTPos<E> vv = checkposition(v); return T.get(vv.index()/2); } /** Returns an iterable collection of the children of v. */ public Iterable<Position<E>> children(position<e> v) throws InvalidPositionException { PositionList<Position<E>> children = new NodePositionList<Position<E>>(); if (hasleft(v)) children.addlast(left(v)); if (hasright(v)) children.addlast(right(v)); return children; }
14 ADT albero binario completo Implementazione con arraylist public Iterable<Position<E>> positions() { PositionList<Position<E>> positions = new NodePositionList<Position<E>>(); for (int i =1; i < T.size(); i++) positions.addlast(t.get(i)); return positions; } /** Replaces the element at v. */ public E replace(position<e> v, E o) throws InvalidPositionException { BTPos<E> vv = checkposition(v); return vv.setelement(o); } /** Adds an element just after the last node (in a level numbering). */ public Position<E> add(e e) { int i = size() + 1; BTPos<E> p = new BTPos<E>(e,i); T.add(i, p); return p; } /** Removes and returns the element at the last node. */ public E remove() throws EmptyTreeException { if(isempty()) throw new EmptyTreeException("Tree is empty"); return T.remove(size()).element(); }...
15 ADT albero binario completo Esercizi Completare l'implementazione con i restanti metodi e aggiungere il metodo public Position<E> sibling(position<e> v) che prende in input un nodo e restituisce il suo fratello.
16 Heap Un heap è un albero binario che memorizza una collezione di entrate nei suoi nodi e che soddisfa le due seguenti proprietà: 1) (proprietà di ordinamento) ogni nodo diverso dalla radice memorizza un elemento la cui chiave è maggiore o uguale di quella del suo padre; 2) (proprietà strutturale) in ogni livello dell'albero c'è il massimo numero di nodi possibile, tranne che nell'ultimo 3 che è riempito da sinistra a destra, cioè deve essere un albero binario completo. 5 4 Tutte le foglie sono addossate a sinistra
17 Altezza di un heap Qual è il massimo numero di nodi di un heap di altezza h? h h =2 h 1 1
18 Altezza di un heap Qual è il minimo numero di nodi di un heap di altezza h? h h 1 1=2 h 1 1=2 h
19 Altezza di un heap Quindi: 2 h n 2 h 1 1 log n 1 1 h log n h = log n h h-1 Un heap con n entrate ha altezza h = log n
20 ADT Coda a Priorità 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;
21 ADT Coda a Priorità Implementazione con heap L'ADT coda a priorità può essere implementato efficientemente con un heap. L'implementazione basata su heap consiste dei seguenti elementi: un heap, cioè un albero binario completo che memorizza nei suoi nodi entrate (chiave,valore) le cui chiavi soddisfano la proprietà di ordinamento dell'heap un comparatore, cioè un oggetto che definisce una relazione d'ordine totale tra le chiavi
22 ADT Coda a Priorità Implementazione con heap Inserimento di una nuova entrata con chiave
23 ADT Coda a Priorità Implementazione con heap Inserimento di una nuova entrata con chiave 4 1) eseguiamo prima un'operazione di add che preserva la proprietà di albero binario completo ma non quella di ordinamento
24 ADT Coda a Priorità Implementazione con heap Inserimento di una nuova entrata con chiave 4 1) eseguiamo prima un'operazione di add che preserva la proprietà di albero binario completo ma non quella di ordinamento 2) continuiamo a scambiare l'entrata del nuovo nodo z con quella di suo padre u fino a che chiave(z) chiave(u)
25 ADT Coda a Priorità Implementazione con heap Inserimento di una nuova entrata con chiave 4 1) eseguiamo prima un'operazione di add che preserva la proprietà di albero binario completo ma non quella di ordinamento 2) continuiamo a scambiare l'entrata del nuovo nodo z con quella di suo padre u fino a che chiave(z) chiave(u)
26 ADT Coda a Priorità Implementazione con heap Inserimento di una nuova entrata con chiave 4 1) eseguiamo prima un'operazione di add che preserva la proprietà di albero binario completo ma non quella di ordinamento 2) continuiamo a scambiare l'entrata del nuovo nodo z con quella di suo padre u fino a che chiave(z) chiave(u)
27 ADT Coda a Priorità Implementazione con heap Inserimento di una nuova entrata con chiave 4 nel caso pessimo si eseguono un numero di swap pari all'altezza dell'albero, cioè log n
28 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin)
29 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) 1) copiamo l'entrata e dell'ultimo nodo nella radice
30 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) 1) copiamo l'entrata e dell'ultimo nodo nella radice 2) cancelliamo l'ultimo nodo
31 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) 1) copiamo l'entrata e dell'ultimo nodo nella radice 2) cancelliamo l'ultimo nodo 3) continuiamo a scambiare l'entrata e nel nodo u con quella del figlio di u avente la più piccola chiave fino a che la proprietà di ordinamento non verrà ristabilita
32 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) 1) copiamo l'entrata e dell'ultimo nodo nella radice 2) cancelliamo l'ultimo nodo 3) continuiamo a scambiare l'entrata e nel nodo u con quella del figlio di u avente la più piccola chiave fino a che la proprietà di ordinamento non verrà ristabilita
33 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) 1) copiamo l'entrata e dell'ultimo nodo nella radice 2) cancelliamo l'ultimo nodo 3) continuiamo a scambiare l'entrata e nel nodo u con quella del figlio di u avente la più piccola chiave fino a che la proprietà di ordinamento non verrà ristabilita
34 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) 1) copiamo l'entrata e dell'ultimo nodo nella radice 2) cancelliamo l'ultimo nodo 3) continuiamo a scambiare l'entrata e nel nodo u con quella del figlio di u avente la più piccola chiave fino a che la proprietà di ordinamento non verrà ristabilita
35 ADT Coda a Priorità Implementazione con heap Rimozione (RemoveMin) nel caso pessimo si eseguono un numero di swap pari all'altezza dell'albero, cioè log n
36 ADT Coda a Priorità Implementazione con heap Operazione Complessità size, isempty O(1) min O(1) insert O(log n) removemin O(log n)
Alberi. 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
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:
DettagliAlbero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java
Laboratorio Java Albero Binario GT 7.3 Esercitazione Sono dati : interfacce di Positio, Tree, e BinaryTree; il file TestLinkedBinaryTree.java e i file.class che implementano le interfacce www.dei.unipd.it/corsi/fi2ae
DettagliEsercizio. Strutture Dati
Esercizio Si scriva un metodo public Position sibling(position v) che preso in input un nodo v restituisca il fratello di v. Il metodo dovrà lanciare una BoundaryViolationException nel caso in cui
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
DettagliAlberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica
Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,
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.
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
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
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
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
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
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
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
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
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
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
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
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
DettagliAlberi binari ( 7.3)
Alberi binari ( 7.3) + a 3 b Albero Binario ( 7.3) DEFINIZIONE Albero Binario è un albero ordinato in cui ogni nodo ha al più due figli. Un albero binario si dice proprio se ogni nodo ha o zero o figli
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
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
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
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
DettagliIMPLEMENTAZIONE DI UN ALBERO AVL
IMPLEMENTAZIONE DI UN ALBERO AVL Dedichiamoci ora all implementazione dei dettagli ed all analisi dell ADT Dizionario costruito tramite un albero di ricerca AVL. Le operazioni di inserimento e rimozione
DettagliAlbero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata
Il TDA BinaryTree Albero Binario A B C D E F G Albero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata I figli di un nodo vengono chiamati figlio sinistro e figlio
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
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
DettagliADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:
Ordered search table Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: possiamo memorizzare le entrate di D in un array list S in ordine non decrescente di chiavi:
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Esercitazione 7 Domenico Fabio Savo 1 Esercitazione: heap Abbiamo visto come utilizzare i MAX-HEAP nell'algoritmo di ordinamento heapsort che permette di ordinare un array di
DettagliProblemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
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
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
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
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
DettagliDato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche:
Heapsort Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche: T(n) = O(n log(n)) Alg. Ordinamento ottimale Ordina in loco (niente
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
DettagliInterfaccia del TDA albero
Interfaccia del T albero ublic interface Tree { ublic int size(); ublic boolean isemty(); ublic Iterator elements(); ublic Iterator ositions() ublic Object relace(v,e) throws InvalidPositionExcetion; ublic
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.
DettagliInformatica 3. LEZIONE 17: Alberi generici. Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza
Informatica 3 LEZIONE 17: Alberi generici Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza Informatica 3 Lezione 17 - Modulo 1 Definizione e ADT Introduzione
DettagliDati e Algoritmi 1: A. Pietracaprina. Alberi Binari
Dati e Algoritmi 1: A. Pietracaprina Alberi Binari 1 Definizione Un alberto binario T è un albero ordinato in cui Nota ogni nodo interno ha 2 figli ogni nodo non radice è etichettato come figlio sinistro
DettagliEsercitazione 3. Heapsort
Esercitazione Heapsort Heapsort Algoritmo di ordinamento che utilizza una struttura dati detta heap per la gestione delle informazioni Tempo di esecuzione O(n lg n) Heap (binario) = struttura dati composta
DettagliLaboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione con Vettori Implementazione con Strutture Collegate Concetti
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
DettagliDati e Algoritmi 1: A. Pietracaprina. Alberi Generali
Dati e Algoritmi 1: A. Pietracaprina Alberi Generali 1 Alexander Calder, Arc of Petals, 1941. Peggy Guggenheim Collection, Venice. 2 Nozione (informale) di Albero Collezione di nodi caratterizzata una
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
DettagliInformatica 3. LEZIONE 15: Implementazione di alberi binari - BST. Modulo 1: Implementazione degli alberi binari Modulo 2: BST
Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Informatica 3 Lezione 15 - Modulo 1 Implementazione degli alberi binari Introduzione
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
DettagliInformatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà
Informatica 3 Informatica 3 LEZIONE 14: Alberi binari: introduzione Lezione 14 - Modulo 1 Modulo 1: Definizioni e proprietà Modulo 2: Attraversamento degli alberi binari Definizioni e proprietà Politecnico
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
DettagliPer semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
DettagliIl TDA BinaryTree. Albero Binario. Albero sintattico. Applicazioni. Albero delle decisioni binario. Albero binario di ricerca
Il T inarytree lbero inario F G lbero in cui ogni nodo ha al più due figli. I figli di un nodo costituiscono una coppia ordinata I figli di un nodo vengono chiamati figlio sinistro e figlio destro H I
DettagliMulti-way search trees
Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(
DettagliEsercizi su programmazione ricorsiva 3
su programmazione ricorsiva 3 Pericle Perazzo pericle.perazzo@iet.unipi.it http://www.iet.unipi.it/p.perazzo/teaching/ http://lettieri.iet.unipi.it/mailman/listinfo/algoritmi_e_basi 10 maggio 2013 Alberi
DettagliOrganigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre
Alberi Struttura dati Albero Organigramma Gerarchia (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre Esempio di un organigramma di un azienda Tree terminology
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliConoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione
1 Conoscere l uso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali classi di Collection usare in casi specifici Conoscere
DettagliIl tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 6 novembre 2008 Heap binari: definizione Un heap binario è una albero binario quasi completo
DettagliCode con priorità. Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna.
Code con priorità Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna marzolla@cs.unibo.it http://www.moreno.marzolla.name/ Copyright 2009 2012 Moreno Marzolla, Università di Bologna
DettagliListe doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione
Liste doppie GT: 6.2 (e 3.3) Doubly Linked Lists 1 Argomenti della lezione ADT Position NodeList interface Position PositionList class DNode NodePositionList inserzione rimozione Iteratore ADT Iterator
DettagliAlbero binario: Ogni nodo ha zero, uno, o due successori (ordinati)
Heap 1 Vittorio Maniezzo - Università di Bologna Alberi binari Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati) Albero binario completo: Tutte le foglie hanno la stessa profondità e
DettagliIntroduzione Implementazione (1)
Informatica 3 Informatica 3 LEZIONE 15: Implementazione di alberi binari - BST Modulo 1: Implementazione degli alberi binari Modulo 2: BST Lezione 15 - Modulo 1 Implementazione degli alberi binari Politecnico
DettagliIl TDA Tree. Alberi. Esempio. Alberi. Applicazioni. Definizione di albero
Il T Tree lberi 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 sono
DettagliInformatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.
Informatica 3 Informatica 3 LEZIONE 17: lberi generici Lezione 17 - Modulo 1 Modulo 1: Definizione e DT Modulo 2: Implementazione Modulo 3: lberi e classi di equivalenza Definizione e DT Politecnico di
DettagliADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
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,
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
DettagliALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI
SOMMARIO ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI Dimensione e Altezza ALBERI BINARI DI RICERCA (BST) Introduzione Ricerca, inserimento e cancellazione Implementazione
DettagliInformatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann
Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione
DettagliGli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Politecnico
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
DettagliGli heap. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Matteo SONZA
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
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
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
DettagliListe. Costo operazioni Tutte le operazioni hanno costo O(1)
Liste Liste (List, Linked List) Una sequenza di nodi, contenenti dati arbitrari e 1-2 puntatori all'elemento successivo e/o precedente Contiguità nella lista contiguità nella memoria Costo operazioni Tutte
DettagliHeap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
DettagliAlgoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi
Algoritmi e Strutture Dati Laboratorio 20/10/2008 Primo Esercizio 2 Scrivere un programma per misurare il tempo necessario per ordinare un vettore di interi contenente 10-10 7 elementi utilizzando l insertion
DettagliGenerics & Collections
Generics & Collections Ingegneria del software Jody Marca jody.marca@polimi.it I Generics 2 I Generics rendono possibile definire tipi parametrici tramite classi ed interfacce che gestiscono tipi generici
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
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Code di priorità (Heap e heap_sort) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi,
DettagliAlberi binari di ricerca
Alberi binari di ricerca Definizione Un albero si dice albero binario di ricerca è un albero binario in cui: - Ogni nodo è caratterizzato un valore chiamato chiave - L insieme delle chiavi è totalmente
DettagliCorrezione prima esercitazione: metodo distinct
Alberi binari lezione 7 Correzione prima esercitazione: metodo distinct // post: ritorna il numero di elementi distinti del multi insieme public int distinct( ) { int d = 0; int i = 0; int j; // INV1:
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
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
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
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
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
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Capitolo 0 - Code con priorità e insiemi disgiunti This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license,
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
DettagliInformatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata
Informatica 3 LEZIONE 12: Liste Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata Informatica 3 Lezione 12 - Modulo 1 ADT lista e implementazione basata su array Introduzione
Dettagli