1.Facile
Che cos'è la memoizzazione?
- AConvertire automaticamente la ricorsione in un ciclo equivalente così da non avere bisogno dello stack delle chiamate
- BMemorizzare i risultati delle chiamate di funzione così che le chiamate ripetute ottengano la risposta dalla memoria
- CLiberare la memoria dopo il ritorno di una funzione
- DScrivere commenti accanto a ogni riga di codice
2.Facile
Un ciclo parte con i = 1 e raddoppia i a ogni iterazione finché i > n. Quante iterazioni esegue?
- ACirca log₂ n
- BCirca n / 2
- CCirca n²
- DCirca n
3.Facile
Qual è il tempo di esecuzione del counting sort per n interi nell'intervallo da 0 a k?
- AO(n + k)
- BO(n²)
- CO(k log n)
- DO(n log n)
4.Media
Qual è la complessità temporale della moltiplicazione di due matrici n × n con il triplo ciclo standard?
- AO(n)
- BO(n² log n)
- CO(n²)
- DO(n³)
5.Media
Nel problema della selezione di attività, quale regola greedy dà sempre il numero massimo di attività non sovrapposte?
- AScegliere per prima l'attività con meno sovrapposizioni, poi ripetere con quelle compatibili
- BScegliere l'attività che inizia prima
- CScegliere l'attività che termina prima, poi ripetere con quelle compatibili
- DScegliere per prima l'attività più breve
6.Media
Che cosa significa che un problema ha una sottostruttura ottima?
- AIl problema ha esattamente una soluzione ottima, condivisa da ogni sottoproblema
- BIl problema si può risolvere in tempo costante
- COgni sottoproblema ha la stessa dimensione
- DUna soluzione ottima può essere costruita da soluzioni ottime dei suoi sottoproblemi
7.Difficile
L'algoritmo di Strassen moltiplica matrici usando 7 invece di 8 moltiplicazioni ricorsive di blocchi di metà dimensione. Qual è il suo tempo di esecuzione?
- AΘ(n³)
- BΘ(n2)
- CΘ(n² log n)
- DΘ(nlog₂ 7), circa n2,81
8.Difficile
I cammini semplici minimi si possono trovare in tempo polinomiale. Che cosa si sa del trovare il cammino semplice più lungo tra due vertici in un grafo generico?
- AÈ indecidibile
- BÈ NP-difficile
- CÈ sempre risolvibile in O(V + E)
- DSi può risolvere con l'algoritmo di Dijkstra con pesi cambiati di segno
Soluzioni
- 1. B · Memorizzare i risultati delle chiamate di funzione così che le chiamate ripetute ottengano la risposta dalla memoria
- 2. A · Circa log₂ n
- 3. A · O(n + k)
- 4. D · O(n³)
- 5. C · Scegliere l'attività che termina prima, poi ripetere con quelle compatibili
- 6. D · Una soluzione ottima può essere costruita da soluzioni ottime dei suoi sottoproblemi
- 7. D · Θ(nlog₂ 7), circa n2,81
- 8. B · È NP-difficile
Soluzioni complete passo passo: esercitati su questo argomento su examproblems.com.