Étant donné un ordinateur rapide et lent, à quelles tailles l'ordinateur rapide exécutant un algorithme lent bat-il l'ordinateur lent exécutant un algorithme rapide?

8

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 à x MIPS, et une machine rapide fonctionnant à yMIPS. 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 àT(n)=c1n2 alors qu'un algorithme "rapide" fonctionne à T(n)=c2nlogn.

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 n tel que

c2nlognx>c1n2y
n est un nombre naturel.

Voici mon travail jusqu'à présent:

{n:c2nJournal2nX>c1n2y,nN}={n:n<c2yc1XJournal2n,nN}

La seule solution qui me vient à l'esprit maintenant est de brancher et de brancher toutes les valeurs de n jusqu'à ce que je trouve le premier n où

n<c2yc1xlog(n)

ne tient plus.

DoggoDougal
la source
3
C'est vraiment plus une question de mathématiques qu'une question d'informatique. Si vous remplacezn avec x alors vous avez une équation transcendantale sur les réels, que vous ne pouvez pas vraiment réduire à une solution de forme fermée pour x. Une fois que vous avez trouvé unx, votre réponse est xarrondi à l'entier le plus proche. En d'autres termes, "plug-n-chug" ou "guess-and-check" est à peu près aussi bon que vous pouvez le faire dans le cas général. Cela se manifeste généralement sous forme de méthodes graphiques ou numériques.
Patrick87

Réponses:

2

Considérez votre dernière inégalité:

n<c2yc1xlog(n)

Maintenant, Clogn avec C=c2yc1xest 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

n=Clog(n)

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 à

n=eW1(ln2C)

si Celn2, avec Wkla 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 obtenez116,74 pour C=17.

Raphael
la source
Juste pour m'assurer: avez-vous interprété mon équation comme ayant le logarithme naturel ou log-base-2? Je dois préciser que chaque instance de log (n) est de base 2 et modifiera la question de manière appropriée.
DoggoDougal
Dans CS, nous utilisons généralement log=log2, alors que les mathématiciens supposent log=ln. Par conséquent, là où j'utiliselog c'est pour baser 2, des exceptions sont notées. C'est (probablement) oùln2vient du résultat.
Raphael