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

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

Algoritmi e Strutture dati a.a. 2013/2014

UNIVERSITA DEGLI STUDI DI PERUGIA

Algoritmi e Strutture dati a.a. 2012/2013

ALGORITMI E LABORATORIO

Alcuni luoghi comuni sull informatica e sull informatico

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

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

Corso di Fondamenti di Informatica e Laboratorio

Appunti di Ricerca Operativa

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

FONDAMENTI DI INFORMATICA - canale 4

Introduzione alla gestione delle collezioni di oggetti

FONDAMENTI DI INFORMATICA - canale 1

K 4 è planare? E K 3,3 e K 5 sono planari? Sì! No! (Teorema di Kuratowski) K 5. Camil Demetrescu, Irene Finocchi, Giuseppe F.

Algoritmi e Strutture Dati

Algoritmica (A.A ): indice delle lezioni

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

PROGRAMMAZIONE II A - L

Algoritmi e Strutture Dati

Università degli studi Magna Graecia di Catanzaro

FONDAMENTI DI INFORMATICA Ps - Z

Algoritmi e Strutture Dati 1

FONDAMENTI DI INFORMATICA - canale 2

Algoritmi e Strutture Dati

FONDAMENTI DI INFORMATICA A - Co

Ottimizzazione Combinatoria

Tecniche Algoritmiche: divide et impera

Algoritmi e Strutture Dati

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

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

Algoritmi e Strutture Dati

Fondamenti di Informatica A.A Studenti

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

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

UNIVERSITÀ DEGLI STUDI DI BERGAMO

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

Ricordo che è ammesso alla prova scritta solo chi ha già consegnato ed avuto approvato il progetto.

Programma definitivo del corso MATEMATICA DISCRETA C.L.T. Informatica a.a. 2016/17

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

ALGORITMI E COMPLESSITA'

Laurea in Ingegneria Gestionale. Corso di Fondamenti di Informatica A.A. 2018/2019

Algoritmi di ordinamento (I parte)

Algoritmi e Sperimentazioni

Università Roma Tre - PAS Classe A048 "Matematica Applicata" - Corso di Informatica a.a. 2013/2014

Cammini minimi in grafi:

Corso di Informatica

Università degli Studi dell Aquila Anno Accademico 2015/2016

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

Corso di Laurea Ingegneria Informatica

Informatica A.A Obiettivo del corso. Orario delle lezioni. Orario delle lezioni

Università degli Studi dell Aquila Anno Accademico 2016/2017

Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente

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

Programma definitivo del corso MATEMATICA DISCRETA C.L.T. Informatica (A) a.a. 2016/17. SITO UFFICIALE:

algoritmi e strutture di dati

algoritmi e strutture di dati

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort

DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di laurea in Matematica Anno accademico 2016/ anno

Fondamenti di Informatica A.A Obiettivo del corso. Programma del corso. Orario delle lezioni

Algoritmi e Strutture di Dati

Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A

Algoritmi e Strutture di Dati A.A Esempio di prova scritta del 19 gennaio 2018 D.M CFU Libri e appunti chiusi Tempo = 2:00h

Efficienza algoritmi. Esempi

Informatica per il Management: Analisi Numerica

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

Grafi. V = {a, b, c, d} E = {(a, b), (a, c), (c, a), (d, d), (b, d)}

Gli algoritmi e la loro complessità

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

Prefazione. 0 Programmare per calcolare 1. I Programmazione di base in linguaggio C 5

Algoritmi di Ordinamento

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

Grafi: ordinamento topologico

Fondamenti di informatica II

Ordinamento di una lista: bubble-sort

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

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

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

Tabelle di corrispondenza

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

Teoria della complessità

Algoritmi e Sperimentazioni. Il corso. Struttura del corso. Introduzione al corso. Corso del secondo anno, curriculum STISI 9 crediti tenuto da:

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

Corso di. Fondamenti di Informatica 2 e Architettura degli Elaboratori

Esercizi svolti relativi all insegnamento di. Informatica generale

Contatti: Informatica per il Management: Analisi Numerica. Obiettivi del corso di Analisi Numerica. Informatica per il Management: Analisi Numerica 1

Quarto allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Terzo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Il principio di induzione. La Ricorsione. Il fattoriale: iterativo. Il fattoriale: ricorsivo. P (0) P (n) P (n + 1) per ogni n

Programma del corso di: Laboratorio di Programmazione e Calcolo Corso di laurea in Matematica a.a Proff. B. Paternoster, D.

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.

Indice Pag 2 1) Introduzione... 6 1.1 Algoritmi... 7 1.2 Strutture dati... 8 1.3 Efficienza... 9 1.4 Modello del calcolatore... 10 1.4.1 Memoria... 10 1.4.2 Random access machine... 13 2) Complessità asintotica... 16 2.1 Notazione O (limite asintotico superiore)... 16 2.2 Notazione Ω (limite asintotico inferiore)... 18 2.3 Notazione Ө (limite asintotico stretto)... 19 2.4 Algebra della notazione asintotica... 20 2.5 Valutazione della complessità computazionale di un algoritmo... 23 3) Il problema della ricerca... 30 3.1 Ricerca sequenziale... 30 3.2 Ricerca binaria... 32 4) La ricorsione... 35 4.1 Funzioni matematiche ricorsive... 35 4.2 Algoritmi ricorsivi... 35 4.2.1 Calcolo del fattoriale... 36 4.2.2 Ricerca sequenziale ricorsiva... 39 4.2.3 Ricerca binaria ricorsiva... 40 4.2.4 Calcolo dei numeri di Fibonacci... 41 5) Equazioni di ricorrenza... 44 5.1 Metodo di sostituzione... 45

Pag 3 5.2 Metodo iterativo... 48 5.3 Metodo dell albero... 51 5.4 Metodo del teorema principale... 52 5.4.1 Enunciato del teorema principale... 53 5.4.2 Dimostrazione del teorema principale... 55 6) Il problema dell ordinamento... 60 6.1 Algoritmi semplici... 60 6.1.1 Insertion sort... 61 6.1.2 Selection sort... 62 6.1.3 Bubble sort... 63 6.2 La complessità del problema dell ordinamento... 64 6.3 Algoritmi efficienti... 67 6.3.1 Mergesort... 67 6.3.2 Quicksort... 72 6.3.3 Heapsort... 79 6.3.4 Ordinamento in tempo lineare: counting sort... 86 7) Strutture dati fondamentali... 90 7.1 Lista semplice... 94 7.2 Lista doppia... 96 7.3 Coda... 98 7.4 Coda con priorità... 100 7.5 Pila... 103 7.6 Albero... 108 7.6.1 Alberi binari... 111 7.6.2 Rappresentazione in memoria degli alberi binari... 113 7.6.3 Visita di alberi binari... 116

Pag 4 8) Dizionari... 121 8.1 Tabelle ad indirizzamento diretto... 122 8.2 Tabelle hash... 122 8.2.1 Risoluzione delle collisioni mediante liste di trabocco... 126 8.2.2 Risoluzione delle collisioni mediante indirizzamento aperto... 128 8.3 Alberi binari di ricerca... 134 8.3.1 Ricerca in un albero binario di ricerca... 135 8.3.2 Inserimento in un albero binario di ricerca... 137 8.3.2 Ricerca di minimo, massimo, predecessore e successore... 139 8.3.3 Eliminazione in un albero binario di ricerca... 141 8.4 Alberi Red-Black... 144 9) Grafi... 150 9.1 Definizioni e semplici proprietà... 150 9.2 Rappresentazione in memoria di grafi... 154 9.2.1 Liste di adiacenza... 154 9.2.2 Matrice di adiacenza... 155 9.2.3 Matrice di incidenza... 155 9.2.4 Lista di archi... 156 9.2.5 Confronti fra le rappresentazioni... 157 9.3 Visita di grafi... 158 9.3.1 Alberi di visita... 159 9.3.2 Visita in ampiezza (BFS)... 160 9.3.3 Visita in profondità... 165 9.3.4 Somiglianze fra la visita in ampiezza e la visita in profondità... 168 9.4 Alcuni problemi classici sui grafi... 170 9.4.1 Grafi euleriani... 170

Pag 5 9.4.2 Grafi bipartiti ed accoppiamenti... 172 9.4.3 Colorazione di grafi e grafi planari... 176