IN110-ALGORITMI e Strutture Dati

Codice: 20410336

Scheda insegnamento

Anno Accademico di erogazione
2026/2027
Corso di studi
Matematica
Periodo di erogazione
Primo semestre
CFU
9 CFU
Lingua
Italiano
SSD
INFO-01/A

Scopri il programma didattico

Programma, testi adottati e modalità d’esame sono quelli pubblicati dai docenti per l’anno accademico 2026/2027. L’insegnamento è diviso in canali: ogni canale ha il suo programma.

Docente
Marco Liverani
Curriculum
Teorico-didattico
Anno di corso
1
Periodo
Primo semestre
Ore
90
CUIN
260006405

Programma

"1. Problemi ed algoritmi
Introduzione alle caratteristiche del calcolatore ed al rapporto programmatore/ esecutore; compiti ed abilità del programmatore; principali caratteristiche ed abilità dell’esecutore, operazioni di base (logiche, aritmetiche e di confronto). Modelli di macchina calcolatrice: cenni sul modello di Von Neumann e sulla macchina di Turing.
Linguaggi di programmazione: linguaggi imperativi e dichiarativi. Istruzioni fondamentali di un linguaggio di programmazione procedurale generico. Algoritmi e programmi; diagrammi di flusso. Regole della programmazione strutturata, cenni sul teorema di Jacopini-Böhm; approccio top-down alla soluzione di un problema.

2. Il linguaggio C
Organizzazione della memoria di un calcolatore, indirizzi, parole, puntatori. Codifica binaria. Tipi di dato, strutture dati (array, matrici, pile, code, code di priorità, liste, alberi, grafi). Linguaggio macchina, linguaggi di alto livello; compilatori ed interpreti, compilazione ed esecuzione di un programma C in ambiente UNIX/Linux. Il linguaggio C: scopi e principali caratteristiche.
La struttura di un programma C, l’inclusione degli header, dichiarazione delle variabili; le librerie. Tipi di dato elementari in linguaggio C: interi, floating point, double, char. Operatori aritmetici, valutazione di espressioni logiche e connettori logici. Puntatori; aritmetica sui puntatori. Array e matrici e loro rappresentazione in memoria. Strutture dati complesse: liste, alberi, grafi; l’istruzione “struct”. Operatore di assegnazione, operatori aritmetici in C in forma estesa e compatta. Strutture di controllo: “if ... else ...”, “while ...”, “do ... while”, “for ...”.
Funzioni: funzioni di libreria e funzioni definite dall’utente. Passaggio di parametri per valore e per indirizzo alle funzioni. Funzioni ricorsive. Funzioni di input/output: “printf”, “scanf”, “fprintf”, “fscanf”; funzioni per la gestione della memoria: “malloc”, “free”, “sizeof”; gestione di liste di record collegati tramite puntatori.

3. Algoritmi di ordinamento
Algoritmi di ordinamento elementari: Insertion sort, Selection sort, Bubble sort; l’approccio “divide et impera”, l’algoritmo Quick sort. Strutture di tipo LIFO (Last In First Out), pile; strutture di tipo FIFO (First In First Out), code; code di priorità, gli heap. Algoritmi ottimi per l’ordinamento: Heap sort, Merge sort.
Complessità di un algoritmo nel caso peggiore, la notazione “O grande”, analisi della complessità degli algoritmi di ordinamento.

4. Algoritmi elementari sui grafi
Definizioni principali: grafo, grafo orientato; sottografo, sottografo indotto; cammino, cammino semplice, grafo connesso, grafo fortemente connesso, grafo completo, clique, ciclo, grafo aciclico; alberi, foreste, spanning tree di un grafo. Strutture dati per la rappresentazione di grafi mediante un calcolatore: liste di adiacenza e matrici di adiacenza. Algoritmi di visita di un grafo: visita in ampiezza (BFS), visita in profondità (DFS), ordinamento topologico di un grafo orientato aciclico. Problemi di cammino di costo minimo su un grafo, l’algoritmo di Dijkstra.
Analisi della complessit`a degli algoritmi presentati. Cenni sulle classi dei problemi P, NP, NP-completi. Il problema “P=NP”."

Prerequisiti

Non sono richiesti prerequisiti specifici.

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi e strutture dati", McGraw–Hill (Quarta edizione)
A. Bellini, A. Guidi, "Linguaggio C - Guida alla programmazione", quinta edizione, McGraw-Hill, 2013
M. Liverani, "Programmare in C", Esculapio (terza edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (https://www.mat.uniroma3.it/users/liverani/IN110) e sulla piattaforma Microsoft Teams

  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduzione agli algoritmi e strutture dati (quarta edizione), McGraw-Hill, 2023, ISBN 978-88-386-5621-7
  • M. Liverani, Programmare in C - Guida al linguaggio attraverso esercizi svolti e commentati, Società Editrice Esculapio, 2024, ISBN 978-88-9385-450-4

Bibliografia di riferimento

A.V. Aho, J.E. Hopcroft, J.D. Ullman, "Data structures and algorithms", Addison-Wesley.
B.W. Kernighan, D.M. Ritchie, "Linguaggio C", seconda edizione, Pearson - Prentice Hall, 1988.
B.W. Kernighan, R. Pike, "Programmazione nella pratica", Addison-Wesley, 1999.

Modalità di erogazione

Lezioni di teoria in aula ed esercitazioni di programmazione in laboratorio informatico. Le lezioni sono registrate sulla piattaforma Microsoft Teams e fruibili anche a distanza. Le lezioni si svolgono in lingua italiana.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e le esercitazioni nel laboratorio informatico (una volta a settimana). Saranno attivati anche degli incontri settimanali con gli studenti tutor per svolgere altri esercizi in modalità guidata.

Modalità di valutazione

Esame scritto di programmazione in linguaggio C; esame orale sugli argomenti teorici. Sono previste prove di valutazione "in itinere" con esercizi scritti di progettazione di algoritmi e programmazione in linguaggio C che, se superate, esonerano lo studente dalla prova scritta d'esame.

Prove previste

  • Prova orale
  • Prova scritta
  • Scritto e orale separati
  • Prove intermedie

Docente
Alessandro Ravoni
Curriculum
Teorico-didattico
Anno di corso
1
Periodo
Primo semestre
Ore
90
CUIN
260006405

Programma

1. Problemi ed algoritmi
Introduzione alle caratteristiche del calcolatore ed al rapporto programmatore/ esecutore; compiti ed abilità del programmatore; principali caratteristiche ed abilità dell’esecutore, operazioni di base (logiche, aritmetiche e di confronto). Modelli di macchina calcolatrice: cenni sul modello di Von Neumann e sulla macchina di Turing.
Linguaggi di programmazione: linguaggi imperativi e dichiarativi. Istruzioni fondamentali di un linguaggio di programmazione procedurale generico. Algoritmi e programmi; diagrammi di flusso. Regole della programmazione strutturata, cenni sul teorema di Jacopini-Böhm; approccio top-down alla soluzione di un problema.

2. Il linguaggio C
Organizzazione della memoria di un calcolatore, indirizzi, parole, puntatori. Codifica binaria. Tipi di dato, strutture dati (array, matrici, pile, code, code di priorità, liste, alberi, grafi). Linguaggio macchina, linguaggi di alto livello; compilatori ed interpreti, compilazione ed esecuzione di un programma C in ambiente UNIX/Linux. Il linguaggio C: scopi e principali caratteristiche.
La struttura di un programma C, l’inclusione degli header, dichiarazione delle variabili; le librerie. Tipi di dato elementari in linguaggio C: interi, floating point, double, char. Operatori aritmetici, valutazione di espressioni logiche e connettori logici. Puntatori; aritmetica sui puntatori. Array e matrici e loro rappresentazione in memoria. Strutture dati complesse: liste, alberi, grafi; l’istruzione “struct”. Operatore di assegnazione, operatori aritmetici in C in forma estesa e compatta. Strutture di controllo: “if ... else ...”, “while ...”, “do ... while”, “for ...”.
Funzioni: funzioni di libreria e funzioni definite dall’utente. Passaggio di parametri per valore e per indirizzo alle funzioni. Funzioni ricorsive. Funzioni di input/output: “printf”, “scanf”, “fprintf”, “fscanf”; funzioni per la gestione della memoria: “malloc”, “free”, “sizeof”; gestione di liste di record collegati tramite puntatori.

3. Algoritmi di ordinamento
Algoritmi di ordinamento elementari: Insertion sort, Selection sort, Bubble sort; l’approccio “divide et impera”, l’algoritmo Quick sort. Strutture di tipo LIFO (Last In First Out), pile; strutture di tipo FIFO (First In First Out), code; code di priorità, gli heap. Algoritmi ottimi per l’ordinamento: Heap sort, Merge sort.
Complessità di un algoritmo nel caso peggiore, la notazione “O grande”, analisi della complessità degli algoritmi di ordinamento.

4. Algoritmi elementari sui grafi
Definizioni principali: grafo, grafo orientato; sottografo, sottografo indotto; cammino, cammino semplice, grafo connesso, grafo fortemente connesso, grafo completo, clique, ciclo, grafo aciclico; alberi, foreste, spanning tree di un grafo. Strutture dati per la rappresentazione di grafi mediante un calcolatore: liste di adiacenza e matrici di adiacenza. Algoritmi di visita di un grafo: visita in ampiezza (BFS), visita in profondità (DFS), ordinamento topologico di un grafo orientato aciclico. Problemi di cammino di costo minimo su un grafo, l’algoritmo di Dijkstra.
Analisi della complessit`a degli algoritmi presentati. Cenni sulle classi dei problemi P, NP, NP-completi. Il problema “P=NP”.

Prerequisiti

Si veda la scheda del docente titolare

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi", McGraw–Hill (Quarta edizione)
A. Bellini, A. Guidi, Linguaggio C - Guida alla programmazione, quinta edizione, McGraw-Hill, 2013
M. Liverani, "Programmare in C", Esculapio (terza edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (https://www.mat.uniroma3.it/users/liverani/IN110) e sulla piattaforma Microsoft Teams

Bibliografia di riferimento

A.V. Aho, J.E. Hopcroft, J.D. Ullman, "Data structures and algorithms", Addison-Wesley.
B.W. Kernighan, D.M. Ritchie, "Linguaggio C", seconda edizione, Pearson - Prentice Hall, 1988.
B.W. Kernighan, R. Pike, "Programmazione nella pratica", Addison-Wesley, 1999.

Modalità di erogazione

Lezioni di teoria in aula ed esercitazioni di programmazione in laboratorio informatico. Le lezioni sono registrate sulla piattaforma Microsoft Teams e fruibili anche a distanza. Le lezioni si svolgono in lingua italiana.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e le esercitazioni nel laboratorio informatico (una volta a settimana). Saranno attivati anche degli incontri settimanali con gli studenti tutor per svolgere altri esercizi in modalità guidata.

Modalità di valutazione

Esame scritto di programmazione in linguaggio C; esame orale sugli argomenti teorici. Sono previste prove di valutazione "in itinere" con esercizi scritti di progettazione di algoritmi e programmazione in linguaggio C che, se superate, esonerano lo studente dalla prova scritta d'esame.

Docente
Marco Liverani
Curriculum
Modellistico-applicativo
Anno di corso
1
Periodo
Primo semestre
Ore
90
CUIN
260006412

Programma

"1. Problemi ed algoritmi
Introduzione alle caratteristiche del calcolatore ed al rapporto programmatore/ esecutore; compiti ed abilità del programmatore; principali caratteristiche ed abilità dell’esecutore, operazioni di base (logiche, aritmetiche e di confronto). Modelli di macchina calcolatrice: cenni sul modello di Von Neumann e sulla macchina di Turing.
Linguaggi di programmazione: linguaggi imperativi e dichiarativi. Istruzioni fondamentali di un linguaggio di programmazione procedurale generico. Algoritmi e programmi; diagrammi di flusso. Regole della programmazione strutturata, cenni sul teorema di Jacopini-Böhm; approccio top-down alla soluzione di un problema.

2. Il linguaggio C
Organizzazione della memoria di un calcolatore, indirizzi, parole, puntatori. Codifica binaria. Tipi di dato, strutture dati (array, matrici, pile, code, code di priorità, liste, alberi, grafi). Linguaggio macchina, linguaggi di alto livello; compilatori ed interpreti, compilazione ed esecuzione di un programma C in ambiente UNIX/Linux. Il linguaggio C: scopi e principali caratteristiche.
La struttura di un programma C, l’inclusione degli header, dichiarazione delle variabili; le librerie. Tipi di dato elementari in linguaggio C: interi, floating point, double, char. Operatori aritmetici, valutazione di espressioni logiche e connettori logici. Puntatori; aritmetica sui puntatori. Array e matrici e loro rappresentazione in memoria. Strutture dati complesse: liste, alberi, grafi; l’istruzione “struct”. Operatore di assegnazione, operatori aritmetici in C in forma estesa e compatta. Strutture di controllo: “if ... else ...”, “while ...”, “do ... while”, “for ...”.
Funzioni: funzioni di libreria e funzioni definite dall’utente. Passaggio di parametri per valore e per indirizzo alle funzioni. Funzioni ricorsive. Funzioni di input/output: “printf”, “scanf”, “fprintf”, “fscanf”; funzioni per la gestione della memoria: “malloc”, “free”, “sizeof”; gestione di liste di record collegati tramite puntatori.

3. Algoritmi di ordinamento
Algoritmi di ordinamento elementari: Insertion sort, Selection sort, Bubble sort; l’approccio “divide et impera”, l’algoritmo Quick sort. Strutture di tipo LIFO (Last In First Out), pile; strutture di tipo FIFO (First In First Out), code; code di priorità, gli heap. Algoritmi ottimi per l’ordinamento: Heap sort, Merge sort.
Complessità di un algoritmo nel caso peggiore, la notazione “O grande”, analisi della complessità degli algoritmi di ordinamento.

4. Algoritmi elementari sui grafi
Definizioni principali: grafo, grafo orientato; sottografo, sottografo indotto; cammino, cammino semplice, grafo connesso, grafo fortemente connesso, grafo completo, clique, ciclo, grafo aciclico; alberi, foreste, spanning tree di un grafo. Strutture dati per la rappresentazione di grafi mediante un calcolatore: liste di adiacenza e matrici di adiacenza. Algoritmi di visita di un grafo: visita in ampiezza (BFS), visita in profondità (DFS), ordinamento topologico di un grafo orientato aciclico. Problemi di cammino di costo minimo su un grafo, l’algoritmo di Dijkstra.
Analisi della complessit`a degli algoritmi presentati. Cenni sulle classi dei problemi P, NP, NP-completi. Il problema “P=NP”."

Prerequisiti

Non sono richiesti prerequisiti specifici.

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi e strutture dati", McGraw–Hill (Quarta edizione)
A. Bellini, A. Guidi, "Linguaggio C - Guida alla programmazione", quinta edizione, McGraw-Hill, 2013
M. Liverani, "Programmare in C", Esculapio (terza edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (https://www.mat.uniroma3.it/users/liverani/IN110) e sulla piattaforma Microsoft Teams

  • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduzione agli algoritmi e strutture dati (quarta edizione), McGraw-Hill, 2023, ISBN 978-88-386-5621-7
  • M. Liverani, Programmare in C - Guida al linguaggio attraverso esercizi svolti e commentati, Società Editrice Esculapio, 2024, ISBN 978-88-9385-450-4

Bibliografia di riferimento

A.V. Aho, J.E. Hopcroft, J.D. Ullman, "Data structures and algorithms", Addison-Wesley.
B.W. Kernighan, D.M. Ritchie, "Linguaggio C", seconda edizione, Pearson - Prentice Hall, 1988.
B.W. Kernighan, R. Pike, "Programmazione nella pratica", Addison-Wesley, 1999.

Modalità di erogazione

Lezioni di teoria in aula ed esercitazioni di programmazione in laboratorio informatico. Le lezioni sono registrate sulla piattaforma Microsoft Teams e fruibili anche a distanza. Le lezioni si svolgono in lingua italiana.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e le esercitazioni nel laboratorio informatico (una volta a settimana). Saranno attivati anche degli incontri settimanali con gli studenti tutor per svolgere altri esercizi in modalità guidata.

Modalità di valutazione

Esame scritto di programmazione in linguaggio C; esame orale sugli argomenti teorici. Sono previste prove di valutazione "in itinere" con esercizi scritti di progettazione di algoritmi e programmazione in linguaggio C che, se superate, esonerano lo studente dalla prova scritta d'esame.

Prove previste

  • Prova orale
  • Prova scritta
  • Scritto e orale separati
  • Prove intermedie

Docente
Alessandro Ravoni
Curriculum
Modellistico-applicativo
Anno di corso
1
Periodo
Primo semestre
Ore
90
CUIN
260006412

Programma

1. Problemi ed algoritmi
Introduzione alle caratteristiche del calcolatore ed al rapporto programmatore/ esecutore; compiti ed abilità del programmatore; principali caratteristiche ed abilità dell’esecutore, operazioni di base (logiche, aritmetiche e di confronto). Modelli di macchina calcolatrice: cenni sul modello di Von Neumann e sulla macchina di Turing.
Linguaggi di programmazione: linguaggi imperativi e dichiarativi. Istruzioni fondamentali di un linguaggio di programmazione procedurale generico. Algoritmi e programmi; diagrammi di flusso. Regole della programmazione strutturata, cenni sul teorema di Jacopini-Böhm; approccio top-down alla soluzione di un problema.

2. Il linguaggio C
Organizzazione della memoria di un calcolatore, indirizzi, parole, puntatori. Codifica binaria. Tipi di dato, strutture dati (array, matrici, pile, code, code di priorità, liste, alberi, grafi). Linguaggio macchina, linguaggi di alto livello; compilatori ed interpreti, compilazione ed esecuzione di un programma C in ambiente UNIX/Linux. Il linguaggio C: scopi e principali caratteristiche.
La struttura di un programma C, l’inclusione degli header, dichiarazione delle variabili; le librerie. Tipi di dato elementari in linguaggio C: interi, floating point, double, char. Operatori aritmetici, valutazione di espressioni logiche e connettori logici. Puntatori; aritmetica sui puntatori. Array e matrici e loro rappresentazione in memoria. Strutture dati complesse: liste, alberi, grafi; l’istruzione “struct”. Operatore di assegnazione, operatori aritmetici in C in forma estesa e compatta. Strutture di controllo: “if ... else ...”, “while ...”, “do ... while”, “for ...”.
Funzioni: funzioni di libreria e funzioni definite dall’utente. Passaggio di parametri per valore e per indirizzo alle funzioni. Funzioni ricorsive. Funzioni di input/output: “printf”, “scanf”, “fprintf”, “fscanf”; funzioni per la gestione della memoria: “malloc”, “free”, “sizeof”; gestione di liste di record collegati tramite puntatori.

3. Algoritmi di ordinamento
Algoritmi di ordinamento elementari: Insertion sort, Selection sort, Bubble sort; l’approccio “divide et impera”, l’algoritmo Quick sort. Strutture di tipo LIFO (Last In First Out), pile; strutture di tipo FIFO (First In First Out), code; code di priorità, gli heap. Algoritmi ottimi per l’ordinamento: Heap sort, Merge sort.
Complessità di un algoritmo nel caso peggiore, la notazione “O grande”, analisi della complessità degli algoritmi di ordinamento.

4. Algoritmi elementari sui grafi
Definizioni principali: grafo, grafo orientato; sottografo, sottografo indotto; cammino, cammino semplice, grafo connesso, grafo fortemente connesso, grafo completo, clique, ciclo, grafo aciclico; alberi, foreste, spanning tree di un grafo. Strutture dati per la rappresentazione di grafi mediante un calcolatore: liste di adiacenza e matrici di adiacenza. Algoritmi di visita di un grafo: visita in ampiezza (BFS), visita in profondità (DFS), ordinamento topologico di un grafo orientato aciclico. Problemi di cammino di costo minimo su un grafo, l’algoritmo di Dijkstra.
Analisi della complessit`a degli algoritmi presentati. Cenni sulle classi dei problemi P, NP, NP-completi. Il problema “P=NP”.

Prerequisiti

Si veda la scheda del docente titolare

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi", McGraw–Hill (Quarta edizione)
A. Bellini, A. Guidi, Linguaggio C - Guida alla programmazione, quinta edizione, McGraw-Hill, 2013
M. Liverani, "Programmare in C", Esculapio (terza edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (https://www.mat.uniroma3.it/users/liverani/IN110) e sulla piattaforma Microsoft Teams

Bibliografia di riferimento

A.V. Aho, J.E. Hopcroft, J.D. Ullman, "Data structures and algorithms", Addison-Wesley.
B.W. Kernighan, D.M. Ritchie, "Linguaggio C", seconda edizione, Pearson - Prentice Hall, 1988.
B.W. Kernighan, R. Pike, "Programmazione nella pratica", Addison-Wesley, 1999.

Modalità di erogazione

Lezioni di teoria in aula ed esercitazioni di programmazione in laboratorio informatico. Le lezioni sono registrate sulla piattaforma Microsoft Teams e fruibili anche a distanza. Le lezioni si svolgono in lingua italiana.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e le esercitazioni nel laboratorio informatico (una volta a settimana). Saranno attivati anche degli incontri settimanali con gli studenti tutor per svolgere altri esercizi in modalità guidata.

Modalità di valutazione

Esame scritto di programmazione in linguaggio C; esame orale sugli argomenti teorici. Sono previste prove di valutazione "in itinere" con esercizi scritti di progettazione di algoritmi e programmazione in linguaggio C che, se superate, esonerano lo studente dalla prova scritta d'esame.

Esplora gli obiettivi dell’insegnamento

Ambito disciplinare: Formazione informatica di base

Acquisire una buona conoscenza nella progettazione di algoritmi per la risoluzione di problemi e nella codifica di algoritmi con un linguaggio di programmazione (linguaggio C). Introdurre lo studente ad alcuni dei concetti fondamentali della matematica discreta (cenni sulla teoria dei grafi) ed in particolare ai primi elementi di ottimizzazione discreta (algoritmi di ottimizzazione su grafi, visita di grafi, cammini minimi, alberi ricoprenti).

Risultati di apprendimento attesi — Marco Liverani

Acquisire una buona conoscenza nella progettazione di algoritmi per la risoluzione di problemi e nella codifica di algoritmi con un linguaggio di programmazione (linguaggio C). Introdurre lo studente ad alcuni dei concetti fondamentali della matematica discreta (cenni sulla teoria dei grafi) ed in particolare ai primi elementi di ottimizzazione discreta (algoritmi di ottimizzazione su grafi, visita di grafi, cammini minimi, alberi ricoprenti).

Risultati di apprendimento attesi — Marco Liverani

Acquisire una buona conoscenza nella progettazione di algoritmi per la risoluzione di problemi e nella codifica di algoritmi con un linguaggio di programmazione (linguaggio C). Introdurre lo studente ad alcuni dei concetti fondamentali della matematica discreta (cenni sulla teoria dei grafi) ed in particolare ai primi elementi di ottimizzazione discreta (algoritmi di ottimizzazione su grafi, visita di grafi, cammini minimi, alberi ricoprenti).

Esempi di domande d’esame

Marco Liverani

Esempi di esercizi d'esame scritto si trovano sul sito web del corso all'indirizzo https://www.mat.uniroma3.it/users/liverani/IN110/esami.shtml.

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema dell'ordinamento adottata dall'algoritmo heap sort, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- descrivere la strategia risolutiva del problema del calcolo del cammino di costo minimo da una sorgente singola su un grafo pesato adottata dall'algoritmo di Dijkstra, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso

Alessandro Ravoni

Esempi di esercizi d'esame scritto si trovano sul sito web del corso all'indirizzo https://www.mat.uniroma3.it/users/liverani/IN110/esami.shtml.

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema dell'ordinamento adottata dall'algoritmo heap sort, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- descrivere la strategia risolutiva del problema del calcolo del cammino di costo minimo da una sorgente singola su un grafo pesato adottata dall'algoritmo di Dijkstra, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso

Marco Liverani

Esempi di esercizi d'esame scritto si trovano sul sito web del corso all'indirizzo https://www.mat.uniroma3.it/users/liverani/IN110/esami.shtml.

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema dell'ordinamento adottata dall'algoritmo heap sort, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- descrivere la strategia risolutiva del problema del calcolo del cammino di costo minimo da una sorgente singola su un grafo pesato adottata dall'algoritmo di Dijkstra, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso

Alessandro Ravoni

Esempi di esercizi d'esame scritto si trovano sul sito web del corso all'indirizzo https://www.mat.uniroma3.it/users/liverani/IN110/esami.shtml.

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema dell'ordinamento adottata dall'algoritmo heap sort, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- descrivere la strategia risolutiva del problema del calcolo del cammino di costo minimo da una sorgente singola su un grafo pesato adottata dall'algoritmo di Dijkstra, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso

Il corso in cui è erogato questo insegnamento

Matematica e Fisica

Matematica

Cod 198330

  • Laurea triennale
  • 3 anni
  • 180 CFU
  • L-35 R
API