J'ai la définition d'un algorithme in situ du professeur, mais je ne la comprends pas.
Les algorithmes in situ font référence aux algorithmes qui fonctionnent avec la mémoire Θ (1).
Qu'est-ce que ça veut dire?
J'ai la définition d'un algorithme in situ du professeur, mais je ne la comprends pas.
Les algorithmes in situ font référence aux algorithmes qui fonctionnent avec la mémoire Θ (1).
Qu'est-ce que ça veut dire?
Réponses:
Commençons par déballer ce que signifie .
Big et big Θ sont des classes de fonctions. Il y a une définition formelle ici , mais aux fins de cette question, nous disons qu'une fonction f est en O ( 1 ) s'il y a une constante c où, pour tout x , f ( x ) ≤ C . Autrement dit, f croît au plus aussi vite qu'une fonction constante.
Big- ne signifie pas grand-chose pour les fonctions constantes, car lors de la description du temps de l'algorithme ou de l'utilisation de l'espace, il n'y a pas beaucoup en dessous de la constante. Mais pour expliquer ce que cela signifie, f ∈ Θ ( 1 ) s'il existe des constantes c , d telles que, pour tout x , d ≤ f ( x ) ≤ c . C'est-à-dire que f croît au moins aussi vite, et au plus aussi vite, en fonction constante.
Maintenant, qu'est-ce que cela a à voir avec l'utilisation de la mémoire? Considérons un algorithme . Il existe une fonction (mathématique) qui, étant donnée une entrée n , donne l'utilisation maximale de la mémoire de votre algorithme A sur toute entrée de taille n . Appelons cette fonction m e m .
Alors maintenant, nous combinons nos deux concepts. Si un algorithme utilise la mémoire , sa fonction d'utilisation de la mémoire est en Θ ( 1 ) , ce qui signifie qu'il existe des d , c tels que, pour toute entrée, la mémoire utilisée se situe entre d et c .
En bref, cela signifie que l'utilisation de la mémoire de l'algorithme est dans une plage constante, quelle que soit l'entrée.
Habituellement, la fonction de mémoire ne tient pas compte de la mémoire utilisée pour stocker l'entrée de l'algorithme, car sinon l'utilisation de la mémoire serait toujours d'au moins .
Complexité d'espace constante de l'algorithme
La quantité de mémoire utilisée par votre algorithme est indépendante de l'entrée.
On dit qu'un algorithme a une complexité d'espace constante s'il utilise une quantité fixe d'espace. Il peut s'agir de variables ou d'un tableau d'exactement 10 éléments.
Cependant, les algorithmes in situ remplissent leur fonction prévue sur l'entrée elle-même et nécessitent donc très peu ou pas d'espace supplémentaire. L'entrée est généralement remplacée par la sortie lors de l'exécution de l'algorithme. ( ref )
Les algorithmes in situ ne prennent pas en compte l'espace occupé par l'entrée et ne prennent en compte que l'espace supplémentaire, lors du calcul de la complexité de l'espace.