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 (A)

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) (A)</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 (B)</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) (D)</p> Signup and view all the answers

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

<p>False (B)</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] (A)</p> Signup and view all the answers

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

<p>False (B)</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. (D)</p> Signup and view all the answers

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

<p>True (A)</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). (C)</p> Signup and view all the answers

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

<p>False (B)</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

Flashcards

Foglia in un heap

Un nodo è una foglia se non ha figli.

Heapify

L'algoritmo Heapify riordina un sottoalbero dello heap per mantenere la proprietà heap.

BuildHeap

L'algoritmo BuildHeap trasforma un array in un heap massimo.

HeapSort

L'algoritmo HeapSort ordina un array costruendo un heap e poi estraendo gli elementi in ordine decrescente.

Signup and view all the flashcards

Coda di priorità con Heap

Una coda di priorità è una struttura dati per l'estrazione dell'elemento con priorità più alta. Un heap massimo può essere utilizzato per implementare una coda di priorità.

Signup and view all the flashcards

Heap massimo

Un albero binario completo (salvo l'ultimo livello) in cui ogni nodo ha un valore maggiore o uguale ai suoi figli. Usato per implementare code di priorità.

Signup and view all the flashcards

Heap minimo

Un albero binario completo (salvo l'ultimo livello) in cui ogni nodo ha un valore minore o uguale ai suoi figli. Usato per implementare code di priorità.

Signup and view all the flashcards

Rappresentazione array di un heap

Un metodo per rappresentare un heap usando un array. I nodi vengono elencati livello per livello, da sinistra a destra.

Signup and view all the flashcards

Funzione Parent(H, i)

Dato un nodo i, questa funzione restituisce l'indice del suo nodo padre (se esiste).

Signup and view all the flashcards

Funzione Left(H, i)

Dato un nodo i, questa funzione restituisce l'indice del suo nodo figlio sinistro (se esiste).

Signup and view all the flashcards

Funzione Right(H, i)

Dato un nodo i, questa funzione restituisce l'indice del suo nodo figlio destro (se esiste).

Signup and view all the flashcards

Inserimento in un heap

Un algoritmo per inserire un nuovo elemento in un heap, mantenendo la proprietà di heap.

Signup and view all the flashcards

Estrazione da un heap

Un algoritmo per estrarre l'elemento massimo (o minimo) da un heap, mantenendo la proprietà di heap.

Signup and view all the flashcards

Numero di scambi nell'inserimento

L'inserimento di un elemento in un heap viene eseguito mediante una serie di scambi. Il numero massimo di scambi necessario è pari al numero di livelli dell'albero dell'heap meno uno.

Signup and view all the flashcards

Complessità dell'inserimento

La complessità temporale dell'algoritmo di inserimento in un heap è O(log n), dove n è il numero di nodi nell'heap. Questo perché il numero di scambi è limitato dalla profondità dell'albero, che è logaritmica rispetto al numero di nodi.

Signup and view all the flashcards

Estrazione del massimo

L'estrazione del massimo in un heap implica la sostituzione del nodo radice (che contiene il valore massimo) con l'ultimo elemento dell'array. Successivamente, l'elemento appena inserito nella radice viene fatto scendere lungo l'albero, tramite scambi con i suoi figli, fino a raggiungere una posizione che mantiene le proprietà dell'heap.

Signup and view all the flashcards

Scegliere il figlio più grande

Quando si fa scendere la nuova radice nell'estrazione del massimo, a ogni livello si sceglie il figlio con il valore più grande per lo scambio. Questo garantisce che l'heap rimanga valido.

Signup and view all the flashcards

Cancellazione radice heap

L'operazione di cancellazione della radice in un heap comporta la sostituzione della radice con l'ultimo elemento dell'heap, quindi il ripristino della proprietà heap tramite l'algoritmo Heapify. Questo processo assicura che l'heap rimanga ordinato dopo la rimozione dell'elemento massimo.

Signup and view all the flashcards

Algoritmo Heapify

L'algoritmo Heapify è un algoritmo che ripristina la proprietà heap in un sottoalbero di un heap. Esso prende come input un nodo dell'heap e assicura che l'albero radicato in quel nodo soddisfi la proprietà heap (i nodi figlio sono minori o uguali al nodo padre).

Signup and view all the flashcards

Algoritmo HeapExtract

L'algoritmo HeapExtract rimuove l'elemento massimo da un heap. Sostituisce la radice con l'ultimo elemento, decresce la dimensione dell'heap e poi ripristina la proprietà heap usando Heapify.

Signup and view all the flashcards

Complessità Heapify

La complessità dell'algoritmo Heapify è O(log n), dove n è il numero di nodi nell'heap. Questo perché l'algoritmo esegue al massimo l - 1 scambi, dove l è la profondità dell'heap.

Signup and view all the flashcards

Heapsort in-place

L'algoritmo Heapsort è una sorta di algoritmo di ordinamento in-place, il che significa che esegue l'ordinamento direttamente sull'array di input senza richiedere spazio aggiuntivo per l'ordinamento.

Signup and view all the flashcards

Complessità Heapsort

La complessità dell'algoritmo Heapsort è O(n log n), dove n è il numero di elementi nell'array. Questo perché la costruzione dell'heap richiede O(n) tempo, mentre l'estrazione di n elementi dall'heap richiede O(n log n) tempo.

Signup and view all the flashcards

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

Max-Heap Quiz
7 questions

Max-Heap Quiz

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

Tree Traversal Quiz

GratifiedPearl avatar
GratifiedPearl
Binary Heaps and Heap Operations
2 questions

Binary Heaps and Heap Operations

AdventurousCoconutTree6421 avatar
AdventurousCoconutTree6421
Use Quizgecko on...
Browser
Browser