Ordinamento per inserzione e per fusione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Ordinamento per inserzione e per fusione"

Transcript

1 Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010

2 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo non decrescente. Si crei C, l array contenente gli elementi di A e B, ordinato in modo non decrescente. Esempio: A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8, 10, 13, 14

3 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo non decrescente. Si crei C, l array contenente gli elementi di A e B, ordinato in modo non decrescente. Esempio: Con le carte viene meglio A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8, 10, 13, 14

4 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C =

5 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2,

6 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4,

7 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5,

8 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7,

9 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7,

10 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8,

11 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8, 10, Casi limite: terminata una lista, l altra si copia.

12 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8, 10, 13, Casi limite: terminata una lista, l altra si copia.

13 Fusione: soluzione Intuzione: osserviamo 2 elementi alla volta, spostiamo il più piccolo in output e avanziamo il suo array. A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8, 10, 13, 14 Casi limite: terminata una lista, l altra si copia.

14 Fusione: pseudocodice void merge ( i n t A, i n t na, i n t B, i n t nb, i n t C) { i n t Acur = 0, Bcur = 0, Ccur = 0 ; / Corpo p r i n c i p a l e. / while ( Acur < na && Bcur < nb ) i f ( A[ Acur ] <= B[ Bcur ] ) C [ Ccur++] = A[ Acur ++]; e l s e C [ Ccur++] = B[ Bcur ++]; / Una l i s t a t e r m i n a t a. / while ( Acur < na ) C [ Ccur++] = A[ Acur ++]; while ( Bcur < nb ) C [ Ccur++] = B[ Bcur ++]; }

15 Fusione: complessità QUIZ! Sia n = n A + n B. La complessità al caso pessimo di merge è: O(log n) O(n) O(n 2 )

16 Fusione: complessità QUIZ! Sia n = n A + n B. La complessità al caso pessimo di merge è: O(log n) O(n) O(n 2 ) Dimostriamolo..

17 Fusione in O(n) - I Abbiamo la complessità del ciclo principale: while ( Acur < na && Bcur < nb ) i f ( A[ Acur ] <= B[ Bcur ] ) C [ Ccur++] = A[ Acur ++]; e l s e C [ Ccur++] = B[ Bcur ++]; E quella di uno dei due cicli successivi: while ( Acur < na ) C [ Ccur++] = A[ Acur ++]; while ( Bcur < nb ) C [ Ccur++] = B[ Bcur ++]; Le due complessità si sommano

18 Fusione in O(n) - Limiti Liste terminate while ( Acur < na ) C [ Ccur++] = A[ Acur ++]; while ( Bcur < nb ) C [ Ccur++] = B[ Bcur ++]; Nel primo ciclo, copio un array: f 1 (n A ) O(n A ). Nel secondo ciclo, copio un array: f 2 (n B ) O(n B ). Complessità totale: O(n A ) + O(n B ) O(n): x t.c. f 1 (n A ) x n A. y t.c. f 2 (n B ) y n B. Se z = x + y, f 1 (n A ) + f 2 (n B ) z (n A + n B ) z n O(n).

19 Fusione in O(n) - principale while ( Acur < na && Bcur < nb ) i f ( A[ Acur ] <= B[ Bcur ] ) C [ Ccur++] = A[ Acur ++]; e l s e C [ Ccur++] = B[ Bcur ++]; A = 4, 7, 8, 13, 14 B = 2, 5, 7, 10 C = 2, 4, 5, 7, 7, 8, 10, 13, 14 Intuizione: il numero di iterazioni max Ccur, ovvero n A + n B = n. O(1) operazioni per ogni iterazione del ciclo La complessità del ciclo principale è O(n).

20 Ordinamento per inserzione

21 Ordinamento - motivazione Problema Sia A un array di n interi > 0, ordinati in modo non decrescente. Si fornisca il numero di elementi distinti contenuti all interno dell array Esempio: A = 3, 3, 6, 6, 6, 8, 8, 8. Facile! Soluzione già vista, in O(n).

22 Ordinamento - motivazione Problema Sia A un array di n interi > 0, Si fornisca il numero di elementi distinti contenuti all interno dell array Esempio A = 6, 3, 6, 3, 6, 8, 8, 8. Meno facile!. Una soluzione in O(n 2 ) : count = 0 ; f o r ( i = 0 ; i < n ; i++ ) i f ( A[ i ] > 0 ) { count++; f o r ( j = i ; j < n ; j++ ) i f ( A[ i ] == A[ j ] ) A[ j ] = 0 ; }

23 Ordinamento - motivazione Problema Sia A un array di n interi > 0, Si fornisca il numero di elementi distinti contenuti all interno dell array Esempio A = 6, 3, 6, 3, 6, 8, 8, 8. Altra strada: (1) ordino A, (2) soluzione ordinata. O(n log n)!!

24 Ordinamento - motivazione II Problema Sia A un array di interi. Ordinare A in modo non decrescente. Problema semplice da porre. Ordinare aiuta a lavorare dopo: uno strumento. Differenti velocità: da O(n log n) a O(n 2 ) a O(n + max A). Differenti algoritmi: insertion sort, mergesort, quicksort, heapsort,.. Differenti tecniche: divide et impera, ricorsione, heap. Oggi: insertion sort, mergesort.

25 Insertion sort Torniamo alle carte

26 Insertion sort Torniamo alle carte Composto da n passi. Ad ogni passo i = 0, 1,..., n 1: A[0..i 1] è già stata riordinata. Il resto no. Dobbiamo inserire A[i] nella sequenza mantenendo l ordine. Troviamo la posizione j i in cui va messo. Inseriamo A[i] lì, spingendo a destra il resto.

27 Insertion sort - fare spazio Passo i = 3, A[0..2] è ordinato. Estendiamo ad A[3] tmp = 4; 4 < < : A[1] = tmp

28 Insertion sort: pseduocodice void i n s e r t i o n S o r t ( i n t A, i n t n ) { i n t tmp ; f o r ( i = 0 ; i < n ; i++ ) { tmp = A[ i ] ; j = s h i f t (A, i ) ; A[ j ] = tmp ; } } Codifica completa: esercizio di laboratorio!

29 Insertion sort: pseduocodice void i n s e r t i o n S o r t ( i n t A, i n t n ) { i n t tmp ; f o r ( i = 0 ; i < n ; i++ ) { tmp = A[ i ] ; j = s h i f t (A, i ) ; A[ j ] = tmp ; } } Codifica completa: esercizio di laboratorio! QUIZ! Complessità?

30 Insertion sort: pseduocodice void i n s e r t i o n S o r t ( i n t A, i n t n ) { i n t tmp ; f o r ( i = 0 ; i < n ; i++ ) { tmp = A[ i ] ; j = s h i f t (A, i ) ; A[ j ] = tmp ; } } Codifica completa: esercizio di laboratorio! QUIZ! Complessità? O(n 2 )

31 Insertion sort: complessità Al passo i l operazione di shift esegue al più i spostamenti: O(i). Si eseguono poi altre due operazioni in tempo costante, ad ogni passo. Se sommiamo, per un qualche c: n 1 T (n) = O(i) i=0 n 1 c i = i=0 = c (n2 n) 2 c n (n 1) 2 O(n 2 )

32 Insertion sort: complessità Al passo i l operazione di shift esegue al più i spostamenti: O(i). Si eseguono poi altre due operazioni in tempo costante, ad ogni passo. Se sommiamo, per un qualche c: n 1 T (n) = O(i) i=0 n 1 c i = i=0 = c (n2 n) 2 c n (n 1) 2 O(n 2 ) Insertion sort è lento! Non ci aiuta per trovare i distinti!

33 Mergesort: idea Tecnica del divide et impera: riduciamo il problema a se stesso! Prendiamo il nostro array A e dividiamolo in due metà: A L e A R Ora, supponiamo di poter ordinare A L e A R indipendentemente: A questo punto possiamo usare merge e ottenere A ordinato!

34 Come ordinare A L e A R? Ecco il impera: mergesort! Dividiamo A L in (A L ) L e (A L ) R poi li ordiniamo usando mergesort, e poi li fondiamo, per ottenere A L ordinato. La stessa cosa succede con A R : dividiamo, ordiniamo, fondiamo. Quando fermarsi? Quando la lunghezza diventa < 1: a quel punto è pronto.

35 Come ordinare A L e A R? Ecco il impera: mergesort! Dividiamo A L in (A L ) L e (A L ) R poi li ordiniamo usando mergesort, e poi li fondiamo, per ottenere A L ordinato. La stessa cosa succede con A R : dividiamo, ordiniamo, fondiamo. Quando fermarsi? Quando la lunghezza diventa < 1: a quel punto è pronto. Ingredienti: Caso base semplice Possibilità di ricorrere su due sottoproblemi identici Possibilità di ricomporre la soluzione dei due sottoproblemi.

36 Mergesort: pseudocodice Mergesort = strategia di esecuzione merge. 1 void mergesort ( i n t A, i n t l e f t, i n t r i g h t ) 2 { 3 i f ( r i g h t l e f t > 0 ) { 4 i n t middle = ( l e f t+r i g h t ) / 2 ; 5 mergesort ( A, l e f t, middle ) ; 6 mergesort ( A, middle +1, r i g h t ) ; 7 newmerge ( A, l e f t, middle, r i g h t ) ; 8 } 9 } newmerge: variazione sul tema di merge, la vedremo dopo. Si usa l intervallo [left, right).

37 Mergesort: simulazione S(0,7)

38 Mergesort: simulazione S(0,7) S(0,3)

39 Mergesort: simulazione S(0,7) S(0,3) S(0,1)

40 Mergesort: simulazione S(0,0) S(0,7) S(0,3) S(0,1)

41 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(0,0) S(1,1)

42 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(0,0) S(1,1)

43 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(2,3) S(0,0) S(1,1)

44 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(2,3) S(0,0) S(1,1) S(2,2)

45 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(2,3) S(0,0) S(1,1) S(2,2) S(3,3)

46 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(2,3) S(0,0) S(1,1) S(2,2) S(3,3)

47 Mergesort: simulazione S(0,7) S(0,3) S(0,1) S(2,3) S(0,0) S(1,1) S(2,2) S(3,3)

48 Mergesort: simulazione S(0,7) S(0,3) S(4,7) S(0,1) S(2,3) S(0,0) S(1,1) S(2,2) S(3,3)

49 Mergesort: dettaglio Abbiamo usato newmerge, ma merge presupponeva di avere: 2 array in input un array per l output Noi vogliamo che funzioni sul posto, sia come input che come output. Soluzione: Primo elemento banale. Secondo elemento: introduciamo un array ausiliario di dimensione n che viene usato da merge di volta in volta: void mergesort ( i n t A, i n t l, i n t r, i n t TMP) void newmerge ( i n t A, i n t l, i n t c, i n t r, i n t TMP) Quando il risultato è pronto in TMP, lo spostiamo in A[l..r].

50 Mergesort: complessità Dimostrare la complessità di mergesort richiede l uso di equazioni di ricorrenza. Ad ogni passo i, sia x i = r i l i + 1. Sia T (x) il tempo di mergesort su x: Ad ogni passo, eseguiamo mergesort su x/2 per 2 volte (sx e dx) Quando le sottochiamate terminano, eseguiamo merge, con complessità O(x). Pertanto, T (x) dipende da T (x/2). In particolare: T (0) = T (1) = O(1) T (x) = T ( x/2 ) + T ( x/2 ) + O(x) 2T ( x/2 ) + O(x) Risoluzione effettiva: prof. Grossi. Ma è T (n) = O(n log n).

51 Mergesort: intuizione Solo le Merge contano: ogni nodo ha costo O(r l + 1). M(0,7) M(0,3) M(4,7) M(0,1) M(2,3) M(4,5) M(6,7) M(0,0) M(1,1) M(2,2) M(3,3) M(4,4) M(5,5) M(6, 6) M(7, 7) Quindi, ogni livello dell albero ha complessità O(n).

52 Quanti livelli ha l albero?

53 Quanti livelli ha l albero? 1 1 nodo 2 2 nodi 3 4 nodi n nodi 1, 2, 4, etc.. cresce come 2 i per i = 0, 1,.... Quando i = log 2 n, allora l albero termina di crescere. T (n) = log 2 n i=0 O(n) O(n log n). Quindi: O(n log n) per ordinare un array, O(n) per calcolare i distinti O(n log n), meglio di O(n 2 )!.

54 Mergesort: iterativo È proprio necessaria la ricorsione? NO! Mergesort iterativo! M(0,7) M(0,3) M(4,7) M(0,1) M(2,3) M(4,5) M(6,7) Eseguiamo le chiamate di merge per livelli, dal basso verso l alto. Ultimo livello: fusione di singoli. Le coppie diventano ordinate. Penultimo livello: fusione di coppie. Le quadruple diventano ordinate. Terzultimo livello: fusione di quadruple, le 8-uple diventano ordinate.... Proseguiamo fin quando non fondiamo solo 2 elementi (n/2 2)

55 Mergesort iterativo: codice void m e r g e I t e r ( i n t A, i n t n, i n t TMP) { i n t i, r ; f o r ( passo = 1 ; passo < n ; passo = 2 ) f o r ( i = 0 ; i+passo < n ; i +=2 passo ) { r = min ( n, i +2 passo ) ; merge (A, i, i+passo, r ) ; } } Vantaggio: niente ricorsione: può gestire dimensioni arbitrarie.

Algoritmi di ordinamento: Array e ricorsione

Algoritmi di ordinamento: Array e ricorsione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion

Dettagli

Analisi algoritmi ricorsivi e relazioni di ricorrenza

Analisi 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

Dettagli

Divide et impera. Divide et impera. Divide et impera. Divide et impera

Divide et impera. Divide et impera. Divide et impera. Divide et impera Divide et impera Divide et impera La tecnica detta divide et impera è una strategia generale per impostare algoritmi (par. 9.4). Consideriamo un problema P e sia n la dimensione dei dati, la strategia

Dettagli

Tecniche Algoritmiche: divide et impera

Tecniche Algoritmiche: divide et impera Tecniche Algoritmiche: divide et impera Una breve presentazione F. Damiani - Alg. & Lab. 04/05 Divide et impera (o Divide and conquer) Per regnare occorre tenere divisi i nemici e trarne vantaggio F. Damiani

Dettagli

Dizionari Liste invertite e Trie

Dizionari Liste invertite e Trie Dizionari Liste invertite e Trie Lucidi tratti da Crescenzi Gambosi Grossi, Strutture di dati e algoritmi Progettazione, analisi e visualizzazione Addison-Wesley, 2006 Dizionari Universo U delle chiavi

Dettagli

PROVETTE D ESAME. Algoritmi e Strutture Dati

PROVETTE D ESAME. Algoritmi e Strutture Dati PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento

Dettagli

Tempo e spazio di calcolo (continua)

Tempo 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

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 alfabeticamente lista di nomi, o insieme

Dettagli

Tempo e spazio di calcolo (continua)

Tempo 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

Dettagli

Algoritmi di ordinamento: Array e ricorsione

Algoritmi di ordinamento: Array e ricorsione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Insertion Sort Quicksort Heapsort Indice

Dettagli

5. DIVIDE AND CONQUER I

5. DIVIDE AND CONQUER I Divide-et-Impera (Divide and conquer) 5. DIVIDE AND CONQUER I Mergesort e Relazioni di ricorrenza Esempi di progettazione D&I Moltiplicazione di interi Contare inversioni Divide-et-Impera. Definizione

Dettagli

Parallel sorting. Algoritmi Avanzati. Davide Lo Re

Parallel sorting. Algoritmi Avanzati. Davide Lo Re Parallel sorting Algoritmi Avanzati Davide Lo Re Indice Richiami Idea Descrizione Illustrazione Fase 1: Costruzione delle strutture dati Fase 1.1 Fase 1.2 Fase 2: Merge Analisi Costo Algoritmo di Cole

Dettagli

Un esempio di calcolo di complessità: insertion sort

Un 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

Dettagli

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114 In questa lezione Heapsort ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 11 1 Paternità L heapsort è stato pubblicato da J. W. J. Williams nel 106. Pochi mesi

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 Paola Vocca Lezione 1: Divide et Impera 1 Paradigma del divide et impera Strutturato in tre fasi. Sia Π() istanza di dimensione di un problema computazionale Π (dove è immediato

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi 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

Dettagli

Algoritmi di ordinamento

Algoritmi 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

Dettagli

Si può fare di meglio?

Si può fare di meglio? Si può fare di meglio? Gli algoritmi visti fino ad ora hanno costo O(n 2 ) È possibile fare di meglio? Quanto meglio? Algoritmi e Strutture Dati 1 Algoritmi divide et impera Idea generale Divide: Scomporre

Dettagli

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

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi 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

Dettagli

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino La ricorsione Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario! Definizione di ricorsione e strategie divide et impera! Semplici algoritmi ricorsivi! Merge

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,...

Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,... Vettori (array) Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,...) I vettori sono caratterizzati da dimensione tipo Es.

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

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

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT)

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT) QUICKSORT Basato sul paradigma divide-et-impera (come MERGE-SORT) Divide: stabilisce un valore di q tale da dividere l array A[p.. r] in due sottoarray non vuoti A[p.. q] e A[q+1.. r], dove ogni elemento

Dettagli

Heap e code di priorità

Heap 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

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 Algoritmi e Strutture Dati. Code con Priorità

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso

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

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta

Dettagli

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati 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 algoritmi

Dettagli

Esercizi Capitolo 12 - Divide-et-Impera

Esercizi Capitolo 12 - Divide-et-Impera Esercizi Capitolo 12 - Divide-et-Impera Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare

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

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Esercizi vari. Alberto Montresor. 19 Agosto, 2014 Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni

Dettagli

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Problemi e algoritmi Il che cosa e il come Il che cosa ed il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come

Dettagli

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi

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

Quicksort. Quicksort: idea di base. Riprendiamo il problema dell'ordinamento di n oggetti.

Quicksort. Quicksort: idea di base. Riprendiamo il problema dell'ordinamento di n oggetti. Riprendiamo il problema dell'ordinamento di n oggetti. Quicksort Per questo problema abbiamo già visto gli algoritmi insertion-sort e mergesort. Il tempo di esecuzione di insertion-sort è (n 2 ). Il tempo

Dettagli

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo

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

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e Strutture Dati Capitolo 2 Minimo albero ricoprente: Algoritmo di Prim Il problema del calcolo di un Minimum

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: savo@dis.uniroma1.it Web: http://www.dis.uniroma1.it/~savo

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

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Algoritmi di ordinamento Gli ordinamenti interni sono fatti su sequenze in memoria centrale Fondamenti di Informatica 18. Algoritmi di ordinamento in C++ Gli ordinamenti esterni sono fatti su sequenze

Dettagli

QuickSort (1962, The Computer Journal)

QuickSort (1962, The Computer Journal) QuickSort (1962, The Computer Journal) Charles Antony Richard Hoare (1934 -) Attualmente senior researcher al Microsoft Research Center di Cambridge Hoare ha vinto nel 1980 il Turing Award, il premio più

Dettagli

Scopo: ordinare una sequenza di elementi in base a una certa relazione d ordine. Ipotesi: gli elementi siano memorizzati in un array.

Scopo: ordinare una sequenza di elementi in base a una certa relazione d ordine. Ipotesi: gli elementi siano memorizzati in un array. ALGORITMI DI ORDINAMENTO Scopo: ordinare una sequenza di elementi in base a una certa relazione d ordine lo scopo finale è ben definito algoritmi equivalenti diversi i algoritmi i possono avere efficienza

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell 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

Dettagli

Elezione di un leader in una rete ad anello

Elezione di un leader in una rete ad anello Elezione di un leader in una rete ad anello Corso di Algoritmi Distribuiti Prof. Roberto De Prisco Lezione n a cura di Rosanna Cassino e Sergio Di Martino Introduzione In questa lezione viene presentato

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Si definisca Interval Tree un albero binario di ricerca le

Dettagli

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

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

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi Francesco Pasquale 6 maggio 2015 Esercizio 1. Su una strada rettilinea ci sono n case nelle posizioni 0 c 1 < c 2 < < c n. Bisogna installare

Dettagli

Tecniche Algoritmiche/1 Divide et Impera

Tecniche Algoritmiche/1 Divide et Impera Tecniche Algoritmiche/1 Divide et Impera Ivan Lanese Dipartimento di Informatica Scienza e Ingegneria Università di Bologna Ivan.lanese@gmail.com http://www.cs.unibo.it/~lanese/ Divide-et-impera 2 Tecniche

Dettagli

Note per la Lezione 6 Ugo Vaccaro

Note per la Lezione 6 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,

Dettagli

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Dettagli

Algoritmi e strutture di dati 2

Algoritmi 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

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Algoritmi Algoritmi classici Alcuni problemi si presentano con elevata frequenza e sono stati ampiamente studiati Ricerca di un elemento in un vettore

Dettagli

ADT Coda con priorità

ADT 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

Dettagli

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort Due algoritmi di ordinamento basati sulla tecnica Divide et Impera: Mergesort e Quicksort (13 ottobre 2009, 2 novembre 2010) Ordinamento INPUT: un insieme di n oggetti a 1, a 2,, a n presi da un dominio

Dettagli

Esercitazione 3. Heapsort

Esercitazione 3. Heapsort Esercitazione Heapsort Heapsort Algoritmo di ordinamento che utilizza una struttura dati detta heap per la gestione delle informazioni Tempo di esecuzione O(n lg n) Heap (binario) = struttura dati composta

Dettagli

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica Algoritmi e strutture dati Analisi di algoritmi Funzioni di costo, notazione asintotica Alberto Montresor Università di Trento 2016/09/11 This work is licensed under a Creative Commons Attribution-ShareAlike

Dettagli

Algoritmi di ordinamento (II parte)

Algoritmi di ordinamento (II parte) Algoritmi di ordinamento (II parte) E3: sommario Studio di due implementazioni di algoritmi avanzati Algoritmo ordinamento veloce (QuickSort) Algoritmo per fusione (MergeSort) Metodi offerti in java.util

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ 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,

Dettagli

Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno

Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno Algoritmi e Strutture Dati Esercizi Svolti Giuseppe Persiano Dipartimento di Informatica ed Appl Renato M Capocelli Università di Salerno Indice Esercizio 12-3 5 Esercizio 23-4 6 Esercizio 63-3 7 Esercizio

Dettagli

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione

Dettagli

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di

Dettagli

Tipici tempi di esecuzione. Martedì 7 ottobre 2014

Tipici tempi di esecuzione. Martedì 7 ottobre 2014 Tipici tempi di esecuzione Martedì 7 ottobre 2014 Punto della situazione Abbiamo definito il tempo di esecuzione di un algoritmo Scelto l analisi asintotica Abbiamo definito le notazioni asintotiche che

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Esempio: rappresentare gli insiemi

Esempio: rappresentare gli insiemi Esempio: rappresentare gli insiemi Problema: rappresentare gli insiemi Vedremo che la scelta della rappresentazione per implementarli non è così ovvia come era stato per i numeri razionali In realtà ci

Dettagli

UNIVERSITA DEGLI STUDI DI PERUGIA

UNIVERSITA DEGLI STUDI DI PERUGIA UNIVERSITA DEGLI STUDI DI PERUGIA REGISTRO DELLE LEZIONI E DELLE ALTRE ATTIVITÀ DIDATTICHE Anno accademico 2006-2007 Dott./Prof. Pinotti Maria Cristina Settore scientifico-disciplinare INF01 Facoltà Scienze

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~ orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 HEAP SORT StudentiDIA Forum

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Dettagli

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I) Algoritmi greedy Gli algoritmi per problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Dettagli

Inserimento in una lista ordinata

Inserimento in una lista ordinata Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il

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

Tecniche di Ordinamento dei Vettori

Tecniche di Ordinamento dei Vettori Tecniche di Ordinamento dei Vettori Corso di Laurea Ingegneria Corso B A.A. 2010-2011 1 Contenuto 1) Generalità 2) Metodi a Minimo Ingombro di Memoria 2.1) Ordinamento per selezione ( Selection Sort )

Dettagli

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora?

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora? Crescita funzioni 20 novembre 2006 1 Funzioni di costo Definizione 1 (Funzione di costo). Utilizziamo il termine funzione di costo per indicare una funzione f : N R dall insieme dei numeri naturali ai

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 07/02/07 Nota Questi lucidi sono tratti

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

Ordinamenti e crescita della complessità

Ordinamenti e crescita della complessità Ordinamenti e crescita della complessità Informatica@SEFA 07/08 - Lezione Massimo Lauria Venerdì, 7 Ottobre 07 Nota bibliografica: Il contenuto di questa e di alcune delle prossime

Dettagli

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno Informatica 3 LEZIONE 20: Ordinamento esterno Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno Informatica 3 Lezione 20 - Modulo 1 Organizzazione della memoria Introduzione Dati in

Dettagli

Cammini Minimi. Algoritmo di Dijkstra

Cammini Minimi. Algoritmo di Dijkstra Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo

Dettagli

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono Algoritmi e Strutture Dati Laboratorio 15/12/2008 Problema della compressione Rappresentare i dati in modo efficiente Impiegare il numero minore di bit per la rappresentazione Goal: risparmio spazio su

Dettagli

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15 ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino

Dettagli

Strutture di controllo iterative

Strutture di controllo iterative Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero

Dettagli

Introduzione Definizioni

Introduzione Definizioni Informatica 3 Informatica 3 LEZIONE 20: Ordinamento esterno Lezione 20 - Modulo 1 Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno Organizzazione della memoria Politecnico di Milano

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento

Algoritmi 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

Dettagli

Programmazione dinamica

Programmazione 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

Dettagli

Algoritmi e Strutture dati a.a. 2013/2014

Algoritmi e Strutture dati a.a. 2013/2014 a.a. 2013/2014 Dr Informazioni docente E-mail docente: fdrmra@unife.it Ricevimento: Mercoledì 15:00-16:00 presso ufficio docenti a contratto (3 piano), Dipartimento di Matematica e Informatica, Campus

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli