• Non ci sono risultati.

LABORATORIO DI ALGORITMI PROGRAMMA

N/A
N/A
Protected

Academic year: 2021

Condividi "LABORATORIO DI ALGORITMI PROGRAMMA"

Copied!
3
0
0

Testo completo

(1)

LABORATORIO DI ALGORITMI PROGRAMMA

Premessa

Durante il laboratorio, oltre alla presentazione di alcuni argomenti prerequisito indispensabile per la comprensione del corso, verranno, a titolo di esercizio, implementati alcuni tra gli algoritmi esposti a lezione.

Inoltre, verranno esposti e implementati alcuni algoritmi di teoria dei numeri, con particolare riferimento alla fattorizzazione dei numeri interi.

Per partecipare al laboratorio è indispensabile conoscere i rudimenti del linguaggio di programmazione C++

Bibliografia

Il materiale presentato verrà estratto dai seguenti testi:

v Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein - Introduction to Algorithms - Mc Graw Hill Book Company - 2003

v Robert Sedgewick - Algorithms - Addison Wesley Publishing Company - 1984 v Alan Parker - Algorithms and Data Structures in C++ - CRC Press - 1993

v David Bressoud, Stan Wagon - Computational Number Theory - Key College Publishing - 2000

Links

Maurizio Dini:

maurizioudini@katamail.com http://web.freepass.it/maurizioudini Davide Mognaschi:

http://www.cdmp.it/algoritmi

(2)

PRIMA PARTE

Introduzione

Definizione di algoritmo

Progettazione e analisi di algoritmi. Input, output, istanze.

Efficienza degli algoritmi

Dimensione dell’input (input size) Tempi di elaborazione (running time)

Tasso di crescita dei tempi di elaborazione (order of growth) Classificazione della complessità. Caso peggiore, caso medio Richiami di analisi

Ordine di infinito e di infinitesimo. Simboli di Landau Funzioni monotone

Parte intera e intero successivo Classi di resto modulo n Polinomi

Potenze Logaritmi

Fattoriale e Stirling Il logaritmo iterato

Pseudocodice

Definizione e convenzioni

Progettazione di algoritmi

“Forza bruta” (approccio incrementale) vs “Divide et impera” (approccio ricorsivo) Un primo esempio. I due approcci a confronto: l’algoritmo Insertion Sort e l’algoritmo Merge Sort

Algoritmi probabilistici

Rappresentazione dei dati interi

virgola mobile alfanumerici conversione dati Operazioni sui dati Porte logiche Grafi

Funzioni ricorsive

Definizione ed esempi: fattoriale, la successione di Fibonacci Relazioni ricorsive del 2° ordine

Funzioni Booleane

(3)

SECONDA PARTE

Algoritmi di teoria dei numeri

L’algoritmo euclideo diretto, inverso ed esteso La tripla pitagorica

Aritmetica modulare Fast exponentiation Potenze di matrici

Il teorema cinese del resto Piccolo teorema di Fermat Numeri primi

Quanti sono?

Il metodo di Eratostene

Certificazione e tests di primalità Una dozzina di congetture sui primi

Numeri primi e crittografia: l’algoritmo RSA La funzione di Eulero

Algoritmi di fattorizzazione Frazioni continue e fattorizzazione

Generazione di numeri casuali e test di casualità Trasformata di Fourier discreta DFT

Computazione quantistica

I postulati della meccanica quantistica: una diversa logica di calcolo Il modello di rappresentazione

Spazi di Hilbert Prodotto tensore Basi computazionali Porte logiche

Algoritmo quantistico di Shor per la fattorizzazione dei numeri interi

Riferimenti

Documenti correlati

lista.h deve includere la definizione della struttura dati a puntatori (lista semplice non circolare) e i soli prototipi delle funzioni implementate in lista.c. Dunque, per

Un albero binario è una tipo astratto di dato che o è vuoto (cioè ha un insieme vuoto di nodi) o è formato da un nodo A (detto la radice) e da due sottoalberi, che sono a loro

Riversamento dei dati contenuti nell’heap nell’albero binario di ricerca utilizzando una visita lineare dell’array. Stampare i dati contenuti nell’albero binario di

La classe di memoria automatica è relativa a quegli oggetti locali ad un blocco (funzione o programma) che viene liberata non appena si raggiunge la fine di quel blocco. La classe

Scrivere in linguaggio C un programma che implementi le operazioni precedenti indipendentemente dal fatto che la struttura dati di appoggio sia un grafo rappresentato con liste

Le operazioni da fare sono reallocazione di memoria per il grafo (per il vettore di liste), cancellazione di una intera lista eliminando ogni suo elemento e poi facendo il free,

Si supponga inoltre che il venditore conosca il fatturato per ogni singola città (compreso quello della sua città che è inclusa in n) e il tempo necessario da trascorrere in

Dunque, il grafo trasposto G’ è il grafo G con tutti i suoi archi invertiti.. Per esempio, si consideri il seguente grafo, la sua rappresentazione e quella del suo trasposto