Domande (possibili domande all`esame)

annuncio pubblicitario
Domande
(possibili domande all'esame)
Fondamenti di Informatica II 2005-2006
Introduzione
•
•
•
•
Cos’è un insieme?
Cos’è la cardinalità di un insieme?
Come si definisce una relazione.
Come si definisce una funzione.
Introduzione ai
grafi
•
•
Disegnami un grafo.
Che differenza c’è fra un grafo orientato e un grafo non orientato
(uguale a diretto o non diretto).
Definire l’adiacenze e il grado di un nodo.
Quando è che un grafo è connesso.
Dato un grafo definiscimi e mostrami un cammino sul grafo.
Cos’è un ciclo?
Definire un albero.
•
•
•
•
•
•
Elementi di
complessità
•
•
•
•
•
•
•
•
•
Strutture dati
elementari
•
•
•
•
•
•
•
Cos’è un sottografo?
Come si valuta la complessità di un algoritmo.
Come si definisce il tempo di esecuzione di un algoritmo?
Cosa significa associare dei costi alle operazioni che esegue
l’algoritmo.
Notazione asintotica: Cosa significa O(n2)? Cosa significa Θ(log(n))?
Cosa significa Ω(n3)?
5n + 100 è Θ di che cosa?
2 n3+ 10000 è O di che cosa?
Quando un algoritmo ha una buona complessità?
Come si definisce lo spazio di memoria utilizzato da un algoritmo?
Cos’è il worst case?
Descrivere il funzionamento di una pila. (Sai scriverlo in pseudocodice?)
Che operazioni si possono effettuare su una coda.
Che differenza c’è fra queste due strutture dati: coda (queue) e pila
(stack).
Descrivere una lista concatenata: struttura e operazioni.
Che vantaggi ha l’uso della sentinella?
Che vantaggi ha rispetto all’uso di una struttura dati come la pila?
Che complessità hanno le operazioni su una lista concatenata?
Inserimento? Rimozione? Ricerca di un elemento?
1
•
•
Cosa si intende per indirizzamento per indirizzamento diretto.
Quale principio sta alla base dell’uso di una tabella Hash. Che novità
apporta rispetto all’indirizzamento diretto.
Definiscimi una funzione hash.
Come vengono gestite le collisioni?
Come avviene l’inserimento di elemento in una tabella Hash? Che
costo ha?
Come avviene la rimozione di elemento in una tabella Hash? Che
costo ha?
Analizzami il tempo medio di ricerca di un elemento in una tabella
Hash. Descrivere il caso peggiore.
Hai in mente qualche tipo di funzione hash.
Come si può decidere se una funzione hash è buona?
Parlare dell’indirizzamento aperto.
Nell’indirizzamento aperto non ci sono più le liste concatenate, come
vengono gestite le collisioni?
Descrivere (se riesci in pseudo-codice) l’inserimento in una tabella ad
indirizzamento aperto.
Ti ricordi qualche tecnica di scansione nell’indirizzamento aperto?
Nel caso peggiore quanti elementi della tabella vengono visitati?
Alberi binari
•
•
Descrivere un albero binario.
Che altezza ha un albero binario pieno?
Alberi binari di
ricerca
•
•
Descrivere le proprietà di un albero binario di ricerca.
Come viene effettuata la visita inorder? Fammi una visita inorder del
seguente albero… (si disegna un albero).
Descrivere l’operazione di ricerca (se riesci in pseudo-codice). Che
complessità ha questa operazione? E nel caso peggiore?
Che operazioni si possono effettuare su albero binario di ricerca?
Descrivere una operazione (se riesci in pseudo-codice). Descrivere la
sua complessità.
Fammi l’inserimento in un albero binario di ricerca vuoto della
seguente sequenza <1,2, 3, 7, 8, 11, 4, 13>. Ora di una nuova
sequenza <7, 11, 8, 2, 3, 4, 1, 13>. Che differenza c’è?
Inserimento in un albero binario di ricerca vuoto della seguente
sequenza <6,2, 3, 7, 8, 10, 5, 15>. Descrivere come avviene la
ricerca del massimo (minimo, di un elemento, ...). Che complessità ha
questo operazione?
Nell’analisi di complessità delle operazioni su un albero binario di
ricerca, quanto conta il fatto che l’albero sia bilanciato?
Hash Tables
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
RB-alberi (RedBlack trees)
•
•
•
•
•
•
•
Quali sono le propriètà di un RB-albero?
Che differenze ci sono tra un RB albero e un albero binario di ricerca?
Fammi l'analisi dell'altezza di un RB-albero. L'altezza è O() di che
cosa?
Che operazioni si possono effettuare su RB-albero.
Parlami delle rotazioni. Come vengono effettuate e a cosa servono.
Come avviene l'inserimento (la rimozione) in RB-albero. Dammi una
descrizioni a grandi linee (se riesci dettagliami alcuni passaggi).
Che complessità hanno le operazioni in un RB-albero?
2
Rappresentazione
dei grafi
•
•
•
•
Breath-First
Search
(Visita in
ampiezza di un
grafo)
•
•
•
•
•
•
•
•
Depht-First
Search
(Visita in
profondità di un
grafo)
•
•
•
•
•
•
•
•
•
•
•
Cammini minimi
•
•
Come posso rappresentare un grafo? Quale è preferibile?
Descrivere la rappresentazione con liste di adiacenza. Quanto spazio
occupa?
Descrivere la rappresentazione con una matrice di adiacenza. Quanto
spazio occupa?
Descrivere la rappresentazione con una matrice di incidenza. Quanto
spazio occupa?
Che tipo di operazione effettua la visita in ampiezza su un grafo?
(BFS)
Che dati utilizza?
Descrivere in dettaglio la visita in ampiezza con un esempio (se riesci
scriverlo in pseudo-codice).
Fammi l'analisi di complessità della visita in ampiezza.
Enunciami e dimostrami la proprietà dei nodi in coda. (Tutti i nodi che
entrano nella coda Q sono tutti e soli i nodi u raggiungibili da s)
Enunciami e dimostrami una delle proprietà della visita in ampiezza.
(A volte si può chiedere una in specifico)
Cos'è l’albero bsf? Come viene costruito?
Dimostrami che il sottografo ottenuto dai p[] è un albero.
Che tipo di operazione effettua la visita in profondità su un grafo?
(DFS)
Che dati utilizza?
Descrivere in dettaglio la visita in profondità con un esempio (se riesci
scriverlo in pseudo-codice).
Fammi l'analisi di complessità della visita in profondità.
Enunciami e dimostrami il teorema delle parentesi.
Enunciami e dimostrami il teorema dei cammini bianchi.
Nella visita in profondità come si possono classificare gli archi. Mi puoi
fare un esempio.
Cos'è un Tree-edge? Come si costruisce la foresta BFS?
Cos'è un Back-edge? Dimostrami che quando c'è un back-edge c'è un
ciclo nel grafo.
Cos'è un DAG? Parlami dell'ordinamento topologico di un DAG.
Come si ottiene un ordinamento topologico tramite l'algoritmo DFS.
Quale è la complessità? Puoi dimostrarmi che l'algoritmo è corretto?
Dato grafo G=(V,E) e una funzione che associa un peso reale su ogni
arco, cosa significa cercare un cammino minimo tra due vertici del
grafo?
Come funziona l'algoritmo di Dijkstra? Che complessità ha?
3
Programmazione
dinamica
•
•
•
•
•
•
•
•
Quale tipologia di problemi vengono affrontati dalla tecnica di
programmazione dinamica?
Mi definisci il problema del prodotto di una sequenza di matrici, ossia
trovare una sua parentizzazione ottima? Che costo ha il prodotto di
due matrici?
Quali sono le fasi affrontate nella programmazione dinamica?
Che caratterizzazione ha una soluzione ottima nel problema del
prodotto di una sequenza di matrici?
Definire ricorsivamente una soluzione ottima nel problema del
prodotto di una sequenza di matrici. (ricorsivamente: tramite dei suoi
sottoproblemi)
Descrivere il calcolo delle soluzioni ottime con una strategia bottomup nel problema del prodotto di una sequenza di matrici. Come si
costruisce una parentizzazione ottima con i dati calcolati?
Quando la programmazione dinamica risulta migliore di una ricerca
esaustiva? (quando ci sono sottoproblemi comuni: spiega)
Nella programmazione dinamica è importate la quantità di memoria
utilizzata? Quanta memoria viene utilizzata per il problema del
prodotto di una sequenza di matrici?
4
Scarica