Programmazione dinamica
|
|
|
- Giacomo Fiori
- 8 anni fa
- Visualizzazioni
Transcript
1 Programmazione dinamica Primi esempi 29 ottobre 2014
2 Punto della situazione Abbiamo visto: analisi asintotica relazioni di ricorrenza (vedremo altri esempi) prima tecnica di programmazione: divide-etimpera (file esercizi sulla pagina del corso) 2 test prossimo 5 novembre (aula F8) Ora una seconda tecnica: la programmazione dinamica: un primo semplice esempio
3 Areas. Dynamic Programming Applications Bioinformatics. Control theory. Information theory. Operations research. Computer science: theory, graphics, AI, systems,. Some famous dynamic programming algorithms. 4 Viterbi for hidden Markov models. Unix diff for comparing two files. Smith-Waterman for sequence alignment. Bellman-Ford for shortest path routing in networks. Cocke-Kasami-Younger for parsing context free grammars.
4 Programmazione dinamica e Divide et Impera Entrambe le tecniche dividono il problema in sottoproblemi: dalle soluzioni dei sottoproblemi è possibile risalire alla soluzione del problema di partenza. Divide et Impera dà luogo in modo naturale ad algoritmi ricorsivi. La programmazione dinamica può dar luogo ad algoritmi: ricorsivi con annotazione delle soluzioni su una tabella iterativi Idea chiave: calcolare la soluzione di ogni sottoproblema 1 sola volta ed annotarla su una tabella
5 Primo esempio Un primo semplice esempio di programmazione dinamica: il calcolo dei numeri di Fibonacci che contiene gli ingredienti essenziali della tecnica. Puoi consultare [DFI] e/o le slides.
6 Leonardo Fibonacci Nel 1223 a Pisa, l'imperatore Federico II di Svevia, fu ben felice di assistere a un singolare torneo tra abachisti e algoritmisti, armati soltanto di carta, penna e pallottoliere. In quella gara infatti si dimostrò che col metodo posizionale indiano appreso dagli arabi si poteva calcolare più velocemente di qualsiasi abaco. Il test era il seguente: "Quante coppie di conigli si ottengono in un anno (salvo i casi di morte) supponendo che ogni coppia dia alla luce un'altra coppia ogni mese e che le coppie più giovani siano in grado di riprodursi già al secondo mese di vita?". Un pisano, Leonardo, detto Bigollo, conosciuto anche col nome paterno di "fillio Bonacci" o Fibonacci, vinse la gara. Figlio d'un borghese uso a trafficare nel Mediterraneo, Leonardo visse fin da piccolo nei paesi arabi e apprese i principi dell'algebra, il calcolo, dai maestri di Algeri, cui era stato affidato dal padre, esperto computista.
7 Ipotesi sui conigli Una coppia di conigli genera un altra coppia di conigli ogni mese I conigli cominciano a riprodursi dal secondo mese (tranne al più la coppia iniziale) I conigli sono immortali (!)
8 LA RIPRODUZIONE DEI CONIGLI 1 coppia iniziale 2 coppia 3 coppia 4 e 5 coppia.. Le prime cinque generazioni di conigli secondo lo schema di Fibonacci. Ogni cerchio colorato rappresenta una coppia di conigli.
9 Il problema Una coppia di conigli genera un altra coppia di conigli ogni mese I conigli cominciano a riprodursi dal secondo mese, anche la coppia iniziale I conigli sono immortali F n : numero di coppie di conigli presenti al mese n F 1 =1 (la coppia iniziale) F 2 =1 (la coppia iniziale è ancora troppo giovane) F 3 =2 (nasce una prima coppia da quella iniziale) F 4 =3 (nasce una seconda coppia da quella iniziale) F 5 =5 (nasce una terza coppia da quella iniziale e i nipotini!)
10 Conteggio dei conigli Come calcolereste il numero di conigli presenti nel mese n? Come risolse il problema Fibonacci nel 1223? Ricorsivamente! Espresse il problema in termini di sottoproblemi Il calcolo dei conigli presenti nel mese n può essere espresso rispetto al numero di conigli presenti nei due mesi precedenti
11
12 I numeri di Fibonacci 1, 1, 2, 3, 5, 8, 13, 21, I numeri di Fibonacci godono di una gamma stupefacente di proprietà, si incontrano nei modelli matematici di svariati fenomeni e sono utilizzabili per molti procedimenti computazionali; essi inoltre posseggono varie generalizzazioni interessanti. A questi argomenti viene espressamente dedicato un periodico scientifico, The Fibonacci Quarterly. I numeri di Fibonacci sono legati alla sezione aurea.
13 Sezione aurea La spirale logaritmica Una conchiglia Una pigna Disposizione dei petali Crescita di una pianta Il Partenone.
14 Come calcolare l n-esimo numero di Fibonacci? Un primo approccio numerico. Possiamo usare una funzione matematica che calcoli direttamente i numeri di Fibonacci. Infatti si può dimostrare che: e quindi
15 Un primo algoritmo numerico Fibonacci1(n) return 1/ 5 (Φ n Φ^n) Però: Problemi di accuratezza sul numero di cifre decimali; il risultato non sarebbe preciso (i numeri di Fibonacci sono interi).
16 Un secondo algoritmo ricorsivo Secondo approccio: utilizzare la definizione ricorsiva, che lavora solo su interi F n = F n-1 + F n-2 se n 3 1 se n = 1, 2 Fibonacci2(n) If n 2 then Return 1 Else Return Fibonacci2(n-1)+ Fibonacci2(n-2)
17 Un esempio Fibonacci2(n) If n 2 then Return 1 Else Return Fibonacci2(n-1)+ Fibonacci2(n-2)
18 Analisi del tempo di esecuzione T(n) = T(n-1) + T(n-2) + Θ(1) n 3 T(n) = Θ(1) n =1, 2 T(n) = O(2 n ) Dimostrazione per induzione. Sia c>o tale che T(n) = T(n-1) + T(n-2) + c e T(1), T(2) c. Tesi: T(n) c 2 n. Base: T(1) c c 2 1 =2 c ; T(2) c c 2 2 = 4 c Ipotesi induttiva: T(n-1) c 2 n-1 e T(n-2) c 2 n-2 Passo induttivo: T(n) c 2 n-1 + c 2 n-2 + c c 2 n-1 + c 2 n-2 + c 2 n-2 = = c 2 n-1 + c ( 2 n n-2 ) = c 2 n-1 + c ( 2 2 n-2 ) = c 2 n-1 + c 2 n-1 = c 2 n Nota: T(n) F(n) n Già calcolare F(100) con le attuali tecnologie richiederebbe un tempo inaccettabile Si può fare di meglio?
19 Difetti dell algoritmo ricorsivo Perché l algoritmo Fibonacci2 è lento? Perché continua a ricalcolare ripetutamente la soluzione dello stesso sottoproblema.
20 Migliorare l algoritmo ricorsivo (versione con annotazione) Perché non memorizzare le soluzioni dei sottoproblemi via via calcolate? Basta un array F[1..n] per memorizzare tutti valori già calcolati. L array F inizialmente è vuoto. Fibonacci3-memo(j) If j 2 then F[j]=1 Return F[j] Else if F[j] non è vuoto then Return F[j] Else Define F[j]= Fibonacci3-memo(j-1)+ Fibonacci3-memo(j-2) Return F[j] Endif
21 Esempio j=5 Fibonacci3-memo(j) If j 2 then F[j]=1 Return F[j] Else if F[j] non è vuoto then Return F[j] Else Define F[j]= Fibonacci3-memo(j-1)+ Fibonacci3-memo(j-2) Return F[j] Endif F(5) F(4) F(3) F(3) F(2) 1 1 F(2) F(1) 1
22 Migliorare l algoritmo ricorsivo (versione iterativa) Fibonacci3-iter(n) F[1]=1 F[2]=1 For i=3,,n F[i]= F[i-1]+F[i-2] Endfor Return F[n] Esempio: n=
23 Tempo di esecuzione Il tempo di esecuzione di Fibonacci3-iter è Θ(n) Anche il tempo di esecuzione di Fibonacci3-memo è Θ(n): ogni differente chiamata ricorsiva è eseguita solo una volta, richiede tempo costante, e ci sono O(n) diverse chiamate a Fibonacci3-memo.
24 Confronto prestazioni L algoritmo Fibonacci3-iter e Fibonacci3-memo impiegano tempo proporzionale a n invece di esponenziale in n come Fibonacci2. Tempo effettivo richiesto da implementazioni in C dei due seguenti algoritmi su piattaforme diverse: Copyright The McGraw - Hill Companies, srl 34
25 Analisi dello spazio necessario Lo spazio di memoria necessario per eseguire Fibonacci3-iter e Fibonacci3-memo è S(n) = Θ(n) perché entrambi gli algoritmi usano un array con n celle. Ma in realtà possono bastare 3 celle (per qualsiasi n): per il calcolo di F[j] servono solo i valori nelle 2 celle precedenti
26 Programmazione dinamica: caratteristiche Fibonacci3-memo e Fibonacci3-iter sono algoritmi di programmazione dinamica: perché? 1. La soluzione al problema originale si può ottenere da soluzioni a sottoproblemi 2. Esiste una relazione di ricorrenza per la funzione che dà il valore ottimale ad un sottoproblema 3. Le soluzioni ai sottoproblemi sono via via memorizzate in una tabella Due implementazioni possibili: Con annotazione (memoized) o top-down Iterativa o bottom-up
27 Programmazione dinamica vs Divide et Impera Entrambe le tecniche dividono il problema in sottoproblemi: dalle soluzioni dei sottoproblemi è possibile risalire alla soluzione del problema di partenza Dobbiamo allora considerare la tecnica Divide et Impera superata? NO: La programmazione dinamica risulta più efficiente quando: Ci sono dei sottoproblemi ripetuti Ci sono solo un numero polinomiale di sottoproblemi (da potere memorizzare in una tabella) Per esempio: nel MergeSort non ci sono sottoproblemi ripetuti.
28 Riepilogo e riferimenti Un primo semplice esempio di programmazione dinamica: il calcolo dei numeri di Fibonacci che contiene gli ingredienti essenziali della tecnica. Puoi consultare [DFI] e/o le slides.
Programmazione dinamica
Programmazione dinamica Primi esempi 6 ottobre 2015 Algoritmi Abbiamo bisogno di algoritmi ogni qual volta vogliamo scrivere un programma per risolvere un problema in maniera automatica. Obiettivo finale:
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
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: [email protected] Web: http://www.dis.uniroma1.it/~savo
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
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
LA NATURA DÀ I NUMERI
LA NATURA DÀ I NUMERI IL video presenta la conclusione di un percorso effettuato dagli alunni della classe 1 B sulla relazione tra numeri e natura. Prof.ssa Marinella Bonaccorsi CLASSE 1 B Nel 1223 a Pisa,
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
Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi
Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare
Esempio : 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
Leonardo Fibonacci Lo Sviluppo della Serie,somma di Numeri La Spirale logaritmica La Sezione Aurea in Natura Bibliografia
La Successione di Fibonacci Leonardo Fibonacci Lo Sviluppo della Serie,somma di Numeri La Spirale logaritmica La Sezione Aurea in Natura Bibliografia Leonardo Fibonacci Leonardo Fibonacci, figlio di Guglielmo
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,
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
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed
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
Numeri di Fibonacci, Autovalori ed Autovettori.
Numeri di Fibonacci, Autovalori ed Autovettori. I numeri sulla Mole Antonelliana. Ecco i numeri sulla Mole:,,, 3,, 8, 3,, 34,, 89, 44, 33, 377, 6, 987, dove ogni nuovo numero rappresenta la somma dei due
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
I numeri di. Fibonacci
I numeri di Fibonacci Leonardo Pisano detto Il Fibonacci Scheda Storica Leonardo Pisano detto il Fibonacci fu un matematico italiano, nato a Pisa nel 1170 e ivi morto nel 1240 circa. Egli è considerato
Un 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
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
Programmazione dinamica. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis
Programmazione dinamica Progettazione di Algoritmi a.a. 2016-17 Matricole congrue a 1 Docente: Annalisa De Bonis 1 Paradigmi della Progettazione degli Algoritmi Greedy. Costruisci una soluzione in modo
Il problema dello zaino
Il problema dello zaino Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 25 gennaio 2010 Il problema dello zaino 0-1
Proprietà delle notazioni asintotiche
Proprietà delle notazioni asintotiche Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche Argomento di oggi Proprietà
La successione di Fibonacci
La successione di Fibonacci Figura 1 Sulla Mole Antonelliana si accende la successione di Fibonacci ( ideazione dell architetto Mario Merz ) La relazione ricorsiva F n = F n-1 + F n-, n 3, unitamente alle
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione
INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che
Tempo e spazio di calcolo
Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare
Successione di Fibonacci (Fibonacci numbers)
Successione di Fibonacci (Fibonacci numbers) Opera di Mario Merz ( il volo dei numeri ), Mole antonelliana, Torino, 1998. Si dice successione di Fibonacci la successione 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,
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
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
Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output
Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di
I numeri sulla Mole Antonelliana.
I numeri sulla Mole Antonelliana. Nota Bene: Questo materiale non deve essere considerato come sostituto delle lezioni. I voli dei numeri Ecco i numeri sulla Mole:,,, 3,, 8, 3,, 34,, 89, 44, 33, 377, 6,
PROGRAMMAZIONE DINAMICA
PROGRAMMAZIONE DINAMICA 6.1 PROGRAMMAZIONE DINAMICA Sebbene elementi del metodo fossero già presenti in tecniche di ottimizzazione note in precedenza, si deve a Bellman lo studio sistematico (iniziato
Laboratorio di Programmazione M-Z
Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini [email protected] Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più
Esercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II
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,
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
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
Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.
Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale
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,
Esercizi 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;
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
Note per la Lezione 7 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 7 Ugo Vaccaro Sempre sulla tecnica Programmazione Dinamica Ricordiamo che lo sviluppo di algoritmi basati sulla Programmazione Dinamica
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
La somma dei primi numeri naturali
Livello scolare: biennio. La somma dei primi numeri naturali Abilità Interessate Eseguire semplici fattorizzazioni di polinomi. Conoscenze I polinomi e le loro operazioni. Nuclei coinvolti Numeri e algoritmi
Algoritmi e Strutture Dati
Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo
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
Fondamenti di Informatica
Fondamenti di Informatica Introduzione alla Programmazione in MATLAB: Parte 3 - Esercizi Prof. Arcangelo Castiglione A.A. 2016/17 Esercizio 1 Scrivere un M-File Script MATLAB che generi il seguente output
Motivazioni. Sistemi lineari. Obiettivo. Il problema
Motivazioni Sistemi lineari Metodo di eliminazione di Gauss Molti problemi si possono rappresentare mediante un sistema lineare La soluzione di un sistema lineare costituisce un sottoproblema di moltissime
F 2. i = F n F n+1. i=1 F 2 1 = 1 = F 1 F 2. Per n 1, supponiamo vero per n, dimostriamo per n + 1. F 2i+1 = F 2n+2. i=0
1 ESERCIZI 1 Esercizi 1.1 Fibonacci1 Dimostrare che F 2 i = F n F n+1. Dimostrazione. Per induzione su n. Per n = 1 si ha F 2 1 = 1 = F 1 F 2. Per n 1, supponiamo vero per n, dimostriamo per n + 1. n+1
Algoritmi e Strutture dati a.a. 2013/2014
a.a. 2013/2014 Dr Informazioni docente E-mail docente: [email protected] Ricevimento: Mercoledì 15:00-16:00 presso ufficio docenti a contratto (3 piano), Dipartimento di Matematica e Informatica, Campus
E necessaria la chiave segreta? RSA. Funzioni One-way con Trapdoor. Un secondo protocollo
E necessaria la chiave segreta? RSA Rivest, Shamir, Adelman A manda a B lo scrigno chiuso con il suo lucchetto. B chiude lo scrigno con un secondo lucchetto e lo rimanda ad A A toglie il suo lucchetto
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
MATEMATICA E BELLEZZA. Fibonacci e il numero aureo. Mostra al Castel del Monte
MATEMATICA E BELLEZZA. Fibonacci e il numero aureo Mostra al Castel del Monte Leonardo "Pisano" Fibonacci Fibonacci (Leonardo), detto Leonardo Pisano, matematico italiano (Pisa 1175 circa - 1240 circa).
Strutture dati per insiemi disgiunti
Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento
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
Laboratorio di Python
Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di
Programmazione dinamica
Programmazione dinamica Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 29/21 I. Castelli Programmazione dinamica, A.A. 29/21 1/35
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
Algoritmi e Strutture dati a.a. 2012/2013
a.a. 2012/2013 Dr Informazioni docente E-mail docente: [email protected] Ricevimento: Su appuntamento (inviare e-mail) 2 Informazioni lezioni Lunedì, Martedì, Mercoledì 10:30-13:30 aula INFO2 15
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
