Algoritmica (Anno Accademico ): note di sintesi sulla prima parte del corso

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmica (Anno Accademico ): note di sintesi sulla prima parte del corso"

Transcript

1 Algoritmica (Anno Accademico ): note di sintesi sulla prima parte del corso March 5, 2005 Nel corso consideriamo algoritmi progettati per un esecutore ideale, o modello di calcolo che astrae le caratteristiche essenziali di un calcolatore. Tale modello è in grado di eseguire un certo insieme di operazioni elementari nonché operazioni di lettura e scrittura. Gli algoritmi verranno scritti in uno pseudocodice (facilmente traducibile in un linguaggio di programmazione ad alto livello) il quale comprenderà ovviamente la possibilità di indicare le operazioni elementari eseguibili dall automa. L esecuzione di ogni singola operazione elementare richiede un certo tempo nel modello. A seconda delle situazioni, si assume che tale tempo sia costante oppure proporzionale alla lunghezza (in bit) degli operandi. Nel primo caso abbiamo il cosiddetto criterio di costo uniforme, nel secondo il criterio di costo logaritmico. Il secondo può essere grossolanamente sbagliato nel caso in cui la lunghezza degli operandi cresca a dismisura, perché nessun calcolatore reale (e dunque nessun modello realistico) può trattare in tempo costante operandi arbitrariamente lunghi. Siamo certamente interessati a determinare la correttezza degli algoritmi rispetto al problema da risolvere. Siamo però soprattutto interessati a determinare il costo complessivo di esecuzione degli algoritmi su questo modello. Il costo sarà principalmente il tempo di esecuzione (come somma dei tempi delle operazioni elementari), ma anche lo spazio di memoria utilizzato dall algoritmo. Ovviamente, perché il tutto non rimanga uno sterile esercizio teorico, le indicazioni dovranno essere utili per valutare nella pratica il comportamento di programmi 1

2 veri che realizzano tali algoritmi. delle esercitazioni di laboratorio. Questo sarà uno degli obiettivi In funzione di che cosa valutiamo il costo di esecuzione? La risposta ovvia è che il costo sarà funzione dell input su cui l algoritmo lavora. Questo è vero ma, in generale, troppo complesso. Per motivi di trattabilità analitica (ma non solo) è preferibile utilizzare una misura più compatta, e questa è la dimensione dell input. Si tratta ovviamente di capire che cosa sia la dimensione. Ci sono due risposte possibili. La prima, sempre corretta, è che la dimensione è il numero totale di bit necessari per rappresentare l input stesso. Questa misura si accoppia al criterio di costo logaritmico per le operazioni, ed è la sola corretta nel caso di problemi (come il calcolo dei numeri di Fibonacci) che possono coinvolgere numeri arbitrariamente grandi. In altri casi, misurare il numero totale di bit introduce inutili complicazioni. La seconda possibile risposta è che la dimensione dell input conta il numero di oggetti (ad esempio, numeri di lunghezza limitata, caratteri o anche brevi sequenze di caratteri) che compongono l input e che sono singolarmente manipolabili in tempo costante su un modello realistico di calcolatore. Questa scelta, che va di pari passo con l assunzione di costo uniforme per le operazioni elementari, è risultata quella giusta per gli algoritmi di ricerca sequenziale e binaria. Dunque misuriamo il costo di esecuzione, spazio e/o tempo, in funzione di un singolo numero che è la dimensione dell input. Matematicamente il tempo T A di esecuzione di un algoritmo A è una funzione definita sugli interi positivi: T A = T A (n). Analoga definizione si può dare per lo spazio. La definizione data crea però seri problemi. Infatti, molti algoritmi che vedremo durante il corso, hanno comportamenti anche molto diversi pur in presenza di input della stessa dimensione. Un esempio è ancora costituito dall algoritmo di ricerca sequenziale (ma anche quello di ricerca binaria, anche se in modo meno pronunciato), che in alcuni casi può trovare subito la soluzione, mentre in altri deve esaminare tutta la sequenza. Dunque, a rigore, quella che abbiamo definito non è neppure una funzione. 2

3 Per ovviare all inconveniente, si considerano due alternative di estrema utilità pratica. Ragioniamo sul tempo di esecuzione (per lo spazio valgono le stesse considerazioni). Fissato un valore n della dimensione, si misura il tempo di esecuzione di un algoritmo A come il tempo impiegato da A nel caso più sfavorevole (per input di quella dimensione) oppure nel caso medio. In inglese si usano i termini worst-case e average-case analysis. Il caso più sfavorevole garantisce che nessun input potrà avere costi superiori, mentre il caso medio fornisce indicazioni sul comportamento tipico. Il caso più sfavorevole è solitamente più semplice da analizzare. Si tratta di studiare le caratteristiche dell input che costringono l interprete a lavorare più a lungo (si pensi alla ricerca sequenziale, in cui l analisi worst-case è immediata). Il caso medio, oltre ad essere matematicamente più difficile, richiede la conoscenza della distribuzione di probabilità degli input di una stessa dimensione, che non sempre si ha. A volte si può sostituire la probabilità con la frequenza osservata su periodi più o meno lunghi, ottenendo risultati approssimati. Una volta stabilito il modello, il criterio di costo adottato per le operazioni elementari e la metodologia di analisi (worst- o average-case), il calcolo del tempo di esecuzione di un algoritmo procede analizzando matematicamente l algoritmo stesso sommando i costi delle singole operazioni elementari. Questo spesso richiede la conoscenza di tecniche di analisi e di calcolo combinatorio. Nel calcolo del costo, cioè della forma analitica della funzione tempo di esecuzione o spazio di memoria, ci concentriamo sulla determinazione del termine dominante, spesso trascurando anche le costanti moltiplicative del termine dominante. Ad esempio, anziché arrivare alla conclusione (poniamo) che T (n) = 1 2 n2 +8n+2 log n+5, ci basterà stabilire che T (n) = O(n 2 ). Questa semplificazione (che va sotto il nome di analisi asintotica) può sembrare grossolana. Ci sono però buone ragioni per farla, a parte la maggiore semplicità. Matematicamente, possiamo usare due argomenti distinti, che si applicano rispettivamente ai termini di ordine inferiore e alle costanti moltiplicative. La ragione per cui si trascurano i termini di ordine inferiore (la parte 3

4 8n+2 log n+5 nell esempio del punto precedente) è che, al crescere della dimensione n, essi incidono percentualmente sempre meno sul valore totale. Sempre con riferimento all esempio precedente, se n = 10, il contributo dei termini inferiori sul totale è circa il 65%, ed è ancora relativamente elevato (circa 14%) per n = 100, ma scende sotto al 2% per n = 1000 ed è di fatto trascurabile per n Il motivo per cui spesso ignoriamo la costante moltiplicativa del termine dominante dipende invece da un altra osservazione. Immaginiamo che il numero di operazioni eseguite da un certo algoritmo sia stato calcolato analiticamente e risulti T (n) = cn 2, dove c è una costante, più un eventuale contributo di ordine inferiore che abbiamo già provveduto a trascurare (per le ragioni esposte nel punto precedente). Il tempo di esecuzione vero e proprio, che indicheremo con t(n), dell algoritmo su una particolare piattaforma potrà essere quindi approssimato mediante la formula t(n) = vcn 2 (1) dove v è il tempo di esecuzione di una singola operazione 1. Il valore di v può essere approssimato mediante la formula v t( n), dove t( n) c n 2 è il tempo, misurato sperimentalmente, dell esecuzione dell algoritmo su input di dimensione fissata n (o eventualmente calcolato mediando i risultati di più esecuzioni). Disponendo di c e v possiamo ovviamente stimare il tempo di esecuzione su input di dimensione n qualsiasi mediante la formula (1). L osservazione cruciale è che, nella (1), v e c compaiono come prodotto. Questo giustifica un approccio in cui, analiticamente, si ignora la costante moltiplicativa c. In questo caso, il tempo di esecuzione stimato delle singole operazioni risulterà v t( n) ; n 2 tuttavia, t( n) è lo stesso di prima e questo implica che v = cv. La costante moltiplicativa trascurata analiticamente viene quindi scaricata sul tempo di esecuzione delle singole operazioni. In altri termini, sembrerà semplicemente di avere un processore più veloce o più lento (a seconda che risulti c < 1 o c > 1), senza che venga inficiata la capacità predittiva del modello. 1 Questa è una semplificazione, che sarà tanto più vicina alla realtà quanto più le operazioni che contribuiscono al termine dominante sono fra loro omogenee (ad esempio, tutte addizioni e sottrazioni oppure moltiplicazioni e divisioni, oppure tutti confronti fra chiavi della stessa lunghezza). 4

5 L input per un algoritmo descrive una partcolare istanza di un problema. Ad esempio, un elenco di chiavi e una chiave descrivono un istanza del problema generale ricerca in una lista di chiavi che l elgoritmo di ricerca sequenziale è chiamato a risolvere nella sua generalità (cioè per ogni particolare input/istanza). In questo corso vedremo molti altri problemi computazionali, come l ordinamento di un insieme di chiavi o il calcolo del percorso di lunghezza minima su una mappa. Molti dei problemi che analizzeremo hanno rilevanza applicativa diretta; tuttavia, ogni problema studiato compare come elemento costitutivo di un ben più grande numero di problemi applicativi di grande rilevanza scientifica e/o economica, e questo giustifica il loro studio. La nozione di complessità computazionale (o semplicemente complessità) di un problema si riferisce alla quantità di risorse di calcolo necessaria e sufficiente alla sua risoluzione rispetto ad un certo modello di calcolo. Ci riferiamo qui ancora al tempo, ricordando che definizioni analoghe si applicano allo spazio. Per molti problemi la complessità non è nota. Sono però in generale note limitazioni superiori ed inferiori alla complessità. Anche nel caso delle limitazioni, come già per il costo degli algoritmi, utilizziamo la notazione asintotica. Esprimiamo cioè tali limitazioni mediante le notazioni O, Ω e Θ. Il tempo di esecuzione di un algoritmo A che risolve un problema P fornisce una limitazione superiore alla complessità di P. Ad esempio, un algoritmo di costo O(n 2 ) per P stabilisce anche che la complessità di quest ultimo è al più quadratica. La determinazione di limitazioni inferiori non banali comporta in generale enormi difficoltà. Dimostrare una limitazione inferiore significa infatti far vedere, con argomentazioni logico/matematiche rigorose, che nessun algoritmo potrà mai fare meglio di quanto prescritto dalla limitazione. Una limitazione inferiore banale, nel caso di algorimi per il modello della macchina a registri (che astrae le caratteristiche di un computer mono-processore) è Ω(n). Infatti, se l input deve essere letto tutto è evidente che non si può pensare di risolvere il problema in tempo 5

6 sublineare. Ad esempio, nel caso della ricerca di una chiave in un insieme non ordinato, è facile rendersi conto che qualunque algoritmo deve comunque esaminare tutte le chiavi nel caso più sfavorevole (ad esempio, quando la chiave non è presente). La determinazione di limitazioni inferiori superlineari, ad esempio Ω(n 2 ), si è rivelata un compito di difficoltà formidabile per moltissimi problemi di natura combinatoriale che pure, nella pratica, sembrano richiedere solo algoritmi onerosi dal punto di vista del tempo di calcolo. Addirittura, per una certa classe di problemi molto importanti, che gli studenti di Scienze dell Informazione vedranno in un insegnamento successivo, la determinazione della complessità è annoverata fra uno dei dieci problemi irrisolti più importanti della matematica moderna. 6

Di cosa parliamo oggi?

Di cosa parliamo oggi? Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse usate da algoritmi per risolvere un dato problema Risorse = Tempo impiegato dall algoritmo

Dettagli

complessità degli algoritmi

complessità degli algoritmi complessità degli algoritmi progetto CORDA informatica algoritmo matematico persiano Muhammad al-khwarizmi (IX secolo) un algoritmo è una sequenza finita di passi interpretabili da un esecutore l esecuzione

Dettagli

sono le risorse di calcolo necessarie per la sua l esecuzione di un metodo sono tipicamente:

sono le risorse di calcolo necessarie per la sua l esecuzione di un metodo sono tipicamente: Complessità dei metodi e degli algoritmi Carla Binucci e Walter Didimo Efficienza di un metodo Un metodo è tanto più efficiente quanto minori sono le risorse di calcolo necessarie per la sua esecuzione

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala È sensato misurare la complessità di un algoritmo contando il numero di linee di codice eseguite? riassunto puntate

Dettagli

Complessità degli algoritmi (cenni)

Complessità degli algoritmi (cenni) Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Testo di riferimento Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati Testo di riferimento Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di Algoritmi Modelli di calcolo e analisi di algoritmi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Analisi di Algoritmi Analisi

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.00.005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Classificazione degli algoritmi Tassonomia di costo: algoritmo costante: c

Dettagli

Concetti di base dell ICT

Concetti di base dell ICT Informatica Linguaggio di programmazione Computer Bit Algoritmo Linguaggio macchina Informatica: Informazione automatica Gli anglosassoni usano il termine Computer Science = Scienza dei Calcolatori Computer:

Dettagli

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 12 LA COMPLESSITA COMPUTAZIONALE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Ω (grande omega) Diciamo che T(n) = Ω (f(n)), - leggiamo T(n) ha complessità

Dettagli

Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017

Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017 Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017 Architettura degli Elaboratori L Architettura (informatica) è l insieme dei criteri in base ai quali

Dettagli

L uomo come esecutore di algoritmi

L uomo come esecutore di algoritmi L uomo come esecutore di algoritmi l L algoritmo è l insieme di azioni elementari che consentono di risolvere un problema trasformando i dati iniziali del problema stesso nel risultato. l Un algoritmo

Dettagli

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi Algoritmi e Strutture Dati Capitolo Un introduzione informale agli algoritmi Ancora un esempio di problema e soluzioni algoritmiche: i numeri di Fibonacci verso un modello di calcolo più simile a un computer

Dettagli

Problemi algoritmici e Complessità degli algoritmi

Problemi algoritmici e Complessità degli algoritmi Problemi algoritmici e Complessità degli algoritmi Università degli Studi di Salerno Corso di Laurea in Scienze della comunicazione Informatica generale Docente: Angela Peduto A.A. 2005/2006 Problemi algoritmici!

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

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

Dettagli

Notazioni asintotiche. Martedì 30 settembre 2014

Notazioni asintotiche. Martedì 30 settembre 2014 Notazioni asintotiche Martedì 30 settembre 2014 Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Argomento di oggi: Notazioni asintotiche:

Dettagli

Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE

Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE COMPLESSITÀ DEGLI ALGORITMI L oggetto della teoria della complessità è stabilire se un problema sia facile o difficile In base a quali parametri

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

Gli algoritmi e la loro complessità

Gli algoritmi e la loro complessità Gli algoritmi e la loro complessità Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Algoritmo Un algoritmo è una procedura di calcolo (eventualmente composta da un certo numero di passi)

Dettagli

MODULO 07. La soluzione dei problemi mediante gli algoritmi

MODULO 07. La soluzione dei problemi mediante gli algoritmi MODULO 07 La soluzione dei problemi mediante gli algoritmi MODULO 07 Unità didattica 02 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando

Dettagli

Algoritmi e Strutture Dati

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

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Tecniche Algoritmiche: divide et impera

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

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

In 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 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

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 4.b: Trattabilità e Intrattabilità

Algoritmi, Strutture Dati e Programmi. UD 4.b: Trattabilità e Intrattabilità Algoritmi, Strutture Dati e Programmi : Trattabilità e Intrattabilità Prof. Alberto Postiglione AA 2007-2008 INTRODUZIONE Dispense, cap. 4.2.1 1 Problemi Intrattabili Esistono problemi che, pur avendo

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: savo@dis.uniroma1.it Web: http://www.dis.uniroma1.it/~savo

Dettagli

UD 4.b: Trattabilità e Intrattabilità INTRODUZIONE

UD 4.b: Trattabilità e Intrattabilità INTRODUZIONE Algoritmi, Strutture Dati e Programmi : Trattabilità e Intrattabilità INTRODUZIONE Prof. Alberto Postiglione Dispense, cap. 4.2.1 AA 2007-2008 Problemi Intrattabili Problemi Intrattabili Esistono problemi

Dettagli

Nozioni di base (II Parte)

Nozioni di base (II Parte) Nozioni di base (II Parte) 1 Ricorsione [GTG14, Par. 5.1-5.4 and 13.1] Algoritmo Ricorsivo: algoritmo che invoca se stesso (su istanze sempre più piccole) sfruttando la nozione di induzione. La soluzione

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

Laboratorio Algoritmi 2016

Laboratorio Algoritmi 2016 Laboratorio Algoritmi 2016 Lunedì 10:30 13:30 Aula 2 in via Saldini. Ricevimento: inviare e-mail a frasca@di.unimi.it. 44 ore (9 CFU) Linguaggio di programmazione: C Esame : progetto Sito del corso http://frasca.di.unimi.it/algm16/algm.html

Dettagli

Cosa è l Informatica?

Cosa è l Informatica? Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente

Per 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

Dettagli

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Problemi e algoritmi Il che cosa e il come Il che cosa ed il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come

Dettagli

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell 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

Dettagli

Introduzione all informatica

Introduzione all informatica Introduzione all informatica INFORMATICA Varie definizioni Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta Scienza della rappresentazione e dell

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi In quale modo stimiamo il tempo di calcolo? Possiamo considerare due approcci: Approccio empirico (a posteriori) Approccio teorico

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Algoritmi Algoritmi classici Alcuni problemi si presentano con elevata frequenza e sono stati ampiamente studiati Ricerca di un elemento in un vettore

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi 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

Dettagli

Fondamenti di Informatica. Ipotesi fondamentale. Irrisolubilità. Prof. V.L. Plantamura Informatica e Comunicazione Digitale a.a.

Fondamenti di Informatica. Ipotesi fondamentale. Irrisolubilità. Prof. V.L. Plantamura Informatica e Comunicazione Digitale a.a. Fondamenti di Informatica Prof. V.L. Plantamura Informatica e Comunicazione Digitale a.a. 2006-2007 Ipotesi fondamentale Tesi di Church Qualunque algoritmo può essere espresso sotto forma di matrice funzionale

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla marzolla@cs.unibo.it Dipartimento di Scienze dell Informazione, Università di Bologna 19 ottobre 2010 Copyright c 2009, 2010 Moreno Marzolla, Università

Dettagli

Algoritmi e Strutture Dati

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

Dettagli

Cos è l informatica? Un esempio di algoritmo. Che cos è un algoritmo? Algoritmi e loro proprietà. non ambigue ed effettivamente calcolabili

Cos è l informatica? Un esempio di algoritmo. Che cos è un algoritmo? Algoritmi e loro proprietà. non ambigue ed effettivamente calcolabili Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione

Dettagli

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1

Notazione 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

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

complessità computazionale

complessità computazionale complessità computazionale classificazione degli algoritmi o algoritmi sequenziali o eseguono un solo passo alla volta o algoritmi paralleli o possono eseguire più passi per volta o algoritmi deterministici

Dettagli

Rappresentazione dei numeri

Rappresentazione dei numeri Corso di Calcolatori Elettronici I Rappresentazione dei numeri: sistemi di numerazione posizionale Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica

Dettagli

CdL in Medicina Veterinaria - STPA AA

CdL in Medicina Veterinaria - STPA AA CdL in Medicina Veterinaria - STPA AA 2007-08 Programmi e algoritmi I Calcolatori: cos hanno di speciale? 1 Elaborazione dell Informazione Dati, informazione e istruzioni Un esempio: Dr Rossi 328275456

Dettagli

Algoritmi e loro proprietà. Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio

Algoritmi e loro proprietà. Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo Efficienza rispetto allo spazio Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione

Dettagli

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

ESERCITAZIONI 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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e notazione asintotica Modello di calcolo Per valutare la complessità temporale dei vari algoritmi Fibonacci, abbiamo pedissequamente contato le

Dettagli

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo 1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo

Dettagli

Corso di Calcolatori Elettronici I A.A Lezione 2 Rappresentazione dei numeri: sistemi di numerazione posizionale ing. Alessandro Cilardo

Corso di Calcolatori Elettronici I A.A Lezione 2 Rappresentazione dei numeri: sistemi di numerazione posizionale ing. Alessandro Cilardo Corso di Calcolatori Elettronici I A.A. 2012-2013 Lezione 2 Rappresentazione dei numeri: sistemi di numerazione posizionale ing. Alessandro Cilardo Accademia Aeronautica di Pozzuoli Corso Pegaso V GArn

Dettagli

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve?

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve? Valutare la complessità in tempo Complessità in tempo: cosa serve? Informatica II Capitolo 2 Analisi di algoritmi Per stimare il tempo impiegato da un programma Per stimare il più grande input gestibile

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

COMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli

COMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli COMPLESSITA COMPUTAZIONALE Esercitazioni Tutor: Francesca Piersigilli La complessità computazionale si occupa della valutazione del costo degli algoritmi in termini di risorse di calcolo: tempo di elaborazione;

Dettagli

Implementazione di dizionari

Implementazione di dizionari Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri campi in cui sono memorizzati i dati associati alla

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3 Dall algoritmo al calcolatore: concetti introduttivi Fondamenti di Programmazione Algoritmo Problema o compito Preparazione di una torta Programmazione del VCR MCD tra due numeri Algoritmo sequenza precisa

Dettagli

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione.

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione. parte II - A 2 Si consideri la seguente funzione: analizzami(int n) c = 1 k = n*n while k > 1 do k = k/2 for i = 0 to 3 do if n >1 then analizzami(n/4) Si imposti la relazione di ricorrenza che ne descrive

Dettagli

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione INFORmazione+autoMATICA Perché saperne di piu? Calcolatore: un supporto per la rappresentazione di informazione che può: I raccogliere impressionanti quantità di dati I eseguire velocemente e con precisione

Dettagli

Laboratorio di Calcolo di Aerodinamica: II Lezione

Laboratorio di Calcolo di Aerodinamica: II Lezione Ingegneria Aerospaziale a.a. 2016/17 Laboratorio di Calcolo di Aerodinamica: II Lezione Francesco Battista francesco.battista@uniroma1.it DIMA: Dipartimento di Ingegneria Meccanica e Aerospaziale Programma:

Dettagli

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

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

Dettagli

Appendice B. Algoritmi e Complessità

Appendice B. Algoritmi e Complessità Appendice B Algoritmi e Complessità 1. Introduzione Un algoritmo A è una procedura passo-passo per risolvere un problema P. Un problema P è caratterizzato dall insieme I delle sue istanze. L algoritmo

Dettagli

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento

Dettagli

MODELLI QUANTITATIVI. f x r = c

MODELLI QUANTITATIVI. f x r = c MODELLI QUANTITATIVI Qualunque sia il modello di estrazione di regolarità o di conoscenze dai dati empirici, esiste sempre una base statistica da cui occorre partire. Un fenomeno linguistico specifico

Dettagli

L Aritmetica del Calcolatore

L Aritmetica del Calcolatore L Aritmetica del Calcolatore Luca Gemignani luca.gemignani@unipi.it 23 febbraio 2018 Indice Lezione 1: Rappresentazione in Base e Numeri di Macchina. 1 Lezione 2: Aritmetica di Macchina. 3 Lezione 1: Rappresentazione

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis accattatis@ing.uniroma2.it Tutor: prof. Venturino Taggi taggi@ing.uniroma2.it Fondamenti di Informatica a.a. 2016/17 - A.Accattatis 2 Complessità computazionale

Dettagli

Corso di Perfezionamento

Corso di Perfezionamento Il concetto di Algoritmo Modelli di calcolo e analisi di algoritmi 1 1 Dipartimento di Matematica e Informatica Università di Camerino 11 febbraio 2009 Il concetto di Algoritmo Il concetto di algoritmo

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

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

Dettagli

Unità di apprendimento 6. Dal problema al programma

Unità di apprendimento 6. Dal problema al programma Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 2 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Esercizi per il corso di Algoritmi, anno accademico 2011/12

Esercizi 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

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis accattatis@ing.uniroma2.it Fondamenti di Informatica a.a. 2015/16 - A.Accattatis 2 Prefazione Il materiale della presente lezione è ispirato ai lavori

Dettagli

Fondamenti di Informatica II 9. Complessità computazionale

Fondamenti di Informatica II 9. Complessità computazionale Scelta di un algoritmo Fondamenti di Informatica II 9. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Scelta di un algoritmo Fondamenti di Informatica 19. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta dell

Dettagli

Informazione binaria: - rappresentazione dei numeri naturali e interi relativi -

Informazione binaria: - rappresentazione dei numeri naturali e interi relativi - Informazione binaria: - rappresentazione dei numeri naturali e interi relativi - Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Tipologie

Dettagli

Ordinamenti e crescita della complessità

Ordinamenti e crescita della complessità Ordinamenti e crescita della complessità Informatica@SEFA 07/08 - Lezione Massimo Lauria Venerdì, 7 Ottobre 07 Nota bibliografica: Il contenuto di questa e di alcune delle prossime

Dettagli

Lezione 4 Ugo Vaccaro

Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2017 2018 Lezione 4 Ugo Vaccaro Introduciamo ora la notazione Ω, che ci sarà utile quando vorremo valutare limitazioni inferiori al tempo di esecuzione di algoritmi

Dettagli

STIME SECONDO IL METODO DI ARGELANDER

STIME SECONDO IL METODO DI ARGELANDER STIME SECONDO IL METODO DI ARGELANDER La stima della magnitudine di una variabile con il metodo di Argelander si basa, come per gli altri metodi (metodo frazionario, metodo di Pogson) sul confronto della

Dettagli

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 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

Dettagli

Ingegneria Elettrica Politecnico di Torino. Luca Carlone. ControlliAutomaticiI LEZIONE IV

Ingegneria Elettrica Politecnico di Torino. Luca Carlone. ControlliAutomaticiI LEZIONE IV Ingegneria Elettrica Politecnico di Torino Luca Carlone ControlliAutomaticiI LEZIONE IV Sommario LEZIONE IV Importanza dello studio di segnali sinusoidali nell ingegneria Sistemi lineari con ingressi sinusoidali

Dettagli

Dunque k vale all incirca log n: precisamente k = [log n] + 1.

Dunque k vale all incirca log n: precisamente k = [log n] + 1. Teoria Elementare dei Numeri Soluzioni Esercizi 1 Convenzione: Su questo foglio log n indica sempre il logaritmo in base 2 di n 1 Quante cifre binarie ha all incirca un numero intero n? Sol Scriviamo n

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

Note sull utilizzazione di componenti logici di tipo memoria

Note sull utilizzazione di componenti logici di tipo memoria Architettura degli Elaboratori, a.a. 2005-06 Note sull utilizzazione di componenti logici di tipo memoria Queste note precisano e completano il contenuto nel Cap. III, sez. 7 delle Dispense, in particolare

Dettagli

Tempo e spazio di calcolo

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

Dettagli