Scrivere programmi corretti

Documenti analoghi
Algoritmi basati sulla tecnica Divide et Impera

Il procedimento può essere pensato come una ricerca in un insieme ordinato, il peso incognito può essere cercato con il metodo della ricerca binaria.

Esercizio. Alcuni esercizi su algoritmi e programmazione. Schema a blocchi. Calcolo massimo, minimo e media

Allora v = v2 =

Algoritmi di Ordinamento. Fondamenti di Informatica Prof. Ing. Salvatore Cavalieri

Esercizio. Alcuni esercizi su algoritmi e programmazione. Schema a blocchi. Calcolo massimo, minimo e media

Laboratorio di Matematica e Informatica 1

RICHIAMI SULLA RAPPRESENTAZIONE IN COMPLEMENTO A 2

Algebra Sia A un anello commutativo. Si ricorda che in un anello commutativo vale il teorema binomiale, cioè. (a + b) n = a i b n i i.

* PROBABILITÀ - SCHEDA N. 2 LE VARIABILI ALEATORIE *

Errata corrige del libro Fondamenti di Informatica in Java

ANALISI STATISTICA DELLE INCERTEZZE CASUALI

LE FREQUENZE CUMULATE

Rappresentazione dei numeri PH. 3.1, 3.2, 3.3

Rappresentazione dei numeri

ANELLI E SOTTOANELLI. contrassegna gli esercizi (relativamente) più complessi.

Il problema dell'ordinamento. Algoritmi e Laboratorio a.a Lezioni. prof. Elio Giovannetti

Metodi ad un passo espliciti con passo adattivo Metodi Runge - Kutta

egg bi b l ibile ibil nom di variabili bili e bili funzi on D EVONO DEVONO avere DEVONO Facile comprensione nomi autoesplicativi pippo pluto

3 CAMPIONAMENTO DI BERNOULLI E DI POISSON

Elementi di statistica

Lezioni di Statistica (25 marzo 2013) Docente: Massimo Cristallo

Studio grafico-analitico di una funzioni reale in una variabile reale

Università di Cassino Corso di Statistica 1 Esercitazione del 17/10/2006 Dott. Alfonso Piscitelli. Esercizio 1

ELEMENTI DI STATISTICA

Geometria 1 a.a. 2011/12 Esonero del 23/01/12 Soluzioni (Compito A) sì determinarla, altrimenti dimostrare che ciò è impossibile.

Oltre la regressione lineare

Università di Verona Prof. S. De Marchi Verona, 30 gennaio 2007

La sincronizzazione. (Libro) Trasmissione dell Informazione

Statistica di Bose-Einstein

Teoria dell informazione e Meccanica Statistica

Metodi e Modelli per l Ottimizzazione Combinatoria Progetto: Metodo di soluzione basato su generazione di colonne

Architetture aritmetiche. Corso di Organizzazione dei Calcolatori Mariagiovanna Sami

Esempi di programmazione assembly

Algoritmo di Carlier- Pinson per problemi di Job Shop Scheduling: un esempio

Università di Verona Prof. S. De Marchi Verona, 6 febbraio 2006

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 17 Luglio Attenzione:

Misure indipendenti della stessa grandezza, ciascuna con una diversa precisione.

Esempi di programmazione assembly

Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 12

La soluzione delle equazioni differenziali con il metodo di Galerkin

Corso di. Dott.ssa Donatella Cocca

Sorgenti Numeriche - Soluzioni

V n. =, e se esiste, il lim An

OPERAZIONI E INSIEMI NUMERICI

,29 7. Distribuzioni di frequenza. x 1 n 1 n 1 n 1 /N n 1 /N*100 x 2 n 2 n 1 +n 2 n 2 /N n 2 /N*100

Lezione n 18. Lezioni di Ricerca Operativa. Corso di Laurea in Informatica Università di Salerno. Prof. Cerulli Dott.ssa Gentili Dott.

* * * Nota inerente il calcolo della concentrazione rappresentativa della sorgente. Aprile 2006 RL/SUO-TEC 166/2006 1

Ministero della Salute D.G. della programmazione sanitaria --- GLI ACC - L ANALISI DELLA VARIABILITÀ METODOLOGIA

Controllo e scheduling delle operazioni. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Analisi Matenatica Lezione 1 23 settembre 2013

S O L U Z I O N I. 1. Effettua uno studio qualitativo della funzione. con particolare riferimento ai seguenti aspetti:

Sistemi Intelligenti Stimatori e sistemi lineari - III

Appunti di Teoria dell Informazione

Analisi ammortizzata. Illustriamo il metodo con due esempi. operazioni su di una pila Sia P una pila di interi con le solite operazioni:

STATISTICA DESCRITTIVA CON EXCEL

Gestione della produzione e della supply chain Logistica distributiva. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Intorduzione alla teoria delle Catene di Markov

NUMERI GRANDI DI FIBONACCI come trovare velocemente i loro esatti valori numerici Cristiano Teodoro

PROBLEMA DI SCELTA FRA DUE REGIMI DI

Analisi Class info sul corso Lezione 1 22 settembre 2014

La logica nell informatica

4.6 Dualità in Programmazione Lineare

PICCOLE OSCILLAZIONI ATTORNO ALLA POSIZIONE DI EQUILIBRIO

sda 2006/6/1 9:59 page 317 #333

Lezione 7. Numeri primi. Teorema Fondamentale dell'aritmetica.

Dipartimento di Matematica per le scienze economiche e sociali Università di Bologna. Matematica aa lezione febbraio 2009

Lezione n La concentrazione

PROCEDURA INFORMATIZZATA PER LA COMPENSAZIONE DELLE RETI DI LIVELLAZIONE. (Metodo delle Osservazioni Indirette) - 1 -

4. ALGORITMI GREEDY. cambia-monete scheduling a minimo il ritardo. Il problema del cambia-monete. Proprietà di una soluzione ottima

Introduzione al Machine Learning

= = = = = 0.16 NOTA: X P(X) Evento Acquisto PC Intel Acquisto PC Celeron P(X)

Integrazione numerica dell equazione del moto per un sistema lineare viscoso a un grado di libertà. Prof. Adolfo Santini - Dinamica delle Strutture 1

Modelli descrittivi, statistica e simulazione

Stabilità dei Sistemi Dinamici. Stabilità Semplice. Stabilità Asintotica. Stabilità: concetto intuitivo che può essere formalizzato in molti modi

Calcolo della caduta di tensione con il metodo vettoriale

3 (solo esame 6 cfu) Elementi di Analisi Numerica, Probabilità e Statistica, modulo 2: Elementi di Probabilità e Statistica (3 cfu)

Linguaggio C. funzioni e procedure. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Individuazione di linee e curve. Minimi quadrati. Visione e Percezione. Model fitting: algoritmi per trovare le linee. a = vettore dei parametri

Soluzioni 3.1. n(n 1) (n k + 1) z n k! k + 1 n k. lim k

POLINOMIO MINIMO E FORMA CANONICA DI JORDAN NOTA AGGIUNTIVA PER IL CORSO DI GEOMETRIA ANALITICA E ALGEBRA LINEARE A.A DOCENTE: PAOLO LISCA

Le operazioni che vogliamo realizzare sono. Supporremo che una tabella T abbia i seguenti attributi: 1. Table(T): costruisce una tabella vuota T.

Support Vector Machines. Macchine a vettori di supporto

Università di Cassino. Esercitazioni di Statistica 1 del 19 Febbraio Dott. Mirko Bevilacqua

IL GRUPPO SIMMETRICO S n

Dipartimento di Statistica Università di Bologna. Matematica finanziaria aa lezione 13: 24 aprile 2013

Esercizi sulle reti elettriche in corrente continua (parte 2)

Strada B. Classe Velocità valore frequenza Frequ. ass Frequ. % hi Freq. Cum

Metodi di analisi R 1 =15Ω R 2 =40Ω R 3 =16Ω

INTERPOLAZIONE MEDIANTE CURVE SPLINE. '' ( b ) = 0

Valore attuale di una rendita. Valore attuale in Excel: funzione VA

L ANALISI MONOVARIATA: Variabilità e mutabilità. Prof. Maria Carella

urto v 2f v 2i e forza impulsiva F r F dt = i t

LA CORRENTE ELETTRICA CONTINUA

3) Entropie condizionate, entropie congiunte ed informazione mutua

INDICI STATISTICI MEDIA, MODA, MEDIANA, VARIANZA

Transcript:

Scrvere programm corrett L esempo della rcerca bnara o dcotomca J. Bentley, Programmng Pearls, Addson Welsey. 1 Schema processo produzone funzone teratva Algortmo n pseudo-codce Indvduazone nvarante Codfca cclo n modo da rspettare l nvarante Prova d correttezza Testng 2 1

Il problema B è un vettore d n nter, ordnato n modo crescente, coè tale che B[] <= B[+1], per 0 <n. Se n = 0, l vettore è vuoto. Voglamo sapere se un ntero t è presente n B e, se lo è, qual è la sua poszone. La rsposta al problema è qund un valore p (per poszone) tra 0 e n-1, se l elemento è presente, e -1 altrment. 3 L algortmo Inzalmente l ntervallo d rcerca dell elemento è l ntero vettore (array). L ntervallo d rcerca è rstretto n funzone del confronto tra l elemento cercato e quello medano: se l elemento cercato è pù pccolo d quello confrontato la rcerca s restrnge alla metà snstra del vettore, altrment a quella destra. Il processo s rpete fno a che s trova l elemento, oppure l ntervallo d rcerca dventa vuoto. 4 2

x < B[m] o x = B[m] o x > B[m] B m Se x < B[m] Se x > B[m] m m 5 Volendo mplementare l algortmo con un programma teratvo, convene utlzzare un nvarante per progettare correttamente l cclo. Invarante: devestare(,) come abbrevazone dell affermazone se t è presente nel vettore dovrà essere nell ntervallo,, coè tra gl element B[],,B[]. pseudocodce: 1. nzalzza ntervallo a 0,n-1. 2. loop {nvarante devestare(ntervallo)} 3. f (ntervallo è vuoto) esc dal cclo e resttusc -1 4. calcola l punto medano dell ntervallo n m 5. usa m per restrngere l ntervallo d rcerca 6. se t è trovato esc dal cclo e resttusc la sua poszone. 6 3

Raffnamento Vedamo d mplementare rga per rga lo pseudocodce: 1. nzalzza ntervallo a 0, n-1 Qu decdamo d rappresentare l ntervallo con due ndc e. L nzalzzazone che rspetta l nvarante è 1. = 0, = n-1 qund devestare(0,n-1) è vero all ngresso nel cclo. l prossmo passo è raffnare la terza e la quarta rga: 3. f (ntervallo è vuoto) esc dal cclo e resttusc -1 4. calcola l punto medano dell ntervallo n m Un ntervallo così ndvduato è vuoto se > (quando = c è un elemento) Qund la rga 3 dventa: 3. f (>) return -1; E la quarta: 4. m= (+)/2 7 Raffnamento 1. =0, = n-1 {devestare(,)} loop 3. f (>) return -1; 4. m= (+)/2 5. usa m per restrngere l ntervallo d rcerca 6. se t è trovato esc dal cclo e resttusc la sua poszone. Per raffnare queste ultme due rghe s deve confrontare t con B[m] e compere delle azon nel rspetto dell nvarante: f (B[m] == t) return m; else f (B[m] < t) [mplca devestare(m+1,), qund] =m+1 ; else [qu B[m] > t mplca devestare(,m-1), qund] =m-1; 8 4

Raffnamento: fne nt bnarysearch(nt *v, nt t, unsgned nt n) /* resttusce la poszone d t n un vettore ordnato v se presente, -1 altrment prec v!=null && v[] v[+1], 0 <n.*/ {nt,m,; = 0; = n-1; whle ( <= ) {nvarante :devestare(,)} { m= (+)/2; f ( v[m] < t) = m+1; else f (v[m] == t) return m; else /* v[m] > t*/ = m-1; } return -1;} 9 Testng per la rcerca bnara: scelta de dat a scatola nera B Dalle post condzon rcavamo che abbamo n+1 possbl output: valor tra 0 e n-1 n caso d successo e -1 n caso d nsuccesso. Poché gl element sono ordnat, notamo che l caso d nsuccesso può verfcars n n+1 mod dvers ( perchè? ). Per ogn vettore, dvdamo l nseme de possbl valor cercat n sottonsem equvalent rspetto al test: gl nsem {B[0]},, {B[n-1]}, cascuno de qual corrsponde a una rcerca con successo e gl n+1 ntervall (-,B[0]),(B[0],B[1]),,(B[n-2],B[n-1]), (B[n-1, ) per le rcerche con nsuccesso. 10 5

Testng per la rcerca bnara: scelta dat a scatola trasparente Nessuna, una o due esecuzon del cclo, con le possbl dverse uscte, sono state gà consderate, aggungamo l caso n cu cerchamo un elemento presente nel vettore ma fuor dal range della rcerca. Testng per la rcerca bnara: scelta dat per l organzzazone del test Non ha molta mportanza qual dat contene l vettore. Possamo organzzare l testng nel modo pù semplce possble consderando vettor d lunghezza n (che parte da 0 fno a un valore massmo), e nzalzzando l vettore con multpl d 10. Consdereremo noltre l caso n cu l vettore contene element tutt dvers e quello n cu l vettore contene element tutt ugual 11 Organzzazone del testng 1 #nclude #defne MAXL 100 nt man(vod) {nt n,, x[maxl]; for (n=0;n<maxl;n++) {for (=0;<=n;++) /* nzalzzazone del vettore, notare che x contene n+1 element */ x[] = 10*; /* rcerca sul vettore vuoto */ f (n==0) assert(bnsearch(x,10,n) == -1); else {for (=0;<n;++) /*rcerca su prm n element */ {/*rcerca su tutt present*/ assert( bnsearch(x,10*,n)== ); /* rcerca su prm n ntervall d assenza: (-,0), (0,10),,((n-2)*10,(n-1)*10)*/ assert(bnsearch(x,10*-5,n)==-1); } 12 6

Organzzazone del testng 2 /* rcerca nell'ultmo ntervallo: ((n-1)*10, )*/ assert(bnsearch(x,10*n-5,n)==-1); /*c asscuramo che non localzz un elemento pur presente nel vettore ma al d fuor dell'ambto della rcerca */ assert(bnsearch(x,10*n,n)==-1); } /*chude l'else */ /* faccamo le stesse verfche su element tutt ugual */ for (=0;<n;++) x[] = 10; f (n==0) assert(bnsearch(x,10,n) == -1); else /*rcerca d un presente */ {assert((0 <= bnsearch(x,10,n))&&(bnsearch(x,10,n) < n)); /*next rcerca nell'ntervallo d assenza (-,10)*/ assert(bnsearch(x,5,n)==-1); /*oppure rcerca nell'ntervallo d assenza (10, )*/ assert(bnsearch(x,15,n)==-1); } } /*chude l cclo for */ return 0;} 13 7