• Non ci sono risultati.

Algoritmi e Strutture Dati 16 Settembre 2015

N/A
N/A
Protected

Academic year: 2021

Condividi "Algoritmi e Strutture Dati 16 Settembre 2015"

Copied!
2
0
0

Testo completo

(1)

Algoritmi e Strutture Dati 16 Settembre 2015

Cognome . . . Nome . . . Matricola . . . .

Note

1. La leggibilit`a `e un prerequisito: parti difficili da leggere potranno essere ignorate.

2. Quando si presenta un algoritmo `e fondamentale spiegare l’idea soggiacente il suo funzionamento e motivarne la correttezza.

Domande

Domanda A (5 punti) Risolvere la ricorrenza T (n) = T (n − 2) + 2n utilizzando il metodo di sostituzione per dimostrare un limite asintotico stretto.

Domanda B (5 punti) Si consideri una tabella hash di dimensione m = 8, e indirizzamento aperto con doppio hash basato sulle funzioni h1(k) = k mod m e h2(k) = 1 + k mod (m − 2). Si descriva in dettaglio come avviene l’inserimento della sequenza di chiavi: 12, 3, 22, 14, 38.

Domanda C (5 punti) Scrivere una funzione sndmin(A) che dato in input un array A organizzato a min-heap, restituisce il successore della radice, ovvero il minimo elemento dello heap maggiore della radice. Se un tale elemento non esiste genera un errore. Assumere che A sia non vuoto e gli elementi in A siano tutti distinti.

Esercizi

Esercizio 1 (9 punti) Progettare una struttura dati per la gestione di un insieme dinamico di interi, con operazioni

• New (S) crea un insieme vuoto;

• Ins(S, x) inserisce l’elemento x nell’insieme S;

• Half (S) cancella da S i d|S|/2e elementi pi`u piccoli.

Si richiede che una qualsiasi sequenza di n operazioni venga eseguita in tempo O(n log n).

i. Specificare le strutture dati di supporto utilite e lo pseudo-codice delle operazioni suddette (questo pu`o ridursi ad una chiamata di un’operazione della struttura scelta).

ii. Dimostrare, mediante un’analisi ammortizzata della complessit`a, che una sequenza di n operazioni costa O(n log n).

(2)

Esercizio 2 (9 punti) L’ufficio postale offre un servizio di ritiro pacchi in sede su prenotazione. Il destinatario, avvisato della presenza del pacco, deve comunicare l’orario preciso al quale si recher`a allo sportello. Sapendo che gli impiegati dedicano a questa mansione turni di un’ora, con inizio in un momento qualsiasi, si chiede di scrivere un algoritmo che individui l’insieme minimo di turni di un’ora sufficienti a soddisfare tutte le richieste. Pi`u in dettaglio, data una sequenza ~r = r1, . . . , rn

di richieste, dove ri`e l’orario della i-ma prenotazione, si vuole determinare una sequenza di turni

~t = t1, . . . , tk, con tj orario di inizio del j-mo turno, che abbia dimensione minima e tale che i turni coprano tutte le richieste.

i. Formalizzare la nozione di soluzione per il problema e il relativo costo. Mostrare che vale la propriet`a della sottostruttura ottima e individuare una scelta che gode della propriet`a della scelta greedy.

ii. Sulla base della scelta greedy individuata al passo precedente, fornire un algoritmo greedy time(R, n) che dato in input l’array delle richieste r[1..n] restituisce una soluzione ottima.

iii. Valutare la complessit`a dell’algoritmo.

Riferimenti

Documenti correlati

Come si vede, nell’algoritmo cerchiamo prima di ottenere un sistema equivalente all’originale in cui tutti i coefficienti tranne al massimo uno nella prima co ; , poi, usando

L’estensione dell’omotetia S al piano proiettivo reale ha come punti fissi, oltre al punto proprio gi` a noto, tutti i punti impropri... Entrambi

– se il taglio che sto considerando e minore o uguale al resto da dare (ammissibilita), lo uso, aggiorno il resto da dare (aggiornamento della soluzione) e ripeto questa istruzione

Mettete in ordine gli eventi del programma, poi analizzateli uno alla volta rispettando quell'ordine: se l'evento in questione e il primo considerato oppure non si sovrappone

Ordinare gli eventi in base all'orario di ne, per primo quello che nisce prima, fornisce un criterio adatto, nel senso che garantisce sempre di assistere al massimo numero di

– cliccando sul bottone \Determina gli eventi cui partecipare" viene applicala la strategia di Ale Gridi che sceglie gli eventi a cui assistere in base al criterio ssato,

• Costruire un data frame da.fr che abbia come componenti un vettore numerico casuale v di lunghezza 20, una matrice casuale m con 4 colonne ed una lista i cui componenti siano

[ALBERO CROMATICO Prim] Si consideri il seguente problema: dato un grafo G = (V, E) non orientato e connesso con archi colorati, trovare un albero di copertura per G tale che il