Ricorsione. Rosario Culmone. - p. 1/13



Похожие документы
Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Capitolo 2. Operazione di limite

I PROBLEMI ALGEBRICI

Semantica operazionale dei linguaggi di Programmazione

Corso di Matematica per la Chimica

Ricorsione. (da lucidi di Marco Benedetti)

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

La ricorsione. Politecnico di Milano Sede di Cremona

Descrizione di un algoritmo

Le Macchine di Turing

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

Anno 1. Definizione di Logica e operazioni logiche

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

AA LA RICORSIONE

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Lezione 8. La macchina universale

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1

Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale

Informatica. Rappresentazione binaria Per esempio diventa /10/2007. Introduzione ai sistemi informatici 1

Gestione Turni. Introduzione

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

I tipi di dato astratti

Matematica 1 - Corso di Laurea in Ingegneria Meccanica

4. Operazioni aritmetiche con i numeri binari

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Comparatori. Comparatori di uguaglianza

Aspettate il giorno 2

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

INTRODUZIONE I CICLI DI BORSA

Analizzatore lessicale o scanner

4 3 4 = 4 x x x 10 0 aaa

Plate Locator Riconoscimento Automatico di Targhe

4. Fondamenti per la produttività informatica

Interpretazione astratta

Capitolo 13. Interrogare una base di dati

e-dva - eni-depth Velocity Analysis

(a cura di Francesca Godioli)

Matematica generale CTF

Programmazione dinamica

LABORATORIO-EXCEL N. 2-3 XLSTAT- Pro Versione 7 VARIABILI QUANTITATIVE

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

Gestione Voti Scolastici

Progettazione di Basi di Dati

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Allegato clienti e fornitori 2007 (da spedire entro il 29/04/2008)

Alessandro Pellegrini

LINGUAGGI DI PROGRAMMAZIONE

Funzioni in C. Violetta Lonati

Algoritmi e strutture dati. Codici di Huffman

GaraviniSoftware srl MANUALE IVA. Aggiungere un Codice IVA

b. Che cosa succede alla frazione di reddito nazionale che viene risparmiata?

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

Il sistema monetario

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Algoritmi e Strutture Dati

1 Giochi a due, con informazione perfetta e somma zero

Guida all uso di Java Diagrammi ER

IL BUDGET 04 LE SPESE DI REPARTO & GENERALI

Studio di una funzione ad una variabile

2. Semantica proposizionale classica

Alcune nozioni di base di Logica Matematica

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Introduzione alla teoria dei database relazionali. Come progettare un database

Intelligenza Artificiale

Trattamento degli errori

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Batti il tempo Reti di ordinamento

Si sa che la via più breve tra due punti è la linea retta. Ma vi siete mai chiesti, Qual è la via più breve tra tre punti? o tra quattro punti?

risulta (x) = 1 se x < 0.

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

3 GRAFICI DI FUNZIONI

La propagazione delle onde luminose può essere studiata per mezzo delle equazioni di Maxwell. Tuttavia, nella maggior parte dei casi è possibile

x u v(p(x, fx) q(u, v)), e poi

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

MANUALE EDICOLA 04.05

Capitolo 5. Funzioni. Grafici.

Blanchard, Macroeconomia Una prospettiva europea, Il Mulino 2011 Capitolo IV. I mercati finanziari. Capitolo IV. I mercati finanziari

I CIRCUITI ELETTRICI. Prima di tutto occorre mettersi d accordo anche sui nomi di alcune parti dei circuiti stessi.

FASCI DI RETTE. scrivere la retta in forma esplicita: 2y = 3x + 4 y = 3 2 x 2. scrivere l equazione del fascio di rette:

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti

Modelli di Programmazione Lineare e Programmazione Lineare Intera

GESTIONE INFORMATICA DEI DATI AZIENDALI

Lezione 9: Cambio di base

Traccia di soluzione dell esercizio del 25/1/2005

Rappresentazione di oggetti 3D

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Appunti sulla Macchina di Turing. Macchina di Turing

Derivate Limiti e funzioni continue

CONSIGLI PER POTENZIARE L APPRENDIMENTO DELLA LINGUA

Strumenti di indagine per la valutazione psicologica

Транскрипт:

Ricorsione Rosario Culmone - p. 1/13

Induzione e Ricorsione Spesso utilizzeremo le definizioni induttive. Sono forme di definizione compatte che descrivono un numero infinito di elementi. I contesti di utilizzo sono molteplici in matematica (fattoriale, successioni,...) in informatica (ricorsione, grammatiche,...) in musica (Bach, Corelli,...) in geometria (frattali, chiocciole,...) in pittura (Escher,...) Le definizioni induttive sono anche chiamate costruttive o per induzione strutturale per mettere in evidenza che tali definizioni si applicano ad oggetti che hanno una ben determinata struttura che iterata produce strutture simili. - p. 2/13

Ricorsione In informatica spesso viene utilizzato il termine ricorsione per indicare una definizione induttiva ovvero l oggetto che si vuole definire compare anche nell espressione che vuole definirlo. La ricorsione mette in evidenza la struttura della definizione mediante due parti: Base. Il più piccolo elemento descrivibile Induzione. Tutti gli altri elementi mediante costruzione. - p. 3/13

Fattoriale La funzione fattoriale si applica ad un naturale n e produce il prodotto di tutti i naturali precedenti, compreso n. Ovvero fatt(4) = 4 3 2 1. In generale fatt(n) = n n 1...1. Una definizione compatta è la seguente: fatt(n) = { 1 se n = 0 n fatt(n 1) se n > 0 Si evince che è una definizione ricorsiva dal fatto che a sinistra e a destra dell = compare fatt. Da notare che questo fatto da solo non implica che sia una corretta definizione ricorsiva. - p. 4/13

Fattoriale errato E facile cadere in errore nella definizione ricorsiva. Ad esempio: { 1 se n = 0 fatt(n) = n fatt(n) se n > 0 passo induttivo errato, oppure { 0 se n = 0 fatt(n) = n fatt(n 1) se n > 0 passo base errato. - p. 5/13

Calcolo La definizione ricorsiva non viene solo utilizzata solo per definire funzioni o insiemi ma è pure un metodo di calcolo. Operativavamente è possibile effettuare il calcolo del fattoriale effettuando delle sostituzioni: fatt(4) = 4 fatt(3) = 4 3 fatt(2) = 4 3 2 fatt(1) = 4 3 2 1 fatt(0) = 4 3 2 1 1 - p. 6/13

Operatività del calcolo Nel caso precedente abbiamo applicato la sostituzione del caso induttivo 4 volte e del caso base 1 volta andando in profondità a cercare il caso base lasciandoci dietro il calcolo. Una volta raggiunto il caso base bisogna effettuare tutte le moltiplicazioni (possibilmente in ordine inverso se si tiene conto dell associatività a destra). In pratica si avrebbe: fatt(4) = 4 fatt(3) (1) = 4 3 fatt(2) (2) = 4 3 2 fatt(1) (3) = 4 3 2 1 fatt(0) (4) = 4 3 2 1 1 (5) = 4 3 2 (6) = 4 3 2 (7) = 4 6 (8) = 24 (9) - p. 7/13

Realizzazione della ricorsione In generale nel passo induttivo possono essere richiesti calcoli molto complessi. Abbiamo quindi bisogno di: contenitore di informazioni temporanee per ogni applicazione del passo induttivo uno strumento a fisarmonica che si gonfia in fase di applicazione del passo induttivo e si sgonfia in fase di calcolo In realtà il calcolo può essere in parte effettuato prima o dopo l applicazione del passo induttivo. Il contenitore delle informazioni temporanee deve essere diverso per ogni fase del passo induttivo. - p. 8/13

La pila Lo strumento giusto per il nostro calcolo è la PILA. La pila ha tre operazioni: 1. Push(e). L operazione Push(e) pone in cima alla pila il contenitore e 2. Pop. L operazione Pop produce quello che stà in cima alla pila e lo toglie 3. Empty. L operazione Empty produce il valore logico vero se la pila è vuota. La PILA è quello che normalmente utilizziamo: una pila di piatti, una pila di fogli. Il vincole è che non si possono prendere fogli in mezzo alla pila. - p. 9/13

Calcolo con la pila fatt(4) = 4 fatt(3) Push(4) = 4 3 fatt(2) Push(3) = 4 3 2 fatt(1) Push(2) = 4 3 2 1 fatt(0) Push(1) = 4 3 2 1 1 Push(1) = 4 3 2 1 Push(Pop Pop) = 4 3 2 Push(Pop Pop) = 4 6 Push(Pop Pop) = 24 Push(Pop Pop) - p. 10/13

Ricorsione e Pila In generale la PILA può essere utilizzata per qualsiasi funzione ricorsiva definita con base e induzione correttamente espresse. Si deve tenere conto di: Si devono correttamente definire le operazioni da effettuare nella fase discendente e le operazioni da effettuare nella fase ascendente. Nella fase discendente si effettuano solo operazioni Push, nella fase ascendente solo operazioni Pop. Ciò che si mette sulla pila è il contesto o l ambiente dell applicazione del passo induttivo. Ciò che viene effettuato con il prodotto dei Pop è il calcolo da effettuare dell applicazione del passo induttivo. - p. 11/13

Linguaggi di programmazione e Ricorsione La ricorsione è utilizzata: nelle definizioni delle grammatiche dei linguaggi di programmazione in strutture dati utilizzate correntemente dai linguaggi di programmazione (liste, code, pile, alberi, grafi,...) negli algoritmi di ordinamento (quicksort, naturaljoin,...) negli algoritmi che gestiscono strutture dati definite ricorsivamente in generale in tutti i contesti dove è possibile descrivere in modo induttivo Si considere che la ricorsione è molto potente, elegante e compatta ma dispendiosa dal punto di vista computazionale. - p. 12/13

Ricorsione ed espressioni regolari La ricorsione è applicabile con successo nel riconoscimento dei stringhe espresse mediante espressioni regolari. La definizione delle espressioni regolari è data in modo induttivo: 1. {ɛ} è un espressione regolare 2. se a Σ allora a è un espressione regolare 3. una etichetta L è un espressione regolare 4. se L ed M denotano espressioni regolari allora L M è un espressione regolare 5. se L ed M denotano espressioni regolari allore LM è un espressione regolare 6. se L denota un espressione regolare allora L è un espressione regolare 7. se L denota un espressione regolare allora (E) è un espressione regolare - p. 13/13

Definizione ricorsiva L(E) = ɛ se E = a se E Σ L(E) L(F) se E = E F L(E)L(F) se E = EF L(E) se E = E L( - p. 14/13