n-ième nombre de fibonacci dans sublinéaire temps

Est-il un algorithme pour calculer le n-ième nombre de fibonacci dans la sous-linéaire dans le temps?

  • On pourrait dire que c'est lié à des algorithmes, depuis l'OP fait une vague allusion à la complexité algorithmique... je serais toujours curieux de ce algorithme de bien.
  • Les deux réponses ci-dessous ont la bonne formule. Si cette question est en relation avec la programmation: c'est une partie de l'informatique. L'appareil utilisé pour dériver la formule est connue comme "générer" et a un rôle important dans l'algorithme d'analyse.
  • Lors de la génération de fonctions sont utiles, ils ne sont pas nécessaires pour tirer le fermé forme d'expression de la séquence de Fibonacci.
  • Vous avez un problème que vous voulez résoudre, pour quelque raison que ce soit, et que vous voulez le faire de manière efficace. Parfois, la compréhension voulue sera une nouvelle mise en œuvre, parfois un algorithme, et parfois les mathématiques. Il n'est pas nécessaire pour dénoncer la situation comme "pas de programmation relative" à chaque fois que ce dernier arrive.
  • La taille du résultat est linéaire en n. Il n'est donc pas un tel algorithme. Bien sûr, cela ne veut pas invalider tout de nice réponses ci-dessous qui calculer les nombres de Fibonacci à l'aide de O(log n) opérations arithmétiques.
  • Oui. Parce qu'ils sont le calcul des approximations.
  • Il ressemble à stackoverflow.com/questions/30595844/...
  • Cela dépend de ce qui est "du temps": si le "temps" est mesuré dans des opérations arithmétiques, alors vous pouvez calculer le résultat en log(n) fois. Si le "temps" est mesurée en bits, alors vous ne pouvez pas. Notez que dans une grande partie de la théorie de la complexité, le choix de "temps" est flexible (par exemple: algorithmes de tri d'utilisation "du temps" pour désigner les comparaisons par paires, et également d'une table de hachage de l'analyse de l'utilisation "du temps" pour les comparaisons de moyennes). Ni l'un ni l'décrire avec précision le temps qu'il effectuait sur un "vrai" ordinateur (parce que le calcul d'un hash n'est pas O(1) pour arbitraire de gros objets), mais personne ne se plaint de mer).