Ricorsione CORDA – Informatica A. Ferrari Testi da Alessandro Bugatti

Slides:



Advertisements
Presentazioni simili
Algoritmi di ordinamento
Advertisements

Il problema della ricerca Algoritmi e Strutture Dati.
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
                      Insertion-Sort
Sottoprogrammi: funzioni e procedure
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Analisi della complessità degli algoritmi
Procedure e funzioni ricorsive
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Master Bioinformatica 2002: Progetto di Algoritmi1 Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Heap Sort. L’algoritmo heap sort è il più lento di quelli di ordinamento O(n * log n) ma, a differenza degli altri (fusione e quick sort) non richiede.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Iterazione enumerativa (for)
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Il problema della ricerca Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
Inversione differenziale della Cinematica
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Modelli e Algoritmi della Logistica
Modelli e Algoritmi per la Logistica Branch & Bound Prof. Carlo Mannino Prof. Antonio Sassano Dipartimento di Informatica e Sistemistica Università di.
Modelli e Algoritmi per la Logistica
Progetto di algoritmi: metodologia "Divide et Impera"
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Introduzione alla Ricorsione
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
AN FI Iterazione&Invarianti Il ragionamento iterativo Gli invarianti di ciclo.
Equazioni non lineari Data una funzione consideriamo il problema di determinare i valori x tali che Tali valori sono solitamente.
Algoritmi e Strutture Dati
Studieremo alcune tecniche per il progetto di algoritmi e di strutture dati: Programmazione dinamica Algoritmi golosi Analisi ammortizzata Vedremo poi.
Passo 3: calcolo del costo minimo
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 – 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita!
Ricorsione Strumento potente per definizioni matematiche
Milano, 17 Dicembre 2013 Informatica B Informatica B Matlab Laboratorio del 14/01/2014 Responsabili di laboratorio: Gianluca Durelli:
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Complessità degli algoritmi (cenni) CORDA – Informatica A. Ferrari.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Array (ordinamento) CORDA – Informatica A. Ferrari.
Equazioni e sistemi non lineari
La ricorsione.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
4/25/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Array (visita e ricerca) CORDA – Informatica A. Ferrari.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Prof. Cerulli – Dott. Carrabs
Per un nuovo orientamento nella progettazione dei linguaggi di programmazione Tesi di Laurea di: RICCARDO SOLMI Università degli Studi di Bologna Facoltà.
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
Programmazione dinamica Algoritmi golosi Analisi ammortizzata
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte III)
Problema dell’Ordinamento. Problema dell’ordinamento Formulazione del problema –Si vuole ordinare una lista di elementi secondo una data proprietà P Esempio:
Algoritmi e Strutture Dati
Divide et Impera Parte 11 - Risoluzione di problemi per divisione in sottoproblemi “bilanciati” Corso A: Prof. Stefano Berardi
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli
Algoritmi e Strutture Dati Luciano Gualà
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

Ricorsione CORDA – Informatica A. Ferrari Testi da Alessandro Bugatti Olimpiadi di Informatica Guida alle sezioni territoriali

Campi di applicazione problemi di tipo “divide et impera” la soluzione di un problema si ottiene suddividendo il problema in due o più parti che lo compongono, le quali vengono risolte separatamente e poi si rimette insieme quanto ottenuto per avere la soluzione al problema di partenza problemi dove è necessario generare tutti i casi possibili rispetto ad alcune scelte che si possono fare e scegliere il caso ottimo per il problema in questione problemi di programmazione dinamica, nei quali la soluzione iterativa è applicabile, ma la soluzione ricorsiva è più semplice e/o elegante

Funzioni ricorsive la funzione richiama se stessa su una versione più piccola dello stesso problema c’è sempre una condizione di cui si conosce la soluzione e che fa terminare la ricorsione Se una delle precedenti caratteristiche non venisse rispettata si entrerebbe in una ricorsione infinita

Algoritmi ricorsivi la maggior parte dei problemi ha una formulazione iterativa diretta esiste un insieme di problemi in cui la formulazione ricorsiva risulta più semplice e elegante da esprimere e da implementare

… problemi della ricorsione Un problema che nella pratica limita l’utilizzo della ricorsione si ha quando le chiamate ricorsive non crescono in modo lineare, ma in maniera molto più veloce Esempio: numero di Fibonacci

Fibonacci (funzione elegante ma inefficiente)

Programmazione dinamica Tecnica di progettazione di algoritmi basata su divisione del problema in sottoproblemi utilizzo di sottostrutture ottimali Sottostruttura ottimale la soluzione ottimale al sottoproblema può essere utilizzata per trovare la soluzione ottimale dell'intero problema

Fibonacci (programmazione dinamica) il vettore poteva non essere utilizzato, perché ad ogni passo servono solo i due valori precedenti e quindi sarebbero bastate due variabili

Fibonacci ricorsivo (programmazione dinamica) E’ necessario inizializzare Fibonacci con tutti i suoi elementi a -1 , Fibonacci[0]=0 e Fibonacci[1]=1