• Non ci sono risultati.

Corso di “Algoritmi e Strutture Dati” 19 Settembre 2006

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di “Algoritmi e Strutture Dati” 19 Settembre 2006"

Copied!
1
0
0

Testo completo

(1)

Laurea in “Informatica”

Corso di “Algoritmi e Strutture Dati”

19 Settembre 2006

1. Tempo disponibile 180 minuti. È ammesso ritirarsi entro 90 minuti.

2. Sono ammessi al più 3 scritti consegnati tra Giugno 2006 e Febbraio 2007.

3. Non è possibile consultare appunti, libri o persone, né uscire dall’aula.

4. Per raggiungere la sufficienza occorrono almeno 3 esercizi risolti senza alcun errore.

5. Le soluzioni degli esercizi devono:

a. spiegare a parole l’algoritmo usato (anche con eventuali disegni)

b. commentare l’eventuale procedura Pascal (dettagliando il significato delle variabili)

c. giustificare la correttezza e tutti i passaggi matematici

d. dimostrare la complessità (con equazioni di ricorrenza se necessario)

1. Si valuti la complessità T(n) della seguente funzione Pascal:

function PIPPO(n: integer): integer;

var i, j: integer;

begin

for j := n - 2 to n + 4 do i := n;

if n < 17

then PIPPO := n else if n > 113

then PIPPO := 3*PIPPO(n div i) + 3*PIPPO(n div 2) + n*i else PIPPO := 3*PIPPO(n - 2) + 3*i;

end;

2. Sia dato un albero binario A implementato con puntatori, in cui ogni nodo contiene un elemento intero. Scrivere una funzione Pascal di complessità ottima che modifichi A cancellandone tutte le foglie che contengono un elemento pari.

3. In una lista L di interi, un massimo locale è un elemento maggiore sia del suo predecessore sia del suo successore. Si scriva una procedura Pascal di complessità ottima, utilizzando gli operatori visti a lezione, per modificare L in modo che contenga, nello stesso ordine, tutti e soli i massimi locali (p.e. se in input L = 3, 7, 8, 1, 4, allora in output L = 8, 4).

4. Sia dato un vettore V contenente n interi positivi distinti. Si consideri l’operatore INV(x) che calcola in tempo costante l’intero ottenuto invertendo l’ordine delle cifre di x (p.e. se x = 537, INV(x) = 735). Si scriva una procedura Pascal efficiente che verifichi se esistono in V due elementi distinti x ed y tali che y = INV(x).

5. Dato l’insieme I = {11, 3, 8, 2, 1, 9, 6, 10, 12, 5, 4, 7, 13}, indicare la sua rappresentazione mediante: (1) albero binario di ricerca con altezza minima; (2) albero binario di ricerca con altezza massima; (3) albero 2-3; (4) heap; (5) mfset.

6. Dati un insieme A, di n interi distinti, ed un intero k, si vuole decidere se esiste un sottoinsieme S di A tale che il prodotto degli elementi in S sia uguale a k. Scrivere (in pseudo- codice) un algoritmo non deterministico che richieda tempo polinomiale.

Riferimenti

Documenti correlati

Dato un albero binario in cui ogni nodo contiene un elemento intero, si descriva a parole o attraverso pseudo-codice un procedimento per individuare e cancellare tutte le foglie

Dato un albero binario si descriva a parole o attraverso pseudo-codice il procedimento di visita, evidenziando in modo dettagliato le differenze tra

Si scriva una procedura Pascal, basata sulla ricerca binaria, per individuare in tempo O(log n) l’unico intero dell’intervallo 1..n+1 che non compare in V.... Si scriva

Si scriva una procedura Pascal utilizzando gli operatori visti a lezione per le liste e se ne analizzi la complessità, assumendo che gli stessi n elementi siano memorizzati, oltre

Dato un nodo v di T, definiamo S OMMA Z ERO di v la proprietà per cui la somma degli elementi contenuti nel figlio sinistro e nel figlio destro di v, se esistono entrambi,

Si scriva la procedura Pascal I NSERTION S ORT vista a lezione per ordinare gli n elementi A[1],...,A[n] di un vettore e se ne dimostri la complessità.. Scrivere

L Insertion Sort è uno algoritmo di ordinamento molto efficiente per ordinare un piccolo numero di elementi. L idea di ordinamento è quella che potrebbe usare un persona

L’array A[p…r] viene “suddiviso” in due sotto- array “non vuoti” A[p… q] e A[q+1…r] in cui ogni elemento di A[p…q] è minore o uguale ad ogni elemento