Obiettivi formativi
Scopo del corso e' familiarizzare gli studenti con gli algoritmi, lestrutture dati e con le tecniche per analizzare la loro efficienza.<br />
Prerequisiti
E' richiesta la conoscenza dei concetti base di matematica discreta e di calcolo. <br />
Contenuti dell'insegnamento
<br /> <br /><br /> Modelli di calcolo, analisi di algoritmi.<br />Structure dati di base: linked lists, stacks, queues, trees. <br /><br />Algoritmi di sorting di base , lower bounds per il sorting. <br /><br />Quicksort, heapsort. Sorting in tempo lineare. <br /><br />Mediano and statistiche d'ordine. <br /><br />Tecnica divide et impera. <br /><br />Introduzione alla programmazione dinamica e alla tecnica greedy. <br /><br />Alberi di Huffman. Binary trees, binary search trees, B-trees, red-black trees.<br />Hash tables. <br /><br />Grafi, BFS,DFS, DAG, topological sort e componenti fortemente connesse. <br /><br />Union-find, MST, algoritmo di Kruskal, algoritmo di Prim. <br /><br />Algoritmo di Dijkstra, algoritmo di Bellman-Ford.<br /><br /><br />
Bibliografia
<br />T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, McGraw-Hill;<br />C. Demetrescu, I. Finocchi, G.F. Italiano, Algoritmi e strutture dati, McGraw-Hill.