Esercizi proposti per il corso di Strutture Dati
|
|
- Diana Grillo
- 5 anni fa
- Visualizzazioni
Transcript
1 Esercizi proposti per il corso di Strutture Dati Da ricordare: 1. Non modificare il contenitore su cui si invoca il metodo: significa che posso eventualmente modificarlo durante l esecuzione del metodo, ma alla fine, quando il metodo termina, il contenitore su cui è stato invocato deve essere rimasto invariato (come contenuto). 2. Utilizzare i metodi dell interfaccia per risolvere l esercizio: così scriveremo un metodo che potrà essere adattato a qualsiasi implementazione del nostro TDA. 3. Non usare array come strutture di appoggio, ma solo altri TDA di appoggio, laddove sia necessario. 4. Altri esercizi consigliati sono tutti quelli delle prove e di esame. Esercizi su 5. Aggiungere alla classe Stack<E> il metodo String ToString() che restituisce una stringa che rappresenta il contenuto dello stack su cui si invoca il metodo, come segue: gli elementi devono essere separati da virgole, l'ultimo elemento deve essere il top e deve essere seguito dalla stringa top, tutta la stringa deve essere racchiusa da parentesi tonde. Ad esempio, se nello stack sono presenti gli elementi C B A, dove A è al top, allora la stringa restituita sarà (C, B, A top). 6. Scrivere un metodo Stack<E> Clone() che invocato su uno stack S, restituisce uno stack che è la copia di S. 7. Scrivere un metodo boolean equal(stack S<E>) che invocato su uno stack P restituisce true se e solo se P e S sono uguali (stesso contenuto, nello stesso ordine), false altrimenti. 8. Scrivere un metodo E First() che invocato su uno stack restituisce (senza cancellare) l elemento inserito per primo nello stack. 9. Scrivere un metodo Stack<E> ReverseStack() che invocato su uno stack S restituisce in output uno stack che è la copia rovesciata del contenuto dello stack S. 10. Scrivere un metodo String ReverseString(String w) che fornisce in output il reverse di w, usando uno stack. L inverso (o reverse) di una parola w è quella parola w che letta da destra a sinistra risulta essere uguale a w. Ad esempio, w=alla=w ; w=libro, w =orbil. Per scandire i caratteri della stringa si può utilizzare il metodo char charat(int i). 11. Sia w una stringa contenente parentesi tonde aperte e chiuse. Scrivere un metodo boolean Bilanciate(String w) che restituisce true se le parentesi sono annidate correttamente e false altrimenti. Ad esempio, se w=x((abc)()) l annidamento è corretto, se w=(as(df)))( l annidamento è sbagliato. Esercizi su Queue 12. Scrivere un metodo String ToString() che, invocato su una coda Q, restituisce una stringa che rappresenta il contenuto di Q, come segue: gli elementi devono essere separati da virgole, il primo elemento deve essere il front e deve essere preceduto dalla parola front, 08/06/2011 1
2 tutta la stringa deve essere racchiusa da parentesi tonde. Ad esempio, se nella coda sono presenti gli elementi C B A, dove C è il front, allora la stringa restituita sar{ (front C, B, A). 13. Scrivere un metodo Queue<E> Clone() che restituisce una copia della coda su cui il metodo è invocato. 14. Scrivere un metodo boolean equal(queue<e> Q) che invocato su una coda P restituisce true se e solo se P e Q sono uguali (stesso contenuto, nello stesso ordine), false altrimenti. 15. Scrivere un metodo E Last() che, invocato su una coda Q, fornisca in output (senza cancellarlo) l elemento inserito più di recente in Q. 16. Risolvere l esercizio precedente lavorando esclusivamente sulla coda Q (senza usare TDA di appoggio). 17. Scrivere un metodo void ReverseQueue() che, invocato su una coda Q, la modifichi in modo che Q contenga il reverse del contenuto iniziale. Il metodo deve avere complessità lineare in tempo. Usare eventualmente altri TDA di appoggio Scrivere un metodo Queue<E> ReverseQueue() che, invocato su una coda Q, dia in output un altra coda contenente il reverse del contenuto di Q. Il metodo deve avere complessit{ lineare in tempo e si possono usare eventualmente altri TDA di appoggio. 19. Scrivere un metodo Queue<E> Collapse() che, invocato su una coda Q, restituisce un'altra coda in cui tutte le occorrenze di elementi consecutivi uguali collassano in una sola, ossia tutte le occorrenze di elementi consecutivi uguali sono sostituite da una sola occorrenza dell'elemento. Ad esempio, se il metodo viene invocato su una coda contenente 1; 2; 3; 3; 4; 5; 4; 4; 1; 1; 1; 2, con 1 al front, allora il metodo deve restituire una coda contenente 1; 2; 3; 4; 5; 4; 1; 2 (1 ancora al front). Esercizi su Stack e Queue 20. Descrivere come implementare uno stack usando due code. Analizzare la complessità di pop(x) e push(). Implementare quindi l interfaccia Stack scrivendo la classe QueueStack avendo come uniche variabili d istanza due code. E possibile anche usare una sola coda? Come? Porre particolare attenzione alle gestione eccezioni. 21. Descrivere come implementare una coda usando due stack. Analizzare la complessità di dequeue() e enqueue(x). Implementare quindi l interfaccia Queue scrivendo la classe StackQueue avendo come uniche variabili d istanza due stack. Porre particolare attenzione alle gestione eccezioni. Posso usare un solo stack? Esercizi su Deque 22. Scrivere un metodo String ToString() che, invocato su una deque D, restituisce una stringa che rappresenta il contenuto di D, come segue: gli elementi devono essere separati da virgole, il primo elemento deve essere il first e deve essere preceduto dalla parola first, tutta 08/06/2011 2
3 la stringa deve essere racchiusa da parentesi tonde. Ad esempio, se nella deque sono presenti gli elementi C B A, dove C è il first, allora la stringa restituita sar{ (front C, B, A). 23. Scrivere un metodo Deque<E> Clone() che restituisce una copia della deque su cui il metodo è invocato. 24. Scrivere un metodo boolean equal(deque<e> D) che invocato su una deque F restituisce true se e solo se F e D sono uguali (stesso contenuto, nello stesso ordine), false altrimenti. 25. Scrivere il metodo Deque<Integer> cancellamultipli(int x) che, invocato su una deque contenente interi, restituisce una deque che contiene gli stessi elementi della deque su cui il metodo è invocato (e nello stesso ordine) tranne quelli che sono multipli di x. Ad esempio, se il metodo è invocato su una deque che contiene "5, 10, 2,7,15,11,3,2,18,9" (5 è il primo elemento e 9 è l'ultimo elemento) e x=2, allora verrà restituita una deque che contiene "5,7,15,11,3,9". Provare a non usare strutture d appoggio 26. Implementare l interfaccia Stack e Queue mediante una Deque (usando la metodologia dell adapter pattern) creando quindi la classe DequeStack e DequeQueue rispettivamente. Usare come unica variabile d istanza una deque. Porre particolare attenzione alle gestione eccezioni. Esercizi su IndexList 27. Scrivere un metodo IndexList<E> Clone() che restituisce una copia dell IndexList su cui il metodo è invocato, senza modificarlo. 28. Aggiungere alla classe IndexList il metodo boolean equal(indexlist<e> V) che, invocato su un IndexList S, restituisce true se S è uguale a V, false altrimenti. 29. Scrivere un metodo void InvertTo(int R) che, invocato su un IndexList<E> V passando un indice R, inverte la parte di V a partire dall'inizio fino a R (incluso). 30. Applicare l'adapter design pattern per scrivere una classe IndexListStack che implementa l'interfaccia del TDA Stack usando un IndexList. La classe IndexListStack deve avere come unica variabile d'istanza un IndexList V. Si ponga particolare attenzione all'uso del try-catch per la gestione precisa delle eccezioni. Esercizi su Sequence 31. Sia S=(a_1,, a_n) una sequenza di n elementi. Scrivere metodi che restituiscono rispettivamente a. il numero di elementi di indice maggiore o uguale a r b. il numero di elementi di indice minore o uguale a r c. una sequenza contenente gli elementi il cui indice soddisfi i punti precedenti. Scrivere un metodo void InserisciOccorrenze(), che invocato su una sequenza S la modifica, in modo tale che blocchi di oggetti che sono consecutivamente uguali in S vengono separati dall'intero che indica le occorrenze consecutive dell'oggetto precedente. Ad esempio, se il metodo viene invocato sulla sequenza S=(a,a,a,b,c,b,c,c), il metodo deve produrre S=(a,a,a,3,b,1,c,1,b,1,c,c,2). 08/06/2011 3
4 Il metodo proposto deve usare i metodi dell'interfaccia del TDA Sequence per accedere alla sequenza e risolvere l'esercizio. Si assegnerà punteggio massimo solo se non si usano strutture d appoggio. Il metodo non deve modificare il contenuto della sequenza su cui viene invocato. 32. Scrivere un metodo int PrimiNumeri(int k) che, invocato su una sequenza contenente interi, restituisce la somma dei k interi più piccoli che sono presenti nella sequenza. Ad esempio, se il metodo viene invocato sulla sequenza S = (45, 3, 3, 3, 4, 44, 5, 6, 6, 14, 14, 16, 42) con k = 1, allora il metodo restituirà 3. Se invece viene invocato con k = 10, il metodo restituirà = 74. Il metodo proposto deve usare i metodi dell interfaccia del TDA Sequence per risolvere il quesito. Si possono usare altri TDA di appoggio, ma non array. Prestare particolare attenzione alle condizioni di errore (da gestire come eccezioni). Il metodo non deve modificare il contenuto della sequenza su cui il metodo è invocato (può modificarlo durante). Esercizi su PositionList 33. Aggiungere alla classe NodeList il metodo void swapelements(position p, Position q) che scambia l elemento di posizione p con quello di posizione q (e viceversa). Svolgere lo stesso esercizio supponendo di aggiungerlo alla classe ArrayVector. Usare i metodi delle interfacce dei TDA. 34. Aggiungere alla classe NodeList il metodo void removeodd() che, invocato su una lista, rimuove da essa tutti gli elementi di rango dispari. 35. Aggiungere alla classe NodeList il metodo removefrom(p) e removeto(p), che cancellano rispettivamente tutte le posizioni da p alla fine delle lista e dall inizio della lista fino a p (incluso p). In entrambi i metodi, occorre restituire un array contenente tutti gli elementi cancellati. 36. [Esercizio prova lunedì 11 aprile 2011 (primo gruppo)] a. Aggiungere alla classe NodePositionList il metodo removefrom(x), che cancella in una lista tutte le posizioni dalla prima occorrenza di x alla fine delle lista (inclusa la posizione contenente x), se x appartiene alla lista, e alla fine restituisce una lista contenente tutti gli elementi cancellati. Il metodo deve usare solo i metodi dell interfaccia PositionList. b. Quale potrebbe essere una diversa soluzione al problema al punto 1, nel caso in cui si potessero usare anche i metodi dell implementazione di PositionList tramite i DNode e le sentinelle (header e trailer)? 37. [Esercizio prova lunedì 11 aprile 2011 (secondo gruppo)] a. Aggiungere alla classe NodePositionList il metodo removeto(x), che cancella in una lista tutte le posizioni dall inizio della lista fino alla prima occorrenza di x (inclusa la posizione contenente x), se x appartiene alla lista, e alla fine restituisce una lista contenente tutti gli elementi cancellati. Il metodo deve usare solo i metodi dell interfaccia PositionList. b. Quale potrebbe essere una diversa soluzione al problema al punto 1, nel caso in cui si potessero usare anche i metodi dell implementazione di PositionList tramite i DNode e le sentinelle (header e trailer)? 08/06/2011 4
5 Esercizi su Iterator 38. Scrivere una classe StackIterator che implementa Iterator mediante uno stack (uso uno stack come variabile per conservare gli elementi). 39. Scrivere un metodo Iterator attach(iterator J) che invocato su un iteratore L restituisce un altro iteratore M che itera prima sugli elementi scanditi da L e poi su quelli scanditi da J. Esercizi su Alberi 40. Scrivere un metodo ricorsivo String postorder(position p) che, invocato su un albero T, restituisca una stringa del contenuto dei nodi del sottoalbero di T radicato nel nodo di posizione p, visitati in postorder. 41. Scrivere un metodo ricorsivo int ContaFoglie(Position p) che, invocato su un albero T, restituisca il numero delle foglie del sottoalbero di T radicato nel nodo di posizione p. 42. Scrivere un metodo ricorsivo String StringaFoglie(Position p) che, invocato su un albero T, restituisca una stringa del contenuto delle foglie del sottoalbero di T radicato nel nodo di posizione p (lette da sinistra a destra). 43. Scrivere un metodo ricorsivo BinaryTree Copia (Position p) che invocato su un albero binario T restituisca un albero binario T che è la copia del sottoalbero di T radicato nel nodo di posizione p. Occorre usare i metodi dell interfaccia BinaryTree. 44. Aggiungere a LinkedTree (e a LinkedBinaryTree) il metodo int depth(position p) che restituisce la profondità del nodo di posizione p. Il metodo deve essere ricorsivo. 45. Aggiungere a LinkedTree (e a LinkedBinaryTree) il metodo int height() che restituisce l altezza dell albero. Il metodo deve essere ricorsivo. 46. Scrivere un metodo ricorsivo che restituisca una stringa del contenuto dei nodi dell albero, secondo una visita postorder 47. Scrivere un metodo ricorsivo che, ricevendo come parametro un nodo p, restituisca il numero di foglie nel sottoalbero radicato in p 48. Scrivere un metodo ricorsivo boolean isdescendent(position<e> p, Position<E> q) che, invocato su un albero generale (che implementa l'interfaccia Tree), restituisce true" se il nodo di position p è discendente del nodo di position q, false" altrimenti. Esercizi su Alberi binari 49. Scrivere un metodo Iterator<E> NodiLivello(Position<E> p, int k) che, invocato su un albero binario S, restituisce un iteratore dei nodi (del loro contenuto) che sono a livello k relativo al solo sottoalbero di S radicato nel nodo di position p. Si osservi che p (radice del sottoalbero radicato in p) è a livello 0, i suoi figli a livello 1, e così via. Il metodo proposto deve essere ricorsivo e deve usare i metodi dell'interfaccia del TDA BinaryTree per accedere all'albero. Metodi non ricorsivi non saranno valutati. 50. Scrivere un metodo boolean equal(position<e> p, BinaryTree<E> W, Position<E> q) che, invocato su un albero binario S restituisce true se il sottoalbero di S radicato nel nodo di position p è uguale al sottoalbero di W radicato in q, false altrimenti. 08/06/2011 5
6 51. In un albero binario T, un nodo di posizione p si dice Ricco se il sottoalbero sinistro di p non è uguale al sottoalbero destro di p. Poichè due alberi vuoti sono uguali, allora un nodo foglia non è Ricco. 52. Scrivere un metodo Iterator Ricco(Position<E> p) che, invocato su un albero binario T, restituisce un iteratore dei nodi (del loro contenuto) che sono Ricco nel sottoalbero di T radicato nel nodo di posizione p. 53. [GT C-7.21] Scrivere un metodo Position<E> lca(position<e> v, Position<E> w) che prenda in input due nodi v e w dell'albero e restituisca il più basso antenato (lower common ancestor) comune fra v e w. 54. [Esercizio prova 2 del 2 maggio 2011] - - Esercizi su Priority Queue 55. Implementare PQ-Sort con: UnsortedListPriorityQueue (Selection Sort), SortedListPriorityQueue (Insertion Sort). 56. Scrivere un metodo PriorityQueue Clone() che invocato su una coda a priorità, restituisca una copia. Il metodo deve usare i metodi dell interfaccia del TDA Priorit{ Queue, senza distruggere la PQ su cui il metodo è invocato. 08/06/2011 6
7 57. Scrivere un metodo boolean equal(priorityqueue Q) che invocato su una coda a priorità P restituisca true se P è uguale a Q, falso altrimenti. Il metodo deve usare i metodi dell interfaccia del TDA Priorit{ Queue, senza distruggere le code P e Q. 58. Scrivere un metodo Iterator entries() che invocato su una coda a priorità, restituisce un iteratore delle entries della coda a priorit{. Il metodo deve usare i metodi dell interfaccia del TDA Priorità Queue, senza distruggere la PQ su cui il metodo è invocato. 59. Scrivere un metodo String tostring() che invocato su una coda a priorità P restituisca una stringa che elenca le entry in ordine come segue (chiave, valore) separate da virgole. Il metodo deve usare i metodi dell interfaccia del TDA Priorit{ Queue, senza distruggere P. 60. Scrivere un metodo String tostringkey() che invocato su una coda a priorità P restituisca una stringa che elenca le chiavi delle entry in ordine separate da virgole. Il metodo deve usare i metodi dell interfaccia del TDA Priorit{ Queue, senza distruggere P. 61. Scrivere un metodo String tostringvalue() che invocato su una coda a priorità P restituisca una stringa che elenca i value delle entry in ordine separate da virgole. Il metodo deve usare i metodi dell interfaccia del TDA Priorit{ Queue, senza distruggere P. 62. Aggiungere alla classe SortedListPriorityQueue un metodo public void setcomparator(comparator<k> comp) throws IllegalStateException che cambia il comparatore assegnato alla PQ con quello passato. Definire le condizioni di errore (che determinano IllegalStateException). 63. Scrivere un metodo void AzzeraKey(V val) che pone a 0 tutte le key dei value che sono uguali a val. Usare un comparatore per determinare i value di cui azzerare la key. 64. Scrivere un metodo Iterator removein(object x, Object y) che, invocato su una coda a priorità, restituisce un iteratore degli elementi (values) che hanno chiave compresa tra x e y, estremi inclusi, secondo l'ordine definito. Per effettuare i confronti, occorre usare il comparatore della coda a priorità (si supponga che si chiami Comp). Il metodo proposto deve usare i metodi dell'interfaccia del TDA Priorità Queue e del TDA Entry per risolvere l'esercizio. Il metodo deve lasciare inalterato il contenuto della coda a priorità su cui il metodo è invocato (può modificarlo durante). 65. Scrivere un metodo Iterator removeless(object x) che, invocato su una coda a priorità, restituisce un iteratore degli elementi (values) che hanno chiave minore di x, secondo l'ordine definito. Per effettuare i confronti, occorre usare il comparatore della coda a priorità (si supponga che si chiami Comp). Il metodo proposto deve usare i metodi dell'interfaccia del TDA Priorità Queue e del TDA Entry per risolvere l'esercizio. Il metodo deve lasciare inalterato il contenuto della coda a priorità su cui il metodo è invocato (può modificarlo durante). 66. [GT C-8.4] Mostrare come implementare il TDA Stack utlizzando come variabili di istanza una coda a priorità e una variabile intera [classe PQStack]. Scrivere un metodo Iterator<V> removein(k x, K y) che, invocato su una coda a priorità, restituisce un iteratore degli elementi (values) che hanno chiave compresa tra x e y, estremi inclusi, secondo l'ordine definito. Per effettuare i confronti, occorre usare il comparatore della coda a priorità (si supponga che si chiami Comp). Il metodo proposto deve usare i metodi dell'interfaccia del TDA PriorityQueue e del TDA Entry per risolvere l'esercizio. Il metodo deve lasciare inalterato il contenuto della coda a priorità su cui è invocato (può modificarlo durante). 67. [Prova 3 del 9 maggio 2011] Implementare il TDA Coda adattando il TDA Coda a Priorità. Precisamente si richiede di scrivere una classe (di nome PriorityQueueQueue) che implementa l interfaccia del TDA Coda (Queue) utilizzando come variabile d istanza della 08/06/2011 7
8 classe una coda a priorità PQ (scegliere una implementazione della coda a priorità tra quelle disponibili). E possibile inoltre utilizzare una variabile intera i. Non è possibile usare altre variabili. Porre particolare attenzione alla gestione delle eccezioni. Esercizi su Map 68. Scrivere il metodo tostringkey() che restituisca una stringa contenente le chiavi della mappa; scrivere un metodo tostringvalue() che restituisca una stringa contenente i values della mappa. 69. Scrivere il metodo tostringkeyvalue() che restituisca una stringa contenente le chiavi della mappa seguite dai value rispettivi. 70. Scrivere il metodo tostringpair() che fornisca in output le coppie (chiave, valore). 71. Scrivere un metodo void removemaxocc() che, invocato su una lista in cui ogni elemento può occorrere più volte, cancella dalla lista tutte le occorrenze dell'elemento che ha occorrenza 72. un metodo public static <E> int[ ] mastermind(positionlist<e> L1, PositionList<E> L2) che, utilizzando una Mappa, prenda in input due liste L1 e L2 e restituisca un array A di due elementi interi tali che A[0] contenga il numero di elementi di L2 che compaiono in L1 nella stessa posizione e A[1] contenga il numero di elementi di L2 che sono presenti in L1 ma nel posto sbagliato. Attenzione: si assuma che in ogni lista gli elementi siano tutti distinti. Facoltativo: si lanci un'eccezione nel caso le liste non siano entrambe composte di elementi tutti distinti. Esempi: Siano L1 = <7,8,9,10> e L2 = <7,8,10,9>, allora A[0] = 2, A[1] = 2. Siano L1 = <7,8,9,10> e L3 = <5,8,9> allora A[0] = 2, A[1] = 0 Esercizi su Dizionario 73. Dato un dizionario D, scrivere un metodo public void updatekey( K key, K newkey) che modifica tutte le entry di chiave key con la chiave newkey. Utilizzare l implementazione con ChainingHashTable. 74. Scrivere un metodo static Iterable <K> EliminaComuni( Dictionary<K,V> D1, Dictionary<K,V>D2) che elimina da D1 tutte le entry con chiave presente in D2 e restituisce una collezione iterabile di tali chiavi.utilizzare i metodi dell interfaccia. Esercizi su Set e Partition 75. Scrivere un metodo boolean equals(b) che invocato su un insieme A restituisce vero se A=B (gli insiemi contengono gli stessi elementi), falso altrimenti. Per risolvere l esercizio usare esclusivamente i metodi dell interfaccia del TDA Set. 76. Scrivere un metodo boolean subset(b) che invocato su un insieme A restituisce vero se A è contenuto nell insieme B, falso altrimenti. Per risolvere l esercizio usare esclusivamente i metodi dell interfaccia del TDA Set. 08/06/2011 8
9 Esercizi su Grafo 77. Sia G un grafo non orientato. Due vertici v,w si G si dicono sameadjacent se sono adiacenti di uno stesso vertice. Usando i metodi del TDA Grafo, scrivere un metodo boolean sameadj(vertex<v> v, Vertex<V> w) che dati i due vertici v e w restituisca true se v e w sono sameadjacent, false altrimenti. 78. Sia G = (V;E) un grafo non orientato e sia v in V. Si dice che v ha un ThreeCycle se esiste in G un ciclo su v di lunghezza esattamente 3, ossia un cammino chiuso su v che e composto da 3 archi. Scrivere un metodo boolean HasThreeCycle(Vertex v) che, invocato su un grafo (che implementa l'interfaccia Graph), restituisce true" se il vertice v ha un ThreeCycle, false" altrimenti. 08/06/2011 9
Prima prova intercorso 29 Novembre 2005
Laboratorio di Algoritmi e Strutture Dati R.Zizza (matr. dispari-dispari) Anno Acc. 2005-06 Prima prova intercorso 29 Novembre 2005 Cognome: Nome: Matricola: Regole del gioco: La soluzione del compito
DettagliLaboratorio di Algoritmi e Strutture Dati Anno Accademico 2005/06 Prof. Carlo Blundo. Raccolta di esercizi Versione del 20 dicembre 2005
Laboratorio di Algoritmi e Strutture Dati Anno Accademico 2005/06 Prof. Carlo Blundo Raccolta di esercizi Versione del 20 dicembre 2005 Alcuni di questi esercizi sono tratti dai libri di testo del corso
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
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
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
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
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
DettagliLaboratorio di Algoritmi e Strutture Dati Anno Accademico 2005/06 Prof. Carlo Blundo. Raccolta di esercizi Versione del 26 ottobre 2005
Laboratorio di Algoritmi e Strutture Dati Anno Accademico 2005/06 Prof. Carlo Blundo Raccolta di esercizi Versione del 26 ottobre 2005 Alcuni di questi esercizi sono tratti dai libri di testo del corso
DettagliIn questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
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
DettagliAlgoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
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
DettagliEsercizi parte 3. La classe ArrayBinTree dovra implementare, tra le altre, l operazione seguente: padre: dato un nodo, restituire l indice del padre.
Esercizi parte 3 RAPPRESENTAZIONE DI ALBERI BINARI 1. Definire una classe LinkedBinTree che implementa alberi binari in modo collegato, con nodi implementati come oggetti di classe BinNode. La classe dovra
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
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
Dettaglitipi di dato astratti
tipi di dato astratti liste pile code alberi grafi Alberto Ferrari Informatica ADT o un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità
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
DettagliNote per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
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
DettagliPROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE
PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta
DettagliEspressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
DettagliEsercizi proposti Risolvere i problemi seguenti su espressioni rappresentate come alberi binari, mediante la dichiarazione di tipo
Esercizi proposti 8 INDICZIONI DI CRTTERE GENERLE: Quando scrivete una funzione che ne utilizza una ausiliaria, chiedetevi sempre se l ausiliaria è necessaria, ricordando che è utile quando: (a) servono
DettagliLa Standard Template Library Heap, algoritmi e funtori
La Standard Template Library Heap, algoritmi e funtori Pericle Perazzo 27 maggio 2011 Riassunto contenitori e iteratori Un contenitore è un oggetto che contiene un insieme di altri oggetti di tipo omogeneo
DettagliAlberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei
Alberi Alberi: definizioni Alberi Binari Esercizi su alberi binari: metodi ricorsivi Struttura dati per alberi generici 1 Alberi Gli alberi sono strutture dati naturalmente ricorsive Un albero è un particolare
DettagliTracce. 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni
Algoritmi e Strutture Dati Tracce 1. Data una lista di elementi di tipo intero, implementare in C++ le seguenti funzioni int freq(list &L, int k): restituisce il numero di occorrenze dei multipli
Dettaglid. Cancellazione del valore 5 e. Inserimento del valore 1
Esercizio1 Si consideri un albero binario non vuoto in cui a ciascun nodo v è associato un numero reale v.val. Scrivere un algoritmo che, dato in input l'albero T e un numero reale x, restituisce true
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
DettagliEsercizio. 2 i=i*2) j=j*2)
Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre
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
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
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
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
DettagliAlberi binari: definizione e alcune proprietà
Alberi binari: definizione e alcune proprietà Alberi binari Un albero binario è un albero con radice in cui ogni nodo ha al più due figli. In maniera più formale: Definizione. (Alberi binari) Un albero
DettagliUniversità degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati
Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi
DettagliTIPO DI DATO ASTRATTO
TIPO DI DATO ASTRATTO Tipo di dato astratto Esempio: Vogliamo rappresentare un sistema di prenotazione di esami universitari. Dati immagazzinati: prenotazioni esami Operazioni supportate: prenota(esame,
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari I Un albero è un caso particolare di grafo I I I I È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine
DettagliTipi di dato e Strutture dati elementari
Tipi di dato e Strutture dati elementari Ing. Paolo Craca Anno accademico 2007/2008 Tipi di dato e Strutture dati elementari 1 / 40 Cosa vedremo in questo seminario 1 Introduzione 2 Pile 3 Code 4 5 Bibliografia
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
DettagliEsercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 8 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
DettagliAlberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
DettagliAlgoritmi e strutture dati 16 Dicembre 2004 Canali A L e M Z Cognome Nome Matricola
Algoritmi e strutture dati 16 Dicembre 04 Canali A L e M Z Cognome Nome Matricola Problema 1 (6 punti) Determinare la funzione calcolata dal metodo mistero e la sua complessità computazionale in funzione
DettagliEsercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016
Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 14, 2016 Elementi Fondamentali Rappresentazione n = V numero di vertici (nodi) m = E numero di archi Matrice di adiacenza:
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
DettagliDati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap
Dati e Algoritmi I (Pietracaprina) Esercizi su Priority Queue e Heap g Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca un albero ternario completo di altezza h come un albero con
DettagliStrutture dati Alberi binari
Strutture dati - 2 - Alberi binari Definizione L albero è un insieme di elementi (nodi), sui quali è definita una relazione di discendenza con due proprietà: esiste un solo nodo radice senza predecessori
DettagliLaboratorio di Python
Laboratorio di Python Alberi binari Lab15 12 Maggio 2017 Outline Correzione esercizi per oggi Alberi binari Teoria Esercizi Esercizi per casa Saluti Esercizio 1 per casa Scrivere una funzione palindroma(s)
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
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Frodo Dudo Daisy Alberi Gli alberi sono una generalizzazione
DettagliEsercitazione 5 Alberi Binari di Ricerca
Esercitazione 5 Alberi Binari di Ricerca Corso di Fondamenti di Informatica II Algoritmi e strutture dati A.A. 2015/2016 11 Maggio 2016 Sommario Scopo di questa esercitazione è realizzare una struttura
DettagliAlgoritmi e Strutture Dati 1
Esonero del 31/03/2009 Compito n 1 Dimostrare che non tutte le funzioni f: ℵ 0,1 sono calcolabili. Dire se, giustificando la risposta applicando la definizione delle notazioni asintotiche, a) n log n =
DettagliAlberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo. Fosco.
Alberi Alberi Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo Frodo Daisy Alberi Gli alberi sono una generalizzazione
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 ADT (Abstract Data Types) tipo di dato astratto Un ADT è un modello matematico con una collezione di operatori definiti su tale
DettagliAlberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3
Alberi binari (radicati e ordinati) Il figlio sinistro della radice Il padre del nodo 5 e del nodo 3 4 3 Il figlio sinistro del nodo 2 2 5 1 6 7 8 9 La radice Il figlio destro della radice una foglia Figlio
DettagliGRAFI. Angelo Di Iorio Università di Bologna
GRAFI Angelo Di Iorio Università di Bologna Esercizio 1 Implementare una classe Java per memorizzare e manipolare un grafo orientato di nodi di tipo T (usando il framework Generics) Applicazioni: rete
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
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
DettagliQuesta soluzione va contemplata quando le lunghezze stimate dalle liste usate sono significativamente maggiori delle dimensioni di un elemento.
Un ulteriore semplificazione si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine (e l inizio) di una lista. Questa soluzione va contemplata
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
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
Algoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliEsercizi Union-Find e su Grafi. Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 07 Esercizi Union-Find e su Grafi. Ugo Vaccaro. Esercizio: Scrivere pseudocodice per Make-Set, Union, e Find-Set usando la rappresentazione attraverso liste
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
DettagliStruttura dati Dizionario
Struttura dati Dizionario Un dizionario è : un insieme di coppie (elemento, chiave) Sul campo chiave è definita una relazione d'ordine totale Su cui definiamo le seguenti operazioni: insert(elem e, chiave
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
DettagliAlberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
DettagliFondamenti teorici e programmazione
Fondamenti teorici e programmazione FTP(A) - modb Lezione 9 di ricerca binaria F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 1 liberi Un albero libero è un
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.
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
DettagliSoluzioni della settima esercitazione di Algoritmi 1
Soluzioni della settima esercitazione di Algoritmi 1 Beniamino Accattoli 19 dicembre 2007 1 Grafi Un grafo è non orientato se descrivendo un arco come una coppia di vertici (i,j) l ordine è ininfluente
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
lgoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
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
DettagliAlberi binari e alberi binari di ricerca
Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Alberi Un albero è una collezione non vuota di: nodi con nome e informazioni
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
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : O(n2 ) nel caso peggiore O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior algoritmo
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
DettagliEsercitazione 7. Grafi. Rappresentazione e algoritmi di visita
Esercitazione 7 Grafi Rappresentazione e algoritmi di visita Grafo G = (V,E) non orientato 1 1 G = (V,E) orientato 6 Rappresentazione Grafo G = (V,E) metodi standard per la rappresentazione Liste di adiacenza
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
DettagliEsercizi proposti 10
Esercizi proposti 10 In questo gruppo di esercizi assumiamo, dove non sia specificato diversamente, di rappresentare i grafi mediante liste di archi, con il tipo di dati così dichiarato: type a graph =
DettagliAlberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica giovedì 9
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
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
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
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
DettagliGennaio
Laboratorio di Algoritmi e Strutture Dati I Docente: A. Murano Laurea in Informatica -- -- -- 25 Gennaio 2010 -- -- -- Università degli Studi di Napoli Federico II Nome e Cognome Numero di Matricola: Spazio
DettagliESERCIZIO 1 ESERCIZIO 1
Si crei un progetto Java che mappi un semplice sistema medico. Il progetto deve contenere tre classi: una per i pazienti, una per le patologie e una per il main. Inoltre si definiscano le seguenti eccezioni:
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:
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,
DettagliADT 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
DettagliPROVETTE D ESAME. Algoritmi e Strutture Dati
PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento
Dettagli2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di
DettagliEsercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.
Esercizio 1 E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1 livello 0 FB = -1 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel
DettagliFondamenti di Programmazione - Prof.ssa Gargano Anno Acc Esercitazioni 2009
Fondamenti di Programmazione - Prof.ssa Gargano Anno Acc. 2008-09 Esercitazioni 2009 1. Mostrare per induzione che per ogni intero positivo n 0, la seguente affermazione S(n) é vera: S(n): n i=0 2i = 2
DettagliEsercitazione 6. Alberi binari di ricerca
Esercitazione 6 Alberi binari di ricerca Struttura base Rappresentabile attraverso una struttura dati concatenata in cui ogni nodo è un oggetto di tipo struttura Ogni nodo contiene: campo chiave (key)
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
Dettagli