2010-02-07 13 views
5

Hé, le titre est probablement un peu éteint, alors s'il vous plaît corriger si vous savez comment le mettre mieux.Comment prouver les relations big-o

En tant que devoir à la maison m'a donné plusieurs missions le long de ce qui suit:

Soit f (n) et g (n) fonctions asymptotiquement positives. Prouver ou réfuter chacune des conjectures suivantes. Maintenant, ma vraie question est - comment allez-vous prouver cela de façon formelle? Je sais que ce qui précède serait facile car je pourrais facilement fournir un contre-exemple pour le réfuter, mais pour le bien de l'argument disons que nous voulons le faire sans contre-exemples, comme bien sûr cela continue avec d'autres exemples où cela ne fonctionnera pas.

Je suis un peu coincé, j'ai les inégalités suivantes rédigé (avec < = étant inférieur ou égal à)

f(n) <= c1 * g(n) 
g(n) <= c2 * f(n) 

Mais je ne suis pas certain de la façon dont je combiner ces 2 inéquations en un seul (in) équation et réfuter. Je suis tout à fait certain que c'est quelque chose de très facile que j'ai simplement oublié et que je suis plutôt stupide en ce moment - mais n'importe quel pointeur/exemple concret de la façon de faire cela serait génial, pour que je puisse travailler reste de ces questions par moi-même. Pourquoi voulez-vous le réfuter sans utiliser un contre-exemple?

+0

Ceci est une programmation connexe. Pourquoi est-ce marqué? – dirkgently

+0

Oserais-je demander pourquoi cela a été voté pour être fermé? – kastermester

+0

Certaines personnes n'aiment pas les questions de devoirs. Cependant je vous félicite pour être franc et honnête que c'est devoirs. – blowdart

Répondre

4

C'est le moyen le plus direct de réfuter une réclamation.

Si vous deviez le prouver à la place, bien sûr, vous ne seriez pas en mesure d'utiliser un contre-exemple. Dans ce cas, la contrapositive peut très bien fonctionner - supposer que la revendication est fausse, puis montrer comment cela conduit à une incohérence logique.

Dans ce cas, vous commencez par f(n) <= c1 * g(n) étant vrai, puisque c'est ce que l'on entend par f(n) = O(g(n)). Maintenant, vous voulez supposer que g(n) <= c2 * f(n) est vrai pour tous f et g (cette dernière partie est très importante, car vous pouvez certainement choisir f et g de telle sorte que c'est vrai), et montrer pourquoi cela ne peut pas fonctionner. Mon indice pour vous: choisissez un f et un g de sorte qu'il ne peut pas fonctionner, et montrer qu'il ne peut pas travailler par votre choix de c1 et c2.

+0

Exactement parce que j'ai d'autres devoirs comme celui-ci où j'ai besoin de le prouver. Je n'ai pas choisi celui-là parce que je voudrais vraiment travailler sur mon propre - c'est pourquoi j'ai fourni cet exemple car je sais déjà comment le réfuter. Merci pour les conseils cependant - je vais essayer. – kastermester

+0

Merci! Cela m'a beaucoup aidé, je crois que j'ai réussi à y répondre à un degré satisfaisant maintenant - le temps nous le dira :). – kastermester

3

Quelques conseils:
Ne pas oublier que f(n) = O(g(n)) est un set notation et vous pouvez le convertir en une forme mathématique des inégalités.

opérations simples que vous pouvez faire avec le O -notation:

  • f(n) = O(f(n))
  • c * O(f(n)) = O(f(n)), si c est constante
  • O(f(n)) + O(f(n)) = O(f(n))
  • O(O(f(n))) = O(f(n))
  • O(f(n)) * O(g(n)) = O(f(n)g(n))
  • O(f(n)g(n)) = f(n) * O(g(n))

(L'art de la programmation informatique, vol 1 - Le O -Notation)

Questions connexes