[Algoritmi] Equazione di ricorrenza

michele933
Mi sto preparando all'esame di Algoritmi e Strutture Dati ma non avendo potuto seguire le lezioni sto avendo un po' di difficoltà con le equazioni di ricorrenza.
Premetto che ho già letto alcune discussioni sul forum e svariati pdf al riguardo.

In un tema d'esame degli anni precedenti era presente il seguente esercizio:

2) La soluzione all'equazione di riccorenza $ T(n)=2T(n/2) + n/2 $ è (risposta multipla):
□ $ O(logn) $ □ $ O(n) $ □ $ O(nlogn) $ □ $ O(n^2) $ □ $ O(n^2/logn) $

Io ho ragionato nel seguente modo applicando il teorema Master:
$ a=2 $, $ b=2 $ e $ f(n)=n/2 $
calcolo $ n^(\log_b a) $: $ n $
Confrontando asintoticamente $ f(n) $ e $ n^(\log_b a) $ siamo nel 2° caso del Teorema Master quindi la soluzione è:
$ Theta (nlogn) $

Dovrebbe essere corretta ma come mai non è presente tra le soluzioni dell'esercizio?? Come si risolve?
Grazie!

Risposte
apatriarca
In che senso non c'è? È la terza risposta..

michele933
"apatriarca":
In che senso non c'è? È la terza risposta..


Non c'è nel senso che la terza risposta non è in notazione $ Theta $ ma in notazione $ O $. E' valida comunque?
Forse la mia confusione deriva dal fatto che nella correzione dell'esercizio che ho trovato (senza passaggi) vengono marcate le risposte 3, 4 e 5 come corrette. Come mai? Come può avere più soluzioni?

apatriarca
Quale sono le definizioni di \(O\) e \(\Theta\)? Nel tuo caso hai che \(\Theta(n\,\log\,n)\) allora sarà necessariamente anche \(O(n\,\log\,n).\) Ma siccome \(O\) si riferisce semplicemente ad una limitazione superiore e non viene richiesto che questa limitazione sia "minima", allora anche la quarta e quinta risposta hanno senso.

Pablitos23
Ti consiglio di leggere questa slide che ho utilizzato il primo anno per la notazione asintotica. Poi studiando gli algoritmi di sorting, arriva l'illuminazione vera e propria sui vari limiti asintotici.

http://twiki.di.uniroma1.it/pub/Infogen ... tolo_2.pdf

michele933
Grazie ad entrambi per le risposte. Ho letto anche il pdf allegato e ho compreso meglio le tre notazioni.
Quello che non capisco ancora è il motivo per cui sono valide anche la riposta 4 e 5. E' in base al comportamento asintotico della funzione? Come si determina se anche le altre risposte sono comprese in $ Theta (nlogn) $ ?

apatriarca
\(O(n\,\log\,n)\), \(O(n)\), \(\Theta(n\,\log\,n),\) .. sono insiemi di funzioni che rispettano una qualche proprietà definita nella loro definizione. Nel caso delle O grandi, c'è una relazione di inclusione tra questi insiemi: se qualcosa è superiormente limitato da \(n^2\) sarà infatti limitato superiormente anche da \(n^3\) o \(n^2\,\log\,n\). Abbiamo quindi che
\[ O(\log\,n) \subset O(n) \subset O(n\,\log\,n) \subset O(n^2/\log\,n) \subset O(n^2). \]
Trovato quindi l'insieme che limita più strettamente la funzione, devi anche scegliere come risposte corrette tutti gli altri insiemi più grandi.

Anche se formalmente la soluzione è effettivamente questa, credo che il problema sia in qualche modo "a trabocchetto". Nell'uso comunque si è in effetti solo interessati all'insieme che limita più strettamente la funzione (in questo caso \(n\,\log\,n\)) e si ignorano le altre.

Nota inoltre che la relazione di inclusione non vale per \(\Theta\) e funziona in modo inverso per \(\Omega\).

Pablitos23
Forse ho capito il tuo dubbio.

Allora abbiamo che la nostra equazione di ricorrenza ha un tempo di esecuzione pari a $\Theta(nlogn)$, quindi sta a significare che il nostro algoritmo cresce esattamente con un tempo pseudolineare ed ha limite superiore uguale al limite inferiore.

$\Omega(f(x)) = $il tempo del nostro algoritmo è almeno $f(x)$ e non può essere eseguito con un tempo minore.
$\O(f(x)) =$il tempo del nostro algoritmo cresce al massimo $f(x)$ e quindi l'esecuzione del nostro algoritmo con input x, non oltrepasserà mai questo limite.

Le altre due risposte sono vere perchè, se è vero che il tuo algoritmo avrà tempo di esecuzione al massimo in $nlogn$, allora sarà anche vero, facendo una stima molto lasca, che avrà tempo di esecuzione anche minore a $n^2$ e $n^2/logn$.

$O(nlogn) < O(n^2/logn) < O(n^2)$

Prendi per esempio il merge sort, ha una complessità temporale pari a $\Theta(nlogn)$. Se dicessimo che è limitata superiormente da un $O(n^2)$ abbiamo comunque ragione dato che non potrà mai superare questo limite, ma lo stiamo dicendo in modo poco raffinato e preciso perchè è un $\Theta(nlogn)$.

Spero di non averti confuso. :-D

michele933
Grazie ad entrambi! Il mio dubbio era proprio quello.. mi sembra di aver capito meglio ora!

Vediamo quest'altro esercizio..

2) La soluzione all'equazione di riccorenza $ T(n)=8T(n/2) + n^2/2 $ è (risposta multipla):
□ $ O(logn) $ □ $ Omega(nlog^2n) $ □ $ O(n^2logn) $ □ $ O(n^3) $ □ $ Theta(5n^3) $

Applico il Teorema Master:
$ a=8 $, $ b=2 $ e $ f(n)=n^2/2 $
calcolo $ n^(\log_b a) $: $ n^3 $
Confrontando asintoticamente $ f(n) $ e $ n^(\log_b a) $ siamo nel 1° caso del Teorema Master quindi la soluzione è:
$ Theta (n^3) $

Quindi le soluzioni sono:
□ $ O(n^3) $
□ $ Theta(5n^3) $

anche $ Omega(nlog^2n) $ ?

apatriarca
Diccelo tu.. La tua equazione di ricorrenza rispetta la condizione nella definizione di \( \Omega(n\,\log^2\,n) \)?

michele933
"apatriarca":
Diccelo tu.. La tua equazione di ricorrenza rispetta la condizione nella definizione di \( \Omega(n\,\log^2\,n) \)?


Credo di si essendo la soluzione principale in notazione $ Theta $ ..

apatriarca
Sì, la soluzione è corretta.

Pablitos23
Ma come? Se il nostro algoritmo è limitato inferiormente da un $\Omega(n^3)$ come lo potrebbe essere anche per un $\Omega(nlog^2n)$???

Del limite superiore si può dare un'approssimazione lasca, ma del limite inferiore no.
Mi sbaglio? Se si perchè?

apatriarca
Se \(f \in \Omega(n^3)\) allora avrai che \( f(x) \geq k\,n^3 \) (condizioni solite.. non le sto a scrivere che tanto le conosciamo bene tutti). Ma \( n^3 > n\,\log^2\,n \) e quindi avremo certamente che vale anche \( f(x) > k\,n\,\log^2\,n \) e quindi \( f \in \Omega(n\,\log^2\,n)\). Non capisco il tuo dubbio sinceramente.

Pablitos23
Ok stavo pensando a qualche caso reale. Es. Selection Sort ha una complessità pari a $\Theta(n^2)$ e quindi non potrebbe mai avere un limite inferiore pari a $\Omega(nlog^2n)$.

Ook capito.

apatriarca
Quando si parla di limite superiore e inferiore si fa spesso riferimento ad un qualche oggetto che sia in qualche modo minimo o massimo tra gli oggetti con quella proprietà. Tuttavia, se si parla di essere limitata superiormente o inferiormente il discorso cambia e non stiamo necessariamente dicendo che la funzione considerata è il limite superiore o inferiore. Non è insomma necessariamente minimale o massimale. Non so se sono riuscito a trasmetterti l'idea.

Pablitos23
Si chiaro :) Grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.