Esercizi di complessità (presi da scritti di esame)
|
|
- Gabriela Elvira Falcone
- 5 anni fa
- Visualizzazioni
Transcript
1 Esercizi di complessità (presi da scritti di esame) Esercizio... (punti 8 in prima approssimazione) L'algoritmo che segue simula un torneo ad "eliminazione diretta"; la procedura elimina, ad ogni passo, simula una fase di eliminazione. Per semplicità supponiamo che i concorrenti siano n, con n che è potenza di 2; inoltre supponiamo che i concorrenti siano numeri interi diversi; tra due vince il maggiore. Algoritmo: var: n, k, j : int concorrenti : array [1.. MAX ] of int leggi ( n ) qui si suppone n MAX per k = 1, 2, 3,... n : leggi (concorrenti[ k ] ) j n div 2 divisione intera while ( j > 0 ) { elimina ( concorrenti, j ) j j div 2 } stampa ( concorrenti [1]) ecco il vincitore! ======================= procedura elimina ( aa : array [1.. MAX ] of int IN-OUT, sup : int IN ) ; { qui si suppone sup MAX var i : int ; per i = 1, 2, 3..., sup: if aa[ 2*i - 1 ] < aa[ 2*i ] then aa[ i ] aa[ 2*i ] else aa[ i ] aa[ 2*i - 1 ] } Domande: a) Calcolare la complessità della chiamata: elimina ( concorrenti, j ) in funzione di j b) Calcolare la complessità dell'algoritmo in funzione di n 1
2 Risposte: a) Indichiamo con TT ( j ) la complessità della chiamata: elimina ( concorrenti, j ), in funzione di j. I costi sono tutti costanti (passaggio dei parametri, valutazione delle espressioni, esecuzione dell' istruzione if-then-else); il costo totale dipende solo da quante volte si esegue l' if-then-else (cioè quante volte si ripete il ciclo for). Quindi TT ( j ) = a j + b (con a, b costanti oppertune e a> 0) dunque TT ( j ) è in Q( j ). b) Indichiamo con T ( n ) la complessità dell'algoritmo, in funzione di n. I costi sono tutti costanti, tranne che quello delle istruzioni per e while Il costo di per k = 1... n :... è ovviamente lineare in n Il while si ripete per j = n/2, n/4,..., n/(2 i ),..., n/n il costo del while è dunque dato dalla sommatoria (c, d costanti, c > 0 )  (j = n/2,...) (c j + d) = c  (j = n/2,...) j +  (j = n/2,...) d La seconda sommatoria ha per valore circa d( log 2 n ) infatti gli j sono circa log 2 n La prima è c (n/2 + n/ ) = quindi è circa c n c n ( 1/2 + 1/4 + 1/ /n) = c n (1-1/n) [ vedere (*) sotto ] Sommando tutto, il termine dominante e` lineare in n quindi T ( n ) è in Q( n ). (*) notare che : 1/2 + 1/4 = 1-1/4 1/2 + 1/4 + 1/8 = 1-1/8 1/2 + 1/4 + 1/8 + 1/16 = 1-1/16 eccetera questo si vede ancora meglio disegnando una "torta" Esercizio... (punti 6 in prima approssimazione) L'algoritmo che segue non fa nulla di interessante... Algoritmo: var: n, val, q : integer pot : array [1.. MAX ] of integer 2
3 leggi ( n ) qui supponiamo n MAX leggi ( val ) per q = 0, 1, 2,... n-1 : pot [q+1] val + q per q = 2, 3, 4,... n : ppp ( pot, q ) ======================= procedura ppp( aa : array [1.. MAX ] of integer IN-OUT, ind : integer IN ) { qui si suppone ind MAX var aux, cont : integer aux 1 ; cont ind while cont > 0 { aux aux * aa[ind ] cont cont -1 } aa[ind] aux } Domande: a) Calcolare la complessità della chiamata: ppp ( pot, q ) in funzione di q b) Calcolare la complessità dell'algoritmo in funzione di n Risposte: a) Nella procedura ppp tutti i costi (incluso il passaggio dei parametri) sono costanti, tranne quello del while; nel while: test e corpo sono a costo costante; l'esecuzione del corpo si ha per cont = q, q-1,...,1; quindi il while ha un costo del tipo a q + b (a, b constanti, a > 0); dunque il costo dellla chiamata è della forma a q + c ed è in Q( q ). b) Nell'algoritmo, tutto ha costo costante, tranne le due istruzioni per. La prima ( per q = 0, 1, 2,... ) ha test, incrementi e corpo a costo costante, quindi ha un costo totale della forma a n + b (a, b costanti, diverse dalle precedenti, a >0) La seconda ( per q = 2, 3, 4,... n : ppp (pot, q) ) ha un costo proporzionale a: Â ( q = 2, 3,...,n) q = a' n 2 + b'n + c' [vedi nota] Quindi tutto l'algoritmo è in Q( n 2 ). 3
4 Nota: molti hanno avuto problemi con la somma Nel tentativo di cavarsela hanno scritto ( piu' o meno):  ( q = 2, 3,...,n) q =  ( q = 0, 1,...,n-2) q  ( q = 2, 3,...,n) q Non va bene (basta provare a verificare con n= 3...) Era molto piu' semplice:  ( q = 2, 3,...,n) q = (  ( q = 0, 1,...,n) q ) Esercizio... (punti 6 in prima approssimazione) L'algoritmo che segue non fa nulla di interessante... Algoritmo: var: leggi ( k ) j, k, p: integer aa : array [1.. MAX ] of integer qui supponiamo k MAX per j = 1, 2,... k : leggi (aa[j]) qui supponiamo input corretto p 1 while p < k do { Domanda: } per j = 1, 2,..., p : scrivi a[j] scrivi (" * ") per j = p+1, p+2,..., k : scrivi a[j] p 2 * p Calcolare la complessità dell'algoritmo in funzione di k Precisare se c'è un caso peggiore e,se c'è, qual'è. Risposta: Nell'algoritmo tutti i costi sono costanti, tranne: 4
5 per j = 1, 2,... k : leggi (aa[j]) costo della forma ak + b (a>1) il while, il cui costo si valuta come segue: -- le istruzioni per k = 1, 2,..., p : scrivi a[k] per k = p+1, p+2,..., n : scrivi a[k] valutate globalmente hanno un costo della forma ck + d (c>1) -- il while si esegue per p = 1, 2, 4, 8,..., 2 s, con 2 s che e` circa k, quindi si esegue log k volte circa; ad ogni iterazione il costo è sempre lo stesso ed è quello indicato sopra piu' costanti (per le altre istruzioni del corpo, il test,...) quindi: ck+d' ( Usando le sommatorie ed ignorando le costanti:  (p=1,2,4,8,...,k) k = k  (p=1,2,4,8,...,k) 1 = k log k ) Quindi il costo totale dell'algoritmo ha la forma che è in Q( k log k). Non c'è un caso peggiore. log k (ck+d') + ak+b + b' Esercizio... (punti 6 in prima approssimazione) L'algoritmo che segue non fa nulla di interessante... var: j, k, p: integer aa : array [1.. MAX ] of integer bb : array [1.. MAX ] of integer leggi ( k ) qui supponiamo 0 < k MAX aa[1] 1 per j = 2, 3,... k : aa[j] aa[j-1]+1 per j = 1,2, 3,... k : bb[j] aa[j] p k while p >0 do { per j = 1, 2,..., p : bb[j] aa[j] * bb[j] p p div 2 } Domanda: Calcolare la complessità dell'algoritmo in funzione di k. Precisare se c'è un caso peggiore e, se c'è, qual'è. 5
6 Risposta La complessità dell'algoritmo è in Q(k); infatti Non c'è una caso peggiore. Tutto ha costo costante, tranne le due istruzione "per" ed il while. I due " per " hanno, ciascuno, un costo della forma ak+b (a, b costanti, a 1). Quanto al while: il corpo si esegue per p = k, k/2, k/4, k/8,..., k/(2 alla j),... il costodel corpo è della forma cp+d (c, d costanti, c 1); Quindi il costo del while è dato da S (p = k, k/2, k/4, k/8,...) (cp+d) = c S (p =...) p + d S (p =...) 1 Ovviamente il primo termine è quello dominante, quindi possiamo limitarci a calcolare la prima sommatoria; scrivendola per disteso c( k + k/2 + k/4 + k/8 + k/ ) = c k (1 + 1/2 + 1/4 + 1/8 + 1/ ) che è circa 2ck infatti 1/2 + 1/4 + 1/8 + 1/ è circa 1 (come si vede subito, pensando ad una torta). 6
Esame di Programmazione 18 Febbraio 2003 TESTO E RISPOSTE
Esame di Programmazione 18 Febbraio 2003 TESTO E RISPOSTE Esercizio 1 Comprensione codice C (punti 8 in prima approssimazione) Consideriamo il seguente codice C ( NON è un esempio di buon codice C!!! )
DettagliScritto di Algoritmi e s.d. (1o anno) 27 Settembre 2005 RISPOSTE
Scritto di Algoritmi e s.d. (o anno) 7 Settembre 005 RISPOSTE COGNOME: NOME: Esercizio TOT VOTO Esercizio a stampa: a stampa: Esercizio a) h : b) Il resto su fogli protocollo, ORDINATAMENTE Scritto di
DettagliScritto di Algoritmi e s.d. (1o anno) 5 Luglio 2005
Scritto di Algoritmi e s.d. (1o anno) Luglio 200 Esercizio 1 (punti in prima approssimazione) Consideriamo il seguente codice C: #include #include typedef struct cella * List; struct
DettagliUn esempio di calcolo di complessità: insertion sort
Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o
DettagliScritto di Algoritmi e s.d. (1o anno) 30 Giugno 2006 RISPOSTE
Scritto di Algoritmi e s.d. (1o anno) 30 Giugno 2006 RISPOSTE COGNOME: NOME: Esercizio 1 Esercizio 2 se necessario usare anche il retro del foglio 1 Esercizio 3 2 Esercizio 4 3 Esercizio 5 Indicare chiaramente
Dettagli2a Prova parziale di Algoritmi e s.d. (1o anno) 13 Giugno 2002 TESTO E RISPOSTE. ATTENZIONE: questa e` una delle varianti...
2a Prova parziale di Algoritmi e s.d. (1o anno) 13 Giugno 2002 TESTO E RISPOSTE ATTENZIONE: questa e` una delle varianti... Esercizio 1 (punti 3 + 1 per chi si e` accorto dell'errore...e) Consideriamo
DettagliProva 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
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
DettagliESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) DISPENSA N. 4 1. Ricerca Binaria Ricorsiva L algoritmo Ricerca Binaria risolve il problema della ricerca di una chiave in un vettore. È un esempio
DettagliISTRUZIONI A B K A, B, K A<B? SI A<B? SI A<B? SI
SECONDA PARTE 6. LA RIPETIZIONE while ISTRUZIONI A B K A, B, K 0 10 0 While A
DettagliUn 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
DettagliMatematica - SMID : Programmazione 16 Febbraio 2004
Matematica - SMID : Programmazione 16 Febbraio 2004 Testo e Risposte (in fondo) Esercizio 1 Comprensione codice C (punti 10 in prima approssimazione) Consideriamo il seguente codice C (che non è un buon
DettagliMatematica - SMID : Programmazione 20 Febbraio 2007 FOGLIO RISPOSTE
Matematica - SMID : Programmazione 20 Febbraio 2007 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano
DettagliCodice Gray. (versione Marzo 2007)
Codice Gray (versione Marzo 27) Data una formula booleana con n variabili, per costruire una tavola di verità per questa formula è necessario generare tutte le combinazioni di valori per le n variabili.
DettagliLinguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»
Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite
Dettagli1a Prova parziale di Programmazione 29 Novembre 2002 TESTO E RISPOSTE
1a Prova parziale di Programmazione 29 Novembre 2002 TESTO E RISPOSTE Esercizio 1 Comprensione codice C (punti 10 in prima approssimazione) Consideriamo il seguente codice C #include #define
DettagliNell' Informatica è importante porsi questa domanda: Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due
Complessità Nell' Informatica è importante porsi questa domanda: Quanto costa risolvere un dato problema? Questo è l'argomento che viene trattato nella Complessità Computazionale, e si articola in due
DettagliPseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.
Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale
DettagliSommario. Un algoritmo di ordinamento di complessità lineare: CountingSort. [CLRS10] cap. 8 par.8.2
Sommario Un algoritmo di ordinamento di complessità lineare: CountingSort [CLRS10] cap. 8 par.8.2!1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento
DettagliCalcolare 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
DettagliNozioni 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
DettagliEsercizi 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
DettagliAlgoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione
DettagliPer regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente
Progetto di algoritmi sequenziali (un solo esecutore ) Divide et Impera Per regnare occorre tenere divisi i nemici e trarne vantaggio Greedy fai ad ogni passo la scelta più conveniente Buoni risultati
DettagliAlgoritmi e Strutture Dati. Capitolo 4 Ordinamento
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
DettagliFONDAMENTI DI PROGRAMMAZIONE ESERCITAZIONI Corso di Laurea in MATEMATICA a.a. 2018/19
FONDAMENTI DI PROGRAMMAZIONE ESERCITAZIONI Corso di Laurea in MATEMATICA a.a. 2018/19 Chiara Bodei 1 Dipartimento di Informatica email: chiara.bodei@unipi.it C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE
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;
DettagliProblema: stampa degli interi compresi tra n e m
Costrutti imperativi Problema: stampa degli interi compresi tra n e m http://caml.inria.fr/pub/docs/manual-ocaml/libref/pervasives.html Output functions on standard output val print_string: string -> unit
DettagliCamil 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
DettagliMatematica - SMID : Programmazione 22 Gennaio 2004 Testo e Risposte
Matematica - SMID : Programmazione 22 Gennaio 2004 Testo e Risposte Esercizio 1 Comprensione codice C (punti 9 in prima approssimazione) Consideriamo il seguente codice C (che non è un buon esempio di
DettagliEsercitazioni di Elementi di Informatica
Esercitazioni di Elementi di Informatica Docente: Prof. Angelo Chianese angelo.chianese@unina.it Tutor: Ing. Antonio Picariello antonio.picariello@unina.it Interpreti e Compilatori Interprete Es. Qbasic
Dettagli4. Algoritmi Numerici Fondamentali
4. Algoritmi Numerici Fondamentali Consideriamo adesso un algoritmo classico, per il calcolo del Massimo Comun Divisore (MCD) tra due numeri interi, n ed m: l'algoritmo di Euclide. Senza perdita di generalità,
DettagliIn questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg.
In questa lezione Heap binario heapsort [CLRS10] cap. 6, par. 6.1-6.4!1 Heap binari Un heap binario è una struttura dati consistente di un array visto come un albero binario. A= 5 60 65 30 50 18 40 25
DettagliAlgoritmi, Strutture Dati e Programmi. UD 5.a: Searching (parte 1)
Algoritmi, Strutture Dati e Programmi : Searching (parte 1) Prof. Alberto Postiglione AA 2007-2008 Ricerca di un'informazione in una tabella Determinare se una parola X è presente in un dizionario (cioè
DettagliAnalisi algoritmi ricorsivi e relazioni di ricorrenza
Analisi algoritmi ricorsivi e relazioni di ricorrenza Punto della situazione Finora abbiamo affrontato: il tempo di esecuzione di un algoritmo, l analisi asintotica con le notazioni asintotiche e la tecnica
DettagliProgrammazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.
Programmazione A.A. 2002-03 I Costrutti di base ( Lezione XII, parte I ) Gestione dell input Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail
DettagliPascal: esempi di programmazione
Pascal: esempi di programmazione Problemi elementari di programmazione.................. 2252 a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Somma tra
Dettagli4.5 Tempo di calcolo: introduzione.
4.5 Tempo di calcolo: introduzione. Perché un programma o sottoprogramma sia una soluzione accettabile di un problema, non basta che sia corretto rispetto alla specifica del problema; occorre anche che
DettagliIntroduzione 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
Dettaglisum = 0; positivenumbers = 0; /* Passo 1 */ printf("introduci i numeri (0 per finire): "); scanf("%d", &number);
/ Questo programma legge numeri interi, positivi e negativi, finche' l'utente non digita il valore 0 (valore di terminazione). Quando l'utente ha finito di immettere gli interi, il programma stampa la
DettagliSommario. Algoritmi di ordinamento lineari: CountingSort. BucketSort. RadixSort
Sommario Algoritmi di ordinamento lineari:! CountingSort! BucketSort! RadixSort 1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, nel
DettagliInformatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliLaboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliEsercitazioni di Algoritmi e Strutture Dati
Esercitazioni di Algoritmi e Strutture Dati I esercitazione, 2/03/2016 Tong Liu 1 OBIETTIVI DEGLI ESERCITAZIONI Comprendere meglio i concetti fondamentali Presentare gli argomenti rilevanti Arrivare al
DettagliLab 04 Programmazione Strutturata"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate
DettagliSilvia Rossi. Cenni sulla complessità. Informatica. Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Programmazione I
Silvia Rossi Cenni sulla complessità 23 Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Programmazione I Email Docente: srossi@na.infn.it A.A. 2009-2010 Abbiamo visto che dato un problema
DettagliIl problema delle azioni
Il problema delle azioni Per studiare l andamento del mercato azionario bisogna seguire i prezzi delle azioni in un lasso di tempo abbastanza lungo, diciamo n giorni. Se si dispone dei prezzi di un azione
DettagliEsempio: somma di due numeri
Esempio: somma di due numeri Scrivere l algoritmo che esegue la somma di due numeri ESEMPIO: somma di due numeri
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
DettagliCicli. S i a i = a 1 + a 2 + a a n
Cicli Esprimono in modo compatto e generali l'esecuzione di uno stesso blocco di codice per più volte Anche in matematica sono presenti operatori che eseguono di fatto un ciclo (ad es. sommatoria e produttoria)
Dettaglicome segue: data una collezione C di elementi e una un elemento che verifica la proprietà P
Problemi di Ricerca Carla Binucci e Walter Didimo Il problema della Ricerca In generale, il Problema della Ricerca è definito come segue: data una collezione C di elementi e una proprietà P, determinare
DettagliGli algoritmi ricorsivi di ordinamento. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
ordinamento Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Merge Sort Ricorsivo, divide et impera Stabile Divisione: due sottovettori SX e DX rispetto al centro del vettore. p r A.A.
DettagliCOMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,
DettagliIng. Lorenzo Vismara
Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#
DettagliDiagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
DettagliFondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
DettagliUniversità di Roma Tor Vergata L16-1. Ricerca: esaminare una collezione di dati, cercando un particolare valore. nome e cognome
Università di Roma Tor Vergata L16-1 Ricerca: esaminare una collezione di dati, cercando un particolare valore (per: ) reperire informazione modificarla stamparla cancellarla esempio: archivio studenti
DettagliAppendice B. Algoritmi e Complessità
Appendice B Algoritmi e Complessità 1. Introduzione Un algoritmo A è una procedura passo-passo per risolvere un problema P. Un problema P è caratterizzato dall insieme I delle sue istanze. L algoritmo
DettagliDati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing
Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T un testo di n caratteri e P un pattern di m n caratteri e si supponga che
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
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
DettagliDati 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
DettagliMatematica - SMID : Programmazione Gennaio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Gennaio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
DettagliAlgoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Ringraziamenti prof. Stefano Mizzaro, Università di Udine http://users.dimi.uniud.it/~stefano.mizzaro/
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 13 - Gli algoritmi e la risoluzione di problemi Sommario Passi per la risoluzione di problemi Problemi di ricerca e ordinamento Algoritmi iterativi: la ricerca lineare
DettagliCorso di Informatica 1 Esercitazione n. 2
Corso di Informatica 1 Esercitazione n. 2 Marco Liverani Esercizio n. 1 Letto in input un array A di n elementi, usando solo questo array, inverte l ordine degli elementi; ossia se A = (10,27,13,4), allora
DettagliFondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Esercitazione 7 Domenico Fabio Savo 1 Esercitazione: heap Abbiamo visto come utilizzare i MAX-HEAP nell'algoritmo di ordinamento heapsort che permette di ordinare un array di
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
DettagliIterazione indeterminata
Iterazione indeterminata In alcuni casi il numero di iterazioni da effettuare non è noto prima di iniziare il ciclo, perché dipende dal verificarsi di una condizione. Esempio: Leggere una sequenza di interi
DettagliCalcolare il massimo di una lista
Calcolare il massimo di una lista Lunedì abbiamo definito un algoritmo per calcolare il valore massimo fra gli elementi di una lista predefinita di interi. In particolare, abbiamo: deciso di rappresentare
Dettaglicomplessità degli algoritmi
complessità degli algoritmi progetto CORDA informatica algoritmo matematico persiano Muhammad al-khwarizmi (IX secolo) un algoritmo è una sequenza finita di passi interpretabili da un esecutore l esecuzione
DettagliMoltiplicazione 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
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min
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
Dettagli2. 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
DettagliAlgoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi
Algoritmi e Strutture Dati Capitolo Un introduzione informale agli algoritmi Ancora un esempio di problema e soluzioni algoritmiche: i numeri di Fibonacci verso un modello di calcolo più simile a un computer
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliRISOLUZIONE DI SISTEMI LINEARI
RISOLUZIONE DI SISTEMI LINEARI Algebra lineare numerica 1 La risoluzione di un sistema lineare è il nucleo principale del processo di risoluzione di circa il 70% di tutti i problemi reali Per la risoluzione
DettagliCalcolare lo Span di un array di numeri
Calcolare lo Span di un array di numeri Altro esempio di come usare una pila come struttura dati ausiliaria per un algoritmo: Dato un array X, lo span S[i] di X[i] è il massimo numero di elementi consecutivi
DettagliIntroduzione allo Scilab Parte 2: elementi di programmazione strutturata
Introduzione allo Scilab Parte 2: elementi di programmazione strutturata Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro felix@dm.uniba.it 13 Giugno 2007 Felice
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi
DettagliDati 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
DettagliMatematica - SMID : Programmazione Luglio 2007 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Luglio 2007 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
DettagliLo 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
DettagliRappresentazione 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
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
DettagliAlgoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
DettagliTRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13
TRIPLE DI HOARE: ESEMPI ED ESERCIZI Corso di Logica per la Programmazione A.A. 2012/13 RICORDIAMO LA REGOLA PER IL COMANDO ITERATIVO P Inv def(e) Inv E Q Inv t 0 {Inv E} C {Inv def(e)} {P} while E do C
DettagliIn questa lezione. Costruire un max-heap. [CLRS01] cap. 6 par Prof. E. Fachini - Intr. Alg.
In questa lezione Costruire un max-heap [CLRS01] cap. 6 par. 6.3!1 Heapsort: analisi Heapsort(A) Build-Max-Heap(A) for i = A.length downto 2 do scambia A[1] e A[i] A.heap-size = A.heap-size - 1 Max-Heapify
DettagliALGORITMI 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
DettagliAlgoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Algoritmi su Array Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Algoritmi su Array 2 Ringraziamenti prof. Stefano Mizzaro,
DettagliCorso di Informatica 1 (IN110) Tutorato n. 4
Corso di Informatica 1 (IN110) Tutorato n. 4 Marco Liverani Esercizio n. 1 Letto in input un array di n numeri interi ed un intero k > 1, eliminare dall array tutti i multipli di k, spostando a sinistra
DettagliArray in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
Dettaglido { printf("inserisci due numeri reali:"); scanf("%f %f", &a, &b);
Fondamenti di Informatica T-1 modulo 2 Laboratorio 02 1 Obiettivi di questa esercitazione 1. Valutazione in cortocircuito i 2. If innestati 3. Switch 4. Cicli 5. Funzioni e Header File 2 Valutazione in
DettagliIn 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
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 13 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data una Tripla
Dettagli