1.Facile
Nella rappresentazione di un grafo con liste di adiacenza, che cosa si memorizza per ogni vertice?
- AIl cammino minimo verso ogni altro vertice
- BUna riga di V valori booleani
- CUna lista dei suoi vertici adiacenti
- DIl numero totale di archi del grafo
2.Facile
Che cos'è la radice di un albero?
- AIl nodo con il valore più grande
- BUn nodo senza figli
- CUn qualsiasi nodo intermedio
- DIl nodo più in alto, privo di genitore
3.Facile
Quale struttura dati funziona secondo il principio «primo a entrare, primo a uscire» (FIFO)?
- AAlbero binario
- BPila (stack)
- CHeap
- DCoda (queue)
4.Media
Perché in pratica percorrere un array è spesso molto più veloce che percorrere una lista concatenata della stessa lunghezza?
- AGli elementi dell'array sono contigui, quindi sfruttano bene la cache della CPU
- BLa visita di un array è O(1) in totale, mentre quella di una lista concatenata è O(n)
- CGli array usano meno istruzioni per confrontare i valori
- DLe liste concatenate memorizzano sempre gli elementi su disco
5.Media
Un albero binario ha radice 1 con figlio sinistro 2 e figlio destro 3; il nodo 2 ha figli 4 (sinistro) e 5 (destro). Qual è la visita in postordine?
- A4 5 2 3 1
- B4 2 5 1 3
- C1 2 4 5 3
- D5 4 3 2 1
6.Media
Un trie (albero dei prefissi) è particolarmente efficiente per:
- ARicerche per prefisso, come il completamento automatico
- BMemorizzare matrici
- COrdinare numeri
- DTrovare cammini minimi
7.Difficile
Che cosa fa uno splay tree dopo ogni accesso?
- ARicostruisce l'intero albero in forma bilanciata
- BPorta con rotazioni il nodo acceduto fino alla radice
- CSposta il nodo acceduto in una foglia
- DRicolora i nodi lungo il cammino di ricerca
8.Difficile
Un array dinamico raddoppia quando è pieno. Perché molte implementazioni lo riducono solo quando è pieno per un quarto, e non per metà?
- APer evitare ridimensionamenti ripetuti quando push e pop si alternano vicino alla soglia
- BPerché l'allocatore di memoria può liberare memoria solo a quarti di blocco
- CPer mantenere l'array ordinato
- DPerché dimezzare a metà farebbe perdere elementi
Soluzioni
- 1. C · Una lista dei suoi vertici adiacenti
- 2. D · Il nodo più in alto, privo di genitore
- 3. D · Coda (queue)
- 4. A · Gli elementi dell'array sono contigui, quindi sfruttano bene la cache della CPU
- 5. A · 4 5 2 3 1
- 6. A · Ricerche per prefisso, come il completamento automatico
- 7. B · Porta con rotazioni il nodo acceduto fino alla radice
- 8. A · Per evitare ridimensionamenti ripetuti quando push e pop si alternano vicino alla soglia
Soluzioni complete passo passo: esercitati su questo argomento su examproblems.com.