Corso di Algoritmi e Strutture Dati

Corso di Algoritmi e Strutture Dati
Quinta Esercitazione in Laboratorio
26/05/2004
In questa esercitazione, disponibile presso il sito web
http://www.dis.uniroma1.it/~allulli/asd/0304/Eserc5/, lavoreremo con gli heap. Un oggetto
della classe Heap rappresenta un max-heap. Sono disponibili, tra gli altri, i seguenti
metodi: insert(Comparable k), getFirst(), deleteFirst(), isEmpty().
Fase 1 (25 min.)
Progettare una struttura dati che realizzi le seguenti operazioni:
insert(Comparable k),
getFirst(),
deleteFirst(),
come per le Code di Priorità
isEmpty(),
getSecond(),
deleteSecond().
restituisce/elimina il secondo elemento più grande,
assumendo che esista.
Valutare il costo computazionale di ciascuna delle operazioni.
Costruire una classe Java che realizzi la struttura specificata. Si suggerisce di estendere
la classe Heap.
Collaudare la classe con opportuni test.
Fase 2 (40 min.)
Costruire una classe Java che realizzi un min-heap, utilizzando un max-heap per la sua
rappresentazione.
Valutare il costo computazionale delle operazioni del min-heap.
Collaudare la classe con opportuni test.
Fase 3 (tempo rimanente – per casa)
Progettare una struttura dati che realizzi le seguenti operazioni:
insert(Comparable k),
getMedian(),
deleteMedian(),
isEmpty().
Per la rappresentazione della struttura si consiglia di usare congiuntamente un max-heap
e un min-heap.
Valutare il costo computazionale di ciascuna delle operazioni.
Costruire una classe Java che realizzi la struttura specificata.
Si ricorda che l’elemento mediano di un insieme {a1, a2, …, an} è, informalmente,
l’elemento che “sta in mezzo”. Più precisamente, se a 1 ≤ a2 ≤ … ≤ an, l’elemento mediano
è:

a(n+1)/2, se n è dispari;

an/2, se n è pari1.
Collaudare la classe con opportuni test
1
In effetti, se n è pari esistono due elementi mediani: il mediano inferiore an/2 e il mediano superiore an/2+1.
Noi chiamiamo mediano il mediano inferiore.