Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica

Documenti analoghi
Algoritmi e Strutture dati a.a. 2013/2014

Algoritmi e Strutture dati a.a. 2012/2013

UNIVERSITA DEGLI STUDI DI PERUGIA

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi e Strutture Dati

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

Introduzione alla gestione delle collezioni di oggetti

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Tecniche Algoritmiche: divide et impera

Fondamenti di Informatica A.A Studenti

Cammini minimi in grafi:

Algoritmi e Strutture Dati

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Corso di Laurea in Ingegneria Informatica (L8) Anno Accademico 2015/2016 FONDAMENTI DI INFORMATICA

Corso di Informatica

Elementi di Informatica

Algoritmi e Strutture Dati

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

Algoritmi e Sperimentazioni

Marco Liverani PROGRAMMARE IN C. Guida al linguaggio attraverso esercizi svolti e commentati

PIANO DI LAVORO. Programmazione Didattica per Competenze. Indirizzo Informatica e Telecomunicazioni. Articolazione Informatica DOCENTE:

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Corso di Laurea Ingegneria Informatica

Esercizi di Algoritmi e Strutture Dati

algoritmi e strutture di dati

SCHEMA DI COLLOCAZIONE delle monografie disposte a scaffale aperto

Fondamenti di Informatica (lettere A-I) A

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

Bilanciamento di tempi e costi Progetti a risorse limitate Note bibliografiche

Grafi: definizioni e visite

Damiano Macedonio (mod A/B) Nicola Rebagliati (mod A)

Espressioni con le quattro operazioni e l elevamento a potenza. Con soluzioni. - 1

Algoritmi e Strutture Dati (A.A 2014/15) Damiano Macedonio

I S T I T U T O T E C N I C O I N D U S T R I A L E S T A T A L E

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Ordinamento per inserzione e per fusione

Politecnico di Torino Laurea Triennale in Ingegneria Informatica. appunti di Algoritmi e programmazione

Grafi: visita generica

Algoritmi e strutture di dati 2

Alberi Binari di Ricerca

CORSO DI LAUREA IN MATEMATICA CORSO DI LAUREA TRIENNALE, LAUREA MAGISTRALE E SPECIALISTICA ORARIO DEFINITIVO

Algoritmi. a.a. 2014/15 Classe 2: matricole dispari

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II

PIANO DI LAVORO. a.s / 2016

Informatica generale

Esempi. non. orientato. orientato

Diario delle Lezioni del Corso di Algoritmimodulo

Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità

Programma del Corso di Matematica Discreta (Elementi) lettere P-Z anno accademico 2004/2005

Introduzione ai grafi. Introduzione ai grafi p. 1/2

PROGRAMMAZIONE DISCIPLINARE

Algoritmi. a.a. 2013/14 Classe 2: matricole dispari

International Market Selection. Business Case PMI Meccanica Strumentale

Introduzione al corso. Tecniche di Programmazione A.A. 2015/2016

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Problemi, istanze, soluzioni

Algoritmi e Strutture Dati

5) Equazioni di ricorrenza

Lezione 1: Introduzione al Corso Mercoledì 30 Settembre 2009

Una breve introduzione all implementazione in C di algoritmi su grafo

Capitolo 19. Ricorsione

ISTITUTO SUPERIORE ENRICO FERMI. PROGRAMMAZIONE DEL GRUPPO DISCIPLINARE INFORMATICA IT INDIRIZZO INFORMATICA E TELECOMUNICAZIONI a.s.

IIS Gastaldi-Abba di Genova PIANO DI LAVORO A. S. 2011/2012

2.3.3 Cammini ottimi nei grafi senza circuiti

Heap e code di priorità

Introduzione al Calcolo Scientifico

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Algoritmi di ordinamento

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Presentazione del corso

INDICE SUONARE LI ACCORDI (I GIRI ARMONICI)

2. Analisi degli Algoritmi

Ordinamenti per confronto: albero di decisione

orario ricevimento via orario ufficio risposta entro 3 giorni

Heap scenario. Ho un insieme dinamico di oggetti, ciascuno identificato con una priorità. (la priorità è semplicemente un numero);

Tecniche Informatiche di ricerca giuridica. Nicolò Ghibellini Università di Ferrara

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

INTELLIGENZA ARTIFICIALE (elementi) 6 cfu

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

Strutture dati e loro organizzazione. Gabriella Trucco

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Strutture dati per rappresentare grafi

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Introduzione agli Algoritmi

Introduzione agli Algoritmi ed alle Strutture Dati Anno Accademico 2015/2016 Appello 23/6/2016

Gianfranco Cariolaro, Gianfranco Pierobon, Giancarlo Calvagno Segnali e sistemi Indice analitico

Alberi ed Alberi Binari

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

Algoritmi e Strutture Dati

E facile vedere che il massimo numero di archi è n(n - 1)/2. Nel caso in cui m = O(n) diremo che il grafo è sparso. V={1,2,3,4,5}

INSEGNAMENTI DEI GRUPPI PER IL CURRICULUM TEORICO La loro attivazione è definita per ogni anno accademico in sede di programmazione didattica

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

PROGRAMMAZIONE A.S Matematica - Classe Prima H Prof. Diana Giacobbi. Saper applicare i concetti acquisiti in contesti noti/nuovi;

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH

Transcript:

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e Introduzione agli Algoritmi Corso di laurea in Informatica Prof. Tiziana Calamoneri Prof. Giancarlo Bongiovanni Questi appunti sono basati sul libro di Cormen, Leiserson e Rivest, Introduzione agli algoritmi, McGraw Hill, adottato quale libro di testo del corso. Essi rispecchiano piuttosto fedelmente il livello di dettaglio che viene seguito durante le lezioni, e costituiscono un ausilio didattico allo studio. Tuttavia, è importante chiarire che gli appunti non vanno intesi come sostitutivi né del libro di testo né della frequenza alle lezioni, che rimangono fattori fondamentali per una buona preparazione dell'esame.

Pag 2 Licenza 2014 Giancarlo Bongiovanni e Tiziana Calamoneri Distribuzione Creative Commons Il lettore ha libertà di riprodurre, stampare, inoltrare via mail, fotocopiare, distribuire questa opera alle seguenti condizioni: Attribuzione: deve attribuire chiaramente la paternità dell opera nei modi indicati dall autore o da chi ha dato l opera in licenza; Non commerciale: non può usare quest opera per fini commerciali; Non opere derivate: Non può alterare o trasformare quest opera, né usarla per crearne un altra. Licenza Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0). Testo completo: http://creativecommons.org/licenses/by-nc-nd/4.0/ )

Indice Pag 3 1) Introduzione... 6 1.1 Algoritmi... 7 1.2 Strutture dati... 8 1.3 Efficienza... 8 1.4 Problem solving e problemi computazionali... 9 1.5 Modello del calcolatore... 11 1.5.1 Memoria... 11 1.5.2 Random access machine... 14 2) Notazione asintotica... 17 2.1 Notazione O (limite asintotico superiore)... 17 2.2 Notazione Ω (limite asintotico inferiore)... 19 2.3 Notazione Ө (limite asintotico stretto)... 20 2.4 Algebra della notazione asintotica... 21 2.5 Valutazione del costo computazionale di un algoritmo... 24 3) Il problema della ricerca... 31 3.1 Ricerca sequenziale... 31 3.2 Ricerca binaria... 33 3.3 Una curiosità: ricerca in tempo costante... 35 4) La ricorsione... 36 4.1 Funzioni matematiche ricorsive... 36 4.2 Algoritmi ricorsivi... 37 4.2.1 Calcolo del fattoriale... 37 4.2.2 Ricerca sequenziale ricorsiva... 40 4.2.3 Ricerca binaria ricorsiva... 41 4.2.4 Calcolo dei numeri di Fibonacci... 42 5) Equazioni di ricorrenza... 45 5.1 Metodo di sostituzione... 46 5.2 Metodo iterativo... 49 5.3 Metodo dell albero... 52 5.4 Metodo del teorema principale... 53 5.4.1 Enunciato del teorema principale... 54

Pag 4 5.4.2 Dimostrazione del teorema principale... 56 6) Il problema dell ordinamento... 62 6.1 Algoritmi semplici... 62 6.1.1 Insertion sort... 63 6.1.2 Selection sort... 64 6.1.3 Bubble sort... 65 6.2 La complessità del problema dell ordinamento... 66 6.3 Algoritmi efficienti... 69 6.3.1 Mergesort... 69 6.3.2 Quicksort... 74 6.3.3 Heapsort... 81 6.3.4 Ordinamento in tempo lineare: counting sort e bucket sort... 88 7) Strutture dati fondamentali... 92 7.1 Lista semplice... 96 7.2 Lista doppia... 98 7.3 Coda... 100 7.4 Coda con priorità... 102 7.5 Pila... 105 7.6 Albero... 109 7.6.1 Alberi binari... 113 7.6.2 Rappresentazione in memoria degli alberi binari... 115 7.6.3 Visita di alberi binari... 118 7.6.4 Applicazioni delle visite di alberi... 121 8) Dizionari... 123 8.1 Tabelle ad indirizzamento diretto... 124 8.2 Tabelle hash... 124 8.2.1 Risoluzione delle collisioni mediante liste di trabocco... 127 8.2.2 Risoluzione delle collisioni mediante indirizzamento aperto... 129 8.3 Alberi binari di ricerca... 135 8.3.1 Ricerca in un albero binario di ricerca... 136 8.3.2 Inserimento in un albero binario di ricerca... 139 8.3.2 Ricerca di minimo, massimo, predecessore e successore... 141 8.3.3 Eliminazione in un albero binario di ricerca... 143

Pag 5 8.4 Alberi Red- Black... 146 9) Grafi... 153 9.1 Definizioni e semplici proprietà... 153 9.2 Rappresentazione in memoria di grafi... 157 9.2.1 Liste di adiacenza... 157 9.2.2 Matrice di adiacenza... 158 9.2.3 Matrice di incidenza... 158 9.2.4 Lista di archi... 159 9.2.5 Confronti fra le rappresentazioni... 160 9.3 Visita di grafi... 161 9.3.1 Alberi di visita... 162 9.3.2 Visita in ampiezza (BFS)... 163 9.3.3 Visita in profondità... 168 9.3.4 Somiglianze fra la visita in ampiezza e la visita in profondità... 171 9.4 Reti e grafi... 173 9.4.1 Algoritmo di Dijkstra per la ricerca dei cammini minimi... 174 9.5 Alcuni problemi classici sui grafi... 183 9.5.1 Grafi euleriani... 183 9.5.2 Grafi bipartiti ed accoppiamenti... 185 9.5.3 Colorazione di grafi e grafi planari... 189