Complessità: la torre di Hanoi

Dopo aver analizzato il problema decidiamo che il tempo di esecuzione dell’algoritmo è proporzionale al numero di spostamenti di dischi

  • T(1) = 1
  • T(2) = T(1)+T(1)+T(1) = 1+1+1 = 3
  • T(3) = T(2)+T(1)+T(2) = 3+1+3 = 7
  • T(4) = T(3)+T(1)+T(3) = 7+1+7 = 15
  • T(n) = T(n-1)+T(1)+T(n-1) = 2*T(n-1)+1

Numericamente si tratta della successione 1, 3, 7, 15, 31, 63, 127, ... cioè 21-1, 22-1, 23-1, 24-1, 25-1, 26-1, 27-1, ... quindi T(n) = 2n-1

I tempi necessari per una persona oppure per un computer sono

nT(n) = 2n-11 Hz (persona)1 GHz (PC)
121-1= 1un secondo10-9 s
222-1= 33 secondi3*10-9 s
10210-1= 1023~17 minuti~10-6 s
20220-1= 1.048.575~12 giorni~10-3 s
30230-1= 1.073.741.823~34 anni~1 s
64264-1= 18.446.744.073.709.551.615~5*1011 anni~500 anni

Conclusioni

  • L’algoritmo per il problema della torre di Hanoi ha complessità in tempo asintotica esponenziale, O(2n).
  • Non può esistere un algoritmo con complessità minore.
  • Il problema della torre di Hanoi è un problema intrinsecamente esponenziale.
  • Il problema della torre di Hanoi è un problema intrattabile!