La source de cette question provient d'un cours de premier cycle que je suis, qui couvre une introduction à l'analyse des algorithmes. Ce n'est pas pour les devoirs, mais plutôt une question posée dans CLRS.
Vous avez une machine lente fonctionnant à MIPS, et une machine rapide fonctionnant à MIPS. Vous avez également deux algorithmes de la même classe, mais des complexités de temps d'exécution différentes: un algorithme "lent" s'exécute à alors qu'un algorithme "rapide" fonctionne à .
Vous exécutez l'algorithme lent sur la machine rapide et l'algorithme rapide sur la machine lente. Quelle est la plus grande valeur de n telle que la machine rapide exécutant l'algorithme lent bat la machine lente exécutant l'algorithme rapide?
Ma solution jusqu'à présent:
Trouvez l'ensemble de tous tel que
Voici mon travail jusqu'à présent:
La seule solution qui me vient à l'esprit maintenant est de brancher et de brancher toutes les valeurs de jusqu'à ce que je trouve le premier n où
ne tient plus.
Réponses:
Considérez votre dernière inégalité:
Maintenant,Clogn avec C=c2yc1x est une fonction concave . Par conséquent, il y a au plus deux intersections, et une seule d'entre elles vous intéresse; c'est-à-dire, résoudre
et découvrir quel algorithme est plus rapide dans quel intervalle en calculant simplement les valeurs de fonction respectives à un certain point dans l'intervalle respectif.
Il est vrai que résoudre cette égalité de manière explicite est difficile / impossible. Pour certains fixesC , l'algèbre informatique vous donne une expression dans une fonction bien connue; intéressante (réelle) intersection se révèle être à
siC≥eln2 , avec Wk la poursuite analytique de la fonction de journal de produit . Cette fonction n'a pas une belle forme fermée, mais elle peut être évaluée numériquement pourC ; par exemple, vous obtenez≈116,74 pour C=17 .
la source