Le potenze nello studio degli algoritmi

Messaggioda absinth » 05/07/2018, 09:59

Ciao a tutti! Vi chiedo di aiutarmi con un dubbio: studiando una materia molto simile a "dati e algoritmi" (quella materia astratta dove si usano solo pseudocodici) mi sono accorto che nella soluzione di un esercizio invece di trascurare il calcolo della potenza ad esempio $a^k$ con un $a$ fissato, dice che sarebbe necessario un tempo $\log k$ per calcolarla.
Ad esempio scrivendo in java s = a^k; questa riga di codice ci metterebbe $\log k$ ad essere eseguita? O è una convenzione vecchia che si usa in algoritmi?
In java o altri linguaggi io farei $n^k$ senza chiedermi quanto ci impiega la macchina, sperando che il tempo sia bassissimo. In realtà non so quanto ci impiegano, $\log k$ sarebbe diciamo il classico tempo necessario n queste situazioni, o quello che si usa per convenzione negli algoritmi?
absinth
Junior Member
Junior Member
 
Messaggio: 86 di 184
Iscritto il: 20/06/2017, 17:21
Località: Venezia

Re: Le potenze nello studio degli algoritmi

Messaggioda vict85 » 05/07/2018, 15:57

Dipende da che funzione usi per calcolarlo. Se usi un approccio naive, il tempo è \(k\), ma è semplice calcolarlo in \(\log k\). Penso che l'algoritmo fosse già conosciuto dai babilonesi. Esiste un limite teorico per questo tipo di operazione, e penso che tu lo possa trovare in The Art of Computer Programming di Knuth.

Detto questo l'esponenziale di un float è penso calcolato usando metodi diversi e suppongo tu possa considerare l'operazione come costante (seppure una costante molto maggiore di una somma o una moltiplicazione)
vict85
Moderatore
Moderatore
 
Messaggio: 9331 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: Le potenze nello studio degli algoritmi

Messaggioda absinth » 05/07/2018, 16:59

Grazie per la risposta, non conosco l'algoritmo di Knuth ma anche guardando semplicemente per ipotesi un $k=2^i$ se il prodotto tra due interi considero O(1) l'algoritmo diventa una banale ricorsione. Fatto sta che non so se in questa materia potevano darlo per scontato, magari ci sono algoritmi con prestazioni migliori che sono famosi?... però non è importante. Grazie per la conferma
absinth
Junior Member
Junior Member
 
Messaggio: 87 di 184
Iscritto il: 20/06/2017, 17:21
Località: Venezia

Re: Le potenze nello studio degli algoritmi

Messaggioda apatriarca » 05/07/2018, 21:11

Dipende anche molto dal contesto. Ad esempio, se stessimo parlando di una potenza di numeri in virgola mobile, allora il calcolo può essere fatto in tempo costante (calcolando \(x^y = 2^{y\,\log_2\,x}\)). Per numeri interi si usa il già citato algoritmo. Per numeri di dimensione arbitraria esistono poi algoritmi ancora piú complessi e la moltiplicazione stessa non ha piú un tempo costante.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5065 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Le potenze nello studio degli algoritmi

Messaggioda absinth » 05/07/2018, 22:08

Grazie mille!
absinth
Junior Member
Junior Member
 
Messaggio: 88 di 184
Iscritto il: 20/06/2017, 17:21
Località: Venezia


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite