DanLevy.net

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.

Qual è la complessità temporale per calcolare la lunghezza di una lista collegata singola?

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.

Qual è la struttura dati tipicamente usata per implementare la ricerca in ampiezza (BFS)?

BFS utilizza una Coda per esplorare i nodi livello per livello, elaborando i nodi in ordine di ampiezza (per “riga”).

Quale algoritmo è comunemente usato per rilevare cicli in un grafo diretto?

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 è comunemente usato per trovare il percorso più breve in un grafo pesato con 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.

L’algoritmo Bubble Sort è stabile?

Bubble Sort è un algoritmo di ordinamento stabile perché preserva l’ordine relativo degli elementi uguali durante l’ordinamento.