Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Esercizi Algoritmi pt.1, Esercizi di Progettazione e analisi di algoritmi

Esercizi Algoritmi pt.1, vasta raccolta di esercizi di algoritmi.

Tipologia: Esercizi

2018/2019

Caricato il 01/12/2019

TonyLodos
TonyLodos 🇮🇹

5

(4)

11 documenti

1 / 6

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Progettazione di Algoritmi Anno Accademico 2018–2019
Esercizi sulle Notazioni Asintotiche ed Analisi di Algoritmi.
Ugo Vaccaro
1. Esercizio: In ciascuno dei seguenti casi, indicare se vale che f(n) = O(g(n)), oppure se f(n) =
Ω(g(n)), oppure valgono entrambe le condizioni (nel cui caso occorre indicare che f(n) =
Θ(g(n)). Non occorre giustificare le risposte.
(a) f(n) = nn, g(n) = 5n
(b) f(n) = 10nlog n, g(n) = (n/2) 3
n
(c) f(n) = 5n+ 10n, g(n) = n10n
(d) f(n) = n3/2n, g(n) = 8nlog n
(e) f(n) = 7 log n, g(n) = log n3
(f) f(n) = log n, g(n) = log n
(g) f(n) = 6n4+nlog n2+n, g(n) = n44nlog n28n
(h) f(n) = n1.01, g(n) = n(log n)3
(i) f(n) = 7n, g(n) = 8n
(j) f(n) = 3log2n, g(n) = 2log3n
(k) f(n) = n4n, g(n) = n!
(l) f(n) = 3n+2, g(n) = 3n3
(m) f(n) = n5n, g(n) = 6n
(n) f(n) = n2n3/2, g(n) = n2n2/3
(o) f(n) = log n5, g(n) = log4n
2. Esercizio: Provare formalmente le seguenti affermazioni, esibendo le opportune costanti:
(a) 5nnlog n2+ 10n3= Θ(n3)
(b) (n+ 2)3n=O(4n/n).
3. Esercizio: Date le seguenti funzioni
nlog5n, pnlog n, log n5, nlog n, n2log n2, nn, n4,(log n)n,10n, n log n, log2n, n3n, 10 log log n,
3 log n2, n!
ordinarle scrivendole da sinistra a destra in modo tale che la funzione f(n) venga posta a
sinistra della funzione g(n) se e solo se vale che f(n) = O(g(n)). Ad esempio, se le funzioni
fossero 3n2,3n, n log n, n, log n, occorrerebb ero scriverle nell’ordine log n, n, n log n, 3n2,3n.
1
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Esercizi Algoritmi pt.1 e più Esercizi in PDF di Progettazione e analisi di algoritmi solo su Docsity!

Progettazione di Algoritmi Anno Accademico 2018–

Esercizi sulle Notazioni Asintotiche ed Analisi di Algoritmi.

Ugo Vaccaro

  1. Esercizio: In ciascuno dei seguenti casi, indicare se vale che f (n) = O(g(n)), oppure se f (n) =

Ω(g(n)), oppure valgono entrambe le condizioni (nel cui caso occorre indicare che f (n) =

Θ(g(n)). Non occorre giustificare le risposte.

(a) f (n) = n −

n, g(n) = 5n

(b) f (n) = 10n log n, g(n) = (n/2) 3

n

(c) f (n) = 5n + 10

n, g(n) = n − 10

n

(d) f (n) = n 3 / 2 − n, g(n) = 8n log n

(e) f (n) = 7 log n, g(n) = log n 3

(f) f (n) =

log n, g(n) = log

n

(g) f (n) = 6n 4

  • n log n 2

n, g(n) = n 4 − 4 n log n 2 − 8

n

(h) f (n) = n

  1. 01 , g(n) = n(log n) 3

(i) f (n) = 7 n , g(n) = 8 n

(j) f (n) = 3 log 2 n , g(n) = 2 log 3 n

(k) f (n) = n 4 n , g(n) = n!

(l) f (n) = 3 n+ , g(n) = 3 n− 3

(m) f (n) = n 5 n , g(n) = 6 n

(n) f (n) = n 2 − n 3 / 2 , g(n) = n 2 − n 2 / 3

(o) f (n) = log n 5 , g(n) = log

4 n

  1. Esercizio: Provare formalmente le seguenti affermazioni, esibendo le opportune costanti:

(a) 5n

n log n 2

  • 10n 3 = Θ(n 3 )

(b) (n + 2) n = O( n /n).

  1. Esercizio: Date le seguenti funzioni

n log 5 n,

n log n, log n 5 , n log n , n 2 log n 2 , n n , n 4 , (log n) n , 10

n, n log

n, log 2 n, n 3

n, 10 log log n,

3 log n 2 , n!

ordinarle scrivendole da sinistra a destra in modo tale che la funzione f (n) venga posta a

sinistra della funzione g(n) se e solo se vale che f (n) = O(g(n)). Ad esempio, se le funzioni

fossero 3n 2 , 3 n , n log n,

n, log n, occorrerebbero scriverle nell’ordine log n,

n, n log n, 3 n 2 , 3 n .

  1. Esercizio: Date le seguenti funzioni:

n−

n, log(n!/ 2 n ) 4 , log log n 3 , n 2 +log n 2 , 3 n

n , n log 2 n , n!, 4 n 2 +n 6

n, 10 n+3 log log n, log log n,

5 n+2 log n+

n, log(n!), 5 · 2 n , n log(n+2) 3 , 5 n 2 +n log n+n 3 / 2 , 4 log n , n log(n+2) 3 , 4 n , n log

n,

partizionarle in insiemi disgiunti A 1 , A 2 ,... tali che entrambe le seguenti condizioni valgano

  1. f (n), g(n) ∈ Ai se e solo se f (n) = Θ(g(n))
  2. f (n) ∈ Ai, g(n) ∈ Aj , con i < j ⇐⇒ f (n) = O(g(n)) ma f (n) 6 = Θ(g(n))
  1. Esercizio: Per ciascuna delle seguenti coppie di funzioni f e g, trovare costanti opportune

c ∈ R+ per cui f (n) ≤ c · g(n), per ogni n > 1.

(a) f (n) = 3n 2

  • 4n, g(n) = n 2

(b) f (n) = 2

n log n + 1, g(n) = n + n^2

(c) f (n) = n 3

  • n + 1 + 1, g(n) = 2n 4

(d) f (n) = n

n + 4n 2 , g(n) = n 2

(e) f (n) = 12n + 3, g(n) = n − 7

(f) f (n) = n 2 − n + 1, g(n) = n 2 / 10

(g) f (n) = 3n + 1, g(n) = (2n 2 − 10 n)/ 6

(h) f (n) = 5

n log n − 1 , g(n) = n −

n

  1. Esercizio: Sia g(n) = n + 2n 3 − 3 n 3 + 4n 4 . Dire quali delle seguenti affermazioni sono vere

e quali sono false. E necessario provare le affermazioni che si ritengono vere, non `´ e necessario

provare le affermazioni che si ritengono false.

(a) g(n) = Ω(n log n)

(b) g(n) = Θ(n 5 )

(c) g(n) = O(n 10 )

(d) g(n) = Ω(n 4 )

  1. Esercizio: Sia g(n) = n log n + 2n 3 − 3 n 2 . Dire quali delle seguenti affermazioni sono vere e

quali sono false. E necessario provare le affermazioni che si ritengono vere, non `´ e necessario

provare le affermazioni che si ritengono false.

(a) g(n) = O(n log n)

(b) g(n) = Ω(n 2 )

(c) g(n) = Θ(n 3 )

(d) g(n) = O(n 4 )

  1. Esercizio: Sia f (n) = 4n 2 + n + 3. Dire quali delle seguenti affermazioni sono vere e quali sono

false, dando la dimostrazione di ogni affermazione.

  1. Esercizio: Date funzioni arbitrarie f : n ∈ N 7 → f (n) ∈ R+, g : n ∈ N 7 → g(n) ∈ R+ e

h : n ∈ N 7 → h(n) ∈ R+, provare che se f (n) = O(g(n)) e g(n) = O(h(n)), allora vale che

f (n) = O(h(n)), usando la definione di O.

  1. Esercizio: Date funzioni arbitrarie f : n ∈ N 7 → f (n) ∈ R+, g : n ∈ N 7 → g(n) ∈ R+ e

h : n ∈ N 7 → h(n) ∈ R+, provare che se f (n) = Ω(g(n)) e g(n) = Ω(h(n)), allora vale che

f (n) = Ω(h(n)), usando la definione di Ω.

Ricordiamo il seguente risultato per la risoluzione delle pi`u comuni equazioni di ricorrenza:

Teorema. La soluzione alla ricorrenza

T (n) =

d se n ≤ 1

aT (n/c) + bnk^ altrimenti

per a, c, b, k costanti, `e

T (n) =

O(n k ) se a < c k

O(n k log n) se a = c k

O(n logc a ) se a > c k

Nel caso in cui non si voglia (o non si possa) applicare il risultato di sopra, gli esercizi che

seguono si possono risolvere iterando la equazione di ricorrenza che descrive la complessit`a di tempo

dell’algoritmo e deducendo la soluzione.

  1. Esercizio: Si consideri il seguente algoritmo:

Algoritmo B(n)

  1. x = 1
  2. IF ((n == 1)||(n == 2) {
  3. x = x + 1
  4. } ELSE {
  5. Algoritmo B(n − 2)
  6. Algoritmo B(n − 2)

}

  1. FOR (i = 1, i < n + 1, i = i + 1){
  2. x = x + 1

}

Si derivi una equazione di ricorrenza che descrive la complessit`a di Algoritmo B(n), e la si

risolva, usando il metodo di iterazione.

  1. Esercizio: Si consideri il seguente algoritmo:

Algoritmo(n)

  1. IF (n <= 1){
  2. RETURN 0
  3. } ELSE {
  4. Algoritmo(n/2)

}

  1. x = 0; i = 0
  2. WHILE (x ≤ n) {
  3. x = x + 1
  4. i = i + 1

}

Si esprima la complessit´a di Algoritmo(n) mediante una equazione di ricorrenza e se ne dia

una soluzione in termini della notazione O.

  1. Esercizio: Si consideri il seguente algoritmo:

Algoritmo S(n)

  1. IF (n <= 1) {
  2. RETURN 0
  3. } ELSE {
  4. Algoritmo S(n/3)
  5. Algoritmo S(n/3)

}

  1. x = 0
  2. WHILE (x ≤ 3 n 3 ) {
  3. x = x + 3

}

Si derivi una equazione di ricorrenza che descrive la complessit`a di Algoritmo S(n), e la si

risolva in termini della notazione O.

  1. Esercizio: Si consideri il seguente algoritmo:

Algoritmo S(n)

  1. IF (n <= 1) {
  2. RETURN 0
  3. } ELSE {
  4. Algoritmo S(n/4)
  5. Algoritmo S(n/4)

}

  1. x = 0
  2. WHILE (x ≤ 9

n) {

  1. x = x + 3

}

Si derivi una equazione di ricorrenza che descrive la complessit`a di Algoritmo S(n), e la si

risolva in termini della notazione O.