Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 15/9/2016
|
|
- Susanna Silvestri
- 7 anni fa
- Visualizzazioni
Transcript
1 Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 15/9/2016 Chi deve recuperare il progetto del modulo 1 ha 1 ora e 30 minuti per svolgere gli esercizi 1, 2, 3 Chi deve recuperare il progetto dei moduli 2/3 ha 1 ora e 30 minuti per svolgere gli esercizi 4, 5, 6 Chi deve sostenere la prova completa ha 2 ore e 30 minuti per svolgere tutti gli esercizi proposti. Durante la prova è consentito consultare libri e appunti. Non è consentito l'uso di dispositivi elettronici (ad esempio, cellulari, tablet, calcolatrici elettroniche...), né interagire in alcun modo con gli altri studenti pena l'esclusione dalla prova, che potrà avvenire anche dopo il termine della stessa. Le risposte devono essere scritte a penna su questi fogli, in modo leggibile e adeguatamente motivate. Le parti scritte a matita verranno ignorate. Eventuali altri fogli possono essere utilizzati per la brutta copia ma non devono essere consegnati e non verranno valutati. I voti saranno pubblicati su AlmaEsami e ne verrà data comunicazione all'indirizzo mail di Ateneo (@studio.unibo.it). Lo studente ha 7 giorni di tempo per rifiutare il voto; tutti i voti non esplicitamente rifiutati entro tale data sono considerati accettati, e verranno in seguito verbalizzati. BARRARE LA CASELLA CORRISPONDENTE ALLA PARTE SVOLTA Svolgo solo la parte relativa al modulo 1 (esercizi 1, 2, 3); Svolgo solo la parte relativa ai moduli 2/3 (esercizi 4, 5, 6); Svolgo tutto il compito NON SCRIVERE NELLA TABELLA SOTTOSTANTE Es. 1 Es. 2 Es. 3 Es. 4 Es. 5 Es. 6 / 4 / 2 / 2 / 2 / 4 / 2 / 4 / 1 / 3 / 1 / 1 / 2 / 2 / 2
2 Esercizio 1. La sequenza di Fibonacci di ordine p, p 2, è una estensione della sequenza di Fibonacci vista a lezione, in cui ciascun valore si ottiene sommando i p valori precedenti. Formalmente, la sequenza di Fibonacci di ordine p, F p (1), F p (2), F p (n),... è definita come: - F p (i) = 1 per ogni 1 i p - F p (n) = F p (n - 1) + F p (n - 2) + + F p (n - p) per ogni n > p Si noti che ponendo p = 2 si ottiene la consueta sequenza di Fibonacci 1, 1, 2, 3, 5, 8, 13, Scrivere un algoritmo efficiente che, dati in input i valori n e p, restituisce F p (n), ossia l'nesimo valore della sequenza di Fibonacci di ordine p. [punti 4] 2. Determinare il costo asintotico dell'algoritmo precedente, espresso in funzione di n e p. [punti 2] Soluzione. Una possibile soluzione ricalca la versione iterativa del calcolo della successione di Fibonacci, utilizzando un array F[1..n] per evitare la ricorsione. integer FibonacciP(integer p, integer n) if (n p) then return 1; else integer F[1..n], i, j; for i 1 to p do F[i] 1; for i p + 1 to n do F[i] 0; for j 1 to p do F[i] F[i] + F[i - j]; return F[n]; Questa soluzione richiede spazio O(n) e tempo O(np), a causa dei due cicli for annidati che sono necessari per calcolare F[i]. In realtà il ciclo più interno non è necessario, perché ad ogni iterazione del ciclo più esterno è possibile ricalcolare la somma partendo da quella disponibile dopo il passo precedente: integer FibonacciP(integer p, integer n) if (n p) then return 1; else integer F[1..n], i, sum; for i 1 to p do F[i] 1; sum p; for i p + 1 to n do F[i] sum; sum sum F[i - p] + F[i]; return F[n]; Questa nuova soluzione richiede sempre spazio O(n) ma costo O(n) (che è indipendente da p). In modo più laborioso è possibile ridurre lo spazio da O(n) a O(p), lasciando inalterato il tempo O(n);
3 questo può essere vantaggioso nel caso in cui p sia molto minore di n, che appare uno scenario ragionevole. Utilizziamo un array F[0..p] di (p + 1) elementi, che gestiamo come un buffer circolare in cui memorizzare i valori precedenti F p (i - 1) + F p (i - 2) + + F p (i - p) e il valore corrente F p (i). L'indice np indica la posizione in F[] corrispondente al valore F p (i - p), mentre nn indica la posizione in F[] in cui memorizziamo F p (i): np F p (i-p)... F p (i-1) nn F p (i) sum integer FibonacciP(integer p, integer n) if (n p) then return 1; else integer F[0..p], i, sum, np, nn, last; for i 0 to p - 1 do F[i] 1; sum p; np 0; nn p; for i p to n - 1 do F[nn] sum; last sum; sum sum F[np] + F[nn]; np (np + 1) mod (p + 1); nn (nn + 1) mod (p + 1); return last; Molti si sono limitati a trascrivere l'algoritmo per il calcolo dei normali numeri di Fibonacci, che si ottengono sommando i due valori precedenti. Non basta cambiare l'estremo iniziale del ciclo for dell'algoritmo di Fibonacci con un for i <- p to n do... perche' sia corretto. Questo esercizio e' estremamente semplice, almeno nella sua soluzione base (la prima che e' stata mostrata sopra, che avrebbe comunque consentito di ottenere punteggio pieno). Chi non e' riuscito a impostarlo correttamente e' invitato a migliorare il proprio livello di preparazione..
4 Esercizio 2. L'algoritmo seguente restituisce true se e solo se nell'array A[1..n] (che deve contenere n 2 elementi) sono presenti due valori contigui uguali. bool CONTIGUIUGUALI( intger A[1..n] ) for integer i 1 to n - 1 do if ( A[i] == A[i + 1] ) then // (*) return true; return false; 1. Assumendo n grande, determinare il minimo numero di volte in cui il test A[i] == A[i+1] (riga marcata con (*)) viene eseguito, in funzione di n. E' richiesto di indicare il valore esatto; motivare la risposta, indicando con quali input la riga (*) viene eseguita il numero minimo di volte. [punti 2] 2. Assumendo n grande, determinare il massimo numero di volte in cui il test A[i] == A[i+1] (riga marcata con (*)) viene eseguito. E' richiesto di indicare il valore esatto; motivare la risposta, indicando con quali input la riga (*) viene eseguita il numero massimo di volte. [punti 2] Soluzione. Il minimo numero di volte è 1, che si verifica quando i primi due elementi di A sono uguali; il massimo numero di volte è n - 1, che si verifica quando l'array A non contiene valori adiacenti uguali.
5 Esercizio 3. Consideriamo un albero binario di struttura arbitraria T in cui a ciascun nodo v sia associato un valore intero v.val. L'albero è rappresentato mediante nodi con puntatori ai figli. Scrivere un algoritmo ricorsivo che, dato in input un riferimento alla radice di T, restituisce il numero di nodi i cui figli hanno lo stesso valore. Ad esempio, considerando l'albero seguente: l'algoritmo restituisce 2, in quanto ci sono due nodi (la radice, e il suo figlio sinistro) in cui entrambi i figli hanno lo stesso valore. [punti 4] Determinare il costo asintotico dell'algoritmo proposto, motivando la risposta. [punti 2] Soluzione. integer ALG( Tree T ) if (T == NULL) then return 0; else integer c 0; if ( T.right NULL and T.left NULL and T.right.val == T.left.val ) then c 1; return c + ALG(T.left) + ALG(T.right); L'algoritmo ha costo (n), dove n -il numero di nodi dell'albero.
6 Ho visto diverse soluzioni simili alla seguente (con varianti): integer FIGLIUGUALI(Tree T) if ( T == null ) then return 0; else if (T.left == T.right) then return 1; else return FIGLIUGUALI(T.left) + FIGLIUGUALI(T.right); L'algoritmo precedente contiene diversi errori: 1. Il test if (T.left == T.right)... avrebbe dovuto essere scritto come if (T.left.val == T.right.val)... ; in realtà anche così non sarebbe stato corretto (vedi punto successivo) 2. T.left indica il riferimento alla radice del sottoalbero sinistro (in modo simile, T.right indica il riferimento alla radice del sottoalbero destro). Prima di controllare il valore associato a tale nodo, è necessario verificare che il sottoalbero sinistro esista, cioè che T.left sia diverso da null (stessa cosa per T.right) 3. Una volta assicurati che i figli sinistro e destro esistano, e che i loro valori siano uguali, non è corretto ritornare subito 1; occorre invece effettuare una chiamata ricorsiva per contare anche il numero di nodi con figli aventi lo stesso valore nei sottoalberi sinistro e destro.
7 Esercizio 4. Un traghetto può trasportare al massimo N veicoli, e può sostenere un peso complessivo minore o uguale a W kg (entrambi questi vincoli devono essere rispettati). All'imbarco sono presenti n 1 veicoli aventi pesi P[1..n]. I veicoli devono essere imbarcati nell'ordine in cui sono presenti nell'array (prima quello di peso P[1], poi quello di peso P[2] e così via). Quando non è più possibile imbarcare ulteriori veicoli (perché si supererebbe il numero massimo di veicoli consentiti N oppure il peso massimo W), il traghetto effettua un viaggio per portare il carico a destinazione e torna indietro vuoto. Tutti i pesi sono numeri reali positivi; nessun veicolo ha peso superiore a W (quindi tutti i veicoli possono essere caricati) 1. Scrivere un algoritmo greedy che dati in input il numero massimo di veicoli N, la capacità W del traghetto e i pesi P[1..n] dei veicoli, restituisce il numero di viaggi (considerando solo l'andata) che è necessario effettuare per trasportare tutti i veicoli. Ad esempio, se N = 3, W = 1000 e P = [100, 300, 200, 400, 100, 400, 300, 400, 350, 500], l'algoritmo deve restituire 4 in quanto sono necessari 4 viaggi ( , , e ). [punti 4] 2. Determinare il costo asintotico dell'algoritmo proposto, motivando la risposta. [punti 1] Soluzione. integer TRAGHETTO( integer N, double W, double P[1..n] ) integer nv 0; // numero viaggi integer i 1; while ( i n ) do // Imbarchiamo più veicoli possibili double Wres W; // capacità residua del traghetto integer Nres N; // numero residuo di veicoli imbarcabili while ( i n and Wres R[i] and Nres > 0) then Wres Wres R[i]; Nres Nres - 1; i i + 1; endwhile nv nv + 1; endwhile return nv; Il costo asintotico è (n). Un esercizio vagamente simile è presente nella dispensa di esercizi svolti. Però l'esercizio proposto qui differisce da quello nella dispensa perché include un ulteriore vincolo sul numero N di veicoli che il traghetto può trasportare per ogni viaggio. L'algoritmo deve quindi essere adattato di conseguenza.
8 Esercizio 5. Si consideri un file contenente unicamente i caratteri 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'; le frequenze con cui questi caratteri compaiono nel file sono indicate nella tabella sottostante: A B C D E F G H 2% 15% 13% 21% 19% 18% 9% 3% Eseguire manualmente l'algoritmo di compressione di Huffman visto a lezione utilizzando i caratteri e le frequenze date. Disegnare l'albero di compressione man mano che viene costruito, e mostrare l'albero di compressione finale. [punti 3] Scrivere la codifica della stringa 'ABECE' usando l'albero di compressione ottenuto al punto precedente. [punti 1]
9 Esercizio 6. Un commesso viaggiatore ha clienti che risiedono in n città, tutte situate lungo una strada rettilinea. La città i-esima si trova a distanza d[i] (in Km, numero reale maggiore o uguale a zero) dall'inizio della strada, e ha c[i] clienti (intero maggiore o uguale a zero) del commesso viaggiatore; le città sono numerate da 1 a n, in ordine crescente di distanza dall'origine. Si faccia riferimento all'esempio seguente con n = 5 città d[1] d[2] d[3] d[4] d[5] 0 città Il commesso viaggiatore parte dall'origine della strada e si muove verso la fine, senza mai tornare indietro. Poiché non ha abbastanza tempo per fermarsi in tutte le città, decide di non visitare una città se dista meno di 100km da quella precedentemente visitata (la distanza tra due città j e i, 1 j i n è d[i] d[j]). Il commesso viaggiatore vuole risolvere il seguente problema: determinare il massimo numero di clienti che può visitare, scegliendo un opportuno sottoinsieme di città che soddisfano il vincolo descritto sopra. Per risolvere il problema usa un algoritmo basato sulla programmazione dinamica (la soluzione greedy di visitare sempre la prima città a distanza 100km dall'ultima visitata non garantisce sempre di trovare il valore ottimo). A tale scopo, definisce m[i] come il massimo numero di clienti che può visitare scegliendo un opportuno sottoinsieme delle città {1, 2, i}, nell'ipotesi che visiti la città i. 1. Quanto vale m[1]? [punti 1] 2. Scrivere la regola per calcolare m[i], 2 i n [punti 2] 3. Supponendo di aver calcolato i valori m[1], m[2], m[n], come si fa a determinare la soluzione del problema, cioè il massimo numero di clienti che il commesso viaggiatore può visitare scegliendo un opportuno sottoinsieme delle n città? (Attenzione...) [punti 2] 4. Scrivere un programma che calcola la soluzione del problema (non è richiesto di calcolare le città da visitare, ma solo il massimo numero di clienti raggiungibili). [punti 2] Soluzione. Si ha: m[1] = c[1] m[i] = c[i] + max{ m[j] 1 j < i and d[i] d[j] 100 } Attenzione al fatto che la soluzione al problema NON è m[n], ma è max{ m[i] 1 i n } integer COMMESSOVIAGGIATORE( real d[1..n], integer c[1..n] ) integer m[1..n]; integer i, j, result; m[1] c[1]; result m[1]; for i 2 to n do integer max 0; for j 1 to i 1 do if (d[i] d[j] 100 and m[j] > max) then max m[j]; ; m[i] c[i] + max; if (m[i] > result) then result m[i];
10 ; return result;
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
DettagliProblemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
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
DettagliIl problema dello zaino
Il problema dello zaino (knapsack problem) Damiano Macedonio mace@unive.it Copyright 2010 2012 Moreno Marzolla, Università di Bologna (http://www.moreno.marzolla.name/teaching/asd2011b/) This work is licensed
DettagliEsercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore
DettagliUNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi
DettagliEsempio : i numeri di Fibonacci
Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed
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
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
DettagliEsercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
DettagliProgettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai
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
DettagliALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA)
ALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA) Definizione induttiva: un albero vuoto è un albero di ricerca binario un albero non vuoto avente per radice l'elemento (di chiave) x e per sottoalberi
DettagliProgrammazione 1 A.A. 2015/2016
Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,
DettagliAlberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
DettagliT 1 =1. n 6 n. T n =3 T. Esercizio 1 (6 punti)
A.A. 7 8 Esame di Algoritmi e strutture dati 9 luglio 8 Esercizio (6 punti) Risolvere con almeno due metodi diversi la seguente relazione di ricorrenza T = T n =3 T n 6 n A.A. 7 8 Esame di Algoritmi e
DettagliIl presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 30 giugno 04 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi e deve
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliCorso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 25/6/2015
Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 25/6/2015 Chi deve recuperare il progetto del modulo 1 ha 1 ora e 30 minuti per svolgere gli esercizi 1, 2, 3 Chi deve recuperare
DettagliNell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:
Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi
DettagliProblema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
DettagliDati 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
DettagliProgettazione di algoritmi
Progettazione di algoritmi Discussione dell'esercizio [labirinto] Nel testo dell'esercizio abbiamo considerato come lunghezza del percorso il numero di bivi ma possiamo stimare meglio la lunghezza reale
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,
DettagliMatrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili
Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo del determinante Difficili Soluzione di sistemi lineari È veramente difficile? 1 Matrici.h
DettagliTempo e spazio di calcolo (continua)
Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza
DettagliAlberto Montresor Università di Trento
!! Algoritmi e Strutture Dati! Capitolo 5 - Alberi!!! Alberto Montresor Università di Trento!! This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy
DettagliEsercizi 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,
DettagliIl problema del commesso viaggiatore
Il problema del commesso viaggiatore Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università
DettagliLa principale modalità di calcolo è l applicazione di funzioni
1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un
DettagliUNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013
A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa Seconda prova intermedia 7 giugno 0 Nome: Cognome: Matricola: Orale /06/0 ore aula N Orale 0/07/0 ore aula N
DettagliIntroduzione alla programmazione Esercizi risolti
Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma
DettagliInformatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
DettagliINFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 29 novembre 2010 1 Rotazioni semplici in ABR Si consideri l operazione di rotazione semplice applicata
DettagliAlgoritmi e strutture di dati 2
Paola Vocca Lezione 4: Programmazione dinamica 1 Caratteristiche Programmazione dinamica: paradigma basato sullo stesso principio utilizzato per il divide et impera o il problema viene decomposto in sotto-problemi
DettagliProgrammazione dinamica
Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione
DettagliIndici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2
INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliIn questa lezione Strutture dati elementari: Pila Coda
In questa lezione Strutture dati elementari: Pila Coda 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni che li modificano (insiemi dinamici). Le
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite
DettagliProgettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 29/01/2016 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via
DettagliProblema del cammino minimo
Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento
DettagliEsercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:
Esercizi su Python 14 maggio 2012 1. Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che: 1. conti quanti elementi pari sono presenti nella lista; 2. conti quanti quadrati
DettagliInformatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli
Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti Dipartimento di Elettronica e Informazione Informatica B Prof. Marco Masseroli LAB 4: MATLAB/OCTAVE ESERCIZI
DettagliProgrammazione Funzionale
1/11 Programmazione Funzionale Esercizi in preparazione dell esame Davide Mottin - Themis Palpanas May 28, 2014 Svolgimento d esame Inferire il tipo di un espressione Esercizi sul lambda-calcolo Esercizi
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliRicorsione. La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa
Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa È basata sul principio di induzione matematica: se una proprietà P vale per n=n 0 e si può
DettagliLaboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L
DettagliAlgoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014
Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014 Nome..Cognome.Matr. Laureando Avvisi importanti Il tempo a disposizione è di 1 ora e 30 minuti. Se non verranno risolti
DettagliAlgoritmi e Strutture Dati. HeapSort
Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene
DettagliUniversità di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando
Università di Roma Tor Vergata L6-1 iterazione: struttura di controllo per ripetere più volte uno stesso comando comandi iterativi C++: while, do-while, for while: sintassi while (espressione) comando;
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 5 - Alberi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this
DettagliDipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano
Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano 20133 Milano (Italia) Piazza Leonardo da Vinci, 32 Tel. (+39) 02-2399.3400 Fax (+39) 02-2399.3411 Informatica ed Elementi
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
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 =
DettagliOgni parte non cancellata a penna sarà considerata parte integrante della soluzione.
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 18 luglio 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 3 esercizi
DettagliEsercizi sulla complessità di frammenti di pseudo-codice
Esercizi sulla complessità di frammenti di pseudo-codice Esercizio 1 Si determini la complessità temporale del seguente frammento di pseudo-codice in funzione di n. Il ciclo contiene solo istruzioni elementari;
DettagliAlgoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative
Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli Formule iterative L algoritmo che, comunemente, viene presentato a scuola per l estrazione della radice quadrata è alquanto laborioso e di scarsa
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera
DettagliADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
DettagliPROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
DettagliPROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica
PROGRAMMAZIONE DINAMICA Quando si usa P.D.? La programmazione dinamica si usa nei casi in cui esista una definizione ricorsiva del problema, ma la trasformazione diretta di tale definizione in un algoritmo
DettagliIl tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
DettagliIntroduzione agli algoritmi Prova di esame del 30/6/2016 Prof.sse E. Fachini - R. Petreschi
B Introduzione agli algoritmi Prova di esame del 30/6/2016 Prof.sse E. Fachini - R. Petreschi Si consideri l operazione di inserimento in un AVL. Si supponga di trovarsi nel caso in cui una rotazione a
DettagliPrima 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
DettagliAlgoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliLe Funzioni e la Ricorsione
Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html
DettagliProgettazione di algoritmi
Progettazione di algoritmi Discussione dell'esercizio [palindroma] Dobbiamo trovare un algoritmo efficiente che data una stringa s di n caratteri trova la più lunga sottostringa di s che sia palindroma.
DettagliARRAY 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
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliEsercizi per il corso di Algoritmi
1 Esercizi per il corso di Algoritmi Esercizi sulla Tecnica Programmazione Dinamica 1. Esercizio: Si consideri la seguente variante del problema dello Zaino 0/1. L input é costituito da n oggetti a 1...,a
DettagliHeap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliSistemi Web per il turismo - lezione 3 -
Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa
DettagliELEMENTI DI INFORMATICA E PROGRAMMAZIONE
COGNOME E NOME: Università degli Studi di Brescia ELEMENTI DI INFORMATICA E PROGRAMMAZIONE ALLIEI Ingegneria GESTIONALE PARTE A.1 - ELEMENTI 10/02/2016 NUM. MATRICOLA PER RITIRARSI SCRIERE QUI "RITIRATO"
DettagliUn elenco di esercizi per il corso Matematica docente: Alberto Dolcetti
Un elenco di esercizi per il corso Matematica docente: Alberto Dolcetti Ricevo molti messaggi di posta elettronica che suggeriscono varie soluzioni per gli esercizi proposti. Questo non mi dispiace perchè
DettagliDIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione
INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che
Dettagliin termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico
Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito
DettagliGrafi: visita generica
.. Grafi: visita generica Una presentazione alternativa (con ulteriori dettagli) Algoritmi di visita Scopo: visitare tutti i vertici di un grafo (si osservi che per poter visitare un vertice occorre prima
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliAlberi binari. Esercizi su alberi binari
Alberi binari Definizione della struttura dati: struct tree int dato; struct tree *sx, *dx; ; typedef struct tree tree; Esercizi su alberi binari 1. Scrivere una funzione che cerchi un intero k all'interno
DettagliAlgoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.
E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare
DettagliRealizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.
Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float
DettagliAlgoritmo basato su cancellazione di cicli
Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile
DettagliParte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1
Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta
DettagliInformatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande/ VERSIONE 1 1) L approccio con cui si studia un sistema focalizzandosi solo sul rapporto tra input e output si chiama
DettagliMini-Corso di Informatica
Mini-Corso di Informatica CALCOLI DI PROCESSO DELL INGEGNERIA CHIMICA Ing. Sara Brambilla Tel. 3299 sara.brambilla@polimi.it Note sulle esercitazioni Durante le esercitazioni impareremo a implementare
DettagliPolitecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato
DettagliCorso di Fondamenti di Informatica Classi di istruzioni 2
Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da
DettagliASD Laboratorio 08. Cristian Consonni/Alessio Guerrieri 02/12/2016. Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/ / 14
ASD Laboratorio 08 Cristian Consonni/Alessio Guerrieri 02/12/2016 Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/2016 1 / 14 CALENDARIO (UPDATE) 25/11 Dinamica 1 02/12 Dinamica 2 09/12 No
DettagliEsercitazione. 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
DettagliCalcolatori: Sistemi di Numerazione
Calcolatori: Sistemi di Numerazione Sistemi di Numerazione: introduzione In un Calcolatore, i Dati e le Istruzioni di un Programma sono codificate in forma inaria, ossia in una sequenza finita di e. Un
DettagliESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 28 Gennaio 1999 PROVA SCRITTA
28 Gennaio 1999 PROVA SCRITTA Esercizio 1 Un elaboratore rappresenta numeri interi in complemento a due su 8 bit e numeri reali in utilizzando un byte per la mantissa normalizzata e un byte per l esponente
DettagliAlgoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1
Algoritmi (9 CFU) (A.A. 2009-10) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Overview Definiamo la struttura dati heap Operazioni di costruzione e gestione di un heap Algoritmo Heapsort Code
Dettagli