Witam,
powtarzam sobie asymptotykê i zacz±³em siê zastanawiaæ nad pewnym prostym
z pozoru zadaniem. Zadanie jest nastêpuj±ce:
Niech f(n), g(n) bêd± asymptotycznie dodatnimi funkcjami, takimi, ¿e
lg(g(n)) > 0 i f(n) >= 1 dla wszystkich dostatecznie du¿ych n.
Rozstrzygn±æ, czy prawdziwa jest implikacja: je¶li f(n) = O(g(n)), to
lg(f(n)) = O(lg(g(n))).
Znalaz³em na sieci dwa dowody tej implikacji [1, 2]. Oba lec± mniej wiêcej
tak: Je¶li f(n) = O(g(n)), to istniej± takie dodatnie c i N, ¿e f(n) <= cg(n)
dla wszystkich n >= N. Logarytmuj±c obie strony mamy
lg(f(n)) <= lg c + lg(g(n)). Ale lg c <= lg(g(n)) dla dostatecznie du¿ych
n, wiêc lg(f(n)) <= 2lg(g(n)), wiêc lg(f(n)) = O(lg(g(n))), QED.
Niejasne jest dla mnie kluczowe przej¶cie z lg c <= lg(g(n)) dla dostatecznie
du¿ych n. Z czego to wynika? O funkcji g wiemy tylko tyle, ¿e lg(g(n)) > 0,
czyli g = Omega(1). Gdyby przyj±æ dodatkowe za³o¿enie, ¿e g jest rosn±ca,
to wszystko by³oby jasne, ale tego za³o¿enia nie mamy. Czy to ja czego¶
nie widzê, czy dowód jest zepsuty? Jak to poprawiæ?
[1] http://tiny.pl/2tq5
[2] http://www-rcf.usc.edu/~dkempe/CS303/solutions3.pdf
--
Daniel 'Nathell' Janus, moveat@nathell.korpus.pl, http://korpus.pl/~nathell
(unless (equalp
(lisp-implementation-type)
"SBCL") (quit)) ;; --SBCL Advocacy Haiku