Heap e Heapsort
26 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual è la complessità totale dell'algoritmo HeapSort per ordinare un vettore di n elementi?

  • O(n^2)
  • O(n)
  • O(n log n) (correct)
  • O(log n)
  • In un heap massimo, una foglia non può essere situata in una posizione rappresentata da 2i.

    True

    Qual è il risultato della funzione BuildHeap su un vettore V di M elementi?

    V rappresenta una heap.

    L'operazione di _____________________ rimuove dalla coda di priorità l'elemento con priorità più elevata.

    <p>DequeuePr</p> Signup and view all the answers

    Abbina le operazioni alle loro descrizioni corrispondenti:

    <p>EnqueuePr = Aggiungere un elemento alla coda di priorità DequeuePr = Estrarre l'elemento con priorità massima FrontPr = Restituire il primo elemento della coda Heapify = Ristrutturare l'heap per mantenere le proprietà.</p> Signup and view all the answers

    Qual è la complessità temporale dell'algoritmo di inserimento in un heap?

    <p>O(log n)</p> Signup and view all the answers

    L'estrazione del massimo da un heap si effettua sempre rimpiazzando la radice con l'elemento più a sinistra dell'ultimo livello.

    <p>False</p> Signup and view all the answers

    Qual è il primo passo dell'algoritmo per inserire un'etichetta in un heap?

    <p>Aggiungere l'etichetta in fondo all'array.</p> Signup and view all the answers

    L'algoritmo di inserimento prevede un ciclo che continua finché p è maggiore di ___ e H[p] è maggiore di H[Parent(H, p)].

    <p>1</p> Signup and view all the answers

    Abbina le seguenti fasi di estrazione del massimo con le loro descrizioni:

    <p>Rimpiazzamento della radice = L'elemento più a destra dell'ultimo livello sostituisce la radice. Discesa dell'elemento = L'elemento ora in radice viene fatto discendere lungo l'albero. Scelta del figlio maggiore = Si sceglie sempre il figlio con l'etichetta maggiore.</p> Signup and view all the answers

    Qual è la complessità dell'algoritmo Heapify?

    <p>O(log n)</p> Signup and view all the answers

    Il nodo contenente l'etichetta dell'ultimo nodo è sempre un heap dopo l'estrazione.

    <p>False</p> Signup and view all the answers

    Quale valore sostituisce la radice dell'heap dopo l'estrazione?

    <p>l'ultimo elemento dell'heap</p> Signup and view all the answers

    L'operazione che permette di mantenere la struttura dell'heap è chiamata ______.

    <p>Heapify</p> Signup and view all the answers

    Abbina i seguenti termini con le loro descrizioni:

    <p>HeapExtract = Rimuove l'elemento massimo da un heap Heapify = Ripristina la proprietà dell'heap Heapsort = Algoritmo di ordinamento basato sugli heap Etichetta massima = Il valore più alto in un heap</p> Signup and view all the answers

    Quale dei seguenti passaggi è corretto nell'algoritmo HeapExtract?

    <p>H ← H[H.N]</p> Signup and view all the answers

    Heapsort funziona solo se il vettore iniziale è già un heap.

    <p>False</p> Signup and view all the answers

    Cosa succede all'altezza dell'heap dopo l'estrazione?

    <p>Rimane invariata</p> Signup and view all the answers

    Quale delle seguenti affermazioni descrive correttamente un heap massimo?

    <p>Per ogni nodo, l'etichetta del genitore è maggiore dell'etichetta del nodo.</p> Signup and view all the answers

    In un heap minimo, l'etichetta del genitore è minore dell'etichetta del nodo.

    <p>True</p> Signup and view all the answers

    Qual è l'array che rappresenta l'heap massimo fornito nell'esempio?

    <p>(85, 75, 65, 45, 32, 12, 34, 5, 18, 31, 1, 10, 2)</p> Signup and view all the answers

    L'algoritmo che calcola la posizione del genitore in un heap è chiamato ___

    <p>Parent</p> Signup and view all the answers

    Abbina le operazioni con la loro descrizione corretta:

    <p>Parent = Calcola la posizione del genitore di un nodo Left = Calcola la posizione del figlio sinistro Right = Calcola la posizione del figlio destro Inserimento = Aggiunge un nuovo nodo nell'heap</p> Signup and view all the answers

    Quale delle seguenti rappresentazioni è corretta per i figli in un heap?

    <p>I figli di un nodo H[i] sono H[2i] (sinistro) e H[2i + 1] (destro).</p> Signup and view all the answers

    L'ultimo livello di un heap massimo deve essere riempito completamente da sinistra a destra.

    <p>False</p> Signup and view all the answers

    Cosa restituisce l'algoritmo Left(H, i) se il nodo H[i] non ha un figlio sinistro?

    <p>i</p> Signup and view all the answers

    Study Notes

    Heap, Heapsort, Coda di Priorità

    • Obiettivi: Sviluppo di operazioni su heap, applicazioni di heap. Argomenti: definizione di heap, inserimento, estrazione, heapsort, code di priorità.

    Definizione di Heap Massimo

    • Un albero binario etichettato con numeri interi è un heap massimo se:
      • L'albero è completo, eccetto al massimo l'ultimo livello, e l'ultimo livello è riempito da sinistra a destra.
      • Per ogni nodo (eccetto la radice), l'etichetta del genitore è maggiore dell'etichetta del nodo.

    Esempi di Heap Massimo

    • Un esempio di albero binario che rappresenta un heap massimo è fornito nel testo (85, 75, 65, 45, 32, 12, 34, 5, 18, 31, 1, 10, 2)

    Heap Minimo

    • In un heap minimo, l'etichetta del genitore è minore dell'etichetta del nodo.

    Rappresentazione degli Heap come Array

    • Gli heap vengono rappresentati con un array in cui le etichette sono elencate livello per livello.

    Operazioni su Heap

    • PARENT(H, i): Restituisce la posizione del genitore di H[i], se esiste. Se non esiste, restituisce 0.
    • LEFT(H, i): Restituisce la posizione del figlio sinistro di H[i], se esiste. Altrimenti, restituisce 0.
    • RIGHT(H, i): Restituisce la posizione del figlio destro di H[i], se esiste. Altrimenti, restituisce 0.
      • Queste operazioni usano gli indici basati su array per rappresentare albero ( 2i per figlio sinistro, 2i+1 per figlio destro, i/2 per genitore etc).

    HEAPINSERT(H, x)

    • Inserisce l'elemento x nell'heap H. L'algoritmo posiziona l'elemento alla fine dell'array, poi lo fa salire finché non rispetta la condizione di heap.
      • La complessità è O(log n) dove n è il numero di nodi nell'albero.

    HEAPEXTRACT(H)

    • Rimuove e restituisce l'elemento massimo dall'heap H. Sposta l'ultimo elemento in cima, poi lo fa scendere lungo l'albero fino a ripristinare la condizione di heap.
      • La complessità è O(log n).

    HEAPIFY(H, i)

    • Riorganizza il sottoalbero con radice in H[i] per ripristinare la condizione di heap.
      • La complessità è O(log n).

    HEAPSORT

    • Usa l'algoritmo BUILDHEAP per trasformare un array in un heap, quindi esegue ripetute estrazioni del massimo fino a che l'array non è ordinato. La complessità è O( n log n).

    Coda di Priorità con Heap

    • Una coda di priorità associa una priorità a ciascun elemento. L'estrazione restituisce l'elemento con priorità più alta. Le code di priorità possono essere implementate tramite heap.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Questo quiz tratta gli heap e le relative operazioni, come l'inserimento e l'estrazione. Verranno esplorati anche gli heap massimi e minimi, inclusa la loro rappresentazione come array e l'algoritmo Heapsort. Scopri come funzionano le code di priorità in questo contesto.

    More Like This

    Heap Data Structure Operations Quiz
    10 questions
    Tree Traversal Quiz
    60 questions

    Tree Traversal Quiz

    GratifiedPearl avatar
    GratifiedPearl
    Process Execution in Operating Systems
    10 questions
    Use Quizgecko on...
    Browser
    Browser