Quiz: Strutture Dati e Algoritmi
Puoi fare il BS su un albero binario?
Benvenuto al mio quiz su Strutture Dati e Algoritmi!
Questo quiz valuterà la tua conoscenza di strutture dati (Stack, Liste, Alberi, ecc.), e algoritmi (), e complessità temporale.
20 Domande… Inizia!
Quale struttura dati è più adatta a un modello di accesso LIFO (Last In, First Out)?
Gli stack sono i più adatti ai modelli di accesso LIFO. Le code sono i più adatti ai modelli di accesso FIFO (First In, First Out).
Qual è la complessità temporale di un algoritmo che impiega sempre la stessa quantità di tempo per l’esecuzione, indipendentemente dalla dimensione dell’input?
O(1) rappresenta la complessità temporale costante. Significa che l’algoritmo impiega sempre la stessa quantità di tempo per l’esecuzione, indipendentemente dalla dimensione dell’input.
Se una lista semplicemente concatenata non memorizza la propria lunghezza, qual è la complessità temporale per calcolarla attraversando i nodi?
Per calcolare la lunghezza di una lista collegata singola, devi attraversare ogni nodo dalla testa alla coda, risultando in una complessità temporale O(n).
Qual è la complessità temporale media per cercare un elemento in un albero binario di ricerca bilanciato?
In un BST bilanciato, la complessità temporale media per la ricerca è O(log n) perché ogni livello dimezza lo spazio di ricerca.
Qual è la complessità temporale dell’algoritmo Merge Sort nel caso peggiore?
Merge Sort opera sempre con una complessità nel caso peggiore di O(n log n) poiché divide ripetutamente l’array a metà e unisce i sottoarray ordinati.
Quale visita rileva un ciclo in un grafo orientato trovando un arco verso un vertice ancora presente nello stack di ricorsione?
La ricerca in profondità (DFS) è tipicamente usata per rilevare cicli in un grafo mantenendo uno stack di ricorsione per tenere traccia dei nodi visitati.
Qual è la complessità temporale di Heap Sort nel caso peggiore?
Heap Sort mantiene una complessità temporale nel caso peggiore di O(n log n), poiché costruisce un heap ed estrae ripetutamente l’elemento massimo.
Qual è la complessità temporale media per accedere a un elemento in una tabella hash?
Le tabelle hash hanno una complessità temporale media di O(1) per l’accesso agli elementi, assumendo una buona funzione hash che minimizza le collisioni.
Quale insieme contiene le operazioni tipiche eseguite su uno stack?
Le operazioni principali di uno stack sono Push (aggiungi elemento), Pop (rimuovi elemento) e Peek (visualizza l’elemento in cima senza rimuoverlo).
Quale algoritmo greedy per i cammini minimi da una singola sorgente seleziona ripetutamente il vertice non ancora definitivo con la distanza provvisoria minima, tipicamente usando una coda di priorità, e richiede pesi degli archi non negativi?
L’Algoritmo di Dijkstra è spesso usato per trovare il percorso più breve nei grafi con pesi degli archi non negativi. Utilizza una coda di priorità per determinare la distanza minima in modo efficiente.
Quale gruppo contiene esempi di alberi di ricerca binari autobilancianti?
Gli alberi AVL e gli alberi Rosso-Nero sono tipi di alberi autobilancianti, che garantiscono che l’albero rimanga bilanciato dopo ogni inserimento o cancellazione.
Cosa deve essere definito in una funzione ricorsiva per evitare la ricorsione infinita?
Un caso base è necessario in una funzione ricorsiva per fermare le chiamate ricorsive quando viene soddisfatta una condizione specifica, evitando la ricorsione infinita.
Quali sono le due operazioni principali di una coda?
Le due operazioni principali in una coda sono Enqueue (aggiungi un elemento alla fine) e Dequeue (rimuovi un elemento dall’inizio).
Quali sono le condizioni per eseguire l’ordinamento topologico su un grafo?
L’ordinamento topologico può essere eseguito su un grafo se è orientato e aciclico (DAG). Questo tipo di ordinamento è utile nei problemi di pianificazione delle attività.
Qual è la complessità temporale di un’implementazione ricorsiva ingenua della serie di Fibonacci?
L’implementazione ricorsiva ingenua della serie di Fibonacci ha una complessità temporale di O(2^n) a causa dei numerosi calcoli ripetuti per ogni numero di Fibonacci.
Quale struttura dati è comunemente usata per implementare una coda prioritaria?
Una coda prioritaria è più spesso implementata usando un heap perché permette un’estrazione efficiente dell’elemento con priorità più alta o più bassa.
Quale insieme elenca gli ordini di attraversamento depth‑first più comuni per un albero binario?
In-order, Pre-order e Post-order sono i tre ordini di attraversamento depth‑first più comuni per gli alberi binari, ognuno con un ordine diverso di visita dei nodi. Anche l’attraversamento breadth‑first è comune, ma appartiene a una categoria di attraversamento diversa.
Quali delle seguenti proprietà sono vere per un min-heap?
In un min-heap, la radice è sempre l’elemento più piccolo e l’altezza dell’albero è O(log n), rendendo l’inserimento e l’estrazione efficienti.
Bubble Sort standard è stabile se scambia due elementi adiacenti solo quando la chiave a sinistra è strettamente maggiore di quella a destra?
Con il confronto stretto indicato, gli elementi con chiavi uguali non si superano mai, quindi Bubble Sort è stabile. Un’implementazione che scambia anche chiavi uguali può perdere questa proprietà.
