Il paradigma divide et impera. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
|
|
- Luciano Bettini
- 4 anni fa
- Visualizzazioni
Transcript
1 Il paradigma divide et impera Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
2 Paradigmi per il Problem Solving: Divide et Impera Divide da problema di dimensione n in a problemi indipendenti di dimensione n/b. Impera Risoluzione di problema elementare. Combina Ricostruzione di soluzione complessiva combinando le soluzioni parziali. Implementazione ricorsiva. A.A. 2005/ Il paradigma divide et impera 2
3 A.A. 2005/ Il paradigma divide et impera 3 Risolvi(Problema): Se il problema è elementare: Soluzione = Risolvi_banale(Problema) Altrimenti: Condizione di terminazione Sottoproblema 1,2,3,,a = Dividi(Problema) ; Per ciascun Sottoproblema i : Sottosoluzione i = Risolvi(Sottoproblema i ) ; Return Soluzione = Combina(Sottosoluzione 1,2,3,,a ) ; a sottoproblemi, ciascuno b volte più piccolo del problema chiamata ricorsiva
4 Complessità Equazione alle Ricorrenze: T(n) in termini del tempo di esecuzione per input più piccoli. A.A. 2005/ Il paradigma divide et impera 4
5 A.A. 2005/ Il paradigma divide et impera 5 T(n) = D(n) + a T(n/b) + C(n) T(n) = Θ(1) D(n): costo della divisione n > c n c a: numero di sottoproblemi che risulta dalla fase di Divide n/b: dimensione di ciascun sottoproblema C(n): costo della ricombinazione Θ(1): costo della soluzione elementare.
6 Risolvi(Problema): Se il problema è elementare: Soluzione = Risolvi_banale(Problema) Altrimenti: T(n) Sottoproblema 1,2,3,,a = Dividi(Problema) ; Per ciascun Sottoproblema i : Sottosoluzione i = Risolvi(Sottoproblema i ) ; Return Soluzione Combina(Sottosoluzione 1,2,3,,a ) ; D(n) T(n/b) Θ(1) a sottoproblemi C(n) A.A. 2005/ Il paradigma divide et impera 6
7 Esempio: Ricerca Binaria D(n) = Θ(1), C(n) = Θ(1) a = 1, b = 2 T(n) = T(n/2) + 1 n > 1 T(n) = 1 n = 1 A.A. 2005/ Il paradigma divide et impera 7
8 Analisi di complessità: approccio intuitivo A ogni passo la dimensione si dimezza All i-esimo passo è n/2 i Numero di passi: n/2 i =1 i= log 2 n ciascuno di costo costante T(n) = O(lg n) A.A. 2005/ Il paradigma divide et impera 8
9 Analisi di complessità: approccio formale T(n) = T(n/2) + 1 n > 1 T(n) = 1 n = 1 terminazione n/2 i =1 i= log 2 n i = numero di passi A.A. 2005/ Il paradigma divide et impera 9
10 unfolding T(n/2) = T(n/4) + 1 T(n/4) = T(n/8) + 1 sostituzione T(n) = T(n/8) T(n) = Σ 0 i log2 n 1 = 1 + log 2n = O(log n) A.A. 2005/ Il paradigma divide et impera 10
11 A.A. 2005/ Il paradigma divide et impera 11 Esempio progr. 5-6 Calcolo ricorsivo del massimo di un vettore di interi: se la dimensione è N=1, trovo il massimo esplicitamente per N>1 divido il vettore in due sottovettori metà applico ricorsivamente la ricerca del massimo a ciascun sottovettore confronto i risultati e restituisco il più grande
12 Analisi di complessità: approccio formale T(n) = 2T(n/2) + 1 n > 1 T(n) = 1 n = 1 terminazione n/2 i =1 i= log 2 n i = numero di passi A.A. 2005/ Il paradigma divide et impera 12
13 A.A. 2005/ Il paradigma divide et impera 13 unfolding T(n/2) = 2T(n/4) + 1 T(n/4) = 2T(n/8) + 1 sostituzione T(n) = T(n/8) T(n) = Σ 0 i log2 n 2i = 2 log 2 n+1-1 = O(n)
14 Limiti del divide et impera Ipotesi di indipendenza dei sottoproblemi Memoria occupata FIB 5 FIB 5 FIB 3 FIB 4 FIB 4 FIB 1 FIB 2 FIB 3 FIB 2 FIB 3 FIB 0 FIB 1 FIB 1 FIB 2 FIB 0 FIB 1 FIB 2 FIB 0 FIB 1 FIB 1 FIB 0 A.A. 2005/ Il paradigma divide et impera 14
15 Le Torri di Hanoi Configurazione iniziale: vi sono 3 pioli, 3 dischi di diametro decrescente sul primo piolo Configurazione finale: 3 dischi sul terzo piolo Regole: accesso solo al disco in cima sopra ogni disco solo dischi più piccoli Generalizzabile a n dischi e k pioli. A.A. 2005/ Il paradigma divide et impera 15
16 A.A. 2005/ Il paradigma divide et impera 16 Esempio di soluzione
17 Strategia divide et impera Problema iniziale: spostare n dischi da 0 a 2 Riduzione a sottoproblemi: n-1 dischi da 0 a 1, 2 deposito l ultimo disco da 0 a 2 n-1 dischi da 1 a 2, 0 deposito Condizione di terminazione: si muove 1 solo disco. A.A. 2005/ Il paradigma divide et impera 17
18 0, 1, 2: piolo 0, 1, 2 g disco grande g disco medio g disco piccolo 0 significa disco piccolo su piolo 0, 2 significa disco grande su piolo 2, etc. stato 011 transizione di stato A.A. 2005/ Il paradigma divide et impera 18
19 A.A. 2005/ Il paradigma divide et impera 19 Problema da decomposto in 3 sottoproblemi: 1. dischi medio e piccolo da 0 a 1 2. disco grande da 0 a dischi medio e piccolo da 1 a
20 A.A. 2005/ Il paradigma divide et impera 20 Albero della ricorsione
21 A.A. 2005/ Il paradigma divide et impera 21 Implementazione C void Hanoi(int *mossa,int n,int src, int dest) { int aux; if (n > 0) { deposito piolo di partenza numero di dischi piolo di arrivo aux = 3 - (src + dest); Hanoi(mossa, n-1, src, aux); fprintf (stdout,"(%d) src %d -> dest %d \n", *mossa, src, dest); *mossa = *mossa + 1; Hanoi(mossa, n-1, aux, dest); } return; }
22 A.A. 2005/ Il paradigma divide et impera 22 Complessità Dividi: considera n-1 dischi D(n)=Θ(1) Risolvi: risolve 2 sottoproblemi di dimensione n-1 ciascuno 2T(n-1) Terminazione: spostamento di 1 disco Θ(1) Combina: nessuna azione C(n) = Θ(1)
23 Equazione alle ricorrenze: T(n) = 2T(n-1) + 1 n>1 T(1) = 1 T(n) = Σ 0 i n-1 2 i = ( ) = 2 n-1+1 1/(2-1) =2 n 1 A.A. 2005/ Il paradigma divide et impera 23
24 Il righello Tracciare una tacca in ogni punto tra 0 e 2 n estremi esclusi, dove: la tacca centrale è alta n unità, le due tacche al centro delle due metà di destra e sinistra sono alte n-1 etc. mark(x, h) traccia una tacca alta h unità in posizione x A.A. 2005/ Il paradigma divide et impera 24
25 Strategia divide et impera Dividiamo l intervallo in due metà Disegniamo ricorsivamente le tacche (più corte) nella metà di SX Disegniamo la tacca (più lunga) al centro Disegniamo ricorsivamente le tacche (più corte) nella metà di DX Condizione di terminazione: tacche di altezza 0 A.A. 2005/ Il paradigma divide et impera 25
26 A.A. 2005/ Il paradigma divide et impera 26 Esempio (0,8,3) (0,4,2) (4,8,2) (0,2,1) (2,4,1) (4,6,1) (6,8,1) (0,1,0) (1,2,0) (2,3,0) (3,4,0) (4,5,0) (5,6,0) (6,7,0) (7,8,0)
27 A.A. 2005/ Il paradigma divide et impera 27 Implementazione C void rule(int l, int r, int h) { int m = (l + r)/2; terminazione if (h > 0) { rule(l, m, h-1); mark(m, h); rule(m, r, h-1); } } soluzione elementare chiamata ricorsiva chiamata ricorsiva
28 Backtracking Esplorazione esaustiva dello spazio delle soluzioni: Partenza: soluzione parziale A ogni passo: esecuzione di una scelta, esplorazione recursiva dell albero che ne deriva ritorno sulla scelta (backtracking) ed esecuzione di scelta alternativa, esplorazione recursiva dell albero che ne deriva terminazione: esplorate tutte le scelte. A.A. 2005/ Il paradigma divide et impera 28
29 Le 8 regine Scacchiera vuota 8x8, 8 regine Trovare una disposizione delle 8 regine in modo tale che nessuna possa essere messa sotto scacco dalle altre Soluzione A.A. 2005/ Il paradigma divide et impera 29
30 A.A. 2005/ Il paradigma divide et impera 30 Strutture dati concettuali 15 diagonali: somma degli indici delle sue celle (i+j)
31 15 antidiagonali: differenza degli indici delle sue celle con offset (i-j+7) A.A. 2005/ Il paradigma divide et impera 31
32 Strutture dati colonna n-esima solo n-esima regina queen[n] = indice della riga dove si trova la n-esima regina n-esima regina mette sotto scacco: i-esima riga row[i] diagonale n+i diag[n+i] antidiagonale revdiag[n-i+7]. A.A. 2005/ Il paradigma divide et impera 32
33 A.A. 2005/ Il paradigma divide et impera 33 Funzioni 8 regine set(n, i): piazza la n-esima regina su riga i (implicitamente su colonna n), mette sotto scacco la riga i, la diagonale n+i e l antidiagonale n-i+7 remove(n, i): n-esima regina tolta da riga i (implicitamente da colonna n), non più sotto scacco riga i, diagonale n+i e antidiagonale n-i+7 move(n): piazza ricorsivamente n-esima regina. Termina: piazzate 8 regine.
Gli 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.
DettagliLa 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
Dettagli05EIP. Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino. Definizione di ricorsione e strategie divide et impera
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 Sort
DettagliTecniche 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
DettagliAlgoritmi e Strutture Dati. Luciano Gualà
Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Esercizio Analizzare la complessità nel caso medio del primo algoritmo di pesatura (Alg1) presentato nella prima
DettagliDivide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente
Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente
DettagliAlgoritmi e Strutture Dati. Luciano Gualà
Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Esercizio Analizzare la complessità nel caso medio del primo algoritmo di pesatura (Alg1) presentato nella prima
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 e Strutture Dati. Divide-et-impera
Algoritmi e Strutture Dati Divide-et-impera Alberto Montresor Università di Trento 2018/12/05 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1
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
DettagliLezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona
Lezione 8 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Programmazione ricorsiva Fattoriale Somma di n numeri Torre di Hanoi Array
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliPensiero Algoritmico. Lezione 3 23 Novembre Ripasso. Anatomia di un programma. Anatomia di un programma. Ozalp Babaoglu Università di Bologna
Pensiero Algoritmico Lezione 3 23 Novembre 2016 Ozalp Babaoglu Università di Bologna Ripasso Definizione del problema Astrarre i dettagli, costruire un modello Costruire l algoritmo che risolve il problema
DettagliSommario della lezione:
Sommario della lezione: Metodologie per il progetto di algoritmi: La Tecnica Divide et Impera Esempi di applicazione a: Ricerca del massimo e minimo di una sequenza di numeri Calcolo di potenze di numeri
DettagliHeap, heapsort e code a priorità. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
Heap, heapsort e code a priorità Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Heap Definizione: albero binario con proprietà strutturale: quasi completo (tutti i livelli completi,
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
DettagliCome usare la ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano www.dia.unisa.it/dottorandi/murano 1 Come usare la ricorsione 2 1 Risolvere un problema per ricorsione 1. Pensa ad un problema piu piccolo (di taglia
DettagliPile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive
Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di
DettagliCAPITOLO 2. Divide et Impera
CAPITOLO 2 Divide et Impera In questo capitolo discuteremo alcuni algoritmi progettati mediante la tecnica di progettazione del Divide et Impera. Algoritmi progettati usando questa tecnica consistono di
DettagliDefinizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy
Il paradigma greedy Paolo Camurati, Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Definizioni Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente:
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
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Ricorrenze Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno
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
DettagliLaboratorio di Informatica L-A 1
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ò
DettagliNote 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,
DettagliTecniche 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
DettagliGli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Politecnico
DettagliLaboratorio di Programmazione M-Z
Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini alessandra.lumini@unibo.it Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più
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
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
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
Dettaglidefinire definire una una funzione in termini di se stessa compare una chiamata alla funzione stessa identificare un caso base
Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Nel codice di una funzione ricorsiva compare una (o più di una) chiamata alla funzione stessa
Dettaglidefinire definire una una funzione in termini di se stessa compare una chiamata alla funzione stessa identificare un caso base
Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Nel codice di una funzione ricorsiva compare una (o più di una) chiamata alla funzione stessa
DettagliRicorsione. 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/ 2 Definizione informale: la ricorsione è un procedimento mediante il quale
DettagliRicerca. Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati.
Ricerca Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati. Il problema della ricerca in termini generali : dato un insieme D = {a 1,a 2,...,a
DettagliRicorsione. 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/ 2 Definizione informale: la ricorsione è un procedimento mediante il quale
DettagliIn questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort
In questa lezione Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort [CLRS] par. 2.3. Prof. E. Fachini - Intr. Alg.!1 Progettazione di
DettagliEsercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
DettagliLaboratorio 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:
DettagliAlgoritmi e Strutture Dati
Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da
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ò
DettagliGli heap. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Matteo SONZA
DettagliSelezione per distribuzione
Selezione per distribuzione Problema: selezione dell elemento con rango r in un array a di n elementi distinti. Si vuole evitare di ordinare a NB: Il problema diventa quello di trovare il minimo quando
DettagliOrdinamento per inserzione e per fusione
Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 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
DettagliGocce di Java. Gocce di Java. Metodi e ricorsione. Pierluigi Crescenzi. Università degli Studi di Firenze
Gocce di Java Pierluigi Crescenzi Università degli Studi di Firenze Ancora sui metodi Interfaccia di un metodo Consente di utilizzarlo senza sapere nulla dell implementazione Consente di implementarlo
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un
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
DettagliQuick Sort. PARTITION(A,p,r) risistema il sottoarray A[p...r] e riporta l indice q:
Quick Sort - Ordinamento in loco - Tempo di esecuzione nel caso peggiore: Θ(n 2 ) - Tempo di esecuzione nel caso medio: Θ(n lg n) - I fattori costanti nascosti nella notazione Θ sono abbastanza piccoli
DettagliAlbero 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
DettagliUn tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
DettagliFunzioni e Ricorsione
Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Nel codice di una funzione ricorsiva compare una (o più di una) chiamata alla funzione stessa
Dettagli5. 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
DettagliRicorsione. Libro cap. 5 (da 5.14 in poi)
Libro cap. 5 (da 5.14 in poi) Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Definizione informale: la ricorsione è un
Dettagliesegui Ricerca_binaria (metà sinistra di A, v) esegui Ricerca_binaria (metà destra di A, v)
4) La ricorsione Pag 36 Pag 36 Consideriamo una nuova formulazione dell algoritmo di ricerca binaria (nella quale sono volutamente tralasciati i dettagli per catturarne l essenza): Ricerca_binaria (A,
DettagliINFORMATICA GENERALE
CAROSELLI STEFANO INFORMATICA GENERALE TESINA «LA TECNICA DEL DIVIDE-ET-IMPERA E DUE SUE IMPORTANTI APPLICAZIONI: IL QUICK SORT E IL MERGE SORT» La tecnica del DIVIDE-ET-IMPERA è un metodo di risoluzione
DettagliESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)
ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 0/0) DISPENSA N. 6 Esercizi su alberi di ricerca e AVL Notazione: Per un albero T scriviamo T per indicare il numero dei nodi di T e h(t ) per indicare
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliApprocci nella soluzione di un problema
Approcci nella soluzione di un problema Bottom-up dalla conoscenza del singolo componente alle soluzioni Bottom-up A partire dal considerare oggetti più semplici o dati empirici (dal particolare), con
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Esercitazione su Ricorsione e Code di Piorità Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917 murano@na.infn.it
DettagliLaboratorio di Algoritmi
Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-13.30 in aula 2 Giovedì 15.30-18.30 in
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
DettagliLa ricorsione. Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione
La ricorsione Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione Circoli viziosi Se in una definizione ciò che viene definito (definiendum) è usato per definire (nel
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliOgni parte non cancellata a penna sarà considerata parte integrante della soluzione.
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 23 Gennaio 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4
DettagliUn tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 36 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
DettagliCOGNOME E NOME (IN STAMPATELLO) MATRICOLA
Politecnico di Milano Facoltà di Ingegneria dell Informazione Informatica 3 Proff. Campi, Ghezzi, Matera e Morzenti Appello del 14 Settembre 2006 Recupero II Parte COGNOME E NOME (IN STAMPATELLO) MATRICOLA
DettagliRicerca di Massimo e Minimo di un Array
Universitá degli Studi di Salerno Corso di Introduzione agli Algoritmi e Strutture Dati Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/18 Ricerca di Massimo e Minimo di un Array Problema. Trova l elemento di
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento
DettagliDivide et impera su alberi
Divide et impera su alberi Caso base: peru = null o una foglia Decomposizione: riformula il problema per i sottoalberi radicati nei figli di u. Ricombinazione: ottieniilrisultatoconricombina 1 Decomponibile(u):
DettagliEsercitazione 5. Procedure e Funzioni Il comando condizionale: switch
Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case
DettagliMergesort (cont.) 2018/ Lezione 16. Venerdì, 16 Novembre 2018
Mergesort (cont.) Informatica@SEFA 08/09 - Lezione 6 Massimo Lauria Venerdì, 6 Novembre 08 Mergesort La comprensione della struttura dati pila ci permette di capire più agevolmente
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche
DettagliLaboratorio 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:
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche
DettagliAllenamento alle Olimpiadi di Informatica
Giornata di allenamento alle Olimpiadi di Informatica Allenamento alle Olimpiadi di Informatica Obiettivi di questa sessione Illustrare alcuni siti per lo sviluppo di competenze informatiche, anche in
DettagliOrdinamenti ricorsivi
Ordinamenti ricorsivi Selection Sort ricorsivo Algoritmi di ordinamento I Il metodo del selection sort può essere facilmente realizzato in modo ricorsivo I si definisce una procedura che ordina (ricorsivamente)
DettagliNotazione 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
DettagliNote per la Lezione 2 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2018 2019 Note per la Lezione 2 Ugo Vaccaro Dati un intero n 1 ed una generica sequenza a = a[0]a[1] a[n 1] di numeri (che possono essere sia positivi o negativi),
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
DettagliMergesort. Mergesort. Mergesort. Mergesort. L idea è la seguente: (par. 13.4) dividere l insieme in due parti uguali di n/2 componenti
L idea è la seguente: (par. 13.4) dividere l insieme in due parti uguali di n/2 componenti n/2 n/2 se fossero già ordinate le potremmo riunire con un algoritmo di fusione (merge) Esempio. Consideriamo
DettagliRicorsione. 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/ Copyright 2017, 2018 Moreno Marzolla http://www.moreno.marzolla.name/teaching/finfa/
Dettagli13 Ricorsione con MATLAB
13.1 Esercizi Esercizio 13.1 Scrivere una funzione che verifichi iterativamente se una stringa è palindroma. Scrivere poi una funzione che implementi la stessa funzionalità in modo ricorsivo. Si stampi
DettagliAlgoritmi di ordinamento (I parte)
(I parte) Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Definizione formale del problema Input:! Una sequenza di n numeri Output:! Una permutazione
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
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
DettagliGestione della memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
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
DettagliLaboratorio di Programmazione Appunti sulla lezione 5: Algoritmi di ordinamento (cont.) Alessandra Raffaetà. Bubblesort
Laboratorio di Programmazione Appunti sulla lezione : Algoritmi di ordinamento (cont.) Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Bubblesort Idea: Due elementi adiacenti
DettagliSchema generale di un algoritmo divide-et-impera. Algoritmi e Laboratorio a.a Lezioni. Esempio: mergesort su array. Esempio: quicksort
Schema generale di un algoritmo divide-et-impera Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni prof.
DettagliAlgoritmi di ordinamento
Algoritmi e Strutture Dati Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Algoritmi di ordinamento Esempi: ordinare una lista di nomi alfabeticamente, o
DettagliRicorsione. Libro cap. 5 (da 5.14 in poi)
Libro cap. 5 (da 5.14 in poi) Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright 20172019 Moreno Marzolla http://www.moreno.marzolla.name/teaching/finfa/
DettagliESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND
ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND 1. [ STRINGHE] Scrivere in pseudo-codice una procedura che, preso in input un intero n, stampi tutte le stringhe di lunghezza minore o uguale ad n sull
DettagliLinguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.
Linguaggio C Problemi di Ricerca e Ordinamento: Algoritmi e Complessità. 1 Complessità degli Algoritmi Si definisce Complessità di un Algoritmo C(A) la funzione dei parametri rilevanti per A che determina
DettagliLaboratorio di Programmazione Appunti sulla lezione 5: Algoritmi di ordinamento (cont.) Alessandra Raffaetà
Laboratorio di Programmazione Appunti sulla lezione : Algoritmi di ordinamento (cont.) Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Bubblesort Idea: Due elementi adiacenti
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
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
Dettagli