Corso di Laurea in Informatica Umanistica
Anno Accademico 2010-11
6 crediti
Docente | Linda Pagli
|
||||
Orario |
|
||||
Ricevimento |
|
Programma del corso
Bibliografia
Modalità di esame
Testi prove scritte
Risultati compiti
Registro delle lezioni
Modalità d'esame
- L'esame consiste in una prova scritta e eventulamente in una prova orale.
- Durante la prova scritta è vietato consultare libri o appunti.
Bibliografia
Risulta quanto mai difficile parlare formalmente di Algoritmi senza disporre di una sufficiente "base matematica". Pertanto in questo corso di Algoritmica per InformaticaUmanistica cercheremo di lasciare da parte gli aspetti formali di "analisi degli algoritmi" e ci concentreremo sui principi e sulle tecniche di progettazione, accennando alla loro complessità. Date queste premesse, non stato possibile identificare un libro di testo che trattasse di Algoritmica in modo preciso ma "non formale". Qui di seguito si "suggerisce" un libro di testo che riporta (quasi) tutti gli pseudo-codici degli algoritmi che discuteremo in classe. Il libro però è molto tecnico e quindi poco appropriato per la laurea in InformaticaUmanistica. Lo seguiremo per ciò che concerne la formalizzazione degli pseudo-codici degli algoritmi; gli studenti potranno d'altra parte utilizzare un qualunque altro libro per ciò che riguarda la discussione delle proprietà e della complessità di questi algoritmi. Materiale aggiuntivo relativo alle singole lezioni, verrà segnalato nel registro delle lezioni.
P.Crescenzi, G.Gambosi, R.Grossi.
Strutture di dati e algoritmi.
Pearson-Addison Wesley 2006.
Questo libro si propone di spiegare l'algoritmica in modo informale e leggero: fornisce letture introduttive agli argomenti trattati a lezione. Vi si espongono con semplicitā le nozioni su cui č basata la costruzione di algoritmi e si mostra come, inaspettatamente, le stesse nozioni si incontrino nella letteratura e nella storia, nell'antropologia e nelle fiabe, guidando il lettore non esperto attraverso un territorio altrimenti ostico.
Anno Accademico 2008-2009
F.Luccio, L.Pagli.
Algoritmi, divinità e gente comune.
Edizioni ETS 1999.
Anno Accademico 2009-2010
Introduzione al corso.
Il concetto di algoritmo.
Algoritmo di moltiplicazione egizia.
Il problema delle 12 monete.
Il problema delle dodici monete
Il modello di computazione RAM. Complessità dei costrutti fondamentali IF, FOR, WHILE.
Il problema della ricerca. Algoritmi di ricerca sequenziale.
Par. 1.4 del testo n.1
Il problema della ricerca. La ricerca binaria. Analisi.
Crescita lineare e crescita logaritmica, confronto.
Par. 2.4.1 del testo n.1
Problema della ricerca: limite inferiore.
Algoritmi ricorsivi. Calcolo del fattoriale.
Algoritmi ricorsivi.
Esercitazione: Ricerca e eliminazione in multi-insiemi con e senza compattazione:
Soluzione n*occ(k) e soluzione lineare.
Problema delle Torri di Hanoi, algoritmo, analisi.
Principio di induzione. Crescita esponenziale.
Par. 1.2 del testo 1. Cap.1 del testo 2.
Divide et impera. Ricerca binaria ricorsiva. Conto delle occorrenze.
Determinazione del minimo. Ordinamento per selezione.
Par.2.4.1, 2.4.2, 2.5 del testo 1.
Merge: defnizione e analisi.
MegeSort, codice e simulazione.
Par.2.4.3 del testo 1.
Procedura Merge. Soluzioni principali equazioni di ricorrenza.
Ordinamento ottimo di 3 elementi. Limite inferiore del problema dell'ordinamento
Par. 2.5.3 del testo 1,
Limiti inferiori
Esercitazione: Ricerca dell'elemento moda in insiemi non ordinati e ordinati. Modifica di SelectionSort, ove a ogni iterazione si seleziona minimo e massimo.
Numeri di Fibonacci, definizione e calcolo. Algoritmi di varia complessità.
I numeri di Fibonacci
Algoritmi di ordinamento: QuickSort.Algortimo Distribuzione.
Valutazione caso pessimo, caso ottimo e caso medio.
Ricorrenze.
Par.2.5.4 fino a pag. 52 primo capoverso (compreso), del testo 1.
Esercitazione. Unione, Intersezione e differenza tra due insiemi ordinati in tempo lineare. Esercizio di interpretazione di codice.
Algoritmo di ordinamento in tempo lineare. Discussione sull'applicabilità. Definizione degli ordini di grandezza "O" e "Omega". Rappresentazione e scansione di tabelle bidimensionali.
Ordinamento lineare
Esercitazione. Esercizi di scorrimento di matrici bidimensionali per righe per colonne e a serpentina. Casi di ordinamento lineare
La tecnica della programmazione dinamica. Numeri di Fibonacci. Il problema dell'edit distance.
La programmazione dinamica
Edit distance: ricostruzione allineamento.Il problema dello String matching.
Calcolabilittà: Problemi indecidibili, il problema dell'arresto. Problemi intrattabili, problemi NP-completi.
Problema del sottografo completo. Problemi del ciclo Euleriano e del ciclo Hamiltoniano.
Par. 1.2.2, 1.3 del testo 1
I problemi NP-completi
L'indecidibilità
Esercitazione: esercizi riassuntivi
Soluzioni compitino 17/12/2008
alberi, alberi binari, visita anticipata e simmetrica;
alberi binari di ricerca in confronto alla ricerca binaria, inserzione,
eliminazione;
Cenni alla memorizzazione di alberi.
par. 4.1 e 5.4.1 del testo 1.
Esercitazione scritta.
Esercizi