Ci-dessous, supposons que nous travaillons avec une machine de Turing à bande infinie.
En expliquant la notion de complexité temporelle à quelqu'un et pourquoi elle est mesurée par rapport à la taille d'entrée d'une instance, je suis tombé sur la revendication suivante:
[..] Par exemple, il est naturel que vous ayez besoin de plus d'étapes pour multiplier deux entiers avec 100 000 bits que, disons, multiplier deux entiers avec 3 bits.
L'affirmation est convaincante, mais en quelque sorte agitant la main. Dans tous les algorithmes que j'ai rencontrés, plus la taille d'entrée est grande, plus vous avez besoin d'étapes. En termes plus précis, la complexité temporelle est une fonction augmentant de façon monotone de la taille d'entrée.
Est-il vrai que la complexité temporelle est toujours une fonction croissante de la taille d'entrée? Si oui, pourquoi est-ce le cas? Y a-t-il une preuve de cela au-delà de la main agitant?
Réponses:
Si vous parlez de la complexité d'un problème , la réponse est toujours non. La complexité du test de primalité est beaucoup plus faible pour les nombres pairs que pour les nombres impairs.
la source
Les algorithmes sublinéaires sont probablement intéressants pour vous, qui ne lisent pas l'intégralité de l'entrée. Voir par exemple http://www.dcs.warwick.ac.uk/~czumaj/PUBLICATIONS/DRAFTS/Sublinear-time-Survey-BEATCS.pdf .
la source
Cela dit, les temps d'exécution moyens peuvent contenir des composants oscillants, par exemple Mergesort .
la source