Complessità di un problema


Dato un problema P si possono individuare diversi algoritmi risolutivi
A1, A2, ... Aq
ciascuno con la sua complessità
C1, C2, ..., Cq.

Sia C* la complessità più bassa.
Se si dimostra che per il problema P non può esistere un algoritmo con complessità più bassa di C* allora si può affermare che
il problema P ha complessità C*.

Problema 1

Le possibili sequenze di lunghezza n costruite con un alfabeto di 26 caratteri [a...z] [a...z] ... [a...z] sono 26n.
Soltanto per visualizzare le risposte sarà necessario il tempo
T(n)= 26n >> 2n.
Quindi il problema ha complessità almeno esponenziale
O(2n).

Problema 2

Le permutazioni di n elementi qualsiasi
PermutazioniNumero
1a1
2ab, ba2
3abc, acb, bac, bca, cab, cba6
4abcd, abdc, acbd, acdb, bacd, badc, bcad, bcda
cabd, cadb, cbad, cbda, dabc, dacb, dbac, dbca
24
5...120
.........
n...n!


Come prima, si può dimostrare che
T(n)=n! >> 2n
e quindi il problema ha complessità almeno esponenziale
O(2n).

Problema 3

Nel prodotto tra matrici nxn, C=AxB, è richiesto almeno il tempo Non può esistere un algoritmo con complessità inferiore a quella necessaria per esaminare l'input oppure generare l'output e quindi si parte comunque da una complessità quadratica.

L'algoritmo noto (...) che calcola il singolo elemento Cij tramite il prodotto scalare
Cij = Ai*Bj = Ai1*B1j+Ai2*B2j+...+Ain*Bnj
richiede n moltiplicazioni per ogni prodotto scalare e quindi richiede
T3(n) = n*n2 = n3
per calcolare tutti i prodotti.
Questo algoritmo potrebbe non essere il migliore (...) ma ci permette di stabilire un limite superiore per la complessità del problema.

In conclusione,
T1(n) < T2(n) <= T(n) <= T3(n)
n2 <= T(n) <= n3

Un algoritmo ottimo per la moltiplicazione tra matrici avrà necessariamente una complessità compresa tra O(n2) e O(n3)...

Problema 4

Per il problema dell'ordinamento esistono algoritmi con complessità
Si può dimostrare che non possono esistere algoritmi con complessità più bassa di O(nlogn), quindi il problema dell'ordinamento ha complessità
O(nlogn).
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki