D'essais et d'Infirmer BigO
À prouver et réfutation Big O questions explicitement de dire l'utilisation de la définition de prouver et de réfuter, ma question est, est ce que je suis en train de faire corriger?
Par exemple vous avez une question qui est g(n) = O(f(n)) ... pour le prouver, je faisais les suivantes
g(n) <= C(F(n))
g(n)/F(n) <= C .. then give n=1 and solve for C , which proves it.
La contradiction que je lance quand faire, c'est lorsque je m'approche d'une question de réfutation de ce genre de choses
par exemple
g(n) =O(F(n)) pour la réfuter, je le ferais
g(n) >= C(F(n)) et les solutions de C à nouveau . Cependant, ce qui m'amène à croire que le big O peut être prouvé et démentie à la fois ? qui est 100% faux.
L'aide du monde réel numéros
(Prouver)
n^2 + 3 = O(n^2)
(n^2 + 3)/n^2 <= C assume n = 1 then C >= 3
Disproving
n^2 + 3 = O(n^2)
(n^2 + 3)/n^2 >= C assume n = 1 then C <= 3
n^2 + 3 = O(n^2)
ces deux dire que @ n =1 et c = 3 de l'algorithme est O(n^2) et n'est PAS en O(n^2).
Quelqu'un peut-il m'aider à clarifier ma confusion et de me donner une aide-moi à apprendre une bonne façon algorithmique de résolution de big O questions?
OriginalL'auteur Faisal Abid | 2010-02-11
Vous devez vous connecter pour publier un commentaire.
Ni de vos techniques de travail. Commençons par la définition de " big-O:
À prouver "il existe" les instructions de type, vous devez montrer que, eh bien, les choses existent. Dans le cas de big-O de preuves, vous trouverez généralement les choses, bien que les preuves de l'existence n'avez généralement pas besoin d'être constructif. Pour construire une preuve pour une "pour tous", de faire semblant de quelqu'un vous a remis des valeurs spécifiques. Attention vous faites pas de suppositions implicites au sujet de leurs propriétés (vous pouvez explicitement les propriétés de l'état, tels que le N > 0).
Dans le cas de la preuve de big-O, vous devez trouver le C et N. Afficher |g(n)| ≤ C|F(n)| pour une seule n est pas suffisante.
Pour l'exemple ", n2+3 est O(n2)":
Réfuter, vous prenez la négation de l'énoncé: il n'y ait pas C ou N. En d'autres termes, montrer que, pour tous les C et N, il existe un n > N tel que |f(n)| > C |g(n)|. Dans ce cas, le C et N sont qualifiés de "pour tous", afin de prétendre qu'ils ont été donnés. Depuis n est qualifiée de "il existe", vous devez le trouver. C'est là que vous commencez avec l'équation que vous souhaitez prouver et de travailler vers l'arrière jusqu'à ce que vous trouver un n.
Supposons que nous voulons prouver que ce n est pas O(ln n). Faire semblant de nous est donnée de N et de C, et nous avons besoin de trouver un n ≥ N tel que n > C ln n.
Preuves de x > 0 ⇒ ex > x2 et "n est pas O(ln n)" ⇒ "n est pas O(logb n)" de gauche " que des exercices.
Chaque inégalité (autre que le premier) est dérivée de la précédente (d'où le "⇒"). Pour suivre, appliquer la norme d'algèbre règles, comme un "> b ⇒ a+c > b+c". La simplification des mesures ont été laissés de côté (donc, "+ ... " est écrit que "2a", plutôt que "a+a = 2a ...").
OriginalL'auteur outis