Algoritmica (Anno Accademico ): note di sintesi sulla prima parte del corso
|
|
- Giacomo Piccolo
- 5 anni fa
- Visualizzazioni
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? 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
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
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
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
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
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
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
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
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
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:
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
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à
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
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
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
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!
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
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:
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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à
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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;
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
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
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
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
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
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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