Lezione08 MergeSort Esercizi
Lezione08 MergeSort Esercizi
Lezione08 MergeSort Esercizi
Esercizi
22 marzo 2023
Divide et Impera
– Dividi il problema in sottoproblemi
A L G O R I T H M S
A L G O R I T H M S
Recursively sort:
as a black box
A G L O R H I M S T
A G H I L M O R S T
Mergesort
Perché funziona?
Nel caso base (n=1), un array di 1 elemento è già ordinato e l’algoritmo
correttamente non esegue nessuna operazione su di esso.
T(n) = ?
Mergesort recurrence.
n=2
T(n) =
Assorted proofs.
We will describe several ways to prove this recurrence.
First, we will solve a simplified recurrence:
T(n) = 2 T(n/2) + (n) con T(2)= (1) per n=2k
9
Relazioni di ricorrenza per alcuni algoritmi
Divide-et-Impera
Se un algoritmo Divide-et-Impera
allora
T(n)= tempo di esecuzione su input di taglia n
A. c= 4 e n0 =0 B. c= 2 e n0 =0 C. c= 1/3 e n0 =1
Numero di
risposte 26 4 4 16
Notazioni asintotiche 2
Date due funzioni f(n) e g(n) si ha che f(n) = O(g(n)) se
A B C D
Numero di
2 37 0 16
risposte
Tempo di esecuzione 1
Il tempo di esecuzione del seguente frammento di pseudocodice è
A B C D
Numero di
3 1 1 48
risposte
Tempo di esecuzione 2
Il tempo di esecuzione del seguente frammento di pseudocodice è
A B C D
Numero di
1 9 0 41
risposte
Tempo di esecuzione 3
Calcolare il tempo di esecuzione del seguente algoritmo
A. Ɵ (n2)
B. ω (n 2)
C. Ɵ (n)
D. Nessuna delle risposte precedenti
A B C D
Numero di
4 1 0 0
risposte
Analisi for (linee 3-6)
i = 1, j = n, n-1, … , 2, quindi (n-1) volte
i = 2, j = n, n-1, … , 3, quindi (n-2) volte
………
i = n-1, j = n, quindi 1 volta
i = n, quindi 0 volte
Primo modo:
Cominciamo dall’analisi del while (5-6):
Ripete due istruzioni di tempo costante (6) un numero di volte
variabile, ma ≤ n-1, quindi prende tempo O(n).
Il for itera n volte blocco 4-6
Blocco 4-6 prende tempo O(1)+O(n) = O(n).
Quindi il for prende tempo O(n n) = O(n2).
Analisi for (linee 3-6)
i = 1, j = n, n-1, … , 2, quindi (n-1) volte
i = 2, j = n, n-1, … , 3, quindi (n-2) volte
………
i = n-1, j = n, quindi 1 volta
i = n, quindi 0 volte
Secondo modo:
Quante volte in tutto è ripetuta ciascuna istruzione di tempo
costante, all’interno del for?
Numero ripetizioni (6) = (n-1) + (n-2) + … + 2 + 1 =
= 1 + 2 + … + (n-1) =
=(n-1) n/2 = (n2 – n)/2 = (n2).
Analogamente il test j > i è eseguito n + (n-1) + … + 2 + 1 = (n2) volte.
L’assegnamento (4) è eseguito n volte.
In totale, il tempo di esecuzione del for è (n2).
Tempo di esecuzione 4
Il tempo di esecuzione del seguente frammento di pseudocodice è
A B C D
Numero di
4 21 1 23
risposte
Merge
Quanti confronti effettua l’algoritmo MERGE per
la fusione dei due array ordinati
[1,5,6,7] e [2,3,4]?
A. 4 B. 6 C. 12
D. Nessuna delle precedenti
A B C D
Numero di
22 0 0 0
risposte
Funzioni da ordinare (KT3)
Es. n. 3 pag. 67 del libro [KT].
Indicare la corretta successione delle funzioni seguenti
affinché compaiano da sinistra a destra in ordine crescente
di crescita asintotica, motivando adeguatamente la
successione proposta: