Algoritmi e Strutture Dati
|
|
Title of test:
![]() Algoritmi e Strutture Dati Description: eCampus Gagliardelli Luca 15/09/2025 |



| New Comment |
|---|
NO RECORDS |
|
002.1. Che cosa significa che un algoritmo è finito?. Esegue un numero infinito di operazioni. Termina sempre in una quantità finita di tempo. Produce risultati casuali. È composto da un numero finito di istruzioni che hanno durata indefinita nel tempo. 002.2. Quale descrizione descrive meglio un algoritmo non ambiguo?. Le operazioni non devono essere interpretabili in modi differenti. Le operazioni devono avere molteplici interpretazioni. Deve utilizzare un linguaggio di programmazione avanzato. Non deve risolvere problemi specifici. 002.3. Cos'è richiesto affinché due algoritmi siano considerati equivalenti?. Devono utilizzare la stessa quantità di memoria. Devono terminare nello stesso tempo. Devono essere scritti nel medesimo linguaggio di programmazione. Devono produrre lo stesso output per la stessa istanza di input. 002.4. Quale è la corretta descrizione di un algoritmo?. Una sequenza finita di operazioni che risolve solo una specifica configurazione di un problema. Una sequenza finita di operazioni che risolve quesiti di una stessa classe di problemi. Una sequenza non finita di operazioni che risolve solo una specifica configurazione di un problema. Una sequenza non finita di operazioni che risolve quesiti di una stessa classe di problemi. 002.5. Che cosa non fa un algoritmo deterministico?. Risolvere una classe di problemi genericamente. Produrre sempre lo stesso risultato con gli stessi dati. Terminare in un tempo indefinito. Produrre risultati diversi con gli stessi dati di ingresso. 002.6. Quali caratteristiche deve avere un algoritmo per essere considerato generale?. Non deve essere deterministico. Risolvere qualsiasi tipologia di problema. Limitato solo a specifiche istanze del problema. Applicabile a tutte le istanze del problema a cui si riferisce. 003.1. Che cosa rappresenta una variabile in un programma?. Un nome simbolico associato a una cella di memoria che non può essere modificato. Una struttura che contiene codice inviolabile. Un nome simbolico associato a un valore che può cambiare nel tempo. Un tag per un elemento fisico. 003.2. Che cos'è un array?. Una collezione di variabili di diverso tipo distinguibili per mezzo di un indice. Una collezione di variabili dello stesso tipo distinguibili per mezzo di un indice. Una collezione di variabili collegate tra loro tramite puntatori. Un insieme di variabili di tipi diversi indicizzati casualmente. 003.3. Cosa fa un ciclo 'while'?. Salta specifiche iterazioni basate su una condizione. Esegue istruzioni fino a che la condizione non è falsa. Esegue istruzioni fino a che la condizione non è vera. Ritorna un valore specificato da un utente. 003.4. Come si accede a un valore specifico in un array?. Utilizzando una sintassi di punto, cioè nomeArray.posizioneElemento. Utilizzando la sintassi nomeArray->posizioneElemento. Usando il nome dell'array combinato con l'indice del valore. Navigando tutti gli elementi partendo dal primo tramite una catena di puntatori. 003.5. Che differenza c'è tra procedura e funzione?. Non vi sono differenze, sono sinonimi che indicano la stessa cosa. Una funzione ha un valore di ritorno, una procedura no. Una procedura non ha valori in ingresso, la funzione sì. Una procedura ha un valore di ritorno, una funzione no. 003.6. Cosa consente di fare una struttura condizionale?. Definire nuove strutture dati. Inizializzare nuove variabili. Alterare il flusso di esecuzione del programma. Lanciare errori specifici. 003.7. Qual è la differenza tra linguaggi ad allocazione statica e dinamica?. I linguaggi ad allocazione dinamica non consentono di ridefinire il tipo di una variabile a tempo di esecuzione, gli altri sì. I linguaggi ad allocazione dinamica interpretano il codice e non lo compilano prima. I linguaggi ad allocazione statica non consentono di ridefinire il tipo di una variabile a tempo di esecuzione, gli altri sì. I linguaggi ad allocazione statica compilano il codice prima di eseguirlo. 003.8. Quante iterazioni esegue un ciclo 'while'?. Il numero di iterazioni è sempre finito, non può eseguire infinite iterazioni. Può eseguire da 0 a infinite iterazioni. Sempre almeno una. Può eseguire da 1 a infinite iterazioni. 003.9. Qual è il ruolo dell'istruzione 'return' in una funzione?. Ritorna il valore in uscita dalla funzione. Interrompe il ciclo interno di una funzione. Indica la fine di una funzione senza ritornare un valore. Inizia l'esecuzione della funzione. 004.1. Che cosa considera la complessità spaziale?. Lo spazio occupato solo su disco dall'algoritmo. La quantità di memoria utilizzata da un algoritmo. La banda di rete utilizzata dall'algoritmo. Il numero di operazioni compiute dall'algoritmo. 004.2. Per confrontare algoritmi diversi, tipicamente su quale caso si concentra?. Caso generico. Caso migliore. Caso peggiore. Caso medio. 004.3. Cosa implica l'aver bisogno di una soluzione efficiente per un algoritmo?. La soluzione deve essere la più complessa possibile. La soluzione deve essere utilizzabile in tempi realistici. L'algoritmo deve consumare molta memoria. L'algoritmo deve essere scritto in un linguaggio specifico. 004.4. Quale proprietà deve avere un algoritmo oltre alla correttezza?. Flessibilità. Semplicità. Complessità. Efficienza. 004.5. Qual è il primo passo nella definizione di un algoritmo?. Compilare l'algoritmo. Scrivere il codice in un linguaggio di programmazione. Scegliere il linguaggio di programmazione. Definire il problema da risolvere con relativi input e output. 004.6. Per un algoritmo di ricerca generico su di un array qual è il caso peggiore?. L'elemento cercato si trova nella prima posizione. L'elemento cercato non è presente nell'array. L'elemento cercato si trova nell'ultima posizione. L'elemento cercato si trova in una posizione intermedia. 004.7. Quale metrica è usata generalmente per misurare l'efficienza temporale di un algoritmo?. Numero di istruzioni nel caso peggiore. Quantità di memoria usata. Numero di cicli nel codice. Tempo di esecuzione medio. 004.8. Che operazioni si considerano nel calcolo delle operazioni eseguite da un algoritmo per valutarne la performance?. Operazioni che accedono alla memoria centrale. Operazioni che accedono alla memoria secondaria e quindi più lente. Operazioni che crescono al crescere della dimensione dell'input. Operazioni che non variano al crescere della dimensione dell'input. 004.9. Per quale motivo è importante calcolare il numero di operazioni in un algoritmo?. Permette di stimare la memoria utilizzata da algoritmi diversi e confrontarli. Serve a ridurre il tempo di esecuzione. Permette di confrontare algoritmi diversi che risolvono lo stesso problema. Permette una stima del tempo di esecuzione ma è utile per confrontarsi con altri algoritmi. 004.10. Qual è il termine usato per descrivere l'analisi del numero di operazioni necessarie a risolvere un problema?. Complessità temporale. Complessità spaziale. Complessità asintotica. Complessità operativa. 005.1. Cosa si intende per comportamento asintotico di un algoritmo?. Si riferisce al comportamento dell'algoritmo al decrescere della dimensione dell'input. Si riferisce al comportamento di un algoritmo su piccoli set di dati. Si riferisce al comportamento al crescere della dimensione dell'input all'infinito, considerando costanti moltiplicative e additive. Si riferisce al comportamento al crescere della dimensione dell'input all'infinito, trascurando costanti moltiplicative e additive. 007.1. Come può essere ottimizzata una funzione non-tail per diventare una funzione tail?. Non si può far diventare una funzione non-tail tail. Aggiungendo una variabile per memorizzare il risultato parziale. Cambiando la logica di base dell'algoritmo. Usando un ciclo for. 007.2. Che effetto ha il tail recursion sullo stack durante l'esecuzione del programma?. Aumento del consumo di memoria. Riduce il consumo di CPU. Nessun effetto. Riduce l'occupazione di memoria. 007.3. Che tipo di ricorsione elimina la necessità di conservare lo stato durante una chiamata ricorsiva?. Standard recursion. Head recursion. Stack-based recursion. Tail recursion. 007.4. In termini di uso di memoria stack, quale tipologia di funzioni è meno efficiente?. Funzioni iterative. Funzioni ricorsive generali. Funzioni ricorsive di tipo tail. Funzioni che ritornano un valore statico. 007.5. Qual è un problema comune associato alle funzioni ricorsive non tail?. Out of memory. Stack overflow. Infinite loop. Heap overflow. 007.6. Per quale ragione le funzioni tail sono più efficienti rispetto alle funzioni non-tail?. Simulano un processo iterativo occupando meno memoria stack. Richiedono un minor tempo di esecuzione in termini di complessità computazionale. Utilizzano meno condizioni quindi sono più veloci. Consentono di essere scritte con meno istruzioni e quindi sono più veloci. 007.7. Cosa permette la tail recursion che le funzioni ricorsive generali non permettono?. Una più rapida esecuzione. Una ottimizzazione dell'uso dello stack. Una minor scrittura di codice. Una riduzione della complessità temporale. 007.8. Per ridurre una funzione non-tail a una funzione tail, cosa deve essere passato alla chiamata successiva?. Solo il nuovo input del problema, non serve passare il risultato parziale. Il risultato parziale più il nuovo input del problema. Un indice per tenere traccia dell'iterazione corrente. I parametri di input del problema iniziale. 007.9. In termini di ottimizzazione, cosa comporta la tail recursion rispetto agli altri tipi di funzioni ricorsive?. Meno memoria per lo stack. Meno complessità computazionale. Maggiore velocità di esecuzione. Più chiamate simultanee. 007.10. Qual è l'effetto di convertire una funzione ricorsiva non-tail in una funzione ricorsiva tail sul numero di parametri passati?. Riduce il numero di parametri in input alla funzione. Dipende dal contesto, in generale non altera i parametri. Non cambia i parametri in input alla funzione. Aumenta il numero di parametri in input alla funzione. 008.1. Qual è il beneficio principale della ricerca binaria rispetto alla ricerca sequenziale?. È più facile da implementare. Funziona meglio su array non ordinati. Non richiede la condizione di array ordinato. Maggiore efficienza su array grandi e ordinati. 008.2. In quale scenario utilizzeresti la ricerca binaria invece di una ricerca sequenziale?. Quando l'array contiene elementi duplicati. Quando l'array è ordinato. Quando i dati sono in formato testuale. Quando l'array ha pochi elementi. 008.3. Cosa accade se il target è esattamente l'elemento centrale in una ricerca binaria?. La ricerca termina con successo alla prima iterazione. Vengono eseguite almeno due iterazioni. La ricerca eseguirà N/2 iterazioni, dove N è la dimensione dell'array. La ricerca continua perché esamina la posizione centrale nell'ultima iterazione. 008.4. In che modo la ricerca binaria gestisce gli array con numeri dispari di elementi?. Richiede una pre-elaborazione per escludere l'elemento mediano. Divide gli elementi in gruppi di tre. Non può essere eseguita su tali array. Funziona senza modifiche, centrando l'indice. 008.5. Che cosa si intende per 'complessità logaritmica' nel caso della ricerca binaria?. Il tempo di esecuzione diminuisce esponenzialmente con l'aumento degli elementi dell'array. Il numero di iterazioni necessarie è proporzionale al logaritmo della somma dei valori contenuti nell'array. Il numero di iterazioni decresce in modo logaritmico all'aumentare del numero di elementi dell'array. Il numero di iterazioni necessarie è proporzionale al logaritmo del numero di elementi dell'array. 008.6. Che cosa farà la ricerca binaria se il target è maggiore dell'elemento centrale e l'array è ordinato in ordine crescente?. Esegue una ricerca sequenziale nella metà superiore dell'array. Controlla solo la metà superiore dell'array. Controlla solo la metà inferiore dell'array. Riordina l'array. 008.7. Che tipo di valori si aspetta come input una funzione di ricerca binaria nel suo array?. Qualsiasi tipo di dati non ordinato. Dati in formato chiave/valore. Array di stringhe. Numeri in una sequenza ordinata. 008.8. Cosa accade al limite inferiore se l'elemento centrale è inferiore al target nella ricerca binaria?. Si sposta all'indice centrale meno uno. Si sposta all'indice centrale più uno. Rimane invariato. Scambia di posto con il limite superiore. 008.9. Quale strategia usa la ricerca binaria per localizzare un elemento in un array?. Usa una ricerca per confronto diretto con ogni elemento. Divide l'array a metà in ogni iterazione. Ordina l'array ad ogni iterazione. Controlla ogni elemento uno per uno dall'inizio alla fine. 008.10. Che condizione è necessaria affinché la ricerca binaria funzioni correttamente?. L'array deve essere ordinato. L'array non deve contenere duplicati. L'array deve essere di dimensione pari. Gli elementi dell'array devono essere tutti interi. 008.11. Qual è la complessità temporale della ricerca binaria nel caso migliore?. O(n). O(n log n). O(log n). O(1). 008.12. Cosa succede se il target della ricerca binaria è minore dell'elemento centrale dell'array?. I limiti rimangono invariati. Il limite inferiore della ricerca si sposta al centro più uno. Il limite superiore della ricerca si sposta al centro meno uno. Il limite inferiore della ricerca si sposta al centro meno uno. 008.13. Quale operazione è eseguita per trovare l'indice centrale in ricerca binaria?. Sommatoria di tutti gli indici e divisione per due. Scelta dell'elemento centrale in base ai valori contenuti nell'array. Calcolo del valore intero della media degli indici inferiori e superiori. Moltiplicazione degli indici e radice quadrata. 008.14. Qual è il caso peggiore per la complessità temporale della ricerca binaria?. O(n). O(1). O(n^2). O(log n). 008.15. Come può essere implementata la ricerca binaria?. Ricorsivamente o iterativamente. Solo in modo iterativo. Solo in modo ricorsivo. Usando esclusivamente array non ordinati. 008.16. Quale strategia non è una caratteristica della ricerca binaria?. Confronto del target con l'elemento centrale. Divisione dell'array e selezione della metà appropriata. Riduzione progressiva dell'intervallo di ricerca. Esplorazione sequenziale dall'inizio alla fine. 008.17. Quando viene terminata la ricerca binaria?. Quando rimane un solo elemento da controllare. Dopo un numero fisso di iterazioni. Quando l'array è completamente ordinato. Quando l'elemento è trovato o l'intervallo di ricerca è vuoto. 009.1. Quali sono le fasi del lavoro di un programma in C?. Precompilazione, compilazione, assembly, linking. Analisi, design, implementazione, testing. Inizializzazione, execution, cleanup. Compilazione, linking. 009.2. Quale tipo di file contiene la definizione delle funzioni usate da una libreria in C?. File eseguibile con estensione .exe. Header file con estensione .h. File di configurazione con estensione .ini. File sorgente con estensione .c. 009.3. Quale tipo di linguaggio è C in termini di tipologia di programmazione?. Linguaggio di scripting. Linguaggio funzionale. Linguaggio procedurale. Linguaggio orientato agli oggetti. 009.4. Quale header file viene utilizzato per le operazioni su stringhe in C?. string.h. stdlib.h. math.h. stdio.h. 009.5. Cosa implica la compilazione di un sorgente C su un sistema operativo specifico riguardo all'eseguibilità su altri sistemi?. Il codice è sempre compatibile con tutti i sistemi. Il codice diventa indipendente dal sistema. Il codice viene ottimizzato per tutti i sistemi. Solitamente il codice non è eseguibile su altri sistemi. 009.6. Come si inizia un commento su più linee in C?. /*. %. #. //. 009.7. Qual è stato uno degli usi principali del linguaggio C dopo la sua creazione?. Simulazione di eventi. Analisi statistica. Sviluppo di interfacce utente. Programmazione di sistema. 009.8. Come vengono chiamati i blocchi di codice identificati da un nome in C?. Procedure. Classi. Moduli. Metodi. 009.9. A cosa serve l'header file stddef.h in C?. Consente la gestione di database. Offre funzioni di crittografia. Definisce macro di precompilazione. Definisce tipi standard. 009.10. Cosa viene creato dal processo di linking nel contesto della compilazione di programmi in C?. Un codice oggetto. Un programma non eseguibile. Un codice sorgente. Un programma eseguibile. 009.11. Che tipo di tipizzazione utilizza il linguaggio C?. Tipizzazione statica. Tipizzazione dinamica. Tipizzazione debole. Tipizzazione opzionale. 009.12. Quale funzione è generalmente disponibile tramite l'header file math.h?. cos. exit. print. open. 009.13. Qual è la direttiva utilizzata per importare librerie esterne in un programma C?. #import. #define. #library. #include. 009.14. Per quali applicazioni è originariamente stato sviluppato il linguaggio C?. Sviluppo di giochi. Creazione di applicazioni web. Gestione di database. Sviluppo di sistemi operativi. 009.15. Qual è l'header file utilizzato per la gestione di date e tempo in C?. datetime.h. date.h. calendar.h. time.h. 009.16. Come si chiama il processo che collega le funzioni esterne al programma eseguibile in C?. Loading. Compiling. Linking. Assembling. 010.1. Qual è il tipo di ritorno standard della funzione main in C?. void. int. char. float. 010.2. Per cosa è usato il tipo di dati 'void' in C?. Per memorizzare caratteri. Per numeri interi senza segno. Per identificare funzioni che non restituiscono alcun valore. Per variabili che possono cambiare tipo. 010.3. Quale tipo di dato può essere usato solo come tipo di ritorno di una funzione in C?. long. int. void. double. 010.4. Quale operazione è necessaria se si vuole definire delle funzioni dopo il main in C?. Mettere prima il prototipo delle funzioni. Utilizzare esclusivamente variabili globali. Includere i file di intestazione standard. Compilare il programma due volte. 010.5. Che cos'è un 'prototipo di funzione' in C?. Un metodo per chiamare funzioni in modo ricorsivo. Un tipo speciale di funzione che non accetta parametri. Una funzione che inizializza altre funzioni. Una dichiarazione iniziale di funzione che specifica i tipi di dati dei parametri e del valore di ritorno. 010.6. Che dimensione ha un tipo di dato long in C?. 8 byte. 16 byte. 2 byte. 4 byte. 010.7. Qual è la differenza di range di valori memorizzabili tra le versioni signed e unsigned di char?. Non c'è differenza di range. Da 0 a 255 per entrambi. Da -128 a 127 per signed, da 0 a 255 per unsigned. Da -256 a 255 per signed, da 0 a 512 per unsigned. 010.8. Qual è il comando per stampare a video in C?. print. echo. printf. display. 010.9. Quanti byte usa una variabile di tipo float?. 4. 2. 8. 1. 010.10. Quale tipo di dato utilizzato in C ha tipicamente la dimensione di 8 byte?. char. double. short. int. 010.11. Cosa specifica il quantificatore "unsigned" in C?. Indica che i dati sono criptati. Dimezza il numero di byte utilizzati da una variabile. Raddoppia la memoria utilizzabile da una variabile. Non si usano bit per indicare il segno, aumentando lo spazio di memorizzazione. 010.12. Cosa significa se una funzione in C ha "void" come tipo di ritorno?. Ritorna sempre vero. Ritorna un valore intero. Non ritorna alcun valore. Ritorna qualsiasi tipo di dato. 010.13. Quando viene eseguita una funzione main in C?. Dopo che tutte le altre funzioni sono state eseguite. Prima che il programma venga compilato. Esclusivamente durante i test. Quando il programma viene eseguito. 010.14. Che dimensione ha un tipo di dato short int in C?. 1 byte. 2 byte. 4 byte. 8 byte. 010.15. In C, cosa accade se si tenta di usare una funzione prima di definirla senza un prototipo?. Il compilatore correggerà automaticamente l'errore. La funzione verrà eseguita con risultati imprevedibili. Il programma eseguirà con un avviso. Il compilatore darà un errore. 010.16. In C, quale tipo di dato viene usato tipicamente per memorizzare numeri in virgola mobile con alta precisione?. int. long. double. float. 012.01. Che concetto di base definisce la "typedef" nel linguaggio C?. Crea una nuova struttura dati. Inizializza una variabile. Definisce una nuova funzione. Assegna un alias a un tipo di dato esistente. 012.02. Quando usare il simbolo "->" invece di "." per accedere agli elementi di una struttura in C?. Quando la variabile è un puntatore alla struttura. Quando la variabile non è un puntatore alla struttura. In presenza di più strutture annidate. Quando si lavora con array. 012.03. Quale caratteristica principale differenzia la struct dalla union?. Una union può contenere solo tipi di dato primitivi. Le variabili in una union condividono lo stesso spazio di memoria. Le variabili in una struct condividono lo stesso spazio di memoria. Una struct non può essere passata alle funzioni. 012.04. Quale caratteristica principale differenzia la struct dalla union?. Le variabili in una struct condividono lo stesso spazio di memoria. Le variabili in una struct utilizzano spazi di memoria differenti. Una union può contenere solo tipi di dato primitivi. Una struct non può essere passata alle funzioni. 012.05. Se una union contiene due variabili "a" e "b", cosa succede al valore di "a" dopo l'assegnazione di "b = 10"?. Il valore di "a" non è più valido. Il valore di "a" viene automaticamente incrementato. Il valore di "a" rimane inalterato. Il valore di "a" diventa 10. 012.06. Come si accede agli elementi di una struct passata per indirizzo?. Utilizzando il simbolo . seguito dal nome dell'elemento. Accedendo direttamente tramite l'indice. Chiamando una funzione speciale. Utilizzando il simbolo -> seguito dal nome dell'elemento. 012.07. Perché si potrebbe voler usare typedef con struct in C?. Per evitare di ripetere "struct" ogni volta che si dichiara un nuovo dato di quel tipo. Per abbreviare il codice sorgente durante la compilazione. Per ottimizzare l'uso della memoria. Per incrementare la velocità di esecuzione del programma. 012.08. Qual è una principale differenza implementativa tra "struct" e "union"?. Struct utilizza meno memoria. Nella union le variabili condividono la stessa memoria, nella struct hanno spazi separati. Union utilizza più memoria. Nella struct le variabili condividono la stessa memoria, nella union hanno spazi separati. 012.09. In che modo enumerazioni possono rendere il codice più leggibile?. Associando nomi significativi a valori numerici. Fornendo una sintassi più breve. Riducendo la dimensione del codice sorgente. Impedendo errori di runtime. 012.10. Qual è il principale vantaggio nel risparmio di memoria offerto dalle unioni?. Dimensioni di memoria diminuite per tutti i tipi di dato. Compressione automatica dei dati. Tutte le variabili condividono lo stesso indirizzo di memoria. Ogni variabile ha un proprio spazio di memoria indipendente. 013.01. In C, quale funzione consente di leggere una stringa completa, inclusi gli spazi, dalla console?. gets. fgets. printf. scanf. 013.02. In quale header file sono definite le funzioni di input e output standard come printf e scanf in C?. string.h. stdlib.h. math.h. stdio.h. 013.03. Qual è il limite principale dell'utilizzo di %s in scanf per leggere stringhe?. Può leggere solo numeri. Può leggere solo caratteri alfabetici ma non numerici. Legge stringhe di qualsiasi lunghezza senza problemi. Legge solo fino al primo spazio trovato. 013.04. Cosa fa la funzione strcpy in C?. Concatena due stringhe. Confronta due stringhe. Legge una stringa. Copia il contenuto della seconda stringa nella prima. 013.05. Quale affermazione è vera riguardo la funzione sizeof in C?. Ritorna la dimensione in bit di una variabile. Ritorna la dimensione in byte di una variabile. Ritorna il numero di elementi di un array. Ritorna la lunghezza di una stringa. 013.06. Qual è la funzione corretta per ottenere la lunghezza di una stringa in C?. strlength. size. strsize. strlen. 013.07. Quale carattere speciale viene usato in C per andare a capo durante l'utilizzo di printf?. \n. %n. \t. \\. 013.08. Qual è la funzione in C utilizzata per confrontare due stringhe?. strlen. strcat. strcmp. strcpy. 013.09. Come si dichiara e si inizializza una stringa di caratteri che può contenere fino a 80 caratteri in C?. char miaStringa[80]. string *miaStringa[80]. string miaStringa[80]. char *miaStringa = 80. 013.10. Se in una funzione C una variabile locale ha lo stesso nome di una variabile globale, che cosa succede?. Viene dato un errore di compilazione. La variabile globale oscura quella locale. La variabile locale oscura quella globale. Le variabili condividono i valori. 013.11. Da dove è accessibile una variabile globale in C?. All'interno del blocco in cui è dichiarata. Solo all'interno della funzione in cui è dichiarata. Da qualsiasi parte del codice. Solo all'interno della funzione main. 013.12. Quale funzione in C è utilizzata per leggere una stringa dalla console fino al primo spazio?. strcpy. fgets. scanf. printf. 013.13. Come si può modificare il valore di una variabile globale da dentro una funzione in C (se non ci sono variabili locali con lo stesso nome)?. Usando sempre la keyword 'extern'. Modificando direttamente il valore. Creando una nuova variabile locale. Dichiarando la variabile come static. 013.14. Qual è la funzione corretta per concatenare due stringhe in C?. strcmp. strcat. strlen. strcopy. 014.01. Qual è il risultato dell'espressione `3-5%2` secondo l'ordine degli operatori?. 3. 1. 2. 4. 014.02. Cosa fa l'operatore modulo (%) in una espressione aritmetica?. Restituisce il resto della divisione. Restituisce il risultato della divisione. Restituisce il prodotto dei due valori. Restituisce la parte intera della divisione. 014.03. Che cosa fa l'operazione "a++ + b"?. Somma il valore corrente di "a" al valore di "b", poi incrementa di uno il valore di "a". Incrementa il valore di a del valore di b. Fornisce un errore, non è consentita. Incrementa di uno il valore di "a", poi somma il valore corrente di "a" al valore di "b". 014.04. Che cosa fa l'operazione "++a + b"?. Incrementa di uno il valore di "a", poi somma il valore corrente di "a" al valore di "b". Fornisce un errore, non è consentita. Somma il valore corrente di "a" al valore di "b", poi incrementa di uno il valore di "a". Incrementa il valore di a del valore di b. 014.05. Quale dei seguenti operatori non è un operatore logico?. Or (||). And (&&). Negazione (!). Assegnamento (=). 014.06. Che tipo di operatore è il modulo (%) in C?. Binario. Ternario. Unario. Quaternario. 014.07. Qual è il risultato di `a && b` quando entrambe `a` e `b` sono 0?. Unknown. 1. -1. 0. 014.08. Qual è il risultato di `a || b` quando solo `a` è vero?. 0. -1. 1. Unknown. 014.09. In che modo l'ordine di priorità degli operatori influisce sul risultato di un'espressione logica?. Ignora le operazioni meno prioritarie. Alterna automaticamente l'ordine per ottimizzare. Rende tutti gli operatori di pari priorità. Determina l'ordine in cui vengono valutate le operazioni. 014.10. Qual è il comportamento dell'operatore di negazione `!` su valori logici?. Converte 0 in 1 e viceversa. Converte 1 in 0 senza cambiare gli zeri. Inverte l'ordine dei bit. Duplica il valore dell'input. 014.11. Cosa fa l'operatore = in C?. Confronta due variabili. Definisce una costante. Assegna un valore a una variabile. Esegue una sottrazione. 014.12. Quale è la convenzione per i nomi delle costanti definiti con `#define` in C?. Scriverli in maiuscolo. Non ci sono convenzioni. Scriverli in minuscolo. Iniziare con un carattere speciale. 014.13. Come si risolve un'espressione come `x>y == z>t` considerando la priorità degli operatori?. Valutando prima `x>y` e `z>t` e poi confrontando i risultati. Confrontando direttamente `x` con `z` e `y` con `t`. Dividendo `x` per `y` e `z` per `t`. Sommando `x`, `y`, `z`, `t`. 014.14. Quando viene utilizzato l'operatore `||` (or logico), quando viene restituito vero?. Se la prima condizione è falsa. Se entrambe le condizioni sono false. Se almeno una delle due condizioni è vera. Se nessuna delle condizioni è vera. 014.15. Qual è l'utilizzo delle costanti in C?. Creare variabili con un valore di default che può essere cambiato a tempo d'esecuzione. Creare variabili con nomi statici che possono essere aggiornate. Definire dei valori che non cambiano mai durante l'esecuzione del programma. Definire un numero di iterazioni costanti per un ciclo. 014.16. Qual è l'effetto dell'operatore di sottrazione utilizzato come un operatore unario?. Incrementare di uno il valore della variabile. Sommare il valore con se stesso. Negare il valore della variabile. Dividere il valore per se stesso. 014.17. Cos'è una espressione condizionale in C?. Un modo ristretto per scrivere una condizione. Un modo per definire variabili. Una funzione speciale che esegue ripetizioni. Un modo ristretto per definire cicli. 014.18. Con la direttiva `#define CONST 10` in C, cosa avviene durante la fase di precompilazione?. Il compilatore crea una nuova variabile chiamata CONST con valore 10. Il compilatore non compie nessuna operazione che coinvolge CONST. Il compilatore controlla che CONST sia utilizzata solo in contesti dove servono numeri interi. Il compilatore sostituisce il nome CONST con il valore 10 ogni volta che occorre. 014.19. Quale operatore logico restituisce vero solo se tutte le condizioni valutate sono vere?. && (and logico). ! (negazione). || (or logico). == (uguaglianza). 016.01. Cosa si intende per memory leak?. Errori di sovrascrittura di memoria. Perdita di memoria per mancata liberazione dello spazio occupato dalle variabili. Allocare troppa memoria per una variabile. Accesso non autorizzato alla memoria. 016.02. Qual è il comportamento della funzione free nella gestione della memoria?. Riduce la dimensione di un blocco di memoria. Libera un blocco di memoria allocato. Inizializza la memoria a zero. Alloca un blocco di memoria. 016.03. Perché le funzioni ricorsive richiamate troppe volte possono causare uno stack overflow?. Perché i parametri passati alla funzione vengono salvati nello stack. Perché una funzione ricorsiva può utilizzare solo variabili salvate nello stack, non può accedere all'heap. Perché non è possibile passare parametri by reference a una funzione ricorsiva. Perché limitano l'accesso allo stack ad altre funzioni. 016.04. Che accade se la funzione calloc non riesce ad allocare la memoria richiesta?. Causa un errore di sistema. Restituisce comunque un puntatore. Restituisce il valore NULL. Avvia un'eccezione. 016.05. Che operazione compie la funzione realloc in C?. Ridimensiona un blocco di memoria già allocato. Alloca memoria senza inizializzarla. Libera la memoria. Alloca e inizializza la memoria. 016.06. Quali sono le possibili conseguenze dello stack overflow?. Interruzione del programma o malfunzionamento. Riallocazione automatica di memoria. Miglioramento delle prestazioni. Incremento dello spazio disponibile. 016.07. Perché è importante settare un puntatore a NULL dopo aver liberato la memoria a cui puntava?. Per aumentare la performance del sistema. Per ridurre il consumo di memoria. Per prevenire errori di accesso a memoria liberata. Per accelerare l'allocazione di nuova memoria. 016.08. Cosa indica un valore NULL restituito da una funzione di allocazione di memoria come malloc o calloc?. Indica un successo totale nell'allocazione. La memoria non è stata allocata con successo. La memoria allocata è preinizializzata. La memoria è stata allocata ma non è pronta per essere usata. 016.09. Che tipo di gestione consente la memoria heap?. Manuale da parte del programmatore. Limitata solo ai piccoli blocchi di dati. Riservata unicamente per uso del sistema operativo. Automatica senza intervento del programmatore. 016.10. Qual è il problema che si verifica quando una funzione viene richiamata troppo frequentemente in modo ricorsivo?. Heap overflow. Stack overflow. Memory leakage. Buffer overflow. 016.11. Qual è il vantaggio principale dell'uso della memoria heap rispetto allo stack?. È più veloce nell'accesso. È gestita automaticamente dal sistema. Può gestire memoria allocata dinamicamente. Non può mai saturarsi. 016.12. Quando si deve chiamare la funzione free in programmazione?. Al termine dell'uso di variabili allocate dinamicamente. Al termine dell'uso di qualsiasi tipologia di variabile. Subito dopo ogni allocazione di memoria. Prima di ogni allocazione di memoria. 016.13. Qual è la funzione che permette di allocare memoria grezza e inizializzarla a zero in C?. calloc. realloc. free. malloc. 016.14. Qual è la funzione utilizzata per allocare memoria grezza senza inizializzazione in C?. calloc. free. realloc. malloc. 016.15. Cosa accade se si tenta di accedere a memoria non inizializzata in C?. La memoria restituisce sempre zero. Non accade nulla. Si può verificare un errore di segmentation fault. La memoria automaticamente si inizializza. 016.16. Che cosa si verifica se si tenta di accedere a un indirizzo di memoria dopo avere chiamato la funzione free su di esso?. La memoria è automaticamente reinizializzata. Si può verificare un errore di accesso a memoria. Non genera alcun errore. Si rialloca la stessa memoria. 017.01. Qual è la finalità del Bubble sort?. Calcolare la mediana di un array. Invertire l'ordine degli elementi in un array. Ordinare un array utilizzando scambi di elementi adiacenti. Eseguire una ricerca binaria. 017.02. Perché si utilizza il puntatore all'indirizzo di memoria quando si passa un vettore a una funzione?. Per migliorare la sicurezza dei dati. Per eseguire operazioni matematiche complesse sull'indirizzo. Per evitare la copia completa dei dati e modificare direttamente il vettore originale. Per creare una copia temporanea dell'array. 017.03. Qual è la definizione del "problema dell'ordinamento"?. Trovare la permutazione ordinata di una serie di elementi. Calcolare la somma totale degli elementi. Trovare l'elemento massimo in un array. Determinare se tutti gli elementi sono unici. 017.04. Qual è il numero minimo di confronti necessari per risolvere un problema di ordinamento nel caso peggiore usando un modello basato su confronti?. n^2. log n. n log n. n. 017.05. Tipicamente, cosa accade se si modifica un valore di un vettore all'interno di una funzione?. La modifica viene ignorata a meno che non si restituisca il vettore. Si crea automaticamente una copia del vettore. Si modifica il vettore originale. La modifica è temporanea e non viene salvata. 017.06. Quando si passa un array a una funzione, cosa viene passato alla funzione?. Un elenco di valori statici non modificabili. Un puntatore all'indirizzo di memoria del vettore. Una copia duplicata dell'intero array. La dimensione dell'array senza i dati contenuti. 017.07. Quale di questi algoritmi non è basato su confronti?. Bubble Sort. Merge Sort. Quick Sort. Counting sort. 017.08. Sia v un vettore passato ad una funzione, eseguendo uno scambio tra v[i] e v[j] all'interno della funzione, che cosa provoca nel vettore originale?. Ripristina il vettore al suo stato originale alla fine della funzione. Modifica il vettore originale visto che è passato per indirizzo alla funzione. Non ha alcun effetto poiché le modifiche sono locali alla funzione. Crea una nuova istanza del vettore con le modifiche. 018.01. Come agisce l'algoritmo Naïve sort se il vettore in input è già ordinato?. Riconosce immediatamente l'ordine e termina. Esegue tutti i confronti previsti. Riduce i confronti a metà. Varia i confronti in base al contenuto del vettore. 018.02. Quanti scambi sono fatti nell'algoritmo Naïve sort quando viene eseguito con un vettore di lunghezza 5?. Esattamente 5 scambi. Fino a 4 scambi. Nessun scambio. Dipende dall'ordine iniziale degli elementi. 018.03. Qual è la principale caratteristica del Naïve sort legata alla posizione dell'elemento massimo?. Riordina completamente il vettore ad ogni iterazione. Scambia l'elemento massimo con l'ultimo elemento non ordinato. Scambia l'elemento massimo con il primo elemento del vettore. Mantiene l'elemento massimo nella sua posizione originale. 018.04. Durante l'algoritmo Naïve sort, cosa succede alla dimensione 'n' del vettore ad ogni passata?. Si riduce di 1. Raddoppia. Viene ridotta a metà. Rimane invariata. 018.05. Che tipo di complessità ha l'algoritmo Naïve sort nel caso peggiore?. O(n log n). O(n^2). O(log n). O(n). 018.06. Quale problema fondamentale del Naïve sort?. Non si accorge se il vettore è già ordinato. Funziona male se il vettore è parzialmente ordinato. Richiede un vettore di dimensioni pari. Consuma troppa memoria. 018.07. A ogni iterazione di Naïve sort, quali elementi del vettore vengono considerati ordinati?. Tutti gli elementi pari. Solo il primo e l'ultimo. Gli ultimi n-i elementi. Gli elementi dopo la posizione n-i. 018.08. Quando termina l'algoritmo Naïve sort?. Quando n è ridotto a 1. Dopo un numero predeterminato di scambi. Se non ci sono scambi durante un'iterazione. Dopo esattamente 10 iterazioni. 019.01. Cosa viene verificato per decidere se continuare o terminare il ciclo nel bubble sort?. Se l'array è diviso in parti uguali. Se ci sono stati scambi nell'ultima iterazione. Se non ci sono stati scambi nell'ultima iterazione. Se l'array è quasi ordinato. 019.02. Cosa succede se, in una iterazione del bubble sort, nessun elemento viene scambiato?. L'algoritmo esegue un reset. Il ciclo ripete l'iterazione precedente. Il ciclo termina indicando che l'array è ordinato. Aumenta il numero di iterazioni da compiere. 019.03. Che caratteristica rende l'algoritmo bubble sort efficiente rispetto al "naïve sort"?. Esamina ogni elemento soltanto una volta. Effettua scambi solo alla fine di ogni iterazione. Si interrompe quando rileva che l'array è già ordinato. Usa una tecnica di dividi e conquista. 019.04. Dopo quale evento il bubble sort stabilisce che l'array è ordinato e termina?. Dopo che la variabile "ordinato" viene reimpostata. Dopo che l'elemento più grande è al primo posto. Dopo un'intera iterazione senza scambi. Dopo che tutti gli elementi sono stati confrontati una volta. 019.05. Qual è l'operazione essenziale eseguita durante ogni iterazione nel bubble sort?. Confronta e scambia gli elementi adiacenti se non in ordine. Seleziona il massimo elemento e lo inserisce nella posizione corretta. Unisce due sottoliste ordinate. Inserisce un elemento in una pila. 019.06. Durante quale condizione il bubble sort ha la performance migliore?. Quando l'array contiene pochi elementi diversi. Quando l'array è in ordine decrescente. Quando ogni elemento è superiore al successivo. Quando l'array in ingresso è quasi ordinato. 019.07. Quale parte dell'array non viene più considerata nelle iterazioni successive nel bubble sort?. La parte finale dell'array che è già stata ordinata. La parte iniziale che è stata verificata. Solo gli elementi dispari. Gli elementi centrali. 019.08. Come viene ridotto l'intervallo di confronto nel bubble sort ad ogni iterazione?. Espandendo l'intervallo dal centro. Riducendo la lunghezza dell'array non ordinato di uno. Incrementando l'indice di inizio. Mantenendo l'intervallo costante. 019.09. Come viene gestita la terminazione anticipata nel bubble sort?. Contando il numero di iterazioni effettuate. Verificando se nessun elemento è stato scambiato nell'ultima iterazione. Monitorando la dimensione dell'array di input. Misurando il tempo di esecuzione dell'algoritmo. 019.10. Qual è il caso peggiore per l'efficienza del bubble sort?. Quando gli elementi sono ordinati casualmente. Quando l'array è già ordinato. Quando gli elementi sono tutti uguali. Quando l'elemento più piccolo è all'ultimo posto. 019.11. Quanti confronti vengono eseguiti nel caso migliore per il bubble sort? Sia N il numero di elementi del vettore. N. N+1. N/2. N-1. 019.12. Qual è l'obiettivo principale di ogni iterazione nel bubble sort?. Portare l'elemento più grande non ordinato nella posizione corretta al fondo. Riordinare tutti gli elementi in ordine crescente. Dividere l'array in segmenti più piccoli. Ordinare completamente l'array. 019.13. Che tipo di complessità ha il bubble sort nel suo caso peggiore?. Esponenziale. Logaritmica. Lineare. Quadratica. 019.14. In che modo il bubble sort migliora sulla semplicità del "naïve sort"?. Usando meno scambi. Dividendo l'array in parti più gestibili. Terminando anticipatamente se l'array è già ordinato. Utilizzando meno confronti complessivi. 020.01. Qual è il concetto base dell'Insertion sort?. Riordinare la lista utilizzando una pila. Dividere l'array in sottoarray ordinarli e poi combinarli. Scambiare gli elementi se non sono in ordine. Inserire gli elementi in modo ordinato all'interno del vettore non ordinato. 020.02. Cosa accade se l'elemento da inserire è minore dell'elemento successivo nell'Insertion sort?. L'elemento viene scambiato con l'ultimo elemento dell'array. Viene fatto spazio spostando l'elemento successivo. L'elemento viene inserito alla fine dell'array. Nessuna modifica viene apportata. 020.03. In quale scenario l'Insertion sort ha una complessità temporale quadratica?. Quando l'array è vuoto. Quando l'array contiene tutti elementi uguali. Quando l'array è già ordinato. Quando l'array è ordinato al contrario. 020.04. Dove inserisce un valore l'insertion sort durante l'ordinamento di un array?. All'inizio del array. In posizioni casuali. Nella posizione corretta per mantenere l'ordine. Alla fine del array. 020.05. Nel caso peggiore qual è la complessità dell'insertion sort?. O(n log n). O(n). O(n^2). O(log n). 021.08 Qual è il comando per stampare a video in C?. print. echo. printf. display. 021.09 Quanti byte usa una variabile di tipo float?. 4. 2. 8. 1. 021.10 Quale tipo di dato utilizzato in C ha tipicamente la dimensione di 8 byte?. char. double. short. int. 021.11 Cosa specifica il quantificatore "unsigned" in C?. Indica che i dati sono criptati. Dimezza il numero di byte utilizzati da una variabile. Raddoppia la memoria utilizzabile da una variabile. Non si usano bit per indicare il segno, aumentando lo spazio di memorizzazione. 021.12 Cosa significa se una funzione in C ha "void" come tipo di ritorno?. Ritorna sempre vero. Ritorna un valore intero. Non ritorna alcun valore. Ritorna qualsiasi tipo di dato. 021.13 Quando viene eseguita una funzione main in C?. Dopo che tutte le altre funzioni sono state eseguite. Prima che il programma venga compilato. Esclusivamente durante i test. Quando il programma viene eseguito. 021.14 Che dimensione ha un tipo di dato short int in C?. 1 byte. 2 byte. 4 byte. 8 byte. 021.15 In C, cosa accade se si tenta di usare una funzione prima di definirla senza un prototipo?. Il compilatore correggerà automaticamente l'errore. La funzione verrà eseguita con risultati imprevedibili. Il programma eseguirà con un avviso. Il compilatore darà un errore. 021.16 In C, quale tipo di dato viene usato tipicamente per memorizzare numeri in virgola mobile con alta precisione?. int. long. double. float. 022.01 Quale risultato si ottiene scambiando gli elementi rispetto al pivot nel Quick sort?. Array completamente ordinato. Array in ordine decrescente. Gruppi di elementi uguali. Due metà di array uno con elementi minori e uno con elementi maggiori del pivot. 022.02 Qual è la complessità nel caso peggiore del Quick sort se il pivot è scelto male?. Logaritmica. Lineare. Esponenziale. Quadratica. 022.03 Qual è l'obiettivo principale del Quick sort quando sceglie un pivot?. Partizionare l'array in due parti di dimensioni molto dissimili. Partizionare l'array in due parti, preferibilmente uguali. Partizionare l'array in due parti, una più piccola e una più grande. Ridurre la dimensione dell'array a zero. 022.04 Che accade nel Quick sort dopo aver partizionato l'array rispetto al pivot?. Si uniscono immediatamente le due metà. Si uniscono le due metà senza ordinamento. Si termina l'algoritmo. Si richiama sulle due metà dell'array. 022.05 Che tipo di algoritmo è il Quick sort?. Iterativo. Sequenziale. Ricorsivo. Parallelo. 022.06 Cosa succede se il pivot nel Quick sort è scelto male?. Uno dei sotto-vettori può avere dimensione zero. Il pivot viene scambiato con ogni elemento. Viene generato un errore. Il programma termina immediatamente. 022.07 Qual è il criterio di divisione degli array nel Quick sort?. Elementi suddivisi casualmente. Elementi positivi e negativi. Elementi più piccoli e più grandi del pivot. Elementi pari e dispari. 022.08 Qual è il caso base nel Quick Sort?. Quando la dimensione dei sotto-vettori è uguale a 1. Quando la dimensione dei sotto-vettori è uguale a 2. Quando tutti gli elementi sono uguali. Quando il pivot non può essere definito. 022.09 Cosa garantisce una buona scelta di pivot nel Quick sort?. Equa divisione dell'array. Riduzione della velocità di esecuzione. Riduzione nell'uso di memoria. Minor numero di confronti. 022.10 Quale strategia di base usa il Quick sort per ridurre il problema di ordinamento?. Incremento sequenziale degli elementi. Ordinamento parallelo degli elementi. Riduzione casuale dell'array. Divisione in sottoproblemi più semplici. 022.11 In che condizioni il Quick sort raggiunge la sua complessità ottima?. Con il minor numero di confronti possibili. Con un numero minimo di chiamate ricorsive. Con sotto-vettori divisi equamente ad ogni chiamata. Con la massima disparità nelle dimensioni dei sotto-vettori. 022.12 Qual è la complessità nel caso medio del Quick sort con una buona scelta del pivot?. O(n). O(n^2). O(log n). O(n log n). 023.01 Come funziona la strategia "Divide et impera" impiegata nel merge sort?. Utilizza un approccio iterativo per affrontare piccole porzioni del problema alla volta. Divide il problema in due, risolve una metà e ignora l'altra. Divide il problema in sotto-problemi più piccoli risolti ricorsivamente e poi combina i risultati. Applica una soluzione diretta senza suddividere il problema. 024.01 Che tipo di vettori può ordinare il Counting Sort?. Vettori che contengono solo numeri negativi. Qualsiasi tipo di vettore, inclusi quelli con elementi non numerici. Vettori di oggetti con chiavi complesse. Vettori composti da numeri interi. 024.02 In che cosa consiste la fase finale del Counting Sort?. Eliminare i duplicati nel vettore originario. Riordinare il vettore di occorrenze. Riempire il vettore originale in modo ordinato usando le occorrenze registrate. Scambiare gli elementi del vettore originale basandosi sulle loro posizioni. 024.03 Cosa si intende con "algoritmo non basato su confronti" nel contesto del Counting Sort?. Un algoritmo che ordina i dati usando una funzione di hash. Un algoritmo che ordina i dati senza confrontare gli elementi tra loro. Un algoritmo che confronta sempre elementi adiacenti. Un algoritmo che utilizza soltanto confronti per ordinare i dati. 024.04 Quale struttura dati viene utilizzata da Counting Sort per contare le occorrenze dei valori?. Una tabella hash. Un heap binario. Una lista collegata. Un vettore temporaneo inizializzato a zero. 024.05 In quale caso il Counting Sort offre la massima efficienza?. Quando i dati sono completamente disordinati. Quando il vettore contiene molti elementi duplicati. Quando il vettore è già parzialmente ordinato. Quando la dimensione dei valori da ordinare non si discosta di molto. 026.01 Come avviene l'inserimento in un array quando si utilizza la tecnica double-halving?. All'inizio dell'array e n viene incrementato di 1. Nella cella n e n viene incrementato di 1. In una cella generica e n viene incrementato di 1. Alla fine dell'array senza aggiornare n. 026.02 Cosa succede quando n supera h in un array gestito con la tecnica double-halving?. L'array si resetta automaticamente. Non avviene alcuna modifica alla dimensione dell'array. L'array viene riallocato dimezzando la sua dimensione. L'array viene riallocato raddoppiando la sua dimensione. 026.03 Cosa avviene alla dimensione h dell'array quando n scende sotto h/4 nella tecnica double-halving?. La dimensione h rimane invariata. Viene creato un nuovo array copiando gli elementi presenti in quello attuale. La dimensione h raddoppia. L'array viene riallocato dimezzandone la dimensione. 026.04 Quale affermazione è vera riguardo alla modifica della dimensione di un array?. È necessario riallocarlo per cambiare dimensione. Può essere esteso semplicemente aggiungendo celle. Si riduce automaticamente quando gli elementi sono rimossi. Può cambiare dimensione senza riallocare. 026.05 Quale operazione di array ha un costo pressoché constante nella tecnica double-halving?. Solo cancellazione. Inserimento e cancellazione. Nessuna delle operazioni. Solo inserimento. 026.06 I valori di un array: Sono memorizzati in posizioni di memoria non necessariamente contigue. Sono memorizzati in posizioni di memoria contigue. Si può aggiungere elementi senza limiti. Sono connessi uno all'altro con un puntatore. 026.07 Come è definito un puntatore in relazione agli array?. Un link all'ultimo elemento dell'array. Un indicatore del tipo di dati dell'array. Una variabile che conta gli elementi dell'array. Un riferimento all'indirizzo di memoria della prima cella. 026.08 Qual è il destino dell'ultimo elemento di un array se avviene una cancellazione in un'altra posizione usando la tecnica double-halving?. Viene sostituito con il valore NULL. Il garbage collector elimina il valore dalla memoria. Viene considerato inutilizzato ma non rimosso immediatamente. La cella di memoria viene deallocata. 026.09 Che proprietà deve sempre rispettare h nella tecnica double-halving per gestire la dimensione di un array?. n è sempre inferiore a 2h. n è sempre il doppio di h. h è sempre inferiore a n. h è sempre uguale a n. 026.10 Qual è la complessità di accesso ad un elemento specifico in un array?. O(2^n). O(log n). O(1). O(n). 028.01 Qual è la complessità delle operazioni eseguite su una pila?. Complessità logaritmica. Complessità costante. Complessità lineare. Complessità quadratica. 028.02 Cosa indica il termine "testa" in una struttura di pila?. Il centro esatto della pila. Il punto d'accesso per inserimento e rimozione. Il punto più basso della pila. Una posizione casuale nella pila. 028.03 Che tipo di struttura dati utilizza la pila per inserire ed eliminare valori?. Usa una struttura ad albero. Usa una mappa di hash. Usa una coda di priorità. Usa una struttura di tipo lista. 028.04 Che tipo di strategia implementa una pila?. LIFO (Last In First Out). FILO (First In Last Out). LILO (Last In Last Out). FIFO (First In First Out). 028.05 Come viene inserito un nuovo valore in una pila?. Ordina i valori e inserisce in modo ordinato. Inserisce il valore nella testa della pila. Inserisce il valore in posizione casuale. Inserisce il valore alla fine della pila. 028.06 Che azione compie l'operazione pop(S) su una pila?. Rimuove tutti i valori dalla pila. Rimuove il valore in testa alla pila senza leggerlo. Legge e rimuove il valore in testa alla pila. Legge il valore in testa alla pila. 028.07 Per cosa sta la sigla LIFO riferita alla strategia di una pila?. Last In Fixed Order. Last In Fast Out. Last In First Out. Least Important First Out. 028.08 Come viene gestita l'accessibilità agli elementi intermedi in una pila?. Solo gli elementi pari possono essere acceduti. Si può accedere liberamente a qualsiasi elemento. Accessibili tramite indice numerico. Non è possibile accedere senza eliminare i valori che precedono. 028.09 Se una pila implementa LIFO, quale elemento verrà rimosso per primo?. Un elemento casuale. L'ultimo elemento inserito. L'elemento nel mezzo della pila. Il primo elemento inserito. 028.10 Quale è la posizione del valore più vecchio in una pila?. Sempre in mezzo alla pila. Alla base della pila. In una posizione casuale. Alla testa della pila. 029.01 Qual è il risultato dell'operazione dequeue() se la coda non è vuota?. Crea una nuova coda. Rimuove ed restituisce il valore in testa alla coda. Aggiunge un valore alla coda. Restituisce il valore senza rimuoverlo. 029.02 Le operazioni di una coda: Hanno tutte costo O(n). Hanno tutte costo O(1). Dequeue costa O(n). Solo Enqueue costa O(1). 029.03 Come viene gestito l'ultimo elemento quando si inserisce in una coda non vuota?. Il puntatore head viene spostato al nuovo nodo. L'elemento viene inserito all'inizio. Il puntatore di coda rimane invariato. Il puntatore di coda (tail) viene aggiornato al nuovo nodo. 029.04 Quale tipo di strategia implementa una coda (queue)?. Last In First Out (LIFO). Last In Last Out (LILO). First In First Out (FIFO). First In Last Out (LILO). 029.05 Cosa succede in una coda quando si esegue l'operazione enqueue(Q, x) su una coda vuota?. Q.head punta al nuovo elemento e Q.tail rimane nullo. Q.tail punta al nuovo elemento e Q.head rimane nullo. Q.head e Q.tail puntano al nuovo elemento. Non viene modificato nulla nell'head e nel tail. 029.06 In una coda, il valore restituito dalla funzione first(Q), quando non è vuota, è associato a quale puntatore?. Q.new. Q.old. Q.head. Q.tail. 029.07 Qual è l'operazione che rimuove il valore in testa alla coda?. dequeue(Q). top(Q). enqueue(Q, x). remove(x). 029.08 Cosa succede se la funzione dequeue(Q) viene eseguita quando la coda è vuota?. Restituisce il valore di Q.tail. Restituisce un errore. Restituisce NULL. Nessuna delle precedenti. 029.09 Dove viene inserito un nuovo valore quando si utilizza la funzione enqueue su una coda?. A caso nella coda. Alla fine della coda. All'inizio della coda. All'inizio e alla fine. 029.10 Se Q.head == NULL in una coda, cosa indica questo?. Ci sono molti elementi. La coda è vuota. La coda è in overflow. La coda è piena. 029.11 Cosa significa se Q.tail.next == NULL in una coda?. La coda è vuota. Non ci sono altri nodi dopo l'ultimo. Il primo nodo è l'ultimo. La coda sta per andare in overflow. 030.01 Che cosa è un "sottoalbero" in termini di strutture ad albero?. Un singolo nodo senza figli. Una sequenza di nodi collegati solo da radice. Una lista di nodi senza connessioni. Un insieme di nodi e archi che formano un albero indipendente all'interno di un albero più grande. 030.02 In quale scenario un nodo si considera una "foglia"?. Quando non ha figli. Quando è il nodo radice. Quando è un nodo interno. Quando ha esattamente un figlio. 030.03 Che cosa indica il termine "antenato" in un contesto di albero?. Un nodo senza figli. Un nodo al livello più basso. Un nodo che sta su un percorso diretto dalla radice fino a un altro nodo. Un nodo che non ha un padre. 030.04 In un albero, quali nodi sono definiti come 'interni'?. Nodi che hanno due o più figli. Nodi che non hanno figli. Nodi che hanno almeno un figlio. Nodi che non sono connessi ad altri nodi. 030.05 Che proprietà ha un nodo che non è la radice in un albero radicato?. Non ha archi entranti. Ha più di un arco entrante. Ha uno e un solo arco entrante. Ha esattamente due archi uscenti. 030.06 Quanti archi percorre un nodo per raggiungere la radice se è situato a un livello detto "profondità"?. Un numero di archi pari alla profondità più uno. Lo stesso numero degli archi di quella profondità. Un numero di archi pari alla profondità meno uno. Un numero casuale di archi. 030.07 Cosa definisce l'altezza di un albero?. La profondità massima dei nodi foglia. Il numero totale di nodi. Il numero di archi totali. La larghezza dell'albero. 030.08 Quali nodi sono definiti come 'foglie' in una struttura ad albero?. Nodi che sono interni all'albero. Nodi che non hanno un padre. Nodi che non hanno figli. Nodi alla base dell'albero. 030.09 Quanti figli può avere al massimo un nodo in un albero se il grado dell'albero è 3?. 2. 3. 4. 1. 030.10 Quando un albero di grado d si dice "completo"?. Se ogni nodo ha esattamente d figli. Se ogni nodo ha almeno un figlio. Se ogni nodo ha 0 figli o esattamente d figli. Se non ci sono nodi interni. 030.11 Cosa definisce il livello o la profondità di un nodo in un albero?. La lunghezza del cammino dalla radice a quel nodo. Il numero di foglie sotto quel nodo. Il numero di nodi fratelli. La lunghezza totale degli archi dell'albero. 031.01 Cosa memorizza ogni nodo in una rappresentazione con lista di puntatori ai figli?. I soli puntatori senza valori. Il valore del nodo e i puntatori ai figli. Solo il valore del nodo. Il numero totale di nodi. 031.02 Come è possibile trovare il padre di un nodo in un vettore posizionale?. Usando una formula matematica per calcolare la posizione nel vettore. Scorrendo l'intero vettore. Verificando manualmente ogni nodo. Randomizzando la posizione fino a quando non si trova la corretta. 031.03 Qual è la principale differenza tra le rappresentazioni dinamiche e le indicizzate di un albero?. Le indicizzate non usano nodi. Le dinamiche usano puntatori e le indicizzate usano array. Le dinamiche sono più lente in tutti gli accessi. Le indicizzate usano puntatori e le dinamiche usano array. 031.04 Qual è la complessità temporale di accesso al padre o al figlio in un vettore posizionale?. O(n). O(n^2). O(1). O(log n). 031.05 In cosa consiste la rappresentazione con vettore dei padri in un albero?. Ogni cella contiene un indice di tutti gli altri nodi. Ogni cella contiene il valore del nodo e il puntatore al nodo padre. Ogni cella mantiene una lista con i puntatori ai figli. Ogni cella contiene una lista di puntatori ai padri. 032.01 Con quale struttura dati è implementata la visita in ampiezza (BFS)?. Una lista. Una coda. Un array. Uno stack. 032.02 In che modo un albero binario può essere classificato come completo?. Se ogni nodo ha tanti figli. Se ogni nodo ha zero o due figli. Se ogni nodo ha esattamente un figlio. Se ci sono solo nodi foglia. 032.03 Qual è una caratteristica di un albero binario perfettamente bilanciato?. Ogni nodo ha massimo un figlio. Ogni nodo ha esattamente un figlio. Tutte le foglie si trovano allo stesso livello. Ogni nodo ha esattamente due figli. 032.04 Quale variante di visite per alberi visita prima la radice, poi il sottoalbero sinistro e infine quello destro?. Post-order. Linear-order. Pre-order. In-order. 032.05 Quale metodo viene utilizzato per visitare un albero in sequenza di livello?. Bread Fast Search. Depth First Search. Breadth First Search. Deep Full Search. 032.06 Quando si implementa la DFS, in quale ordine vengono visitati i nodi nell'approccio in-order?. Sottoalbero sinistro, radice, sottoalbero destro. Sono visitati in ordine casuale. Sottoalbero sinistro, sottoalbero destro, radice. Radice, sottoalbero sinistro, sottoalbero destro. 032.07 Quali sono le varianti della visita in profondità?. Pre-order, in-order, post-order. First-order, second-order, third-order. Top-down, bottom-up. Sequential, parallel. 032.08 Qual è il comportamento della DFS post-order?. Visita prima il sottoalbero destro, poi il sinistro e infine la radice. Visita prima la radice, poi il sottoalbero sinistro, e infine quello destro. Visita prima la radice, poi il sottoalbero destro, e infine quello sinistro. Visita prima il sottoalbero sinistro, poi il destro, e infine la radice. 032.09 Che elemento di controllo utilizza l'algoritmo bfs per processare i nodi?. Una pila per gestire i nodi dinamicamente. Un array per indicizzare i nodi. Un timer per gestire l'intervallo di visita. Una coda per mantenere l'ordine di visita. 033.01 Qual è il risultato del metodo "HeapMin(H)" in un min-heap?. Restituisce la chiave minima dell'heap. Inserisce una nuova chiave nell'heap. Restituisce la chiave massima dell'heap. Elimina la chiave minima dell'heap. 033.02 Cosa succede quando si esegue "PopMin(H)" in un min-heap?. Inserisce una nuova chiave minima. Ritorna la chiave minima senza rimuoverla. Modifica la chiave minima. Estrae e rimuove la chiave minima dell'heap. 033.03 In che modo "PopMax(H)" modifica un max-heap?. Modifica la chiave massima esistente. Restituisce la chiave massima senza rimuoverla. Inserisce la nuova chiave massima nell'heap. Estrae e rimuove la chiave massima dell'heap. 033.04 Qual è la funzione di "HeapMax(H)" in un max-heap?. Inserisce una nuova chiave massima. Restituisce la chiave massima presente nell'heap. Elimina la chiave massima dall'heap. Restituisce ed elimina la chiave massima presente nell'heap. 034.01 Qual è l'effetto di una chiave inserita che è maggiore delle chiavi esistenti in una min-heap?. Crea un nuovo heap. Rimuove la radice dell'heap. Scambia la sua posizione con la chiave minima. Nessun effetto immediato se non viola la proprietà di min-heap. 034.02 Che tipo di struttura dati è una "min-heap"?. Un albero binario in cui ogni nodo padre è maggiore o uguale ai suoi figli. Un albero binario in cui ogni nodo padre è minore ai suoi figli. Un albero binario in cui ogni nodo padre è maggiore ai suoi figli. Un albero binario in cui ogni nodo padre è minore o uguale ai suoi figli. 034.03 In quale scenario il nuovo valore inserito non provoca scambi in una min-heap?. Quando supera il valore di almeno un nodo già esistente. Quando è inferiore al valore del nodo padre. Quando è pari al valore del nodo padre. Quando è inferiore al valore minimo dell'heap. 034.04 Cosa succede se una chiave inserita in una "min-heap" è minore della chiave del suo nodo padre?. La chiave viene spostata in testa all'heap. Non succede nulla perché rispetta la proprietà di min-heap. Viene lanciato un messaggio di errore. Si scambiano le posizioni fino a ripristinare la proprietà di min-heap. 034.05 Cosa fa l'operazione di "heapify" in una min-heap?. Ristabilisce le proprietà di min-heap scambiando nodi secondo necessità. Crea un nuovo heap da zero. Elimina un nodo dal heap. Riduce la dimensione del heap. 034.06 In quale situazione si scambiano i nodi in un'operazione di "heapify" durante l'eliminazione di una chiave in un min-heap?. Quando il nodo è una foglia. Quando la nuova chiave è maggiore della chiave che era stata eliminata. Quando la nuova chiave è minore della chiave che era stata eliminata. Quando la heap è piena. 034.07 Qual è la procedura corretta per l'operazione "HeapDelete" in una min-heap?. Sostituire la chiave eliminata con il valore della radice e poi applicare "heapify" se necessario. Sostituire la chiave eliminata con l'ultima chiave nell'heap e poi applicare "heapify" se necessario. Eliminare semplicemente la chiave e non fare nulla. Sostituire la chiave eliminata con una scelta a caso e poi applicare "heapify" se necessario. 034.08 Quando è necessario procedere verso l'alto per scambiare nodi in un'operazione di eliminazione in un min-heap?. Quando la nuova chiave è maggiore della chiave che era stata eliminata. Quando la nuova chiave è uguale alla chiave che era stata eliminata. Quando la chiave eliminata è la più grande dell'heap. Quando la nuova chiave è minore della chiave che era stata eliminata. 034.09 Quale condizione deve essere soddisfatta per procedere con lo scambio di un nodo con il suo padre in una procedura di modifica chiave in una min-heap?. Il nodo padre ha un valore superiore a quello del nodo corrente. Il nodo padre ha un valore uguale a quello del nodo corrente. Il nodo padre ha un valore inferiore a quello del nodo corrente. Tutti i nodi hanno lo stesso valore. 034.10 Qual è il risultato dell'operazione "HeapEditKey" quando il nuovo valore è maggiore del valore originale in una min-heap?. Il valore viene aggiornato e si applica "heapify" se necessario. Il valore viene aggiornato e si sale verso l'alto a controllare il padre se necessario. Non si aggiorna il valore. Viene generato un errore. 034.11 Qual è il primo passo nella costruzione di una heap da un array non ordinato?. Applicare ricorsivamente "heapify" a partire dall'ultima chiave. Applicare ricorsivamente "heapify" a partire dal nodo padre dell'ultima chiave. Ordinare l'array in modo crescente. Applicare ricorsivamente "heapify" a partire dalla radice. 034.12 Qual è la condizione per scambiare un nodo con il suo padre durante l'inserimento in una min-heap?. Il nodo ha un valore inferiore a quello del padre. Il nodo ha un valore maggiore a quello del padre. Il nodo non ha figli. Il nodo ha un valore uguale a quello del padre. 034.13 Quando si termina l'operazione di "heapify" in una min-heap?. Quando tutti i nodi sono stati scambiati. Quando il nodo corrente diventa la radice. Quando l'heap diventa pieno. Quando il nodo corrente non ha più nodi figli o ha raggiunto una posizione che rispetta la proprietà dell'heap. 035.01 Qual è il risultato finale dell'heap sort?. Un array ordinato in modo crescente. Un array dove tutti gli elementi sono uguali. Un array ordinato in modo decrescente. Un array suddiviso in due parti di ugual lunghezza. 035.02 Qual è lo scopo principale di un algoritmo di heap sort?. Unire due array in uno. Ordinare un array. Contare gli elementi di un array. Invertire l'ordine degli elementi di un array. 035.03 Quale struttura dati è generalmente più efficiente per implementare una coda con priorità?. Tavola hash. Albero binario. Heap. Array. 035.04 Tipicamente, in una coda di priorità: Un valore più basso indica una priorità più alta. Nessuna delle precedenti. Un valore più basso indica una priorità più bassa. Un valore più alto indica una priorità più alta. 035.05 Che cosa rappresenta un max-heap nel contesto dell'heap sort?. Una collezione organizzata in modo che il valore massimo sia l'elemento radice. Una lista di elementi in ordine crescente. Un array dove ogni elemento è minore del suo predecessore. Una collezione organizzata in modo che il valore massimo sia l'elemento foglia. 035.06 Cosa succede all'elemento massimo in un max-heap durante l'heap sort?. Non viene toccato. Viene rimosso e collocato nella prima posizione dell'array. Viene rimosso e collocato nell'ultima posizione corrente dell'array. Viene scambiato con un elemento casuale. 035.07 Che cosa determina la priorità in una coda con priorità?. La posizione dell'elemento nella coda. La dimensione della coda. Il tipo di dati degli elementi della coda. Il valore associato ad ogni elemento nella coda. 035.08. Qual è il computazionale della funzione PopMax usata nell'heap sort?. O(log(n)). O(n^2). O(n log n). O(n). 035.09. Che tipo di valori possono essere usati come priorità in una coda con priorità?. Solo caratteri alfanumerici. Solo numeri interi. Qualsiasi valore appartenente ad un insieme totalmente ordinabile. Solo valori booleani. 035.10. Come determina l'heap sort la posizione di un elemento nell'array ordinato?. Posizionando gli elementi a intervallo costante. Posizionando gli elementi estratti dal max-heap così come estratti dall'inizio alla fine dell'array. Posizionando tutti gli elementi uguali vicini. Posizionando gli elementi estratti dal max-heap in ordine invertito dalla fine all'inizio dell'array. 036.01. Cosa indica il grado di un nodo in un grafo non orientato?. Il numero di fratelli di quel nodo. Il numero massimo di percorsi da quel nodo. Il numero di archi connessi a quel nodo. La lunghezza massima di un cammino dal nodo. 037.01. Quali sono le due principali strategie di visita di un grafo?. Depth First Search (DFS) e Breadth First Search (BFS). Linear search e binary search. Sequential access e direct access. Random walk e greedy search. 037.02. In che modo le liste di adiacenza gestiscono la verifica dell'esistenza di un arco?. Controllando una hash table per un match diretto. Verificando la presenza di un valore non-zero in una matrice. Scorrendo la lista fino al termine o al ritrovamento dell'arco. Usando una ricerca binaria nella lista ordinata. 037.03. Come è rappresentato un nodo di un grafo in un'implementazione con lista di adiacenza?. Come una serie di nodi isolati. Come una matrice simmetrica. Come una lista di array. Come un array di liste. 037.04. Qual è il costo di verifica dell'esistenza di un arco di un grafo in una matrice di adiacenza?. Costante. Variabile con il numero di archi. Variabile con il numero di nodi. Proporzionale alla somma nodi e archi. 037.05. Che cosa definisce un albero di copertura in un grafo?. Una raccolta di percorsi più brevi dal nodo iniziale. Un sottoinsieme di nodi del grafo. Un insieme di tutti i nodi e tutti gli archi. Un sottoinsieme che copre tutti i nodi con il minimo numero di archi. 037.06. Qual è il principale svantaggio dell'uso di una matrice di adiacenza per grafi molto sparsi?. Utilizzazione inefficiente della memoria. Difficoltà nel trovare i vicini. Impossibilità di rappresentare archi pesati. Alto costo computazionale per l'aggiunta di nodi. 037.07. Quanto spazio occupa una matrice di adiacenza per un grafo molto sparso?. Tutto lo spazio allocato per la matrice. Una quantità di memoria minore rispetto al numero di nodi. Dipendente esclusivamente dal numero di archi. Solo lo spazio per gli archi presenti. 037.08. Qual è il costo per trovare tutti i vicini di un nodo in una matrice di adiacenza?. Non ha un costo, è immediato. Costa scandire una riga intera della matrice. Costa verificare ogni nodo individualmente. Dipende dalla posizione del nodo nella matrice. 037.09. Perché un grafo non orientato ha una matrice di adiacenza simmetrica?. Gli archi sono sempre unidirezionali. Gli archi sono bidirezionali. Gli archi possono avere più di due nodi. La matrice rappresenta solo nodi non collegati. 037.10. Che cosa si intende per "costo constante" in riferimento all'analisi della complessità di operazioni su grafi?. Il tempo necessario non dipende dalla dimensione del grafo. Il tempo varia in base al tipo di operazione. Il costo è inversamente proporzionale al numero di nodi. Il costo aumenta linearmente con la dimensione del grafo. 037.11. Quale struttura dati utilizza un puntatore per rappresentare un grafo?. Matrice di adiacenza. Array semplice. Lista di adiacenza. Hash table. 037.12. Qual è il risultato di una visita in ampiezza su un grafo?. Visita tutti i nodi raggiungibili da un nodo sorgente. Visita solo i nodi che non formano cicli. Visita tutti i nodi del grafo. Visita solo i nodi a profondità limitata. 037.13 Cosa indica un valore differente da zero in una matrice di adiacenza?. Non c'è connessione tra i nodi. La distanza esatta tra i nodi. Esiste un arco tra due nodi. I nodi sono lo stesso. 037.14. Qual è uno degli scopi di memorizzare l'albero di copertura di un grafo?. Ridurre il numero di nodi nel grafo. Aumentare la capacità di storage del grafo. Velocizzare i futuri accessi al grafo. Modificare la struttura del grafo. 037.15. Come funziona una visita in profondità su un grafo orientato?. Ritorna immediatamente al nodo di origine dopo la visita di un nodo. Continua la visita di nuovi nodi cercando di allontanarsi sempre più dal nodo di origine. Visita solo i nodi su un unico livello. Ignora i nodi non direttamente collegati al nodo iniziale. 037.16. Quale vantaggio offrono le liste di adiacenza rispetto alle matrici di adiacenza?. Maggiore velocità nel trovare i vicini. Supporto nativo per la parallelizzazione delle operazioni. Più facile da implementare. Minore uso di memoria per grafi sparsi. 037.17. Qual è il beneficio di utilizzare una strategia BFS in un grafo?. Riduce il tempo necessario per controllare i cicli. È efficace per grafi densi. Permette di trovare il percorso più breve in grafi non pesati. Minimizza il numero di nodi visitati. 037.18. In DFS, cosa avviene se un nodo non ha più archi che portano a nodi non visitati?. Il nodo viene ignorato per il resto della visita. Si salta indietro al nodo precedente. La visita termina immediatamente. Il nodo viene visitato nuovamente. 038.01. Cosa significa se un grafo contiene almeno un arco di tipo backward edge?. È completo. È aciclico. È ciclico. È bipartito. 038.02. Che tipo di archi possono formare cicli in un algoritmo DFS?. Cross edges. Forward edges. Tree edges. Backward edges. 038.03. Che tipo di edge è (u, v) se "start[u] <start[v]" e "end[u] = 0" in un DFS?. Tree edge. Cross edge. Forward edge. Backward edge. 038.04. Cosa indica un "cross edge" in un DFS?. Collega nodi che non sono né antenati né discendenti. Collega un nodo ad un suo antenato. Collega un nodo ad un suo discendente. Forma un ciclo. 038.05. Un arco di quale tipo indica che il grafo non è aciclico?. Cross edge. Backward edge. Forward edge. Tree edge. 038.06. Che cosa indica un forward edge in un DFS?. Collega un nodo ad un suo discendente già esplorato. Indica che il grafo è aciclico. Collega un nodo ad un suo antenato. Collega un nodo ad un non discendente non visitato. 038.07. Cosa rappresenta il "time" in DFS?. Un contatore per gli archi visitati. Un identificatore per il tipo di archi. Un marcatore per nodi completati. Un indicatore temporale per tracciare l'ordine di visita. 038.08. Qual è lo scopo di classificare gli archi in un algoritmo DFS?. Per contare il numero totale di nodi. Per eliminare i nodi non necessari dal grafo. Per analizzare la struttura del grafo, come presenza di cicli. Per ridurre il tempo di esecuzione del DFS. 038.09. Un grafo è detto ciclico se?. Contiene almeno un backward edge. Tutti i suoi nodi sono raggiungibili da un singolo nodo. Non ha nessun cross edge. Ha solo forward edges. 039.01. Come si può descrivere il ruolo di un nodo pozzo in un DAG?. Un nodo che non ha archi uscenti. Un nodo che controlla il flusso dei dati nel grafo. Un nodo situato sempre al livello superiore del grafo. Un nodo con il massimo numero di archi entranti. 039.02.Che dettaglio è critico per l'ordinamento topologico di un DAG?. Gli archi vanno sempre da una sorgente a un pozzo. I nodi devono essere esaminati in ordine numerico. Ogni nodo deve avere almeno un arco. Gli archi devono essere bi-direzionali. 039.03. Perché è importante rimuovere un nodo e i suoi archi uscenti in un algoritmo di ordinamento topologico?. Per diminuire la complessità complessiva del grafo. Per ridurre il numero di iterazioni necessarie. Per aumentare la velocità dell'algoritmo. Per prevenire cicli e mantenere la direzionalità. 039.04. Perché si usa DFS per determinare componenti connesse in grafi non orientati?. Per accelerare la creazione di nuovi nodi e archi. Perché visita tutti i nodi di un grafo, anche quelli non connessi. Perché propaga un identificatore unico attraverso nodi raggiungibili. Per limitare la ricerca a parti specifiche del grafo, fornendo l'elenco di nodi da visitare. 039.05.Che impatto ha la scelta del nodo iniziale nel risultato di un ordinamento topologico?. I nodi successivi non influenzano l'ordinamento. L'ordinamento è sempre unico. Possono verificarsi diversi ordinamenti. Il nodo iniziale rimane invariato in ogni ordinamento. 039.06. Qual è l'obiettivo principale dell'uso di una pila nell'algoritmo di ordinamento topologico basato su DFS?. Memorizzare i nodi in ordine di visita finale. Creare copie di ogni nodo per backup. Contare il numero di archi per ogni nodo. Determinare il nodo con più archi entranti. 039.07. Quando si utilizza l'algoritmo DFS per calcolare le componenti connesse in un grafo, cosa si assegna ad ogni nodo?. Un identificatore univoco della componente connessa. Un valore booleano per segnare la visita. Il numero totale di archi adiacenti. La profondità del nodo nell'albero di ricerca. 039.08. Che proprietà hanno le sorgenti di un DAG?. Non hanno archi entranti. Hanno il massimo numero di archi entranti. Non hanno archi uscenti. Sono sempre al centro del grafo. 039.09. Nell'algoritmo di ordinamento topologico, che azione si compie dopo aver aggiunto un nodo all'ordinamento?. Invertire gli archi del nodo. Marcarlo come non visitato. Duplicare il nodo per controlli futuri. Rimuovere il nodo e i suoi archi uscenti dal grafo. 039.10.Come si verifica la connettività in un grafo non orientato?. Misurando la distanza tra i nodi più distanti. Cercando un percorso che collega ogni coppia di nodi. Verificando la parità del numero di archi. Contando il numero di cicli presenti nel grafo. 041.01. Per cosa è specificato il termine "rilassamento" nell'algoritmo di Dijkstra?. Aumento del tempo di processamento. Reset delle priorità in coda. Aggiornamento del costo per raggiungere un nodo, se trovato un percorso più economico. Diminuzione del numero di nodi nel cammino. 041.02. Cosa determina la funzione che pesa gli archi in un grafo?. La distanza fisica tra due nodi. Il tempo di percorrenza totale di un cammino. Il costo per attraversare un arco. Il numero di nodi tra due punti. 041.03. Qual è la strategia operativa di una visita in ampiezza (BFS) di un grafo?. Escludere nodi con archi a peso negativo. Visitare prima tutti i vicini di un nodo. Seguire il percorso con il maggior numero di nodi. Visitare il nodo più lontano per primo. 041.04. Quando viene aggiornata la priorità di un nodo nell'algoritmo di Dijkstra?. Dopo un numero predefinito di iterazioni. Quando tutti i nodi sono stati visitati. Quando viene trovato un percorso con un costo inferiore per quel nodo. Quando il nodo è al primo posto nella coda. 041.05. Qual è il comportamento iniziale dei costi per raggiungere i nodi nell'algoritmo di Dijkstra?. I costi sono posti a un valore negativo. I costi sono posti a zero. I costi sono posti ad un valore molto alto. Non vengono assegnati costi iniziali. 041.06. Qual è la condizione per i pesi degli archi nell'uso dell'algoritmo di Dijkstra?. I pesi devono essere tutti positivi. I pesi devono incrementare per ogni nodo visitato. I pesi devono essere tutti uguali. I pesi possono essere negativi se compensati. 041.07. Cosa viene mantenuto per ogni nodo nell'algoritmo di Dijkstra?. La lista di tutti i nodi visitabili. Un costo per raggiungere quel nodo e il padre del nodo. Il peso medio degli archi uscenti. Il numero di archi per raggiungerlo. 041.08. Cosa accade a un nodo una volta che è stato esplorato nell'algoritmo di Dijkstra?. Viene automaticamente aggiunto nuovamente in coda. Non vengono valutati percorsi alternativi per quel nodo. Il suo costo viene reimpostato a infinito. Viene eliminato dal grafo. 041.09. Che strumento viene usato nell'algoritmo di Dijkstra per mantenere i nodi organizzati secondo il loro costo?. MaxHeap in una lista. Grafo bipartito. Matrice di adiacenza. MinHeap nella coda di priorità. 041.10. Quale struttura dati è spesso usata per memorizzare nodi in una visita BFS?. Pila. Coda. Lista linkata. Matrice. 041.11. Qual è il risultato finale dell'algoritmo di Dijkstra?. Lista di tutti i nodi non visitati. Tempo totale di esecuzione dell'algoritmo. Mappa di tutti i cammini possibili. Cammino minimo per raggiungere tutti gli altri nodi da un nodo sorgente. 041.12. In quali applicazioni può essere rilevante determinare il cammino minimo in un grafo?. Analisi di visualizzazioni grafiche. Sviluppo di giochi digitali. Monitoraggio di attività sportive. Navigatore stradale e instradamento di pacchetti. 041.13. Cosa viene minimizzato nel cammino minimo tra due nodi in un grafo?. La somma dei pesi degli archi. La distanza fisica totale. Il numero degli archi. Il numero di volte che un nodo viene visitato. 041.14. In che tipo di struttura vengono inseriti i nodi nell'algoritmo di Dijkstra?. Coda di priorità. Stack semplice. Coda semplice. Lista semplice. 041.15. Come definiresti la strategia FIFO in una visita in ampiezza?. I nodi sono visitati solo dopo una certa soglia di tempo. I nodi sono visitati in ordine casuale. I nodi raggiunti per primi sono visitati per primi. I nodi sono visitati in base al peso degli archi. 041.16.Quale operazione viene effettuata quando si trova un percorso con costo inferiore in Dijkstra?. Eliminazione del nodo dalla coda. Rilassamento del nodo. Incremento del costo di percorso. Reset dei costi di tutti i nodi. 042.01. Che scopo ha la procedura 'path compression' in una struttura dati union-find?. Crea nuove radici per ogni nodo. Aumenta l'altezza degli alberi per una ricerca più veloce. Distribuisce uniformemente i nodi negli alberi. Riduce l'altezza degli alberi avvicinando i nodi alla radice. 042.02. Qual è il risultato di 'find' se il nodo x ha come padre se stesso in una struttura di union-find?. Ritorna x. Ritorna null. Ritorna il padre di x. Fallisce con un errore. 042.03.Quando si aggiorna il 'rango' in una struttura di union-find?. Non si aggiorna mai. Ogni volta che si uniscono due set, anche se di rango diverso. Quando si uniscono due set di uguale rango. Quando si aggiunge un nuovo set. 042.04. Come è definito un insieme di sottoinsiemi disgiunti in una struttura di union-find?. Che esistono duplicati tra i sottoinsiemi. Che ogni sottoinsieme contiene tutti gli elementi. Tale che nessun sottoinsieme ha elementi comuni con un altro. Che tutti i sottoinsiemi sono combinati in un unico insieme. 042.05. Qual è la complessità ammortizzata dell'operazione 'find' in una struttura di union-find con path compression?. O(n). O(1). O(alpha(n)). O(alpha(n^2)). 042.06. Come è rappresentata una struttura di union-find?. Come una lista di elementi. Come una foresta di alberi. Come un singolo albero. Come una matrice di adiacenza. 042.07. Come funziona l'operazione 'union' in una struttura di union-find?. Unisce due set diversi, solo se non hanno lo stesso padre. Divide un set più grande in due. Sposta tutti i nodi in un unico set. Unisce due set diversi, anche se hanno lo stesso padre. 042.08. Qual è il principale beneficio dell'aggiornare la procedura 'find' mediante path compression?. Riduce il numero di set nella struttura. Semplifica la struttura dati eliminando i ranghi. Riduce il costo delle union successive. Incrementa l'efficienza delle ricerche successive. 042.09. Qual è l'elemento restituito dalla primitiva 'Find' in un union-find?. L'elemento più grande dell'insieme. L'elemento più piccolo dell'insieme. Il rappresentante dell'insieme a cui appartiene il nodo. Il numero totale di elementi nell'insieme. 042.10. Che tipo di costo si ottiene nei find successivi collegando tutti i nodi direttamente alla radice con il path compression in union-find?. Costo lineare O(n). Costo quadratico O(n^2). Costo logaritmico O(log(n)). Costo costante O(1). 042.11. Qual è il primo passo nell'operazione 'MakeSet' in un union-find?. Unire tutti gli elementi in un unico set. Assegnare ad ogni elemento se stesso come padre. Creare un albero che contiene tutti gli elementi. Assegnare a tutti gli elementi il rango zero. 042.12. Che impatto ha l'uso di path compression sull'altezza degli alberi in union-find?. Aumenta l'altezza degli alberi. Elimina completamente gli alberi dalla struttura. Riduce l'altezza degli alberi. Mantiene l'altezza degli alberi invariata. 042.13. Nell'implementazione di 'find' nella struttura dati union-find, che succede se il nodo 'x' è la radice?. Il rango del nodo 'x' è automaticamente incrementato. Viene restituito 'x' come risultato. Il nodo 'x' è eliminato dalla struttura. La funzione va in loop infinito. 042.14. Che accade al rango di un set quando due set con rango uguale sono uniti in union-find?. Il rango diminuisce di 1. Il rango viene resettato a zero. Il rango rimane invariato. Il rango aumenta di 1. 042.15. Qual è il costo di un'operazione 'find' nel caso peggiore senza ottimizzazioni?. O(1). O(log(n)). O(alpha(n)). O(n). 042.16. Che rappresenta il 'rango' in una struttura di union-find?. La profondità massima dell'albero. Il numero totale di alberi nella foresta. Una stima dell'altezza dell'albero. Il numero totale di nodi nell'albero. 043.01. Come funziona l'algoritmo di Kruskal per trovare un minimum spanning tree (MST)?. Ordina gli archi per peso crescente e li seleziona evitando cicli fino a connettere tutti i nodi. Inizia da un nodo e a ogni passo aggiunge l'arco più leggero che collega un nodo all'MST. Ordina i nodi per peso decrescente e li seleziona finché non compaiono tutti. Utilizza una ricerca profonda per valutare ogni possibile MST. 043.02. In che modo l'algoritmo greedy procede nella risoluzione di problemi?. Scegliendo l'opzione che sembra migliore in quel momento rivedendo la scelta poi. Consultando una base di dati di soluzioni note. Esaminando tutte le possibili alternative prima di fare una scelta. Scegliendo l'opzione che sembra migliore in quel momento senza tornare indietro. 043.03. Che tipo di problematica risolve il calcolo dell'MST in un grafo?. Organizzare i nodi in gruppi basati sui loro pesi. Calcolare il percorso più breve per ogni nodo. Minimizzare il numero di nodi nel grafo. Trovare l'albero di copertura con peso minimo dei collegamenti. 043.04. Quale struttura dati utilizza l'algoritmo di Kruskal per gestire i gruppi di nodi?. Pila. Heap. Array dinamico. Disjoint set. 043.05. Che cosa significa che un problema ha una 'sottostruttura ottima'?. Ogni soluzione può essere suddivisa in componenti indipendenti. Una soluzione ottima al problema contiene soluzioni ottimali ai sottoproblemi. Il problema può essere rappresentato efficacemente in una struttura ad albero. Le soluzioni possono essere ottenute solo attraverso iterazioni multiple. 043.06. In quale tipo di problemi è efficace impiegare un algoritmo greedy?. Problemi di simulazione. Problemi di ottimizzazione. Problemi di ricerca. Problemi booleani. 043.07. Cosa caratterizza la tecnica di programmazione greedy?. La scelta di soluzioni basate su probabilità. L'utilizzo di feedback dai passi precedenti per correggere la strada. La costruzione incrementale della soluzione scegliendo l'opzione di costo minimo ad ogni passo. L'analisi completa di tutte le possibili soluzioni. 043.08. Cosa accade se nel problema dei tagli di monete, alcuni tagli non permettono di raggiungere il valore esatto del resto?. L'algoritmo risolve automaticamente il problema aggiustando i tagli. L'algoritmo si ferma e chiede all'utente di cambiare i tagli. Ogni moneta viene utilizzata una sola volta. L'algoritmo greedy potrebbe non fornire una soluzione ottimale. 043.09. Per quale motivo l'algoritmo greedy potrebbe non essere appropriato in alcuni problemi di ottimizzazione?. Perché funziona solo con numeri interi. Perché non considera le conseguenze a lungo termine delle scelte fatte. Perché è troppo veloce e trascura dettagli importanti. Perché richiede troppa memoria per essere effettivo. 043.10. Qual è l'obiettivo principale di un algoritmo che risolve il problema del Minimum Spanning Tree (MST)?. Minimizzare il numero di archi nel sottografo. Massimizzare la somma dei pesi degli archi nel sottografo selezionato. Minimizzare la somma dei pesi degli archi nel sottografo selezionato. Massimizzare il numero di nodi nel sottografo. 043.11. Qual è il principio operativo dell'algoritmo di Prim?. Ordina gli archi per peso crescente e li seleziona evitando cicli fino a connettere tutti i nodi. Inizia da un nodo e a ogni passo aggiunge l'arco più leggero che collega un nodo all'MST. Elimina archi fino a creare l'albero di copertura minima. Utilizza una ricerca per profondità per visitare ogni nodo. 043.12. Qual è una limitazione degli algoritmi greedy?. Non garantiscono sempre la soluzione globale ottimale, ma solo quella locale. Richiedono sempre molto tempo di calcolo. Sono inapplicabili ai problemi con molti dati. Richiedono l'uso di tecnologie avanzate. 043.13. Quale fattore rende un problema appropriato per utilizzare la tecnica greedy?. La soluzione di un sottoproblema potrebbe essere contenuta nella soluzione ottima del problema principale. La soluzione di un sottoproblema è sempre contenuta nella soluzione ottima del problema principale. Non ci sono particolari vincoli, si può sempre usare la tecnica greedy per risolvere un problema. Il problema è scomponibile in sottoproblemi risolvibili ricorsivamente. 043.14. Quale fattore rende un algoritmo appropriato per utilizzare la tecnica greedy?. Il problema richiede una soluzione che cambi dinamicamente con il tempo. Il problema deve essere visualizzato graficamente per essere compreso. Il problema supporta la scelta greedy, permettendo scelte ottimali locali che soddisfano la soluzione globale. Il problema deve essere risolto solo una volta senza necessità di iterazioni. 043.15. Quando un algoritmo greedy è considerato ottimale?. Quando sono necessarie più iterazioni per trovare una soluzione. Quando il problema può essere risolto solo con metodi numerici complessi. Quando il problema ha una sottostruttura ottima. Quando la soluzione finale non include la soluzione di un sottoproblema. 044.01. Quante scelte sono disponibili per ogni oggetto nel problema dello zaino 0-1?. 4 (includere, non includere, testare o ignorare). 1 (solo includere l'oggetto). 3 (includere, non includere, o includere parzialmente). 2 (includere o non includere l'oggetto). 044.02. Quale azione viene intrapresa se il nuovo valore dello zaino, calcolato con un oggetto, è superiore a quello precedentemente registrato?. Viene aumentato il numero totale di oggetti. Il valore dello zaino viene diminuito. L'oggetto viene escluso. L'oggetto viene incluso nella selezione finale. 044.03. Qual è lo scopo principale del problema dello zaino 0-1?. Massimizzare il numero di oggetti. Minimizzare il valore trasportabile. Massimizzare il valore trasportabile non superando la capacità di peso. Minimizzare il peso degli oggetti. 044.04. Nella soluzione con programmazione dinamica del problema dello zaino 0-1, come si determina se inserire un oggetto?. Il valore nella matrice si riduce rispetto alla riga precedente. Il valore nella matrice aumenta rispetto alla riga precedente. Nessuna delle precedenti. Il valore nella matrice rimane invariato rispetto alla riga precedente. 045.01. Quando è utile la rappresentazione con indirizzamento diretto in una tabella hash?. Se tutte le chiavi sono numeriche e grandi. Per evitare del tutto il calcolo di hash. Quando l'universo delle chiavi è piccolo. Quando l'universo delle chiavi è grande. 045.02. Cosa garantisce la 'uniformità semplice' in una funzione hash?. Che i valori di hash siano calcolati in O(1). Che non ci siano mai collisioni. Che una funzione restituisca lo stesso indice per ogni chiave. Che ogni chiave abbia la stessa probabilità di raggiungere ogni indice. 045.03. Per quale motivo è vantaggioso scegliere un numero primo come dimensione della tabella nella tecnica della divisione?. Per avere più spazio d'archiviazione. Per ridurre il tempo di calcolo della funzione hash. Per facilitare l'uso di chiavi stringa. Evita allineamenti che potrebbero aumentare il numero di collisioni. 045.04. Qual è la funzione del metodo dell'estrazione nella creazione di funzioni hash?. Dividere i bit per un numero primo. Comprimere tutti i bit in un unico valore. Moltiplicare i bit per un numero primo. Estrarre un sottoinsieme di bit dalla rappresentazione binaria della chiave. 045.05. Come può essere rappresentata una chiave stringa in una tabella hash?. Trasformandola direttamente in un valore hash senza conversioni. Trasformandola in un valore numerico tramite la rappresentazione binaria ASCII dei caratteri. Utilizzando solo il primo carattere della stringa. Usando la lunghezza della stringa come chiave. 045.06. Che proprietà deve avere una funzione hash per essere considerata buona?. Deve restituire pochi valori di hash. Deve poter essere calcolata in un tempo O(1) e distribuire in modo non uniforme i valori delle chiavi. Deve essere facile da calcolare e distribuire in modo uniforme i valori delle chiavi. Deve essere difficile da calcolare e distribuire in modo uniforme i valori delle chiavi. 045.07. Quale di queste è una problematica che si ha se l'universo delle chiavi U è molto grande e si usano tabelle hash a indirizzamento diretto?. Aumenta il numero di collisioni. I valori sono distribuiti male. Si utilizza molta memoria. Il tempo di accesso aumenta. 045.08. Qual è la complessità computazionale dell'operazione di inserimento in una tabella hash a indirizzamento diretto?. O(1). O(n^2). O(log n). O(n). 045.09. Qual è il principale svantaggio dell'uso di un array con indirizzamento diretto per l'hashing se U è grande?. Riduzione del tempo di calcolo della funzione hash. Aumento del numero di collisioni, riducendo l'efficienza durante l'accesso in lettura. L'occupazione ingiustificata di memoria se il numero di elementi effettivamente presenti è basso. Incremento del tempo di accesso sia in lettura che in scrittura. 047.01. Che risultato si aspetta quando si cerca un elemento mai aggiunto in un bloom filter?. Un risultato di AND bit a bit che è uguale alla signature. Una risposta indefinita. Un errore di sistema. Un risultato di AND bit a bit che differisce dalla signature. 047.02. Quale operazione bit a bit nega ogni bit in C?. &. ~. |. ^. 047.03. Qual è la complessità spaziale di un bloom filter?. O(m^2) bit. O(log m) bit. O(mk) bit. O(m) bit. 047.04. Quale operazione è usata per aggiornare il valore di S in un bloom filter dopo aver calcolato la signature di un elemento?. Shift a destra. AND bit a bit. XOR bit a bit. OR bit a bit. 047.05. Che cosa indica un 'falso positivo' in un bloom filter?. Un elemento indicato come assente che è effettivamente assente. Un elemento indicato come presente che è effettivamente presente. Un elemento è indicato come presente quando non lo è. Un elemento è indicato come assente quando è presente. 047.06. Qual è la strategia di inserimento tipica in un bloom filter per un nuovo elemento?. Comprimere l'array per fare spazio. Inserire fisicamente l'elemento nell'array. Aggiornare l'array di bit basandosi sulla signature calcolata. Aggiungere l'elemento alla fine dell'array. 047.07. Cos'è il parametro m in un bloom filter?. Il numero di bit usati nell'array S. Il numero di funzioni hash utilizzate. La dimensione del bucket. Il numero di elementi nell'array. 047.08. Qual è la finalità principale dell'utilizzo di un bloom filter?. Aumentare lo spazio di archiviazione disponibile. Eliminare completamente la possibilità di falsi positivi. Garantire la sicurezza totale dei dati. Effettuare ricerche efficienti con una occupazione di memoria ridotta. 047.09. Che tipo di struttura dati è un bloom filter?. Deterministica. Statica. Relazionale. Probabilistica. 047.10. Che operazione si fa per aggiungere un nuovo elemento in un bloom filter?. Inserire l'elemento in testa alla lista. Generare un hash crittografico. Generare una signature e impostare i bit indicati a 1. Impostare tutti i bit a 0. 047.11. Quando un bloom filter può dire che un elemento è sicuramente non presente?. Quando l'OR bit a bit tra la signature dell'elemento e S è diverso alla signature stessa. Quando l'OR bit a bit tra la signature dell'elemento e S è uguale alla signature stessa. Quando l'AND bit a bit tra la signature dell'elemento e S è diverso dalla signature stessa. Quando l'AND bit a bit tra la signature dell'elemento e S è uguale dalla signature stessa. 047.12. Quale condizione porta a un falso positivo in un bloom filter?. Non avere collisioni di signature. Avere tutte le signature diverse tra loro. Avere una signature unica per ogni elemento. Ottenere la stessa signature per combinazione di signature già presenti. 047.13. Qual è il motivo per usare più funzioni hash in un bloom filter?. Aumentare la probabilità di falsi negativi. Aumentare lo spazio di memoria usato. Ridurre la probabilità di falsi positivi. Ridurre la probabilità di falsi negativi. 047.14. Cosa rappresenta il valore S in un bloom filter?. Il valore di soglia per i falsi positivi. L'array di bit che tiene traccia degli elementi aggiunti. Il numero di funzioni hash utilizzate. Il numero totale di elementi nella struttura dati. 047.15. Cosa succede se l'AND bit a bit tra la signature sig(x) e S è uguale alla signature?. L'elemento potrebbe essere presente. L'elemento è sicuramente assente. Non si può determinare nulla. L'elemento è sicuramente presente. 047.16. Quali sono i costi temporali per ricerca e inserimento in un bloom filter?. O(log n), dove n è il numero di elementi nell'array. O(1), tempo costante. O(k), dove k è il numero di funzioni hash utilizzate. O(n), dove n è il numero di bit. 047.17. Qual è l'approccio di ricerca in un bloom filter per un elemento?. Ordinare l'array e fare una ricerca binaria. Scansionare linearmente l'array S. Cercare l'elemento con una funzione hash. Calcolare la signature e fare l'AND bit a bit con S. 047.18. In un bloom filter, che cosa succede se il risultato dell'AND bit a bit tra la signature di un elemento e S è diverso dalla signature?. L'elemento è sicuramente presente. L'elemento sicuramente non è presente. L'elemento potrebbe non essere presente. L'elemento potrebbe essere presente. 047.19. Qual è il compito delle funzioni hash in un bloom filter?. Milgliorare la sicurezza del sistema. Generare un numero che indicherà quale bit impostare a 1. Creare un indice per velocizzare la ricerca. Decidere quali bit impostare a zero. 048.01. Come viene eseguita la stima dei conteggi in un Count-Min Sketch?. Sommando i valori dei conteggi ottenuti dall'hash dell'elemento. Prendendo il valore massimo dai conteggi ottenuti dall'hash dell'elemento. Prendendo il valore medio dai conteggi ottenuti dall'hash dell'elemento. Prendendo il valore minimo dai conteggi ottenuti dall'hash dell'elemento. 048.02. Qual è il limite principale di garanzia nell'uso di Cont-Min Sketch per la valutazione di conteggi?. Può solo sottostimare, non garantire il valore esatto. Non vi è alcun limite, fornisce sempre un conteggio esatto. Fornisce garanzie booleane di presenza. Può solo sovrastimare, non garantire il valore esatto. 048.03. Cosa succede se tutte le funzioni di hash mappano due input diversi allo stesso indice in un Count-Min Sketch?. I dati vengono corrotti. Si verifica una collisione che potrebbe causare una sovrastima. Si verifica una collisione che potrebbe causare una sottostima. Il sistema genera un avviso di errore. 048.04. Che tipo di struttura dati è il Count-Min Sketch?. Algoritmo di ordinamento. Struttura dati probabilistica. Tipo di database relazionale. Struttura dati deterministica. 048.05. Come viene incrementato il conteggio di un elemento nel Count-Min Sketch?. Tramite una funzione di hash. Inserimento in uno stack. Aggiunta diretta nell'elenco. Accodamento in una coda. 048.06. Quale operazione NON è tipicamente supportata da una struttura dati Count-Min Sketch?. Rimozione di un elemento. Incrementare un conteggio. Stimare il conteggio di un elemento. Update di un conteggio. 048.07. Qual è un possibile risultato della funzione EstimateCount in un Count-Min Sketch?. Una sovrastima del conteggio effettivo. Una stima sempre esatta. Un conteggio negativo. Una sottostima del conteggio effettivo. 048.08. Perché il Count-Min Sketch può sovrastimare il conteggio di un elemento?. Per aggiornamenti multipli simultanei. A causa di errori di arrotondamento. Per la perdita di dati. A causa delle collisioni nelle funzioni di hash. 048.09. Che cosa determina principalmente l'errore additivo massimo nel Count-Min Sketch?. La scelta delle funzioni di hash. Il numero di colonne della matrice. Il numero di righe della matrice. La frequenza di aggiornamento degli elementi. 048.10. A cosa è legata la probabilità che EstimateCount(x) superi il vero valore nel Count-Min Sketch?. Inversamente proporzionale al numero di update. Dipendente dalla grandezza dell'input. Legata al numero di funzioni di hash. Costante, indipendentemente dal numero di bit e dalle funzioni hash. 048.11. Quali elementi sono necessari per configurare un Count-Min Sketch?. Una struttura ad albero e funzioni di hash. Un array di bit e funzioni di hash. Una lista dinamica e funzioni di hash. Matrice di contatori e funzioni di hash. 048.12. Nel Count-Min Sketch a quale elemento è relativa una funzione hash?. Una singola cella della matrice di contatori. All'intera matrice di contatori. Una riga della matrice di contatori. Una colonna della matrice di contatori. 048.13. Qual è il ruolo delle funzioni di hash nel Count-Min Sketch?. Monitorano i cambiamenti nella struttura dati. Criptano i valori dei conteggi. Comprimono i dati. Indicizzano l'elemento nella matrice. 048.14. Come influisce la dimensione della matrice sulla precisione nel Count-Min Sketch?. Migliora l'efficienza del tempo di accesso. Nessun impatto sulla precisione. Più piccola è la matrice, maggiore è la velocità. Più grande è la matrice, minore è l'errore. 048.15. Qual è l'approccio generale per gestire stream infiniti di dati con il Count-Min Sketch?. Cancellare periodicamente i dati vecchi. Utilizzare molteplici database. Suddividere lo stream in blocchi. Non memorizzare direttamente gli elementi ma i loro conteggi. 048.16. In che modo il Count-Min Sketch gestisce gli errori nella stima dei conteggi?. Consentendo una sottostima ma mai una sovrastima. Utilizzando meccanismi di votazione. Eliminando automaticamente gli errori. Consentendo una sovrastima ma mai una sottostima. |





