Fondamenti di Programmazione - Prof.ssa Gargano Anno Acc Esercitazioni 2009

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fondamenti di Programmazione - Prof.ssa Gargano Anno Acc Esercitazioni 2009"

Transcript

1 Fondamenti di Programmazione - Prof.ssa Gargano Anno Acc Esercitazioni Mostrare per induzione che per ogni intero positivo n 0, la seguente affermazione S(n) é vera: S(n): n i=0 2i = 2 n Mostrare per induzione che per ogni intero positivo n 1, la seguente affermazione S(n) é vera: S(n) : 2 n k=1 k = (n + 1)2 (n + 1). 3. Mostrare per induzione che la seguente affermazione S(n) é vera per ogni intero n 1: S(n) : n! n n n. Mostrare il Passo Induttivo: 4. Mostrare per induzione che la seguente affermazione S(n) è vera per ogni intero positivo n 1: S(n) : log(n!) nlog n. (Si ricorda che log(ab) = log a + log b.) Mostrare il Passo Induttivo (indicando chiaramente lipotesi induttiva fatta: 5. Si consideri il seguente frammento di programma con A e B array con elementi indicizzati da 0 a n 1. r=1; for(i=0, i<n, i++) if (B[i]>A[i]) r=0; Si vuole mostrare per induzione che al termine del ciclo di for la variabile r ha valore 1 se e solo se B[i] A[i] per ogni i = 0,...,n 1. A tale scopo definiamo l invariante di Ciclo S(k): Se si raggiunge il test i< n con valore di i pari a k, con k compreso tra 0 ed n, allora r ha valore 1 se e solo se B[i] A[i] per ogni i = 0,...,k 1. Quale è il valore k per la Base induttiva? Mostre il Passo Induttivo: Mostrare la Correttezza al termine del ciclo: 6. Si consideri il seguente frammento di programma dove A è un array con elementi indicizzati da 0 a n 1. p=a[0]; for(i=1, i<n, i++) p=p*a[i]; Si vuole mostrare per induzione che al termine del ciclo di for la variabile p restituisce il prodotto di tutti gli elementi dell array A. A tale scopo definiamo l invariante di Ciclo S(k): Se si raggiunge il test i < n con valore di i pari a k, per k compreso tra 1 ed n, allora la variabile p ha valore pari al prodotto dei primi k elementi dell array, cioé A[0]... A[k 1].

2 2 7. Si consideri il seguente ciclo di for in cui A[0..n 1] è un vettore di interi non negativi, C[0..m 1] è un vettore di dimensione m, dove m 1 è il massimo degli elementi di A e, prima dell esecuzione del ciclo di for, gli elementi di C sono tutti uguali a zero. for (i= 0, i< n, i++) C[A[i]] = C[A[i]] + 1 Si vuole mostrare che al termine del ciclo for, C è un vettore tale che C[j] contiene il numero degli elementi di A uguali a j. A tale scopo definiamo la seguente invariante relativa al ciclo for nel frammento S(k): Se si raggiunge il controllo i < n con k uguale al valore dell indice i del ciclo, allora C[j] contiene il numero degli elementi di A[0..k 1] uguali a j, per ogni j = 0,...,m 1. Si dimostri per induzione che S(k) è vera per ogni k con k 0. Mostrare il Passo Induttivo (indicando chiaramente l ipotesi induttiva fatta): 8. Si consideri il seguente frammento di programma con A[0..n 1] array di n interi. i=0; r=1; while (i < n) if (A[i]!= 0) i++ else { i=n; r=0 } Si vuole mostrare che al termine del ciclo while risulta r = 1 se e solo se ogni elemento A[j] di A risulta diverso da 0. A tale scopo definiamo la seguente invariante relativa al ciclo while nel frammento S(k): Se si raggiunge il controllo i n con k pari al valore dell indice i del ciclo, k 0, allora risulta r = 1 se e solo se ogni elemento A[j] risulta diverso da 0. Si dimostri per induzione che S(k) è vera per ogni k, k Si consideri il seguente frammento di programma in cui L e una lista di interi positivi, rappresentata mediante array (usando una struttura di tipo LIST). somma = 0; i = 0; while (i < *pl->length) { if (*pl->a[i] > 8) then somma = somma + *pl->a[i]; i = i + 1 } Si vuole mostrare che al termine del ciclo while, la variabile somma contiene la somma degli elementi di L maggiori di 8. A tale scopo definiamo la seguente invariante relativa al ciclo while nel frammento S(k): Se si raggiunge il controllo del ciclo while con k = i, k 0, allora somma contiene la somma degli elementi di L indicizzati 0,..., k - 1 e maggiori di 8. Si dimostri per induzione che S(k) è vera per ogni k 0. Base (indicando il valore base di k): Passo Induttivo (descrivere dettagliatamente lipotesi Induttiva ed il ragionamento fatto): Mostrare che al termine del ciclo while, la variabile somma contiene il numero degli elementi di L maggiori di 8:

3 3 10. Si consideri il seguente frammento di programma con A[0..n - 1] e B[0..n - 1] array di n interi. i=0; r=1; while (i < n) if (A[i]!= B[i]) i ++ else { i=n; r=0 } Si vuole mostrare che al termine del ciclo while risulta r = 1 se e solo se ogni elemento A[j] di A risulta diverso dal corrispondente elemento B[j] di B. A tale scopo definiamo la seguente invariante relativa al ciclo while nel frammento S(k): Se si raggiunge il controllo i n con k pari al valore dellindice i del ciclo, k 0, allora risulta r = 1 se e solo se ogni elemento A[j] risulta diverso dellelemento B[j] per j = 0,...,k 1. Si dimostri per induzione che S(k) e vera per ogni k, k 0. Mostrare il Passo Induttivo (indicando chiaramente lipotesi induttiva): Mostrare che al termine del ciclo while risulta r = 1 se e solo se ogni elemento A[j] di A risulta diverso dallelemento B[j] di B: 11. Simulare l esecuzione del SelectionSort iterativo sull array A = [15; 13; 23; 10] mostrando i confronti fatti ad ogni iterazione ed il contenuto dell array dopo ogni modifica dell array stesso. 12. Si considerino le seguenti funzioni: f(n) = n(n+1) 2, g(n) = max{n 3,9n}, h(n) = nlog n Per ognuna delle seguenti affermazioni dire se essa è vera o falsa. Per ogni affermazione vera si devono fornire i valori c ed n 0 che provano che la relazione O-grande è valida. a) f(n) è O(n 2 ) b) f(n) è O(g(n)) c) g(n) è O(h(n)) d) g(n) è O(n 3 ). 13. Si considerino le seguenti funzioni: f(n) = 2n 2 10, g(n) = 3n, { 2n se n è dispari h(n) = n 2 se n è pari. Per ognuna delle seguenti affermazioni dire se essa è vera o falsa. Per ogni affermazione vera si deveono fornire i valori c ed n 0 che provano che la relazione O-grande è valida. a) f(n) è O(g(n)) b) g(n) è O(h(n)) c) h(n) è O(f(n)). 14. Si considerino le seguenti funzioni: f(n) = { n i=1 i, g(n) n 3 se n è pari 4n se n altrimenti, h(n) = 2n /n. Per ognuna delle seguenti affermazioni dire se essa é vera o falsa. Per ogni affermazione vera si devono fornire i valori c ed n 0 che provano che la relazione O-grande é valida e occorre giustificare la risposta. a) f(n) è O(g(n)) b) f(n) è O(h(n)) c) g(n) è O(f(n)) d) g(n) è O(h(n)) e) h(n) è O(f(n)) f) h(n) è O(g(n)).

4 4 { { 15. Si considerino le seguenti funzioni: f(n) = n 4 n 3 se n < log n, g(n) = n 5 se n 100, h(n) = n 3 7 se n é pari n 5 altrimenti. Per ognuna delle seguenti affermazioni dire se essa è vera o falsa. Per ogni affermazione vera si deveono fornire i valori c ed n 0 che provano che la relazione O-grande è valida. a) g(n) è O(f(n)) a) f(n) è O(g(n)) b) g(n) è O(h(n)) c) h(n) è O(f(n)) c) h(n) è O(g(n)) c) 2 log 2 n è O(f(n)). 16. Si consideri la seguente relazione di ricorrenza BASE: T(1) = 1 PASSO Induttivo: T(n) = 2T(n 1) + n 2, per n n > 1. Si vuole determinare il valore esatto di T(n) per ogni n > 1. a) Determinare i valori iniziali di T(n): T(1) =, T(2) =, T(3) = b) Espandere la regola induttiva ed esprimere T(n) in termini di T(n 2). c) Esprimere T(n) in termini di T(n 3). d) Determinare la regola generale per esprimere T(n) in termini di T(n i). e) Per quale valore di i si può eliminare T(n i) dall espressione? f) Utilizzare la risposta ai punti d) ed e) per esprimere T(n) in termini solo di n (cioè non in funzione di altri valori della funzione T). 17. Si consideri la seguente relazione di ricorrenza BASE: T(0) = 1 PASSO Induttivo: T(n) = 2T(n 1) + 2 n, per n > 0. Si vuole determinare il valore esatto di T(n) per ogni n > 1. a) Determinare i valori iniziali di T(n): T(0) =, T(1) =, T(2) = b) Espandere la regola induttiva ed esprimere T(n) in termini di T(n 2). c) Esprimere T(n) in termini di T(n 3). d) Determinare la regola generale per esprimere T(n) in termini di T(n i). e) Per quale valore di i si può eliminare T(n i) dall espressione? f) Utilizzare la risposta ai punti d) ed e) per esprimere T(n) in termini solo di n (cioè non in funzione di altri valori della funzione T).

5 5 18. Si consideri la seguente relazione di ricorrenza BASE: T(1) = 1 PASSO Induttivo: T(n) = 2T(n 2) + 3n, per n multiplo di 2 ed n > 1. Si vuole determinare il valore esatto di T(n) per ogni n > 1. a) Determinare i valori iniziali di T(n): T(1) =, T(2) =, T(4) = b) Espandere la regola induttiva ed esprimere T(n) in termini di T(n 4). c) Esprimere T(n) in termini di T(n 6). d) Determinare la regola generale per esprimere T(n) in termini di T(n 2i). e) Per quale valore di i si può eliminare T(n 2i) dall espressione? f) Utilizzare la risposta ai punti d) ed e) per esprimere T(n) in termini solo di n (cioè non in funzione di altri valori della funzione T), 19. Si consideri la seguente relazione di ricorrenza BASE: T(1) = 1 PASSO Induttivo: T(n) = 2T(n/2) + 3n, per n potenza di 2 ed n > 1. Si vuole determinare il valore esatto di T(n) per ogni n > 1. a) Determinare i valori iniziali di T(n): T(1) =, T(2) =, T(4) = b) Espandere la regola induttiva ed esprimere T(n) in termini di T(n/2 2 ). c) Esprimere T(n) in termini di T(n/2 3 ). d) Determinare la regola generale per esprimere T(n) in termini di T(n/2 i ). e) Per quale valore di i si può eliminare T(n/2 i ) dall espressione? f) Utilizzare la risposta ai punti d) ed e) per esprimere T(n) in termini solo di n (cioè non in funzione di altri valori della funzione T). 20. Scrivere una relazione di ricorrenza per T(n), il tempo di esecuzione della seguente procedura f oo quando ha come argomento L una lista di lunghezza n; P2 e P1 richiedono tempo O(n) ciascuna. void foo(list L) {if (L == NULL) M = 4 else {P1(L); foo(l->next); P2(L)} } 21. Risolvere la relazione di ricorrenza trovata nell esercizio precedente. 22. Si analizzi il tempo di esecuzione della seguente funzione ALTER(L,M) in termini della somma n delle lunghezze delle due liste input. Giustificare la risposta. LIST ALTER ( LIST L, LIST M) { LIST S; if (L ==NULL) return NULL; else {S: = L->next; L->next = M; M->next = ALTER(S, M->next); return L; end; end

6 6 23. Sia X(n) definita ricorsivamente come segue BASE X(0) = 1, X(1) = 1 PASSO X(n) = 2X(n 2) + 1, per ogni n 2 Scrivere una funzione ricorsiva POT(n) che avendo in input un intero n restituisce X(n) (cio POT(n)=X(n), per ogni n 0). La procedura deve chiamare ricorsivamente se stessa con parametro < n. 24. Sia X(n) la funzione definita all esercizio precedente. Mostrare per induzione su m che per ogni m > 0 vale la seguente affermazione S(m) : X(2m) = 2 m+1 1. Mostrare la Base Induttiva : Mostrare il Passo Induttivo (Indicando chiaramente l Ipotesi Induttiva usata): 25. Sia A[1..n] un array di n interi. Si analizzi il tempo di esecuzione del seguente frammento di programma. Giustificare la risposta. Risposte non giustificate saranno valutate 0. void Funz(int A[]; int n); int x; { if (n > 1) { for (i= 1, i< n, i++) { if (A[i] > A[i+1]) {x=a[i]; A[i]=A[i+1]; A[i+1]=x} Funz(A,n-1) } } 26. Data la lista L = ( ), esegire lo split di L nelle due liste L 1 ed L 2 L 1 = L 2 = Siano L 1 ed L 2 le liste ordinate contenenti gli stessi elementi di L 1 ed L 2 rispettivamente, determinare la lista M che si ottiene dal merge di L 1 ed L 2 L 1 = L 2 = M = 27. Simulare lesecuzione del MergeSort sulla lista L = {9, 7, 5, 3} mostrando tutte le funzioni chiamate (mergesort, split, merge) con i rispettivi input e le liste intermedie prodotte durante lesecuzione della procedura (nellordine in cui esse sono chiamate e prodotte). 28. Scrivere una funzione ricorsiva in C che avendo in input una lista (a 1,...,a n ), rappresentata mediante una lista a puntatori L, dia in output tutti gli elementi a k della lista la cui posizione k è un multiplo di Scrivere una funzione in C che avendo in input una lista a puntatori L = (a 1,...,a n ) restituisce la lista (a 2,...,a n,a 1 ). Giustificare la risposta. 30. Utilizzando per le liste la rappresentazione mediante liste a puntatori, scrivere una funzione ricorsiva in C che, avendo in input una lista di interi L e un intero x, restituisca TRUE se esistono due elementi consecutivi in L la cui somma sia x, FALSE altrimenti. 31. Scrivere una funzione ricorsiva in C che, avendo in input una lista di interi positivi, rappresentata mediante una lista a puntatori restituisce la somma degli elementi nella lista. 32. Scrivere una procedura ricorsiva che, avendo in input una lista di interi positivi L, rappresentata mediante lista a puntatori cancella da L i suoi elementi maggiori di 7.

7 7 33. Si analizzi il tempo di esecuzione della seguente funzione ALTER(L,M) in termini della somma n delle lunghezze delle due liste input. Giustificare la risposta. LIST ALTER ( LIST L, LIST M) { LIST S; if (L ==NULL) return NULL; else {S: = L->next; L->next = M; M->next = ALTER(S, M->next); return L; } } 34. Utilizzando per le code la struttura dati lista a puntatori, mostrare la coda risultante e l output di ognuna delle seguenti operazioni applicate a una coda Q inizialmente vuota: enqueue(3,q), enqueue(4,q), dequeue(q), dequeue(q), dequeue(q), enqueue(1,q), enqueue(3,q), enqueue(1,q), dequeue(q). 35. Utilizzando per le code la rappresentazione mediante liste a puntatori, illustrare il risultato e la coda risultante dopo ognuna delle seguenti operazioni applicate a una coda Q inizialmente vuota: enqueue(7,q), enqueue(5,q), dequeue(q), enqueue(3,q), enqueue(7,q), dequeue(q), dequeue(q), dequeue(q), enqueue(6,q), dequeue(q). 36. Illustrare il risultato di ognuna delle seguenti operazioni applicate a uno stack S rappresentato mediante lista a puntatori ed inizialmente vuoto. push(3,s): push(2,s): pop(s): push(2,s): push(7,s): pop(s): pop(s): pop(s): push(15,s): 37. Utilizzare una pila per la valutazione dellespressione aritmetica in notazione postfissa Simulare lesecuzione della procedura per la ricerca binaria per lintero 38 in un array che contiene gli elementi 13, 15, 19, 21, 27, 30, 31, 35, 44 mostrando a ogni iterazione: i confronti fatti ed il contenuto della parte di array su cui si effettua la ricerca. 39. Ricerca binaria di 5 su array A[0..9]=[0,1,2,3,4,5,6,7,8,9]: simulazione usando stack per i record di attivazione. Sia assuma (record di attivazione)=(parte di array su cui si effettua la ricerca). 40. Si consieri la rappresentazione leftmostchild rightsibling di un albero T e siano i nodi di T: (10,5,NULL), (5,NULL,7), (7,2,4), (4,NULL,NULL), (2,NULL,8), (8,NULL,NULL) Simulare la procedura ricorsiva per la visita in preorder sull albero T, elencando in ordine le chiamate ricorsive e la lista dei nodi in output. 41. Dimostrare la seguente affermazione S(T) mediante induzione strutturale: Se T un albero in cui ogni nodo ha un numero pari di figli allora T ha un numero dispari di nodi. 42. Un albero T si dice ordinato se T ha un solo nodo oppure se ogni suo nodo interno ha etichetta minore delle etichette di ognuno dei suoi figli. Utilizzando per gli alberi la rappresentazione leftmostchild rightsibling, scrivere una funzione ricorsiva in C che avendo in input un albero T restituisce TRUE se T é ordinato, FALSE altrimenti. Soluzioni non ricorsive sono valutate 0.

8 8 43. Utilizzando per gli alberi la rappresentazione sinistradestra, scrivere una procedura ricorsiva in C che dia in output TRUE se T é un albero in cui ogni foglia ha etichetta 2 e ogni nodo interno ha etichetta pari alla somma delle etichette dei suoi figli, FALSE altrimenti. Giustificare la risposta. 44. Utilizzando per gli alberi la rappresentazione leftmostchild rigthsibling, scrivere una funzione ricorsiva che dato un albero T e un intero x, stampa le label di tutti i nodi di T aventi label minore o uguale a x. 45. Utilizzando per gli alberi la rappresentazione sinistradestra, scrivere una funzione ricorsiva in C che avendo in input un albero T, assegna a ogni nodo interno una label pari alla somma delle label dei suoi figli ed assegna label 1 a tutte le foglie. Giustificare la risposta, risposte non giustificate saranno valutate Un albero T si dice di valore L se ogni nodo interno ha esattamente due figli e tutte le foglie hanno lo stesso livello. Il livello di un nodo n in un albero T e la lunghezza del cammino dalla radice di T al nodo n. Sia D(T) la somma dei livelli dei nodi di T e sia V il numero dei nodi di T. Dimostrare la seguente affermazione S(T) mediante induzione strutturale: Se T e un albero di valore L, D(T) = (L 1)( V + 1) a) Disegnare il diagramma delle transizioni di un automa finito deterministico A il cui linguaggio L(A) sia L(A) = {010, 001}. b) Disegnare il diagramma delle transizioni di un automa finito deterministico A il cui linguaggio L(A ) sia L(A ) = {(01) n n 0}. 48. Disegnare il diagramma delle transizioni dell automa finito deterministico A la cui tavola delle transizioni è riportata di seguito. Lo stato iniziale di A è indicato da una freccia, gli stati finali da un asterisco. 0 1 q 0 q 1 q 2 q 1 q 3 q 0 q 2 q 2 q 1 q 3 q 2 q 3 Per ciascuna delle seguenti parole, indicare se essa è accettata o meno dall automa. Giustificare la risposta w {10 n 10 n 0} w {10 n 110 n 0} Disegnare il diagramma delle transizioni dell automa finito deterministico A la cui tavola delle transizioni è riportata di seguito. Lo stato iniziale di A è indicato da una freccia, gli stati finali da un asterisco. Determinare il linguaggio L(A) dell automa A; giustificare la risposta. 0 1 q 0 q 1 q 2 q 1 q 3 q 2 q 2 q 3 q 3 q 3 q 2 q Disegnare il diagramma delle transizioni dell automa finito deterministico A la cui tavola delle transizioni è riportata di seguito. Lo stato iniziale di A è indicato da una freccia, gli stati finali da un asterisco. Determinare il linguaggio L(A) dell automa A. Giustificare la risposta. a b q 0 q 1 q 3 q 1 q 2 q 1 q 2 q 4 q 4 q 3 q 4 q 4 q 4 q 4 q 4

Esercizi per il corso di Algoritmi, anno accademico 2011/12

Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli

Dettagli

Esercizi per il corso di Algoritmi

Esercizi per il corso di Algoritmi 1 Esercizi per il corso di Algoritmi Esercizi sulle Notazioni Asintotiche 1. Esercizio: In ciascuno dei seguenti casi, indicare se f(n) = O(g(n)), o se f(n) = Ω(g(n)), oppure entrambi (nel cui caso occorre

Dettagli

Moltiplicazione veloce di interi

Moltiplicazione veloce di interi Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato

Dettagli

Nozioni di base (II Parte)

Nozioni di base (II Parte) Nozioni di base (II Parte) 1 Ricorsione [GTG14, Par. 5.1-5.4 and 13.1] Algoritmo Ricorsivo: algoritmo che invoca se stesso (su istanze sempre più piccole) sfruttando la nozione di induzione. La soluzione

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi 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

Dettagli

d. Cancellazione del valore 5 e. Inserimento del valore 1

d. 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

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Capitolo 7 Algoritmi di ordinamento 7.1 Selection sort L algoritmo di ordinamento per selezione opera nel modo seguente: supponiamo che i primi k elementi siano ordinati; l algoritmo sceglie il minimo

Dettagli

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi 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

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

Espressioni aritmetiche

Espressioni 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:

Dettagli

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di

Dettagli

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Docente: Maria Rita Di Berardini 19 dicembre 2007 Nome: Cognome: N.Matricola: Note:

Dettagli

Lezione 4 Ugo Vaccaro

Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2017 2018 Lezione 4 Ugo Vaccaro Introduciamo ora la notazione Ω, che ci sarà utile quando vorremo valutare limitazioni inferiori al tempo di esecuzione di algoritmi

Dettagli

Complementi di Algoritmi e Strutture Dati. Soluzioni prova scritta 7 giugno 2017

Complementi di Algoritmi e Strutture Dati. Soluzioni prova scritta 7 giugno 2017 Complementi di Algoritmi e Strutture Dati (III anno Laurea Triennale - a.a. 2016/17) Soluzioni prova scritta 7 giugno 2017 Esercizio Union find (punti 6) Considerare la foresta union-find sottostante e

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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]

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet   francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

INFORMATICA 3 Prof.ssa Sara Comai

INFORMATICA 3 Prof.ssa Sara Comai INFORMATICA 3 Prof.ssa Sara Comai ESERCIZI SESSIONE LIVE 3 Complessità, liste e alberi Ing. Paola Spoletini, Sara Comai. Complessità Si determini l ordine di grandezza Q della complessità temporale di

Dettagli

Algoritmi 25 Febbraio Rispondere alle domande usando lo spazio designato. NON USARE ALTRI FOGLI.

Algoritmi 25 Febbraio Rispondere alle domande usando lo spazio designato. NON USARE ALTRI FOGLI. Algoritmi 25 Febbraio 2011 Prof.ssa M. Anselmo Università di Salerno Cognome: Nome: Matricola: Rispondere alle domande usando lo spazio designato. NON USARE ALTRI FOGLI. Spazio riservato alla correzione

Dettagli

Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica

Esercitazione 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

Dettagli

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene

Dettagli

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

PROGRAMMAZIONE 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

Dettagli

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi Parte prima 1) Si dimostri il teorema sulla limitazione inferiore per il tempo asintotico di esecuzione nel caso

Dettagli

liste ogni nodo ha un successore, tranne l ultimo della lista che ne ha zero; alberi binari ogni nodo ha zero, uno oppure due figli

liste ogni nodo ha un successore, tranne l ultimo della lista che ne ha zero; alberi binari ogni nodo ha zero, uno oppure due figli Alberi generali Gli alberi visti fino a questo momento erano insiemi di nodi collegati fra di loro, in cui ogni nodo poteva avere al massimo due figli. Negli alberi generali, ogni nodo può avere un numero

Dettagli

Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort

Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort Alessandro Panconesi DSI, La Sapienza via Salaria 113, piano terzo

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Di cosa parliamo oggi?

Di cosa parliamo oggi? Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse usate da algoritmi per risolvere un dato problema Risorse = Tempo impiegato dall algoritmo

Dettagli

Informatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1 1) In un diagramma di flusso, la rappresentazione di un ciclo WHILE include sicuramente almeno:

Dettagli

Problemi di ordinamento

Problemi 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

Dettagli

Lezione di Laboratorio di Prgrammazione: /05/2019 a.a. 2018/2019 R.Prevete

Lezione di Laboratorio di Prgrammazione: /05/2019 a.a. 2018/2019 R.Prevete Lezione di Laboratorio di Prgrammazione: 19 13/05/2019 a.a. 2018/2019 R.Prevete Ricorsione La struttura di una funzione ricorsiva per un problema P di dimensione n (n è la dimensione dei dati input, ad

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note 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

Dettagli

In 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. 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

Dettagli

Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE

Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE Prova di Algoritmi e s.d. (1o anno) 7 Febbraio 2003 TESTO e RISPOSTE Esercizio 1 (punti 5 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali). Riportiamo

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

2 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 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

Dettagli

Algoritmi e Strutture Dati 1

Algoritmi 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 =

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione.

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione. Alcuni Soluzioni ESERCIZIO 1 Data una sequenza di interi di dimensione dim, determinare se esistono esattamente cont occorrenze del valore val, utilizzando per questo una variabile booleana check. Stato

Dettagli

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione Prof E Fachini - Intr Alg 1 MergeSort: correttezza MergeSort (A,p,r) if p < r then

Dettagli

Alberi ed Alberi Binari di Ricerca

Alberi ed Alberi Binari di Ricerca Alberi ed Alberi Binari di Ricerca 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

Dettagli

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1 Esercizi su ABR Confronto proprietà ABR e Max-Heap. Proprietà del cammino radice-foglia individuato da una ricerca. Fusione di due ABR. Il successivo calcolato dalla radice Costruzione di un ABR bilanciato

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE 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

Dettagli

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera: MergeSort Usa la tecnica del divide et impera: 1 Divide: dividi l array a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate 1 Esempio di esecuzione 7 2 4 5

Dettagli

Alberi ed Alberi Binari

Alberi 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,

Dettagli

Corso di Programmazione

Corso di Programmazione II Accertamento del 15 Marzo 2002 / A Risolvi i seguenti esercizi, riporta le soluzioni in modo chiaro negli appositi riquadri e giustifica sinteticamente le risposte utilizzando i fogli protocollo. Cosa

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da

Dettagli

PROGRAMMAZIONE III Appello del 7/03/2003

PROGRAMMAZIONE III Appello del 7/03/2003 PROGRAMMAZIONE III Appello del 7/03/2003 Scrivere in stampatello COGNOME, NOME e NUMERO DI MATRICOLA (se conosciuto) su ogni foglio consegnato e sul testo, che va consegnato insieme al compito. ESERCIZIO

Dettagli

Il vettore e la lista concatenate (o catena) sono due esempi di strutture interne.

Il vettore e la lista concatenate (o catena) sono due esempi di strutture interne. Strutture dati PILA e CODA Le strutture dati si dividono in interne e astratte. Quelle astratte sono rappresentazioni dei dati di un problema che rispecchiano le proprietà dei dati e le relazioni usate

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione

Dettagli

Esercizi di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B)

Esercizi di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Esercizi di programmazione ricorsiva Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Corso di Laurea in Informatica Università di Pisa A.A. 2008/09 1. Dare il tipo delle funzione

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla marzolla@cs.unibo.it Dipartimento di Scienze dell Informazione, Università di Bologna 19 ottobre 2010 Copyright c 2009, 2010 Moreno Marzolla, Università

Dettagli

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente. Analisi asintotica Vittorio Maniezzo University of Bologna Analisi asintotica Obiettivo: semplificare l analisi del consumo di risorse di un algoritmo prescindendo dai dettagli implementativi o di altro

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Esercizio. 2 i=i*2) j=j*2)

Esercizio. 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

Dettagli

2 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 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

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla, Lorenzo Donatiello Dipartimento di Infromatica, Università di Bologna 29 ottobre 2017 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna

Dettagli

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg.

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg. In questa lezione Alberi binari: visite e esercizi su alberi binari [CLRS09] cap. 12 per la visita inorder!1 Visita inordine di un albero binario visita inordine(x) se l albero x non è nullo allora visita

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi 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

Dettagli

Informatica A aa Seconda prova in itinere. Esempi di esercizi possibili

Informatica A aa Seconda prova in itinere. Esempi di esercizi possibili Informatica A aa 2002-03 Seconda prova in itinere Esempi di esercizi possibili Struttura della prova-parte 1 Fortran: comprensione di un programma dato (semplice) Reti: domanda teorica (per verificare

Dettagli

Progettazione di Algoritmi (9 CFU) Classe 3 (matricole congrue 2 modulo 3) Prof.ssa Anselmo. Appello del 27 Giugno 2018.

Progettazione di Algoritmi (9 CFU) Classe 3 (matricole congrue 2 modulo 3) Prof.ssa Anselmo. Appello del 27 Giugno 2018. COGNOME: Nome: Progettazione di Algoritmi (9 CFU) Classe 3 (matricole congrue 2 modulo 3) Prof.ssa Anselmo Appello del 27 Giugno 2018 Attenzione: Inserire i propri dati nell apposito spazio soprastante

Dettagli

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1 Notazione asintotica Sebbene si possa talvolta determinare il tempo esatto di esecuzione di un algoritmo, l estrema precisione non giustifica lo sforzo del calcolo; infatti, per input sufficientemente

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi

LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E14 F. Gasparetti, C. Limongelli Maggio 2012 1 Verifica presenza di elementi comuni V1 - Date due liste di stringhe scrivere

Dettagli

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

Prova 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).

Dettagli

Soluzioni della settima esercitazione di Algoritmi 1

Soluzioni 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

Dettagli

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve GLI ALBERI BINARI DI RICERCA Cosimo Laneve argomenti 1. alberi binari di ricerca 2. la ricerca di elementi e la complessità computazionale 3. operazione di cancellazione di elementi 4. esempi/esercizi

Dettagli

ALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi

ALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Corso di Programmazione

Corso di Programmazione II Accertamento del 27 Marzo 2001 / A Risolvi i seguenti esercizi, riporta le soluzioni in modo chiaro negli appositi riquadri e giustifica sinteticamente le risposte utilizzando i fogli protocollo. Cosa

Dettagli

Algoritmi e Principi dell Informatica

Algoritmi e Principi dell Informatica Algoritmi e Principi dell Informatica Appello del 21 Febbraio 2013 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 3 ore. Chi deve sostenere solo il modulo di Informatica

Dettagli

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort In questa lezione Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort [CLRS] par. 2.3. Prof. E. Fachini - Intr. Alg.!1 Progettazione di

Dettagli

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa. 3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il

Dettagli

LISTE CONCATENATE. In Pascal un tipo primitivo "lista concatenata" non esiste. Esso può essere definito utilizzando un tipo puntatore.

LISTE CONCATENATE. In Pascal un tipo primitivo lista concatenata non esiste. Esso può essere definito utilizzando un tipo puntatore. LISTE CONCATENATE In Pascal un tipo primitivo "lista concatenata" non esiste. Esso può essere definito utilizzando un tipo puntatore. REALIZZAZIONE RICORSIVA ELEMENTARE unit lists; interface type elemtype

Dettagli

Alberi. 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. 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

Dettagli

Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione totale /5 /6 /4 /25 /15 /20 /25 /100

Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione totale /5 /6 /4 /25 /15 /20 /25 /100 Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione 1 2 3 4 5 6 7 totale 1. Indicare quali delle seguenti affermazioni sono vere e quali sono false. a. n 3 +n 2 +4 = Θ (n 3 ) b. n! =

Dettagli

Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z

Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Esame di Algoritmi e Strutture Dati Corso di Laurea in Ingegneria Informatica Canali A-L, M-Z Anno Accademico 2002-2003 9 luglio 2002-03 Domanda 1, punti 6 Si consideri la seguente classe Java, in cui,

Dettagli

Strutture dati. Le liste

Strutture dati. Le liste Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi 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

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli

Lezione 6: 12 Novembre 2013

Lezione 6: 12 Novembre 2013 Tutorato di Algoritmi e Strutture Dati [CT0371] Tutor: Alberto Carraro Lezione 6: 12 Novembre 2013 Disclaimer: Queste note non sono state sottoposte al consueto controllo riservato alle pubblicazioni ufficiali.

Dettagli

Strutture dati Alberi binari

Strutture 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

Dettagli

2. Analisi degli Algoritmi

2. Analisi degli Algoritmi 2. Analisi degli Algoritmi Introduzione 2.1 Un modello di macchina elementare: la Macchina a Registri 2.2 Costo di esecuzione di un programma 2.3 Analisi del costo di esecuzione: il modello a costi uniformi

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Damiano Macedonio mace@unive.it Algoritmi e Strutture Dati, A.A. 2012/13 27 ottobre 2012 Original work Copyright c 2009 Moreno Marzolla, Università di Bologna Modifications

Dettagli

4.1 Modelli di calcolo analisi asintotica e ricorrenze

4.1 Modelli di calcolo analisi asintotica e ricorrenze 4 Esercizi Prima Parte 4.1 Modelli di calcolo analisi asintotica e ricorrenze Esercizio 4 1 Rispondere alle seguenti domande: 1. Come misuriamo l efficienza di un algoritmo?. Quali sono gli algoritmi più

Dettagli

Capitolo 19. Ricorsione

Capitolo 19. Ricorsione Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!

Dettagli

Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018

Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018 Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018 Esercizio 1 (Automi a stati finiti) {a, b}. Si considerino i seguenti automi a stati finiti sull alfabeto Per ognuno degli automi,

Dettagli

RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3 RICORSIONE...4 ESEMPI DI RICORSIONE IN VISUAL BASIC...5 ESEMPI DI RICORSIONE IN C / C++...

RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3 RICORSIONE...4 ESEMPI DI RICORSIONE IN VISUAL BASIC...5 ESEMPI DI RICORSIONE IN C / C++... Tre piccioni con una fava: Ricerca Binaria, Albero Binario di Ricerca e Ricorsione prof. Claudio Maccherani - 2006 / 2007 foto Claudio Maccherani RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3

Dettagli

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2010 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti Funzioni e domini definiti induttivamente

Dettagli