Esame: Heap e code di priorità
Domande e risposte brevi su heap e code di priorità per prepararsi all'esame di informatica. Argomenti fondamentali e concetti chiave per studenti universitari.
Quiz(56 domande)
1. Qual è la caratteristica principale di un max heap?
Termini in questo set(56)
Fondamenti degli Heap(16)
Che cos'è un heap?
Un heap è una struttura dati ad albero che soddisfa la proprietà di heap, dove ogni nodo è maggiore (max heap) o minore (min heap) dei suoi figli.
Proprietà principale di un max heap?
In un max heap, per ogni nodo, il valore è sempre maggiore o uguale ai valori dei suoi figli.
Proprietà principale di un min heap?
In un min heap, per ogni nodo, il valore è sempre minore o uguale ai valori dei suoi figli.
Heap vs Albero binario
Un heap è un albero binario completo, ma non ogni albero binario è un heap. Gli heap rispettano specifiche proprietà di ordinamento.
Qual è l'operazione principale negli heap?
L'operazione principale è l'heapify, che mantiene la proprietà dell'heap dopo l'inserimento o l'estrazione di un nodo.
Come si rappresenta un heap in un array?
In un array, per un nodo in posizione : il figlio sinistro è in , il figlio destro in , e il padre è in .
Vero o falso: Gli heap possono avere nodi non pieni.
Vero. Gli heap non devono essere completamente pieni, ma devono mantenere la loro struttura ad albero completo.
Che cos'è l'heapify?
L'heapify è un'operazione che ripristina la proprietà di heap in un nodo e i suoi figli.
Esempio di max heap: 10, 5, 3
10 è il nodo radice. 5 e 3 sono figli. Completando l'heap: 10, 5, 3, 2.
Quale operazione rimuove il nodo radice?
L'operazione di estrazione rimuove il nodo radice e ripristina la proprietà di heap attraverso l'heapify.
Definizione di heap completo.
Un heap completo è un albero binario in cui tutti i livelli sono completamente riempiti eccetto, eventualmente, l'ultimo livello.
Quali sono le applicazioni comuni degli heap?
Ordinamento (Heap Sort), implementazioni di code di priorità, gestione della memoria.
Heap: struttura dati statica o dinamica?
Dinamica. Gli heap possono cambiare dimensione durante l'esecuzione di un programma.
Che cos'è la complessità di inserimento in un heap?
La complessità di inserimento in un heap è .
Qual è la complessità di estrazione?
La complessità di estrazione dalla cima dell'heap è .
Vero o falso: Gli heap sono sempre bilanciati.
Falso. Gli heap seguono una struttura completa ma non garantiscono un bilanciamento come gli alberi AVL.
Code di Priorità(16)
Definizione di una coda di priorità
Una struttura dati che gestisce una collezione di elementi, ciascuno con una priorità. Gli elementi con priorità più alta vengono estratti prima.
Utilizzo principale delle code di priorità
Gestione di eventi in tempo reale, pianificazione di processi nei sistemi operativi, implementazione degli algoritmi di Dijkstra e A*.
Cosa distingue una coda di priorità da una coda normale?
Una coda normale gestisce gli elementi in ordine FIFO, mentre una coda di priorità estrae gli elementi in base alla priorità assegnata.
True or False: Le code di priorità possono utilizzare heap per la loro implementazione.
Vero: Gli heap, specialmente gli heap binari, sono comunemente usati per implementare efficacemente le code di priorità.
Come si inserisce un elemento in una coda di priorità?
L'elemento viene aggiunto e poi il heap viene riordinato per mantenere la proprietà di priorità, di solito tramite una 'percolazione' verso l'alto.
Esempio di utilizzo di una coda di priorità
Gestione di processi in un sistema operativo. Processi con priorità più alta vengono eseguiti prima di quelli con priorità più bassa.
Quali sono le operazioni principali su una coda di priorità?
- Inserimento - Estrazione del massimo/minimo - Aggiornamento della priorità - Controllo della priorità
Cosa succede quando si estrae un elemento da una coda di priorità?
L'elemento con la priorità più alta viene rimosso e l'heap viene ristrutturato per mantenere la proprietà di heap.
Fill in the blank: In una coda di priorità, gli elementi vengono estratti in base alla loro ______.
priorità.
Confronto: Coda normale vs Coda di priorità
Coda normale: FIFO; Coda di priorità: estrae in base alla priorità.
Quale struttura dati è comunemente usata per le code di priorità?
Heap binario, utile per garantire operazioni logaritmiche efficienti.
Cause → Effetto: Aggiunta di un elemento con alta priorità.
Il nuovo elemento sposta gli elementi esistenti, aumentando il tempo di estrazione per quelli a bassa priorità.
Vantaggio delle code di priorità rispetto alle code normali?
Flessibilità nella gestione degli elementi in base alla loro importanza, non solo all'ordine di arrivo.
Cosa accade se due elementi hanno la stessa priorità?
L'ordine di estrazione dipende dall'implementazione specifica, ma normalmente segue l'ordine di inserimento.
Domanda: Le code di priorità possono essere implementate con array?
Sì, ma non sono efficienti come gli heap per operazioni di inserimento ed estrazione.
Esempio di priorità numerica: 5, 3, 8
Estrazione: 8 (massimo), seguito da 5 e 3.
Operazioni sugli Heap(12)
Cos'è l'operazione di inserimento in un heap?
L'inserimento in un heap comporta l'aggiunta di un nuovo elemento. Si posiziona alla fine e si effettua un "heapify up" per mantenere la struttura.
Come si estrae l'elemento massimo da un heap?
L'elemento massimo è la radice. Si sostituisce con l'ultimo elemento e si esegue un "heapify down" per ripristinare la proprietà dell'heap.
Vero o falso: Un heap è sempre bilanciato.
Falso. Un heap è completo, non necessariamente bilanciato, ma ogni livello è riempito da sinistra a destra.
Qual è la complessità dell'inserimento in un max heap?
La complessità è poiché si può dover risalire fino alla radice.
Descrivi brevemente l'operazione di aggiornamento in un heap.
L'aggiornamento implica modificare il valore di un nodo e poi eseguire un "heapify up" o "heapify down" per mantenere la struttura.
Confronta l'estrazione di un elemento da un max heap e da un min heap.
Max heap estrae il massimo, min heap estrae il minimo. Entrambi hanno complessità .
Qual è l'effetto di un 'heapify down'?
Ripristina la proprietà dell'heap dopo l'estrazione, confrontando un nodo con i figli e scambiando se necessario.
Esempio pratico: Iniziamo con 10, 20, 30 in un max heap. Aggiungiamo 25.
Heap: 30, 20, 10, 25. Si posiziona 25 e si confronta con 20, poi si scambia.
Quando si usa 'heapify up'?
Si usa durante l'inserimento o l'aggiornamento di un nodo per mantenere la proprietà dell'heap.
Qual è la complessità dell'operazione 'heapify down'?
La complessità è , poiché si può scendere fino all'ultima foglia.
Cos'è un heap completo?
Un heap completo è un albero binario in cui ogni livello, tranne l'ultimo, è pieno. L'ultimo livello è riempito a sinistra.
Fill in the blank: L'operazione di _________ ripristina la proprietà dell'heap dopo una modifica.
heapify
Applicazioni e Complessità(12)
Applicazioni degli heap nel mondo reale?
1. Gestione delle code di stampa. 2. Implementazione di algoritmi di Ordinamento. 3. Simulazioni e giochi.
Heap vs. Array: differenze?
1. Struttura dati dinamica vs. statica. 2. Accesso non sequenziale vs. sequenziale. 3. Complessità di inserimento: vs. .
Vero o falso: gli heap sono sempre bilanciati.
Falso. Gli heap non garantiscono un bilanciamento perfetto come gli alberi bilanciati.
Esempio di codice per una coda di priorità?
Utilizzo di un heap per gestire le priorità: ```python import heapq coda = [] heapq.heappush(coda, (priorità, elemento)) ```
Qual è la complessità dell'estrazione dal heap?
La complessità dell'estrazione dal heap è .
Cause ed effetti: heap in algoritmi di Dijkstra?
Causa: utilizzo di un heap per gestire i nodi. Effetto: migliora l'efficienza dell'algoritmo.
Utilizzo delle code di priorità nei sistemi operativi?
Gestione dei processi: - Scheduling - Assegnazione della CPU - Gestione delle risorse
Esempio di applicazione pratica di heap?
Gestione delle chiamate in un call center, dove le chiamate vengono servite in base alla priorità.
Vero o falso: gli heap possono essere implementati come array.
Vero. Gli heap possono essere implementati usando array, sfruttando indici per posizioni.
Qual è la complessità della costruzione di un heap?
La complessità della costruzione di un heap è .
Heap e alberi binari: somiglianze?
1. Entrambi sono strutture ad albero. 2. Heap è un albero binario completo. 3. Entrambi supportano operazioni di inserimento e cancellazione.
Come si scambia un elemento in un heap?
Scambia l'elemento con il suo genitore, ripetendo finché la proprietà dell'heap è rispettata.
Domande in questo set(56)
1. Qual è la caratteristica principale di un max heap?
2. Quale delle seguenti affermazioni descrive meglio un'applicazione pratica degli heap?
3. Qual è la definizione di una coda di priorità?
4. Qual è l'operazione che si esegue per ripristinare la struttura di un max heap dopo l'inserimento di un nuovo nodo?
5. In un min heap, cosa succede se un nodo ha un valore maggiore dei suoi figli?
6. Qual è la principale differenza tra un heap e un array?
7. Qual è un uso comune delle code di priorità?
8. Se estrai il valore massimo da un max heap, cosa succede al nodo radice?
9. Quale affermazione riguardo agli heap è corretta?
10. Vero o falso: gli heap garantiscono sempre una struttura perfettamente bilanciata.
11. Cosa differenzia una coda di priorità da una coda normale?
12. Un min heap è progettato per restituire quale tipo di valore durante l'estrazione?
13. Quale operazione viene utilizzata per mantenere la proprietà di un heap dopo l'inserimento di un nodo?
14. Qual è un esempio di utilizzo di una coda di priorità in un sistema operativo?
15. Le code di priorità possono utilizzare quali strutture dati per la loro implementazione?
16. Quale affermazione è vera riguardo alla complessità di 'heapify down'?
17. Se un heap ha 15 nodi, qual è il livello più basso che può contenere nodi?
18. Qual è la complessità temporale media per estrarre l'elemento con la massima priorità da un heap?
19. Come si inserisce un elemento in una coda di priorità?
20. Quale delle seguenti operazioni non è un modo valido per modificare un nodo in un heap?
21. Quale affermazione è falsa riguardo agli heap?
22. Quale delle seguenti affermazioni è FALSA riguardo la costruzione di un heap?
23. Cosa avviene durante l'estrazione da una coda di priorità?
24. Cosa significa un heap completo?
25. Qual è la rappresentazione di un nodo padre in un heap quando si utilizza un array?
26. Qual è una somiglianza tra gli heap e gli alberi binari?
27. Cosa significa 'percolazione' verso l'alto in una coda di priorità?
28. Se hai un max heap con elementi 40, 30, 20 e aggiungi 35, quale sarà la nuova radice?
29. Quale operazione rimuove un nodo dalla cima dell'heap?
30. Quale dei seguenti algoritmi utilizza un heap per migliorare la sua efficienza?
31. Cosa accade se due elementi nella coda di priorità hanno la stessa priorità?
32. Qual è la complessità dell'operazione di inserimento in un min heap?
33. Che cosa rappresenta l'operazione di heapify?
34. Quale delle seguenti operazioni in un heap ha complessità ?
35. Qual è un vantaggio delle code di priorità rispetto alle code normali?
36. Quando dovresti utilizzare 'heapify down'?
37. Quale delle seguenti affermazioni è corretta riguardo alla complessità di inserimento in un heap?
38. Quando si scambia un elemento in un heap, quale è il criterio principale da rispettare?
39. Quale delle seguenti affermazioni è vera riguardo le code di priorità?
40. Se un nodo in un heap viene aggiornato a un valore più alto in un max heap, cosa devi fare?
41. Qual è la complessità di estrazione della cima di un heap?
42. Quale dei seguenti è un esempio di implementazione di un heap in codice?
43. Qual è la struttura dati migliore per le operazioni di inserimento ed estrazione in una coda di priorità?
44. Quale operazione è fondamentale per mantenere le proprietà del heap dopo modifiche ai nodi?
45. Qual è la principale applicazione degli heap?
46. Quale delle seguenti affermazioni è vera riguardo la complessità di inserimento in un heap?
47. Come viene gestita una situazione in cui si aggiunge un elemento con alta priorità?
48. Se hai un max heap con radice 50 e vuoi rimuovere un nodo che ha valore 50, quale valore prenderà il nodo radice dopo la rimozione?
49. Che cos'è un heap completo?
50. Cosa succede se si tenta di estrarre un elemento da una coda di priorità vuota?
51. Qual è la differenza principale tra un max heap e un min heap?
52. Esempio di priorità numerica: 5, 3, 8. Qual è l'elemento estratto per primo?
53. Vero o falso: Gli heap sono sempre bilanciati come gli alberi AVL.
54. Quale delle seguenti operazioni NON è tipica per una coda di priorità?
55. Quale affermazione è vera riguardo alla rappresentazione di un heap?
56. Se un elemento con priorità elevata viene inserito in una coda di priorità, quale sarà l'effetto immediato?
Set correlati
Informatyka studia – Algorytmy i struktury danych
Dynamische Programmierung Prüfungsfragen
Klausur: O-Notation Landau-Symbole
Mergesort und Quicksort Laufzeit Definitionen
Halteproblem Entscheidbarkeit Klausurvorbereitung
Abitur: Komplexität grob
Sortieren einfach erklärt Karteikarten
Pumping-Lemma reguläre Sprachen Prüfungsfragen
Crea il tuo set di studio
Carica un PDF, incolla le tue note o descrivi un argomento – l'IA genera schede, quiz e altro in pochi secondi.

